Red Hat Enterprise Linux 6 电 源 管 理 指 南 版 1.0 在 红 帽 企 业 版 Linux 6 中 管 理 电 源 消 耗 Last Updated: 2017-10-12
Red Hat Enterprise Linux 6 电 源 管 理 指 南 在 红 帽 企 业 版 Linux 6 中 管 理 电 源 消 耗 版 1.0 Don Domingo 红 帽 工 程 内 容 服 务 Rüdiger Landmann 红 帽 工 程 内 容 服 务 r.landmann@redhat.com Red Hat Inc.
法律通告 Copyright 2010 Red Hat Inc.. This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported License. If you distribute this document, or a modified version of it, you must provide attribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat trademarks must be removed. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. Linux is the registered trademark of Linus Torvalds in the United States and other countries. Java is a registered trademark of Oracle and/or its affiliates. XFS is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL is a registered trademark of MySQL AB in the United States, the European Union and other countries. Node.js is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project. The OpenStack Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community. All other trademarks are the property of their respective owners. 摘要 这 个 文 档 解 释 了 如 何 在 红 帽 企 业 版 Linux 6 系 统 中 有 效 管 理 您 的 电 源 消 耗 下 面 的 部 分 讨 论 了 降 低 电 源 消 耗 的 不 同 技 术 ( 服 务 器 和 笔 记 本 电 脑 ), 以 及 每 个 技 术 对 您 系 统 总 体 性 能 的 影 响
目录 目录 第... 1. 章... 概. 述..................................................................................... 3. 1.1. 电源管理的重要性 3 1.2. 电源管理基础 4 第... 2. 章... 电. 源.. 管.. 理.. 工.. 具. 审.. 核.. 及.. 分.. 析.................................................................... 6. 2.1. 审核及分析概述 6 2.2. POWERTOP 6 2.3. DISKDEVSTAT 和 NETDEVSTAT 8 2.4. 电池寿命工具组件 (BATTERY LIFE TOOL KIT) 11 2.5. TUNED 和 KTUNE 12 2.5.1. tuned.conf 文件 13 2.5.2. Tuned-adm 15 2.6. DEVICEKIT-POWER 和 DEVKIT-POWER 17 2.7. GNOME 电源管理器 17 2.8. 其他审核方法 18 第... 3. 章... 核. 心.. 基.. 础.. 结.. 构. 及.. 技.. 巧....................................................................... 19.. 3.1. CPU 闲置状态 19 3.2. 使用 CPUFREQ 调节器 19 3.2.1. CPUfreq 调节器类型 19 3.2.2. CPUfreq 设置 20 3.2.3. 调整 CPUfreq 策略和速度 21 3.3. 挂起和恢复 22 3.4. 无空循环内核 22 3.5. 主动式电源管理 22 3.6. 主动连接电源管理 23 3.7. RELATIME 驱动器访问优化 24 3.8. 功率封顶 24 3.9. 改进的图形电源管理 25 3.10. RFKILL 25 3.11. 在用户空间中优化 26 第... 4. 章... 使. 用.. 案.. 例................................................................................ 27.. 4.1. 示例 - 服务器 27 4.2. 示例 - 笔记本电脑 27 附录..... A... 开.. 发. 者.. 小.. 贴.. 示............................................................................ 30.. A.1. 使用线程 30 A.2. 唤醒 30 A.3. FSYNC 31 附录..... B... 修.. 订. 记.. 录................................................................................ 33.. 1
电 源 管 理 指 南 2
第 1 章概 述 第 1 章概 述 电 源 管 理 是 我 们 改 进 红 帽 企 业 版 Linux 6 的 关 注 点 之 一 限 制 计 算 机 的 电 源 消 耗 是 绿 色 IT( 环 保 友 好 的 计 算 ) 最 重 要 的 部 分 之 一, 它 可 延 伸 到 很 多 方 面, 其 中 包 括 使 用 可 回 收 材 料 硬 件 产 品 对 环 境 的 影 响 以 及 设 计 和 部 署 系 统 时 的 环 保 意 识 在 这 篇 文 档 中 我 们 将 提 供 有 关 运 行 红 帽 企 业 版 Linux 6 系 统 的 电 源 管 理 的 指 导 和 信 息 1.1. 电 源 管 理 的 重 要 性 电 源 管 理 的 核 心 是 了 解 如 何 有 效 优 化 每 个 系 统 组 件 的 能 源 消 耗 这 涉 及 到 对 您 系 统 执 行 的 不 同 任 务 的 研 究, 并 配 置 每 个 组 件 以 便 确 定 其 性 能 刚 好 适 用 于 该 任 务 进 行 电 源 管 理 的 主 要 原 因 是 : 减 少 电 源 总 耗 以 便 降 低 成 本 正 确 使 用 电 源 管 理 可 有 如 下 结 果 : 为 服 务 器 和 计 算 中 心 进 行 降 温 降 低 二 次 成 本, 其 中 包 括 冷 却 空 间 电 缆 发 电 机 以 及 不 间 断 供 电 (UPS) 延 长 笔 记 本 电 脑 电 池 寿 命 降 低 二 氧 化 碳 排 放 达 到 政 府 法 律 法 规 中 对 绿 色 IT 的 要 求, 例 如 : 能 耗 星 级 达 到 公 司 对 新 系 统 的 要 求 通 常, 降 低 特 定 组 件 ( 或 者 整 个 系 统 ) 的 电 源 消 耗 将 降 低 散 热 和 性 能 因 此, 您 应 该 彻 底 学 习 并 测 试 您 进 行 的 任 何 配 置 可 承 受 的 性 能 降 低, 特 别 是 对 关 键 任 务 系 统 通 过 研 究 您 系 统 执 行 的 不 同 任 务 以 及 每 个 组 件 的 配 置 确 定 其 性 能 刚 好 满 足 该 任 务 的 需 要, 这 样 您 可 以 节 省 能 源, 减 少 散 热, 并 为 笔 记 本 电 脑 优 化 电 池 寿 命 有 关 电 源 消 耗 的 分 析 和 调 整 系 统 的 很 多 原 则 与 性 能 调 整 相 似 在 有 些 情 况 下, 电 源 管 理 和 性 能 调 整 是 从 对 立 方 向 进 行 系 统 配 置, 因 为 系 统 通 常 是 根 据 性 能 或 者 电 源 进 行 优 化 的 本 手 册 阐 述 了 一 些 红 帽 提 供 的 工 具 以 及 我 们 开 发 用 来 帮 助 您 完 成 这 一 过 程 的 技 术 红 帽 企 业 版 Linux 6 附 带 了 很 多 新 的 电 源 管 理 特 性, 它 们 是 默 认 启 用 的 所 选 的 特 性 都 不 会 对 典 型 服 务 器 或 者 桌 面 系 统 使 用 产 生 影 响 但 是 对 绝 对 需 要 最 大 吞 吐 量 最 小 延 迟 或 者 最 高 CPU 性 能 的 非 常 具 体 的 使 用 案 例 则 可 能 需 要 审 查 那 些 默 认 特 性 要 决 定 您 是 否 应 该 使 用 本 文 档 中 阐 述 的 技 术 优 化 您 的 机 器, 请 先 问 您 自 己 几 个 问 题 : 问 : 我 必 须 优 化 吗? 答 : 电 源 优 化 的 重 要 性 取 决 于 您 的 公 司 是 否 有 要 遵 循 的 准 则, 或 者 是 否 有 您 必 须 执 行 的 规 定 问 : 优 化 的 代 价 是 什 么? 答 : 我 们 给 出 的 几 个 技 术 并 不 需 要 您 完 成 详 细 审 核 和 分 析 您 的 机 器 的 整 个 过 程, 我 们 提 供 一 组 可 改 进 您 电 源 使 用 的 常 用 优 化 当 然 它 们 对 系 统 的 优 化 不 如 手 动 审 核 和 优 化 的 系 统, 但 提 供 了 一 个 好 的 折 衷 方 案 问 : 优 化 是 否 会 将 系 统 性 能 降 低 到 无 法 接 受 的 程 度? 3
电 源 管 理 指 南 答 : 这 个 文 档 中 描 述 的 大 多 数 技 术 都 会 显 著 影 响 您 系 统 的 性 能 如 果 您 选 择 使 用 使 用 比 红 帽 企 业 版 Linux 6 中 默 认 的 现 有 电 源 管 理 更 多 的 功 能, 您 应 该 在 电 源 优 化 后 监 控 您 的 系 统 性 能 并 决 定 性 能 损 失 是 否 可 以 接 受 问 : 优 化 消 耗 的 时 间 和 资 源 是 否 超 过 了 得 到 的 结 果? 答 : 手 动 完 成 优 化 单 一 系 统 的 整 个 过 程 通 常 得 不 偿 失, 因 为 消 耗 的 时 间 和 费 用 比 您 在 单 一 机 器 中 获 得 的 好 处 不 成 比 例 另 外, 比 如 说 您 在 办 公 室 使 用 10000 个 桌 面 系 统, 它 们 的 配 置 和 设 置 都 一 样, 那 么 生 成 一 个 优 化 的 设 置 并 在 10000 台 机 器 中 使 用 就 是 事 半 功 倍 了 下 面 的 部 分 解 释 了 如 何 优 化 硬 件 性 能 以 便 使 您 的 系 统 在 节 能 方 面 受 益 1.2. 电 源 管 理 基 础 有 效 电 源 管 理 是 建 立 在 以 下 原 则 上 的 : 只 在 需 要 时 唤 醒 闲 置 的 CPU 红 帽 企 业 版 Linux 5 内 核 曾 为 每 个 CPU 使 用 周 期 计 时 器 这 个 计 时 器 防 止 CPU 真 正 进 入 闲 置 状 态, 因 为 它 要 求 CPU 无 论 是 否 有 进 程 在 运 行, 都 要 处 理 每 个 计 时 器 事 件 ( 根 据 设 置 几 微 妙 出 现 一 次 ) 有 效 电 源 管 理 的 主 要 任 务 是 减 少 CPU 唤 醒 的 频 率 因 此, 红 帽 企 业 版 Linux 6 中 的 Linux 内 核 删 除 了 周 期 计 时 器 : 结 果 是 现 在 CPU 的 闲 置 状 态 是 无 空 循 环 这 就 防 止 了 CPU 在 闲 置 状 态 下 消 耗 不 必 要 的 电 力 但 是 如 果 您 的 系 统 中 有 生 成 不 必 要 计 时 器 事 件 的 应 用 程 序 就 会 抵 消 这 个 功 能 带 来 的 好 处 查 询 事 件 ( 比 如 音 量 更 改 鼠 标 移 动 等 ) 就 属 于 此 类 事 件 红 帽 企 业 版 Linux 6 包 括 您 可 用 来 根 据 其 CPU 用 量 识 别 审 核 程 序 的 工 具 详 情 请 参 考 第 2 章电 源 管 理 工 具 审 核 及 分 析 应 该 完 全 禁 用 不 使 用 的 硬 件 和 设 备 特 别 是 在 那 些 有 移 动 组 件 的 设 备 ( 比 如 硬 盘 ) 中 尤 其 重 要 另 外, 有 些 应 用 程 序 可 "open" 未 使 用 但 启 用 的 设 备, 当 出 现 这 种 情 况 时, 内 核 假 设 设 备 处 于 使 用 状 态, 这 样 就 会 阻 止 设 备 进 入 节 电 状 态 低 活 性 可 解 读 为 低 瓦 数 在 很 多 情 况 下 要 依 赖 先 进 的 硬 件 并 修 正 BIOS 配 置 旧 的 系 统 组 件 经 常 不 支 持 一 些 红 帽 企 业 版 Linux 6 中 支 持 的 新 特 性 请 确 定 您 系 统 使 用 的 是 最 新 的 官 方 固 件, 且 在 BIOS 中 的 电 源 管 理 或 者 设 备 配 置 部 分 启 用 了 电 源 管 理 功 能 您 需 要 查 看 的 功 能 包 括 : 变 频 (SpeedStep) PowerNow! Cool'n'Quiet ACPI (C 状 态 ) 智 能 如 果 您 的 硬 件 支 持 这 些 特 性, 且 在 BIOS 中 启 用 了 这 些 特 性, 红 帽 企 业 版 Linux 6 将 默 认 使 用 这 些 特 性 不 同 的 CPU 状 态 形 式 及 效 果 先 进 CPU 与 高 级 配 置 和 电 源 接 口 (ACPI) 共 同 提 供 不 同 的 电 源 状 态 三 种 不 同 的 状 态 为 : 4
第 1 章概 述 休 眠 (C 状 态 ) 运 行 (P 状 态 ) 散 热 (T 状 态 或 者 " 热 状 态 ") 以 最 低 休 眠 状 态 运 行 的 CPU 可 能 消 耗 最 少 的 电 力, 但 在 需 要 将 其 从 该 状 态 唤 醒 时 也 需 要 相 对 较 长 的 时 间 在 很 少 情 况 下 CPU 需 要 在 刚 刚 进 入 休 眠 状 态 后 就 马 上 需 要 被 唤 醒 这 种 情 况 导 致 一 个 持 久 有 效 的 忙 碌 CPU, 并 在 已 经 使 用 另 一 种 状 态 时 可 能 丧 失 潜 在 的 节 电 效 果 关 闭 的 机 器 使 用 的 电 量 最 少 很 明 显, 最 佳 的 节 电 方 法 就 是 关 闭 系 统 例 如 : 您 的 公 司 可 开 发 一 项 注 重 " 绿 色 IT" 的 企 业 文 化, 让 员 工 有 意 识 地 在 午 休 时 间 或 者 下 班 时 关 闭 机 器 您 还 可 以 将 几 台 物 理 服 务 器 合 并 成 一 个 较 大 的 服 务 器, 并 使 用 我 们 在 红 帽 企 业 版 Linux 6 中 附 带 的 虚 拟 化 技 术 将 其 虚 拟 化 5
电 源 管 理 指 南 第 2 章电 源 管 理 工 具 审 核 及 分 析 2.1. 审 核 及 分 析 概 述 对 单 一 系 统 进 行 详 细 手 册 审 核 分 析 以 及 调 整 很 少 见, 因 为 这 样 做 的 时 间 和 费 用 消 耗 一 般 都 会 超 过 进 行 这 些 最 后 系 统 微 调 带 来 的 好 处 但 是 为 可 在 基 本 一 致 的 大 量 系 统 中 重 复 使 用 相 同 的 设 置 而 执 行 这 些 任 务 是 非 常 有 用 的, 您 可 在 所 有 系 统 中 重 复 使 用 相 同 的 设 置 例 如 : 想 象 一 下 部 署 成 千 个 桌 面 系 统, 或 者 在 机 器 都 几 乎 完 全 一 样 的 HPC 群 集 中 另 一 个 执 行 审 核 和 分 析 的 理 由 是 提 供 进 行 比 较 的 基 准, 您 可 使 用 它 在 将 来 识 别 系 统 行 为 退 化 或 者 改 变 在 常 规 进 行 硬 件 BIOS 或 者 软 件 更 新, 且 您 不 想 被 电 源 消 耗 吓 到 的 情 况 下 这 些 分 析 结 果 非 常 有 用 通 常 完 整 的 审 核 和 分 析 可 让 您 对 具 体 系 统 中 的 情 况 有 更 好 的 了 解 根 据 电 源 消 耗 审 核 和 分 析 系 统 比 较 困 难, 即 便 使 用 最 先 进 的 系 统 也 是 如 此 大 多 数 系 统 不 会 提 供 测 量 软 件 耗 能 的 必 需 工 具 也 有 例 外 情 况 : 惠 普 服 务 器 系 统 的 ILO 管 理 控 制 台 有 电 源 模 块, 您 可 使 用 它 访 问 网 页 IBM 在 其 刀 片 中 心 电 源 管 理 模 块 中 提 供 类 似 的 解 决 方 案 在 有 些 Dell 系 统 中,IT 助 理 也 提 供 电 源 监 控 功 能 其 他 零 售 商 也 乐 于 为 其 服 务 器 平 台 提 供 类 似 的 功 能, 但 没 有 一 个 所 有 零 售 商 都 支 持 的 单 一 解 决 方 案 可 用 如 果 您 的 系 统 没 有 内 置 测 量 电 源 消 耗 的 机 制, 还 有 其 它 一 些 方 法 可 用 您 可 以 为 您 的 系 统 安 装 特 殊 的 电 源, 它 可 通 过 USB 提 供 电 源 消 耗 信 息 Gigabyte Odin GT 550 W PC 电 源 就 是 一 个 例 子, 软 件 从 那 些 Linux 系 统 中 读 取 的 值 可 用 于 http://mgmt.sresortth.sze.hu/~andras/dev/gopsu/ 最 后, 有 些 外 用 电 表, 比 如 Watts up? 产 品 也 有 USB 接 口 对 电 源 消 耗 的 直 接 测 量 通 常 只 在 尽 可 能 节 约 能 耗 时 需 要 幸 运 的 是 还 有 其 他 方 法 可 测 量 实 际 的 更 改 以 及 系 统 的 行 为 方 式 本 章 描 述 了 这 些 必 需 的 工 具 2.2. POWERTOP 红 帽 企 业 版 Linux 6 中 引 进 的 无 空 循 环 内 核 ( 请 参 考 第 3.4 节 无 空 循 环 内 核 ) 可 允 许 CPU 更 频 繁 地 进 入 闲 置 状 态, 降 低 能 耗 并 改 进 电 源 管 理 新 的 PowerTOP 工 具 可 识 别 具 体 是 哪 些 内 核 组 件 和 用 户 空 间 程 序 经 常 唤 醒 CPU PowerTOP 用 于 开 发 执 行 第 3.11 节 在 用 户 空 间 中 优 化 中 论 述 的 审 核, 这 样 就 在 这 个 发 行 本 中 调 整 了 很 多 程 序, 不 必 要 的 CPU 唤 醒 降 低 了 10 倍 使 用 以 下 命 令 安 装 PowerTOP: yum install powertop 使 用 以 下 命 令 运 行 PowerTOP: powertop 请 注 意 : 您 运 行 PowerTOP 将 需 要 root 特 权 方 可 允 许 程 序 有 效 运 行 当 PowerTOP 运 行 时 会 从 系 统 中 收 集 统 计 数 据 并 为 您 显 示 最 频 繁 向 CPU 发 送 唤 醒 请 求 的 组 件 列 表 PowerTOP 还 会 为 降 低 系 统 能 耗 向 您 提 出 建 议 这 些 建 议 出 现 在 屏 幕 底 部, 并 指 定 您 要 接 受 PowerTOP 建 议 时 需 要 按 的 按 键 因 为 PowerTOP 是 周 期 性 刷 新, 届 时 会 有 进 一 步 的 建 议 在 图 2.1 PowerTOP 操 作 中 中, 建 议 您 增 加 虚 拟 机 脏 回 写 时 间 以 及 接 受 该 建 议 时 要 按 的 按 键 (W) 当 PowerTOP 运 行 时 会 从 系 统 中 收 集 统 计 数 据 并 为 您 显 示 几 个 重 要 信 息 列 表 列 表 顶 端 是 您 的 CPU 核 处 于 可 用 C 状 态 和 P 状 态 的 时 间 长 度 CPU 处 于 C 状 态 或 者 P 状 态 时 间 越 长 越 好 (C4 高 于 C3), 也 显 示 了 是 如 何 更 好 利 用 CPU 的 您 的 目 标 应 该 是 90% 或 者 以 上 的 时 间 CPU 处 于 C 状 态 或 者 P 状 态, 其 余 时 间 系 统 处 于 闲 置 状 态 第 二 项 信 息 是 机 器 每 秒 实 际 唤 醒 总 数 每 秒 唤 醒 数 让 您 根 据 系 统 电 源 消 耗 了 解 服 务 或 者 设 备 以 及 内 核 驱 动 程 序 是 否 运 行 良 好 每 秒 唤 醒 数 越 大, 耗 能 越 多, 因 此 这 里 数 字 越 小 越 好 6
第 2 章电 源 管 理 工 具 审 核 及 分 析 下 一 步, 如 果 可 能,PowerTOP 提 供 系 统 电 源 使 用 的 估 计 值 预 计 PowerTOP 会 在 使 用 电 池 模 式 的 笔 记 本 电 脑 中 报 告 这 个 数 字 所 有 可 用 耗 电 估 计 值 都 跟 着 一 个 最 常 向 CPU 发 送 唤 醒 的 组 件 详 细 列 表 列 表 的 顶 端 是 那 些 您 需 要 更 详 细 调 查 以 便 优 化 系 统 降 低 能 耗 的 组 件 如 果 它 们 是 内 核 组 件 ( 组 件 名 称 被 列 在 <> 中 ), 那 么 唤 醒 通 常 与 导 致 这 些 唤 醒 的 特 定 驱 动 程 序 关 联 调 整 驱 动 程 序 通 常 需 要 更 改 内 核, 这 已 经 超 出 本 文 档 涉 及 范 围 但 是, 发 送 唤 醒 的 用 户 空 间 进 程 更 容 易 管 理 首 先 要 确 认 这 个 服 务 或 者 应 用 程 序 是 否 应 该 在 这 个 系 统 中 运 行 如 果 不 是, 只 要 失 活 它 即 可 要 永 久 关 闭 某 个 服 务, 请 运 行 : chkconfig servicename off 如 果 您 需 要 了 解 该 组 件 具 体 执 行 任 务 的 详 细 信 息, 请 运 行 : ps -awux grep componentname strace -p processid 如 果 追 踪 看 来 像 是 不 断 的 重 复, 那 么 您 可 能 已 经 找 到 了 忙 碌 回 路 要 修 复 这 个 问 题 需 要 更 改 那 个 组 件 的 代 码, 但 这 已 经 超 出 本 文 档 的 范 围 最 后,PowerTOP 还 会 为 降 低 系 统 能 耗 向 您 提 出 建 议 这 些 建 议 出 现 在 屏 幕 底 部, 并 指 定 您 要 接 受 PowerTOP 建 议 时 需 要 按 的 按 键 因 为 PowerTOP 是 周 期 性 刷 新, 届 时 会 有 进 一 步 的 建 议 在 图 2.1 PowerTOP 操 作 中 中, 备 注 建 议 您 增 加 虚 拟 机 脏 回 写 时 间 以 及 接 受 该 建 议 时 要 按 的 按 键 (W) 这 些 更 改 要 在 下 一 次 引 导 时 生 效 要 使 这 些 更 改 持 久,PowerTOP 会 显 示 执 行 这 个 优 化 具 体 要 执 行 的 命 令 请 使 用 您 的 首 选 文 本 编 辑 器 在 您 的 /etc/rc.local 文 件 中 添 加 命 令 以 便 其 在 每 次 启 动 计 算 机 时 都 有 效 图 2.1. PowerTOP 操 作 中 7
电 源 管 理 指 南 Less Watts 网 站 发 布 了 由 PowerTOP 识 别 的 保 持 CPU 活 跃 的 应 用 程 序 列 表 请 参 考 http://www.lesswatts.org/projects/powertop/known.php 2.3. DISKDEVSTAT 和 NETDEVSTAT Diskdevstat 和 netdevstat 是 收 集 有 关 磁 盘 活 性 以 及 在 系 统 中 运 行 的 所 有 程 序 的 网 络 活 性 的 SystemTap 工 具 这 些 工 具 是 由 PowerTOP 支 配, 并 可 显 示 每 秒 钟 每 个 程 序 唤 醒 CPU 的 次 数 ( 请 参 考 第 2.2 节 PowerTOP ) 这 些 工 具 收 集 的 统 计 可 让 您 识 别 那 些 使 用 很 多 小 I/O 操 作 的 程 序, 它 们 比 少 量 的 较 大 操 作 更 耗 能 其 它 监 控 工 具 只 是 测 量 传 输 速 度, 无 法 帮 助 确 认 此 类 使 用 使 用 SystemTap 的 命 令 安 装 这 些 工 具 : yum install systemtap tuned-utils kernel-debuginfo 使 用 如 下 命 令 运 行 这 些 工 具 : diskdevstat 或 者 命 令 : netdevstat 这 两 个 命 令 最 多 可 有 三 个 参 数, 如 下 所 示 : diskdevstat update_interval total_duration display_histogram netdevstat update_interval total_duration display_histogram update_interval 以 秒 为 单 位 的 显 示 更 新 间 隔 时 间 默 认 :5 total_duration 以 秒 为 单 位 显 示 整 体 运 行 时 间 默 认 :86400( 一 天 ) display_histogram 是 否 显 示 在 运 行 结 束 时 收 集 的 所 有 数 据 柱 形 图 的 标 签 输 出 结 果 类 似 PowerTOP 这 里 是 来 自 使 用 KDE 4.2 的 Fedora 10 系 统 中 运 行 的 diskdevstat 详 细 输 出 结 果 示 例 : PID UID DEV WRITE_CNT WRITE_MIN WRITE_MAX WRITE_AVG READ_CNT READ_MIN READ_MAX READ_AVG COMMAND 2789 2903 sda1 854 0.000 120.000 39.836 0 0.000 0.000 0.000 plasma 15494 0 sda1 0 0.000 0.000 0.000 758 0.000 0.012 0.000 0logwatch 15520 0 sda1 0 0.000 0.000 0.000 140 0.000 0.009 0.000 perl 15549 0 sda1 0 0.000 0.000 0.000 140 0.000 0.009 0.000 perl 15585 0 sda1 0 0.000 0.000 0.000 108 0.001 0.002 0.000 perl 8
第 2 章电 源 管 理 工 具 审 核 及 分 析 2573 0 sda1 63 0.033 3600.015 515.226 0 0.000 0.000 0.000 auditd 15429 0 sda1 0 0.000 0.000 0.000 62 0.009 0.009 0.000 crond 15379 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 15473 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 15415 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 15433 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 15425 0 sda1 0 0.000 0.000 0.000 62 0.007 0.007 0.000 crond 15375 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 15477 0 sda1 0 0.000 0.000 0.000 62 0.007 0.007 0.000 crond 15469 0 sda1 0 0.000 0.000 0.000 62 0.007 0.007 0.000 crond 15419 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 15481 0 sda1 0 0.000 0.000 0.000 61 0.000 0.001 0.000 crond 15355 0 sda1 0 0.000 0.000 0.000 37 0.000 0.014 0.001 laptop_mode 2153 0 sda1 26 0.003 3600.029 1290.730 0 0.000 0.000 0.000 rsyslogd 15575 0 sda1 0 0.000 0.000 0.000 16 0.000 0.000 0.000 cat 15581 0 sda1 0 0.000 0.000 0.000 12 0.001 0.002 0.000 perl 15582 0 sda1 0 0.000 0.000 0.000 12 0.001 0.002 0.000 perl 15579 0 sda1 0 0.000 0.000 0.000 12 0.000 0.001 0.000 perl 15580 0 sda1 0 0.000 0.000 0.000 12 0.001 0.001 0.000 perl 15354 0 sda1 0 0.000 0.000 0.000 12 0.000 0.170 0.014 sh 15584 0 sda1 0 0.000 0.000 0.000 12 0.001 0.002 0.000 perl 15548 0 sda1 0 0.000 0.000 0.000 12 0.001 0.014 0.001 perl 15577 0 sda1 0 0.000 0.000 0.000 12 0.001 0.003 0.000 perl 15519 0 sda1 0 0.000 0.000 0.000 12 0.001 0.005 0.000 perl 15578 0 sda1 0 0.000 0.000 0.000 12 0.001 0.001 0.000 perl 15583 0 sda1 0 0.000 0.000 0.000 12 0.001 0.001 0.000 perl 15547 0 sda1 0 0.000 0.000 0.000 11 0.000 0.002 0.000 perl 15576 0 sda1 0 0.000 0.000 0.000 11 0.001 0.001 0.000 perl 9
电 源 管 理 指 南 15518 0 sda1 0 0.000 0.000 0.000 11 0.000 0.001 0.000 perl 15354 0 sda1 0 0.000 0.000 0.000 10 0.053 0.053 0.005 lm_lid.sh 这 些 列 代 表 : PID 应 用 程 序 的 进 程 ID UID 运 行 中 的 应 用 程 序 用 户 ID DEV 发 生 I/O 的 设 备 WRITE_CNT 写 操 作 总 数 WRITE_MIN 两 个 连 续 写 入 操 作 所 需 最 短 时 间 ( 以 秒 为 单 位 ) WRITE_MAX 两 个 连 续 写 入 操 作 所 需 最 长 时 间 ( 以 秒 为 单 位 ) WRITE_AVG 两 个 连 续 写 入 操 作 所 需 平 均 时 间 ( 以 秒 为 单 位 ) READ_CNT 读 操 作 的 总 数 READ_MIN 两 个 连 续 读 操 作 所 需 最 短 时 间 ( 以 秒 为 单 位 ) READ_MAX 两 个 连 续 读 操 作 所 需 最 长 时 间 ( 以 秒 为 单 位 ) READ_AVG 两 个 连 续 读 操 作 所 需 平 均 时 间 ( 以 秒 为 单 位 ) COMMAND 进 程 名 称 在 这 个 示 例 中 可 看 到 三 个 非 常 明 显 的 应 用 程 序 : PID UID DEV WRITE_CNT WRITE_MIN WRITE_MAX WRITE_AVG READ_CNT READ_MIN READ_MAX READ_AVG COMMAND 2789 2903 sda1 854 0.000 120.000 39.836 0 10
第 2 章电 源 管 理 工 具 审 核 及 分 析 0.000 0.000 0.000 plasma 2573 0 sda1 63 0.033 3600.015 515.226 0 0.000 0.000 0.000 auditd 2153 0 sda1 26 0.003 3600.029 1290.730 0 0.000 0.000 0.000 rsyslogd 这 三 个 应 用 程 序 的 WRITE_CNT 都 大 于 0, 就 是 说 它 们 在 管 理 期 间 执 行 了 一 些 写 操 作 其 中 plasma 是 最 捣 乱 的 程 序 : 它 执 行 的 写 操 作 作 多, 当 然 写 操 作 平 均 间 隔 时 间 就 最 短 如 果 您 关 注 不 能 有 效 利 用 能 源 的 程 序, 那 么 Plasma 就 是 最 佳 审 查 对 象 请 使 用 strace 和 ltrace 命 令, 通 过 追 踪 所 有 给 定 进 程 ID 的 系 统 调 用 更 进 一 步 检 查 应 用 程 序 在 这 个 示 例 中, 您 可 以 运 行 : strace -p 2789 在 这 个 示 例 中,strace 的 输 出 结 果 中 包 含 一 个 每 45 秒 重 复 一 次 的 图 案, 该 图 案 打 开 用 户 的 KDE 图 标 缓 冲 文 件, 接 着 写 入, 然 后 马 上 再 次 关 闭 该 文 件 这 导 致 一 个 在 硬 盘 中 的 必 需 物 理 写 入, 因 为 已 经 更 改 了 文 件 原 数 据 ( 特 别 是 修 改 时 间 ) 最 终 修 复 是 防 止 那 些 在 没 有 图 标 更 新 时 的 不 必 要 调 用 2.4. 电 池 寿 命 工 具 组 件 (BATTERY LIFE TOOL KIT) 红 帽 企 业 版 Linux 6 引 进 了 Battery Life Tool Kit(BLTK), 它 是 一 个 模 拟 和 分 析 电 池 寿 命 和 性 能 的 测 试 组 件 BLTK 通 过 执 行 一 组 模 拟 特 定 用 户 组 群 的 任 务 并 报 告 结 果 达 到 此 目 的 虽 然 是 特 别 用 于 测 试 笔 记 本 电 脑 性 能 的 开 发,BLTK 还 可 使 用 -a 在 启 动 时 报 告 桌 面 电 脑 性 能 BLTK 允 许 您 生 成 比 实 际 机 器 使 用 要 容 易 得 多 的 重 复 负 载 例 如 : 办 公 负 载 写 入 一 个 文 本, 在 其 中 进 行 一 些 修 改, 并 在 一 个 电 子 表 格 中 进 行 同 样 的 操 作 运 行 带 PowerTOP 或 者 任 何 其 它 审 核 及 分 析 工 具 的 BLTK, 就 可 让 您 测 试 您 执 行 的 优 化 在 机 器 被 激 活 后, 不 处 于 闲 置 状 态 时 是 否 有 效 因 为 您 可 以 在 不 同 设 置 中 多 次 运 行 同 样 的 负 载, 并 比 较 不 同 设 置 得 到 的 结 果 使 用 以 下 命 令 安 装 BLTK: yum install bltk 使 用 以 下 命 令 运 行 BLTK: bltk workload options 例 如 : 运 行 闲 置 负 载 120 秒 : bltk -I -T 120 默 认 可 用 工 作 负 载 有 : -I, --idle 系 统 闲 置, 将 其 作 为 与 其 它 负 载 进 行 比 较 的 基 准 -R, --reader 模 拟 读 取 文 档 ( 默 认 为 Firefox) -P, --player 模 拟 观 看 CD 或 者 DVD 驱 动 器 中 的 多 媒 体 文 件 ( 默 认 为 mplayer) 11
电 源 管 理 指 南 -O, --office 模 拟 使 用 OpenOffice.org 套 件 编 辑 文 件 其 它 可 让 您 指 定 的 选 项 : -a, --ac-ignore 忽 略 是 否 交 流 电 可 用 ( 桌 面 系 统 使 用 时 需 要 ) -T number_of_seconds, --time number_of_seconds 运 行 测 试 的 时 间 ( 以 秒 为 单 位 ), 在 闲 置 负 载 中 使 用 这 个 选 项 -F filename, --file filename 指 定 特 定 负 载 使 用 的 文 件, 例 如 播 放 器 负 载 要 使 用 的 文 件, 而 不 是 访 问 CD 或 者 DVD 驱 动 器 -W application, --prog application 指 定 特 定 负 载 使 用 的 应 用 程 序, 例 如 :Firefox 之 外 用 于 读 卡 器 负 载 的 浏 览 器 BLTK 支 持 大 量 更 具 体 的 选 项 详 情 请 参 考 bltk man page BLTK 保 存 /etc/bltk.conf 配 置 文 件 指 定 目 录 生 成 的 结 果 -- 默 认 为 ~/.bltk/workload.results.number/ 例 如 :~/.bltk/reader.results.002/ 目 录 中 保 存 第 三 次 阅 读 器 测 试 负 载 的 结 果 ( 第 一 次 不 计 数 ) 结 果 保 存 在 几 个 文 本 文 件 中 要 将 这 些 结 果 压 缩 成 方 便 读 取 的 格 式, 请 运 行 : bltk_report path_to_results_directory 现 在 结 果 出 现 在 结 果 目 录 下 名 为 Report 的 文 件 中 要 在 终 端 模 拟 器 中 查 看 结 果, 请 使 用 -o 选 项 : bltk_report -o path_to_results_directory 2.5. TUNED 和 KTUNE Tuned 是 监 控 系 统 组 件 使 用 的 守 护 进 程, 并 可 根 据 监 控 信 息 动 态 调 整 系 统 设 置 在 任 意 正 常 运 行 的 给 定 系 统 中, 为 各 种 系 统 组 件 进 行 动 态 帐 户 调 整 的 方 法 都 不 尽 相 同 例 如 : 在 启 动 和 登 录 过 程 中 会 大 量 使 用 硬 盘, 但 在 之 后 用 户 主 要 使 用 类 似 OpenOffice 或 者 电 子 邮 件 客 户 端 等 程 序 时 就 几 乎 不 使 用 硬 盘 了 同 样, 不 同 时 间 对 CPU 和 网 络 设 备 的 使 用 是 不 同 的 Tuned 监 控 这 些 组 件 的 活 动 并 在 其 使 用 中 有 所 改 动 以 典 型 办 公 室 工 作 站 为 例 大 多 数 时 间 里, 以 太 网 网 络 接 口 将 会 非 常 不 活 跃 过 一 段 时 间 只 有 一 些 电 子 邮 件 进 出, 或 者 载 入 一 些 网 页 对 于 那 类 负 载, 网 络 接 口 不 一 定 在 所 有 时 间 都 按 默 认 设 置 那 样 全 速 运 行 Tuned 有 一 个 用 于 网 络 设 备 的 监 控 和 调 整 插 件, 可 用 来 探 测 低 活 性, 并 自 动 降 低 接 口 速 度, 通 常 也 就 降 低 了 电 力 消 耗 如 果 接 口 活 性 在 较 长 时 间 段 内 大 幅 度 增 长, 例 如 下 载 DVD 映 像 或 者 打 开 有 大 附 件 的 电 子 邮 件,tuned 可 探 测 到 这 个 情 况 并 将 接 口 速 度 设 定 为 最 大 以 便 在 高 活 性 等 级 时 提 供 最 佳 性 能 这 个 原 则 也 用 于 其 他 CPU 和 硬 盘 插 件 网 络 设 备 不 是 默 认 配 置 为 这 样 动 作, 因 为 速 度 更 改 需 要 有 几 秒 钟 之 后 方 可 生 效, 因 此 对 用 户 体 验 有 直 接 和 可 见 的 影 响 同 样 的 考 虑 也 适 用 于 CPU 和 硬 盘 调 整 插 件 当 硬 盘 转 速 降 低 时, 它 可 能 需 要 几 秒 钟 时 间 重 新 提 高 转 速, 这 将 导 致 系 统 在 此 阶 段 有 明 显 的 反 应 延 迟 CPU 插 件 的 延 迟 副 作 用 最 小, 但 仍 可 测 到, 只 是 用 户 很 难 注 意 到 而 已 12
第 2 章电 源 管 理 工 具 审 核 及 分 析 现 在 除 tuned 外, 我 们 还 为 您 提 供 ktune Ktune 是 由 红 帽 企 业 版 Linux 5.3 作 为 用 于 具 体 使 用 案 例 的 机 器 优 化 性 能 而 引 进 的 框 架 和 服 务 从 那 时 起,ktune 有 很 大 程 度 的 改 进, 现 在 我 们 使 用 它 作 为 一 般 调 节 框 架 的 固 定 部 分 它 主 要 用 于 第 2.5.2 节 Tuned-adm 中 描 述 的 不 同 的 预 定 义 侧 写 使 用 以 下 命 令 安 装 tuned 软 件 包 及 其 关 联 的 systemtap 脚 本 : yum install tuned 安 装 tuned 软 件 包 还 会 在 /etc/tuned.conf 中 设 定 一 个 示 例 配 置 文 件, 并 激 活 默 认 侧 写 运 行 以 下 命 令 启 动 tuned: service tuned start 要 在 每 次 机 器 引 导 时 启 动 tuned, 请 运 行 : chkconfig tuned on Tuned 有 可 选 选 项, 您 可 在 手 动 运 行 该 程 序 时 使 用 可 用 选 项 有 : -d, --daemon 将 tuned 作 为 守 护 进 程 启 动, 而 不 是 在 前 台 启 动 -c, --conffile 使 用 有 具 体 名 称 和 路 径 的 配 置 文 件, 例 如 :--conffile=/etc/tuned2.conf 默 认 为 /etc/tuned.conf -D, --debug 使 用 日 志 记 录 的 最 高 级 别 2.5.1. tuned.conf 文 件 tuned.conf 文 件 包 含 tuned 配 置 设 定 默 认 情 况 下, 它 位 于 /etc/tuned.conf, 但 您 可 以 通 过 启 动 带 --conffile 选 项 的 tuned.conf 指 定 一 个 不 同 的 名 称 和 位 置 配 置 文 件 必 须 含 有 为 tuned 定 义 通 用 参 数 的 [main] 部 分 该 文 件 还 应 为 每 个 插 件 包 含 一 个 部 分 [main] 部 分 包 含 以 下 选 项 : interval tuned 应 该 监 控 并 调 节 系 统 的 时 间 间 隔, 单 位 为 秒 默 认 值 为 10 verbose 指 定 输 出 结 果 是 否 应 该 详 细 默 认 值 为 False logging 指 定 要 记 录 信 息 的 最 小 优 先 权 按 降 序 排 列 允 许 的 值 有 :critical error warning info 和 debug 默 认 值 为 info 13
电 源 管 理 指 南 logging_disable 指 定 要 记 录 信 息 的 最 大 优 先 权, 任 何 带 这 个 优 先 权 或 者 更 低 的 优 先 权 将 不 被 记 录 critical error warning info 和 debug notset 禁 用 这 个 选 项 每 个 插 件 都 有 其 自 身 的 片 段, 在 方 括 号 内 指 定 插 件 名 称 例 如 :[CPUTuning] 每 个 插 件 可 有 其 自 身 的 选 项, 但 以 下 内 容 适 用 于 所 有 插 件 : enabled 指 定 是 否 启 用 该 插 件 默 认 值 为 True verbose 指 定 输 出 是 否 应 详 细 如 果 没 有 为 这 个 插 件 设 定, 该 值 会 继 承 [main] 中 的 值 logging 指 定 要 记 录 信 息 的 最 小 优 先 权 如 果 没 有 为 这 个 插 件 设 定, 该 值 会 继 承 [main] 中 的 值 示 例 配 置 文 件 如 下 : [main] interval=10 pidfile=/var/run/tuned.pid logging=info logging_disable=notset # Disk monitoring section [DiskMonitor] enabled=true logging=debug # Disk tuning section [DiskTuning] enabled=true hdparm=false alpm=false logging=debug # Net monitoring section [NetMonitor] enabled=true logging=debug # Net tuning section [NetTuning] enabled=true logging=debug # CPU monitoring section 14
第 2 章电 源 管 理 工 具 审 核 及 分 析 [CPUMonitor] # Enabled or disable the plugin. Default is True. Any other value # disables it. enabled=true # CPU tuning section [CPUTuning] # Enabled or disable the plugin. Default is True. Any other value # disables it. enabled=true 2.5.2. Tuned-adm 通 常 具 体 的 系 统 审 核 和 分 析 非 常 耗 时, 且 这 样 做 也 不 节 能 之 前, 唯 一 的 备 选 方 案 是 使 用 默 认 设 置 因 此, 红 帽 企 业 版 Linux 6 tuned-adm 工 具 中 包 含 在 两 种 极 端 状 态 间 可 作 为 备 选 使 用 的 具 体 案 例 中 的 独 立 侧 写, 这 样 就 可 让 您 使 用 命 令 行 在 这 些 侧 写 间 轻 松 进 行 切 换 红 帽 企 业 版 Linux 6 包 含 很 多 用 于 典 型 案 例 的 预 定 侧 写, 您 只 要 使 用 tuned-adm 命 令 即 可 选 择 并 激 活 它 们, 但 您 也 要 自 己 创 建 修 改 并 删 除 侧 写 要 列 出 所 有 可 用 侧 写 并 识 别 目 前 激 活 的 侧 写, 请 运 行 : tuned-adm list 要 只 显 示 当 前 激 活 的 侧 写 请 运 行 : tuned-adm active 要 切 换 到 某 个 可 用 侧 写 请 运 行 : tuned-adm profile profile_name 例 如 : tuned-adm profile server-powersave 要 禁 用 所 有 调 整 : tuned-adm off 您 第 一 次 安 装 tuned 时 会 激 活 default 侧 写 红 帽 企 业 版 Linux 6 还 包 括 以 下 事 先 定 义 的 侧 写 : default 默 认 节 能 侧 写 它 在 可 用 侧 写 节 能 中 影 响 最 小, 只 启 用 CPU 和 tuned 磁 盘 插 件 desktop-powersave 在 桌 面 系 统 中 使 用 的 节 能 侧 写 为 SATA 主 机 适 配 器 以 及 CPU 以 太 网 和 tuned 磁 盘 插 件 启 用 ALPM 节 能 ( 请 参 考 第 3.6 节 主 动 连 接 电 源 管 理 ) server-powersave 在 服 务 器 系 统 中 使 用 的 节 能 侧 写 为 SATA 主 机 适 配 器 启 用 ALPM 节 能, 禁 止 通 过 HAL 调 用 光 驱 ( 请 参 考 hal-disable-polling man page) 并 激 活 CPU 和 tuned 磁 盘 插 件 15
电 源 管 理 指 南 laptop-ac-powersave 在 使 用 AC 运 行 的 笔 记 本 电 脑 中 使 用 的 中 度 影 响 节 能 侧 写 为 SATA 主 机 适 配 器 WiFi 节 能 以 及 CPU 以 太 网 和 tuned 磁 盘 插 件 启 用 ALPM 节 能 laptop-battery-powersave 在 使 用 电 池 运 行 的 笔 记 本 电 脑 中 使 用 的 高 度 影 响 节 能 侧 写 它 从 之 前 的 侧 写 中 激 活 所 有 节 能 机 制, 并 为 低 唤 醒 系 统 启 用 多 核 节 能 调 度 程 序, 确 定 按 需 调 节 器 处 于 活 跃 状 态, 并 弃 用 了 AC97 音 频 节 能 您 可 以 使 用 这 个 侧 写 在 任 何 类 型 的 系 统 中 最 大 限 度 节 能, 不 仅 仅 限 于 在 使 用 电 池 的 笔 记 本 电 脑 中 使 用 使 用 这 个 侧 写 的 代 价 是 对 性 能 的 明 显 影 响, 特 别 是 磁 盘 和 网 络 I/O 延 迟 throughput-performance 用 于 典 型 吞 吐 性 能 调 整 的 服 务 器 侧 写 它 可 禁 用 tuned 和 ktune 节 能 机 制, 启 用 sysctl 设 置 改 进 您 的 磁 盘 和 网 络 I/O 吞 吐 性 能, 并 切 换 到 deadline scheduler latency-performance 用 于 典 型 延 迟 性 能 调 整 的 服 务 器 侧 写 它 可 禁 用 tuned 和 ktune 节 能 机 制, 启 用 sysctl 设 置 改 进 您 的 磁 盘 和 网 络 I/O 延 迟 性 能 所 有 侧 写 都 保 存 在 /etc/tune-profiles 下 的 独 立 子 目 录 中 因 此 /etc/tuneprofiles/desktop-powersave 包 含 所 有 需 要 的 文 件 以 及 那 个 侧 写 的 设 置 每 个 目 录 最 多 包 含 四 个 文 件 : tuned.conf 为 这 个 侧 写 激 活 调 整 服 务 的 配 置 sysctl.ktune ktune 使 用 的 sysctl 设 置 其 格 式 与 /etc/sysconfig/sysctl 文 件 一 致 ( 请 参 考 sysctl 和 sysctl.conf man page) ktune.sysconfig ktune 的 自 身 配 置 文 件, 通 常 为 /etc/sysconfig/ktune ktune.sh ktune 服 务 使 用 的 init 风 格 的 shell 脚 本, 可 在 系 统 启 动 过 程 中 运 行 特 定 命 令 调 整 系 统 启 动 一 个 新 侧 写 的 最 简 单 方 法 就 是 复 制 现 有 的 侧 写 laptop-battery-powersave 侧 写 中 已 经 包 含 丰 富 的 调 整 设 置, 因 此 是 有 益 的 起 始 点 只 要 将 这 个 目 录 复 制 到 如 下 名 称 的 新 侧 写 中 即 可 : cp -a /etc/tune-profiles/laptop-battery-powersave/ /etc/tuneprofiles/myprofile 在 新 侧 写 中 修 改 文 件 以 达 到 您 的 个 人 需 要 例 如 : 如 果 您 要 探 测 CD 更 改, 则 您 可 以 通 过 注 释 出 ktune.sh 脚 本 中 的 相 关 行 来 禁 用 那 个 优 化 : # Disable HAL polling of CDROMS # for i in /dev/scd*; do hal-disable-polling --device $i; done > /dev/null 2>&1 16
第 2 章电 源 管 理 工 具 审 核 及 分 析 2.6. DEVICEKIT-POWER 和 DEVKIT-POWER 在 红 帽 企 业 版 Linux 6 中,DeviceKit-power 承 担 原 本 是 HAL 一 部 分 的 电 源 管 理 功 能, 以 及 在 之 前 的 红 帽 企 业 版 Linux 发 行 本 中 的 GNOME Power Manager 的 一 部 分 功 能 ( 还 可 参 考 第 2.7 节 GNOME 电 源 管 理 器 ) DeviceKit-power 提 供 守 护 进 程 API 和 一 组 命 令 行 工 具 系 统 中 的 每 个 电 源 都 使 用 一 个 设 备 代 表, 无 论 是 否 为 物 理 电 源 例 如 : 笔 记 本 电 脑 电 池 和 交 流 电 源 都 使 用 设 备 代 表 您 可 使 用 devkit-power 命 令 访 问 命 令 行 工 具, 以 下 是 其 选 项 : --enumerate, -e 显 示 系 统 中 每 个 电 源 设 备 的 对 象 路 径, 例 如 : /org/freedesktop/devicekit/power/devices/line_power_ac /org/freedesktop/upower/devicekit/power/battery_bat0 --dump, -d 显 示 系 统 中 所 有 电 源 设 备 的 参 数 --wakeups, -w 显 示 系 统 中 的 CPU 唤 醒 --monitor, -m 监 视 系 统 电 源 更 换, 例 如 : 连 接 或 者 断 开 交 流 电 源, 或 者 电 池 耗 尽 按 Ctrl+C 停 止 监 视 系 统 --monitor-detail 监 视 系 统 电 源 更 换, 例 如 : 连 接 或 者 断 开 交 流 电 源, 或 者 电 池 耗 尽 --monitor-detail 选 项 会 显 示 比 --monitor 选 项 更 详 细 的 情 况 按 Ctrl+C 停 止 监 视 系 统 --show-info object_path, -i object_path 显 示 某 个 具 体 对 象 路 径 的 所 有 可 用 信 息 例 如 : 获 得 有 关 系 统 中 对 象 路 径 /org/freedesktop/upower/devicekit/power/battery_bat0 代 表 的 电 池 的 信 息, 请 运 行 : devkit-power -i /org/freedesktop/upower/devicekit/power/battery_bat0 2.7. GNOME 电 源 管 理 器 GNOME Power Manager 是 作 为 GNOME 桌 面 一 部 分 安 装 的 守 护 进 程 GNOME Power Manager 在 之 前 红 帽 企 业 版 Linux 版 本 中 提 供 的 很 多 电 源 管 理 功 能 已 经 在 红 帽 企 业 版 Linux 6 中 成 为 DeviceKit-power 的 一 部 分 ( 请 参 考 第 2.6 节 DeviceKit-power 和 devkit-power ) 但 是 GNOME Power Manager 仍 保 留 前 端 功 能 在 系 统 托 盘 中 GNOME Power Manager 可 使 用 同 一 程 序 通 知 您 系 统 电 源 状 态 的 改 变, 例 如 : 从 电 池 更 换 到 交 流 电 它 还 可 报 告 电 池 状 态 并 在 电 池 电 量 低 时 提 出 警 告 GNOME Power Manager 还 可 允 许 您 配 置 一 些 基 本 电 源 管 理 设 置 要 访 问 这 些 设 置, 请 点 击 系 统 托 盘 中 的 GNOME Power Manager 图 标, 然 后 点 击 属 性 电 源 管 理 属 性 页 面 中 有 三 个 标 签 : 使 用 交 流 电 17
电 源 管 理 指 南 使 用 电 池 常 规 使 用 使 用 交 流 电 和 使 用 电 池 标 签 指 定 必 须 经 过 多 长 时 间 方 可 关 闭 不 活 跃 系 统 中 的 显 示, 必 须 经 过 多 长 时 间 方 可 将 不 活 跃 系 统 置 于 睡 眠 状 态, 以 及 是 否 在 不 使 用 系 统 时 停 止 磁 盘 驱 动 器 使 用 电 池 标 签 还 可 允 许 您 设 置 显 示 亮 度 并 选 择 系 统 处 于 非 常 低 电 池 容 量 时 的 行 为 例 如 : 默 认 情 况 下 GNOME Power Manager 在 电 池 容 量 达 到 一 定 程 度 时 使 系 统 休 眠 使 用 常 规 标 签 设 定 系 统 中 的 ( 物 理 ) 电 源 按 钮 和 挂 起 按 钮 行 为, 并 指 定 在 什 么 情 况 下 在 系 统 托 盘 中 显 示 GNOME Power Manager 图 标 2.8. 其 他 审 核 方 法 红 帽 企 业 版 Linux 6 提 供 很 多 执 行 系 统 审 核 及 分 析 的 工 具 大 多 数 可 作 为 附 加 信 息 资 源 使 用, 以 防 您 需 要 对 现 有 发 现 进 行 验 证 或 者 您 需 要 对 某 部 分 信 息 进 行 更 深 入 的 研 究 很 多 这 些 工 具 也 可 用 于 性 能 调 试 它 们 包 括 : vmstat vmstat 为 您 给 出 有 关 进 程 内 存 paging 块 I/O 陷 阱 以 及 CPU 活 性 的 详 细 资 料 用 它 可 进 一 步 查 看 系 统 都 做 了 什 么, 以 及 什 么 地 方 忙 碌 iostat iostat 与 vmstat 类 似, 但 只 在 块 设 备 中 是 这 样 它 还 提 供 更 多 详 细 输 出 和 统 计 blktrace blktrace 是 一 个 非 常 详 细 的 块 I/O 追 踪 程 序 它 将 信 息 截 成 与 程 序 关 联 的 单 一 块 与 diskdevstat 合 并 使 用 时 非 常 有 用 18
第 3 章核 心 基 础 结 构 及 技 巧 第 3 章核 心 基 础 结 构 及 技 巧 3.1. CPU 闲 置 状 态 使 用 x86 构 架 的 CPU 支 持 不 同 的 状 态, 在 这 些 状 态 中 部 分 CPU 会 被 取 消 激 活 或 者 以 低 性 能 设 置 运 行 这 些 状 态, 也 就 是 我 们 知 道 的 C 状 态, 允 许 系 统 通 过 部 分 取 消 激 活 其 不 使 用 的 CPU 达 到 节 能 的 目 的 C 状 态 从 C0 开 始 用 数 字 计 算, 数 字 越 大 代 表 CPU 功 能 降 低 越 多, 也 就 越 节 能 虽 然 给 定 数 字 的 C 状 态 在 不 同 处 理 器 间 类 似, 但 为 特 定 处 理 器 或 者 处 理 器 产 品 线 使 用 的 特 定 C 状 态 的 含 义 是 特 定 的 C 状 态 0-3 定 义 如 下 : C0 操 作 或 者 运 行 状 态 在 这 个 状 态 中,CPU 处 于 工 作 状 态, 完 全 没 有 空 闲 C1, 挂 起 处 理 器 不 执 行 任 何 步 骤 的 状 态, 但 通 常 不 处 于 较 低 功 率 状 态 CPU 可 继 续 进 行 处 理 而 没 有 延 迟 所 有 提 供 C 状 态 的 处 理 器 都 需 要 支 持 这 个 状 态 奔 腾 4 处 理 器 支 持 改 进 的 C1 状 态, 即 C1E, 它 实 际 上 是 一 个 低 能 耗 状 态 C2, 时 钟 停 止 在 这 个 状 态 中 处 理 器 停 止 时 钟, 但 它 让 其 暂 存 器 和 缓 冲 保 持 完 整 状 态, 因 此 重 新 启 动 时 钟 后, 它 可 以 立 即 重 新 启 动 处 理 这 是 一 个 可 选 状 态 C3, 休 眠 处 理 器 真 正 进 入 睡 眠 状 态 且 不 需 要 保 存 保 持 更 新 其 缓 冲 因 此 从 这 个 状 态 唤 醒 的 时 间 要 大 大 长 于 从 C2 唤 醒 的 时 间 这 也 是 一 个 可 选 状 态 最 近 使 用 "Nehalem" 微 构 架 的 Intel CPU 有 新 的 C 状 态, 即 C6 它 可 将 供 应 CPU 的 电 压 降 低 到 0, 但 通 常 的 节 能 率 在 80% 到 90% 之 间 红 帽 企 业 版 Linux 6 中 的 内 核 包 括 对 这 个 新 C 状 态 的 优 化 3.2. 使 用 CPUFREQ 调 节 器 减 少 系 统 电 力 消 耗 和 散 热 的 最 有 效 的 方 法 就 是 使 用 CPUfreq CPUfreq -- 也 称 CPU 速 度 计, 即 允 许 随 时 调 整 处 理 器 时 钟 速 度 这 让 系 统 可 在 降 低 的 时 钟 速 度 下 运 行 以 便 节 电 更 改 频 率 的 规 则, 无 论 是 加 快 还 是 减 慢 时 钟 速 度, 以 及 何 时 更 改 频 率, 都 在 CPUfreq 调 节 器 中 定 义 调 节 器 定 义 系 统 的 电 源 属 性, 它 可 影 响 CPU 性 能 每 个 调 节 器 有 其 自 身 的 独 特 负 载 行 为 目 的 和 实 用 性 这 部 分 描 述 了 如 何 选 择 和 配 置 CPUfreq 调 节 器, 每 个 调 节 器 的 属 性 以 及 每 个 调 节 器 适 用 的 负 载 种 类 3.2.1. CPUfreq 调 节 器 类 型 本 节 列 出 了 红 帽 企 业 版 Linux 6 中 可 用 的 不 同 CPUfreq 调 节 器 类 型 cpufreq_performance 性 能 调 节 器 强 制 CPU 使 用 可 能 的 最 高 时 钟 频 率 这 个 频 率 是 静 态 设 置 的, 不 会 改 变 因 此, 这 个 特 定 的 调 节 器 不 提 供 节 能 效 益 它 只 适 用 于 几 个 小 时 的 高 负 载, 且 即 使 在 那 种 情 况 下 也 只 可 用 于 CPU 几 乎 不 ( 或 者 从 不 ) 空 闲 的 时 候 cpufreq_powersave 相 反, 节 电 调 节 器 强 制 CPU 使 用 最 低 可 用 时 钟 频 率 这 个 频 率 将 被 静 态 设 置, 且 不 会 更 改 因 此, 这 个 特 定 调 节 器 提 供 最 大 节 能 效 益, 但 是 以 最 低 CPU 性 能 为 代 价 的 19
电 源 管 理 指 南 这 里 " 节 电 " 有 时 是 不 正 确 的, 因 为 ( 基 本 上 ) 满 负 载 的 低 速 CPU 消 耗 的 能 量 比 没 有 负 载 的 高 速 CPU 要 多 因 此, 当 建 议 在 需 要 低 性 能 时 将 CPU 设 定 为 使 用 节 电 调 节 器 时, 意 外 的 高 负 载 可 能 会 导 致 系 统 实 际 消 耗 了 更 多 的 能 量 节 电 调 节 器 对 CPU 简 单 来 说 更 象 是 " 限 速 器 " 而 不 是 " 节 能 器 " 在 过 热 时 会 出 问 题 的 系 统 和 环 境 中 最 有 用 cpufreq_ondemand 按 需 调 节 器 是 一 个 动 态 调 节 器, 它 可 允 许 CPU 在 系 统 负 载 高 时 达 到 最 大 时 钟 频 率, 还 允 许 系 统 处 于 闲 置 时 使 用 最 小 时 钟 频 率 虽 然 这 允 许 系 统 根 据 系 统 负 载 调 整 电 源 消 耗, 但 也 确 实 要 承 受 频 率 切 换 间 造 成 的 延 迟 因 此, 如 果 系 统 在 闲 置 和 高 负 载 间 切 换 过 于 频 繁, 那 么 延 迟 可 抵 消 任 何 按 需 调 节 器 带 来 的 性 能 / 节 能 优 势 对 大 多 数 系 统 来 说, 按 需 调 节 器 可 在 散 热 电 源 消 耗 性 能 以 及 管 理 性 间 提 供 最 佳 折 衷 方 案 当 系 统 只 在 每 天 的 某 个 具 体 时 间 繁 忙 时, 按 许 调 节 器 将 根 据 负 载 自 动 在 最 大 和 最 小 频 率 间 切 换 而 无 须 进 一 步 操 作 cpufreq_userspace 用 户 空 间 调 节 器 允 许 用 户 空 间 程 序 ( 或 者 任 何 以 root 用 户 运 行 的 进 程 ) 设 定 频 率 这 个 调 节 器 通 常 与 cpuspeed 守 护 进 程 一 同 使 用 在 所 有 调 节 器 中, 用 户 空 间 调 节 器 是 最 可 自 定 义 的, 且 根 据 其 配 置, 它 可 为 您 的 系 统 在 性 能 和 耗 能 间 提 供 最 佳 平 衡 cpufreq_conservative 与 按 需 调 节 器 类 似, 传 统 调 节 器 还 根 据 用 量 调 整 时 钟 频 率 ( 类 似 按 需 调 节 器 ) 但 是 按 需 调 节 器 的 方 式 更 极 端 ( 从 最 大 到 最 小, 再 返 回 ), 传 统 调 节 器 在 更 接 近 的 频 率 间 切 换 这 意 味 着 传 统 调 节 器 会 将 时 钟 频 率 调 整 为 它 认 为 适 合 负 载 的 频 率, 而 不 是 简 单 的 在 最 大 和 最 小 频 率 间 选 择 虽 然 这 样 可 极 大 节 省 能 源 消 耗, 但 它 的 代 价 是 比 按 需 调 节 器 要 损 失 更 多 的 延 迟 注意 您 可 以 使 用 cron 任 务 启 用 调 节 器 这 允 许 您 自 动 在 每 天 的 特 定 时 间 设 定 具 体 调 节 器 因 此, 您 可 以 在 闲 置 时 指 定 低 频 率 调 节 器 ( 例 如 工 作 之 余 ), 并 在 高 负 载 时 返 回 高 频 率 调 节 器 有 关 如 何 启 用 特 定 调 节 器, 请 参 考 第 3.2.2 节 CPUfreq 设 置 中 的 过程 3.2, 启 用 CPUfreq 调 节 器 3.2.2. CPUfreq 设 置 在 选 择 和 配 置 CPUfreq 调 节 器 前, 您 首 先 需 要 添 加 正 确 的 CPUfreq 驱 动 程 序 过程 3.1. 如 何 添 加 CPUfreq 驱 动 程 序 1. 使 用 以 下 命 令 查 看 可 用 于 您 系 统 的 CPUfreq 驱 动 程 序 : ls /lib/modules/[kernel version]/kernel/arch/[architecture]/kernel/cpu/cpufreq/ 2. 使 用 modprobe 添 加 正 确 的 CPUfreq 驱 动 程 序 modprobe [CPUfreq driver] 您 使 用 以 上 命 令 时, 请 确 定 删 除.ko 文 件 名 后 缀 20
第 3 章核 心 基 础 结 构 及 技 巧 重要 当 选 择 适 当 的 CPUfreq 驱 动 程 序 时, 总 是 选 择 p4-clockmod 中 的 acpicpufreq 当 使 用 p4-clockmod 驱 动 程 序 降 低 CPU 的 时 钟 频 率 时, 它 不 会 降 低 电 压 另 一 方 面,acpi-cpufreq 会 随 着 CPU 时 钟 频 率 降 低 电 压, 允 许 每 个 性 能 单 位 降 低 有 更 少 电 力 消 耗 和 散 热 3. 设 定 CPUfreq 驱 动 程 序 后, 您 可 以 查 看 系 统 目 前 正 在 使 用 的 调 节 器 : cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 您 还 可 以 查 看 某 个 具 体 CPU 可 使 用 的 调 节 器, 请 使 用 : cat /sys/devices/system/cpu/[cpu ID]/cpufreq/scaling_available_governors 有 些 CPUfreq 调 节 器 可 能 您 无 法 使 用 在 这 个 情 况 下, 请 使 用 modprobe 添 加 可 启 用 您 要 使 用 的 具 体 CPUfreq 调 节 器 的 内 核 模 块 您 可 在 /lib/modules/[kernel version]/kernel/drivers/cpufreq/ 中 找 到 这 些 内 核 模 块 过程 3.2. 启 用 CPUfreq 调 节 器 1. 如 果 没 有 为 您 的 CPU 列 出 可 用 的 具 体 调 节 器, 请 使 用 modprobe 启 用 您 想 要 使 用 的 调 节 器 例 如 : 如 果 ondemand 调 节 器 不 可 用 于 您 的 CPU, 请 使 用 以 下 命 令 : modprobe cpufreq_ondemand 2. 将 调 节 器 列 入 您 CPU 的 可 用 列 表 后, 您 可 使 用 以 下 命 令 启 用 它 : echo [governor] > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 3.2.3. 调 整 CPUfreq 策 略 和 速 度 您 选 择 适 当 的 CPUfreq 调 节 器 后, 您 可 以 使 用 在 /sys/devices/system/cpu/[cpu ID]/cpufreq/ 中 找 到 的 可 调 按 钮 做 对 每 个 CPU 的 速 度 做 进 一 步 的 调 节 这 些 可 调 按 钮 有 : cpuinfo_min_freq 显 示 CPU 的 最 小 可 用 操 作 频 率 ( 单 位 千 赫 ) cpuinfo_max_freq 显 示 CPU 的 最 大 可 用 操 作 频 率 ( 单 位 千 赫 ) scaling_driver 显 示 在 这 个 CPU 中 用 来 设 定 频 率 的 CPUfreq 驱 动 程 序 scaling_available_governors 显 示 这 个 内 核 中 可 用 的 CPUfreq 调 节 器 如 果 您 要 使 用 不 在 此 文 件 列 表 中 的 CPUfreq 调 节 器, 请 参 考 第 3.2.2 节 CPUfreq 设 置 中 的 过程 3.2, 启 用 CPUfreq 调 节 器 操 作 说 明 scaling_governor 显 示 当 前 使 用 的 CPUfreq 调 节 器 要 使 用 不 同 的 调 节 器, 只 要 使 用 echo [governor] > /sys/devices/system/cpu/[cpu ID]/cpufreq/scaling_governor 命 令 即 可 ( 详 情 请 参 考 第 3.2.2 节 CPUfreq 设 置 中 的 过程 3.2, 启 用 CPUfreq 调 节 器 ) cpuinfo_cur_freq 显 示 CPU 的 当 前 速 度 ( 单 位 千 赫 ) 21
电 源 管 理 指 南 scaling_available_frequencies 列 出 CPU 可 用 频 率, 单 位 千 赫 scaling_min_freq 和 scaling_max_freq 设 定 CPU 策 略 限 制, 单 位 千 赫 重要 当 设 定 策 略 限 制 时, 您 应 该 在 scaling_min_freq 之 前 设 定 scaling_max_freq affected_cpus 列 出 需 要 频 率 协 调 软 件 的 CPU scaling_setspeed 用 于 更 改 CPU 时 钟 速 度, 单 位 千 赫 您 只 能 在 CPU 策 略 限 制 中 设 定 一 个 速 度 ( 根 据 scaling_min_freq 和 scaling_max_freq) 要 查 看 每 个 可 调 整 部 分 的 当 前 值, 请 使 用 cat [tunable] 例 如 : 要 查 看 cpu0 的 当 前 速 度 ( 单 位 千 赫 ), 请 使 用 : cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq. 要 更 改 每 个 可 调 整 部 分 的 值, 请 使 用 echo [value] > /sys/devices/system/cpu/[cpu ID]/cpufreq/[tunable] 例 如 : 将 cpu0 的 最 小 时 钟 速 度 设 定 为 360 千 赫, 请 使 用 : echo 360000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 3.3. 挂 起 和 恢 复 当 系 统 挂 起 时, 内 核 调 用 驱 动 程 序 保 存 其 状 态 然 后 卸 载 它 们 当 系 统 恢 复 时, 它 会 载 入 这 些 试 图 重 新 编 程 其 设 备 的 驱 动 程 序 驱 动 程 序 完 成 这 个 任 务 的 能 力 决 定 了 系 统 是 否 可 以 被 成 功 恢 复 就 这 一 点 而 言 视 频 驱 动 程 序 是 最 成 问 题 的, 因 为 高 级 配 置 和 电 源 界 面 (ACPI) 规 范 不 要 求 系 统 固 件 可 以 重 新 编 程 视 频 硬 件 因 此, 除 非 视 频 驱 动 程 序 可 以 从 完 全 非 启 动 状 态 编 程 硬 件, 否 则 它 们 可 以 阻 止 系 统 恢 复 红 帽 企 业 版 Linux 6 包 括 对 新 图 形 芯 片 组 的 更 大 支 持, 这 个 支 持 可 确 定 挂 起 及 恢 复 在 大 量 平 台 中 正 常 工 作 特 别 是 对 NVIDIA 芯 片 组 的 大 量 改 进, 特 别 是 对 GeForce 8800 系 列 的 改 进 3.4. 无 空 循 环 内 核 之 前,Linux 内 核 在 预 定 频 率 时 周 期 性 断 系 统 中 的 每 个 CPU - 100 Hz,250 Hz 或 者 1000 Hz, 具 体 要 根 据 平 台 而 定 内 核 查 询 CPU 有 关 执 行 的 进 程, 并 使 用 结 果 进 行 进 程 计 数 和 负 载 平 衡 也 就 是 我 们 知 道 的 计 时 器 刻 度, 内 核 执 行 这 些 中 断 时 不 考 虑 CPU 的 电 源 状 态 因 此, 即 使 闲 置 的 CPU 也 要 每 秒 相 应 最 多 1000 次 的 这 种 请 求 在 为 闲 置 CPU 使 用 节 能 方 法 的 系 统 中, 计 时 器 刻 度 可 妨 碍 CPU 让 系 统 保 持 足 够 长 的 闲 置 状 态 以 达 到 从 节 能 中 获 益 的 目 的 红 帽 企 业 版 Linux 6 内 核 运 行 无 空 循 环 : 即 它 使 用 按 需 中 断 替 换 老 的 周 期 性 计 时 器 中 断 因 此 可 允 许 闲 置 CPU 处 于 闲 置 状 态 直 到 请 求 执 行 新 任 务 为 止, 且 进 入 低 功 率 状 态 的 CPU 可 在 此 状 态 保 持 较 长 的 时 间 3.5. 主 动 式 电 源 管 理 主 动 式 电 源 管 理 (ASPM) 在 PCI Express 或 者 PCIe(Peripheral Component Interconnect Express) 子 系 统 中 的 节 电, 其 原 理 为 当 设 备 连 接 的 PCI 连 接 没 有 处 于 使 用 状 态 时 将 其 设 定 为 低 功 率 状 态 ASPM 可 同 时 在 终 端 和 连 接 中 控 制 电 源 状 态, 并 在 连 接 终 端 的 设 备 处 于 满 电 状 态 时 仍 可 在 连 接 中 节 电 22
第 3 章核 心 基 础 结 构 及 技 巧 当 启 用 ASPM 时 会 增 大 设 备 延 迟, 因 为 在 不 同 电 源 状 态 间 转 换 连 接 时 需 要 时 间 ASPM 有 三 个 决 定 电 源 状 态 的 策 略 : 默 认 根 据 系 统 ( 例 如 :BIOS) 中 固 件 指 定 的 默 认 设 置 设 定 PCIe 连 接 电 源 状 态 这 是 ASPM 的 默 认 状 态 节 电 将 ASPM 设 定 为 在 任 何 可 能 的 情 况 下 节 电, 不 考 虑 性 能 损 失 性 能 禁 用 ASPM 以 便 允 许 PCI 链 接 以 最 佳 性 能 操 作 ASPM 策 略 是 在 /sys/module/pcie_aspm/parameters/policy 中 设 定, 但 也 可 在 引 导 时 使 用 pcie_aspm 内 核 参 数 指 定, 其 中 pcie_aspm=off 禁 用 ASPM,pcie_aspm=force 启 用 ASPM, 即 使 在 不 支 持 ASPM 的 设 备 中 也 可 以 警告 如 果 设 定 了 pcie_aspm=force, 不 支 持 ASPM 的 硬 件 可 导 致 系 统 停 止 响 应 请 在 设 定 pcie_aspm=force 前 确 定 系 统 中 的 所 有 PCI 都 支 持 ASPM 3.6. 主 动 连 接 电 源 管 理 主 动 连 接 电 源 管 理 (ALPM) 是 一 项 节 能 技 术, 其 原 理 为 通 过 在 闲 置 时 ( 就 是 没 有 I/O 的 时 候 ) 将 到 磁 盘 的 SATA 连 接 设 定 为 低 功 率 模 式 帮 助 磁 盘 节 电 在 那 个 连 接 中 有 I/O 请 求 队 列 后,ALPM 会 自 动 将 SATA 连 接 恢 复 为 活 跃 电 源 状 态 ALPM 使 用 的 节 电 技 术 是 以 磁 盘 延 迟 为 代 价 的 因 此, 您 应 该 只 在 系 统 可 能 会 长 时 间 处 于 闲 置 I/O 状 态 时 使 用 ALPM ALPM 只 可 用 于 使 用 高 级 主 机 控 制 器 接 口 (AHCI) 的 SATA 控 制 器 有 关 AHCI 详 情 请 参 考 http://www.intel.com/technology/serialata/ahci.htm 可 用 时, 默 认 启 用 ALPM ALPM 有 三 种 模 式 : min_power 这 个 模 式 将 连 接 设 定 为 其 最 低 功 率 状 态 (SLUMBER), 此 时 磁 盘 中 没 有 任 何 I/O 这 个 模 式 在 可 能 会 延 长 闲 置 周 期 时 有 用 medium_power 这 个 模 式 将 连 接 设 定 为 第 二 低 功 率 状 态 (PARTIAL), 此 时 磁 盘 中 没 有 I/O 这 个 模 式 是 设 计 用 来 允 许 在 尽 量 不 影 响 性 能 的 条 件 下 在 电 源 状 态 间 进 行 转 换 ( 例 如 : 在 中 等 I/O 负 载 和 闲 置 I/O 时 ) medium_power 模 式 允 许 根 据 负 载 情 况 在 PARTIAL 和 满 电 ( 即 "ACTIVE") 状 态 间 进 行 连 接 转 换 请 注 意 不 可 能 直 接 从 PARTIAL 转 换 到 SLUMBER 然 后 再 转 回 来 在 这 里, 这 两 种 电 源 状 态 都 需 要 首 先 转 换 成 ACTIVE 状 态, 然 后 方 可 转 换 到 另 一 个 状 态 23
电 源 管 理 指 南 max_performance ALPM 被 禁 用 当 磁 盘 中 没 有 I/O 时 连 接 不 会 处 于 任 何 低 功 率 状 态 要 查 看 您 的 SATA 主 机 适 配 器 是 否 真 正 支 持 ALPM, 您 可 以 查 看 是 否 有 文 件 /sys/class/scsi_host/host*/link_power_management_policy 要 更 改 设 置, 只 要 在 这 些 文 件 中 写 入 本 章 节 中 描 述 的 值 或 者 显 示 文 件 检 查 当 前 设 置 即 可 重要 将 ALPM 设 定 为 min_power 或 者 medium_power 将 自 动 禁 用 " 热 插 拔 " 特 性 3.7. RELATIME 驱 动 器 访 问 优 化 POSIX 标 准 要 求 操 作 系 统 维 护 记 录 每 个 文 件 最 后 一 次 被 访 问 的 文 件 系 统 元 数 据 这 个 时 间 戳 被 称 为 atime, 维 护 它 需 要 一 个 重 复 的 对 存 储 的 写 入 操 作 这 些 写 入 操 作 让 存 储 是 设 备 及 其 连 接 保 持 忙 碌 和 通 电 状 态 因 为 很 少 应 用 程 序 会 使 用 atime 数 据, 所 以 这 个 存 储 设 备 活 动 是 在 浪 费 电 力 特 别 是 即 使 没 有 从 存 储 中 读 取 该 文 件 也 会 发 生 写 入 存 储 的 事 件, 但 是 从 缓 冲 中 写 入 有 时,Linux 内 核 还 支 持 mount 的 noatime 选 项, 并 不 在 使 用 此 选 项 挂 载 的 文 件 系 统 中 写 入 atime 但 是 只 是 关 闭 这 个 特 性 是 有 问 题 的, 因 为 有 些 应 用 程 序 会 依 赖 atime 数 据, 并 在 此 数 据 不 可 用 时 失 败 红 帽 企 业 版 Linux 6 使 用 的 内 核 之 后 此 另 一 个 可 替 换 选 项 - relatime Relatime 维 护 atime 数 据, 但 不 是 每 次 访 问 该 文 件 时 都 更 改 启 用 这 个 选 项, 则 只 在 上 次 更 新 atime(mtime) 后 修 改 该 文 件 时, 或 者 最 后 一 次 访 问 该 文 件 是 在 相 当 长 一 段 时 间 前 ( 默 认 为 一 天 ) 时 才 会 将 atime 数 据 写 入 磁 盘 默 认 情 况 下, 所 有 现 在 挂 载 的 文 件 系 统 都 启 用 relatime 要 在 整 个 系 统 中 限 制 这 个 特 性, 请 使 用 boot 参 数 default_relatime=0 如 果 默 认 在 某 个 系 统 中 启 用 relatime, 您 可 以 通 过 使 用 选 项 norelatime 挂 载 某 个 系 统 来 限 制 它 在 某 个 具 体 文 件 系 统 中 的 使 用 最 后, 要 使 系 统 更 新 文 件 的 atime 数 据 的 默 认 周 期 有 所 不 同, 请 使 用 relatime_interval= 引 导 参 数, 以 秒 为 单 位 指 定 周 期 默 认 值 为 86400 3.8. 功 率 封 顶 红 帽 企 业 版 Linux 6 支 持 最 近 在 硬 件 中 使 用 的 功 率 封 顶, 比 如 HP 的 动 态 功 率 封 顶 (DPC) 以 及 Intel 的 节 点 管 理 器 (NM) 技 术 功 率 封 顶 允 许 管 理 员 使 用 服 务 器 限 制 功 率 消 耗, 但 它 还 可 允 许 管 理 器 更 有 效 地 规 划 数 据 中 心, 因 为 极 大 降 低 了 现 有 电 源 供 应 的 超 载 风 险 管 理 器 可 在 同 一 物 理 印 迹 中 放 置 更 多 的 服 务 器 并 确 定 如 果 服 务 器 电 源 消 耗 封 顶, 在 高 负 载 时 对 电 源 的 需 求 会 超 出 可 用 的 电 源 HP 动 态 功 率 封 顶 动 态 功 率 封 顶 是 一 个 在 选 择 ProLiant 和 刀 片 系 统 服 务 器 时 的 特 性, 它 可 允 许 系 统 管 理 员 对 一 个 服 务 器 或 者 一 组 服 务 器 的 电 源 消 耗 封 顶 这 个 封 顶 是 一 个 绝 对 限 制, 无 论 其 当 前 工 作 负 载 如 何, 服 务 器 将 无 法 超 过 该 限 制 这 个 封 顶 只 在 服 务 器 达 到 其 电 源 消 耗 限 制 时 才 起 效 此 时 某 个 管 理 进 程 会 调 整 CPU P 状 态 和 始 终 刻 度 来 限 制 电 力 消 耗 动 态 功 率 封 顶 会 修 改 独 立 操 作 系 统 的 CPU 行 为, 但 是 HP 的 集 成 的 Lights-Out 2(iLO2) 固 件 允 许 操 作 系 统 访 问 管 理 处 理 器, 因 此 用 户 空 间 中 的 应 用 程 序 可 查 询 管 理 处 理 器 红 帽 企 业 版 Linux 6 中 使 用 的 内 核 包 括 用 于 HP ilo 和 ilo2 固 件 的 驱 动 程 序, 它 们 可 允 许 程 序 查 询 /dev/hpilo/dxccbn 中 的 管 理 处 理 器 该 内 核 还 包 括 hwmon sysfs 接 口 扩 展 来 支 持 功 率 封 顶 特 性, 以 及 用 于 ACPI 4.0 使 用 sysfs 接 口 电 源 米 表 的 驱 动 程 序 这 些 特 性 允 许 操 作 系 统 和 用 户 空 间 工 具 共 同 读 取 为 功 率 封 顶 配 置 的 值 以 及 系 统 的 当 前 电 源 用 量 有 关 HP 动 态 功 率 封 顶 详 情 请 参 考 HP 功 率 封 顶 以 及 用 于 ProLiant 服 务 器 的 HP 动 态 功 率 封 顶, 地 址 为 :http://h20000.www2.hp.com/bc/docs/support/supportmanual/c01549455/c01549455.pdf 24
第 3 章核 心 基 础 结 构 及 技 巧 Intel 节 点 管 理 器 Intel 节 点 管 理 器 在 系 统 中 强 制 使 用 功 率 封 顶, 使 用 处 理 器 P 状 态 和 T 状 态 限 制 CPU 性 能, 并 因 此 节 能 通 过 设 置 电 源 管 理 策 略, 管 理 员 可 将 系 统 配 置 为 在 系 统 负 载 低 时, 比 如 夜 间 或 者 周 末, 消 耗 较 少 的 电 力 Intel 节 点 管 理 器 使 用 直 接 操 作 系 统 配 置 和 电 源 管 理 (OSPM) 通 过 标 准 高 级 配 置 和 电 源 接 口 调 整 CPU 性 能 当 Intel 节 点 管 理 器 通 知 OSPM 驱 动 程 序 更 改 到 T 状 态 时, 该 驱 动 程 序 会 响 应 并 更 改 处 理 器 P 状 态 同 样, 当 Intel 节 点 管 理 器 通 知 OSPM 驱 动 程 序 更 改 到 P 状 态 时, 该 驱 动 程 序 也 会 相 应 更 改 T 状 态 这 些 更 改 自 动 进 行 且 不 需 要 操 作 系 统 有 进 一 步 的 输 入 管 理 员 使 用 Intel 数 据 中 心 管 理 器 (DCM) 软 件 配 置 并 监 控 Intel 节 点 管 理 器 有 关 Intel 节 点 管 理 器 详 情 请 参 考 节 点 管 理 器 - 动 态 管 理 数 据 中 心 电 源, 地 址 为 :http://communities.intel.com/docs/doc-4766 3.9. 改 进 的 图 形 电 源 管 理 红 帽 企 业 版 Linux 6 通 过 删 除 不 必 要 的 资 源 消 耗 在 图 形 和 显 示 设 备 中 节 能 LVDS 重 新 计 时 低 压 差 分 信 号 传 输 (Low-voltage differential signalling,lvds) 是 使 用 铜 线 承 载 电 信 号 的 系 统 一 个 主 要 的 应 用 是 将 像 素 信 息 传 输 到 笔 记 本 电 脑 的 液 晶 显 示 (LCD) 屏 幕 中 所 有 显 示 都 有 刷 新 率 - 即 它 们 从 图 形 控 制 器 接 受 新 鲜 数 据 并 在 屏 幕 中 重 新 成 像 的 频 率 通 常 屏 幕 每 秒 接 受 60 次 新 鲜 数 据 ( 即 频 率 为 60 Hz) 当 屏 幕 和 图 形 控 制 器 是 以 LVDS 连 接 时,LVDS 系 统 在 每 次 刷 新 时 都 会 消 耗 能 量 当 闲 置 时, 很 多 LCD 屏 幕 的 刷 新 率 都 会 下 降 到 30 Hz, 且 不 会 产 生 明 显 的 影 响 ( 与 阴 极 射 线 管 (CRT) 显 示 器 不 同, 后 者 在 降 低 刷 新 率 时 会 产 生 闪 烁 现 象 ) 红 帽 企 业 版 Linux 6 内 核 使 用 的 Intel 图 形 适 配 器 的 驱 动 程 序 可 自 动 执 行 这 个 降 频, 并 在 屏 幕 闲 置 时 节 约 0.5 W 左 右 的 电 力 启 用 内 存 自 动 刷 新 同 步 动 态 随 机 访 问 内 存 (SDRAM) - 由 于 用 于 图 形 适 配 器 的 视 频 内 存, 因 此 每 秒 会 重 复 充 电 上 千 次, 以 便 每 个 内 存 单 元 可 保 留 保 存 在 其 中 的 数 据 除 了 管 理 数 据 的 主 要 功 能 外, 因 为 有 数 据 流 入 或 者 流 出 内 存, 所 以 内 存 控 制 器 通 常 负 责 初 始 化 这 些 刷 新 循 环 但 是 SDRAM 还 有 一 个 低 功 率 自 动 刷 新 模 式 在 这 个 模 式 中, 内 存 使 用 内 部 计 时 器 生 成 其 自 身 刷 新 循 环, 它 可 允 许 系 统 在 不 损 害 当 前 内 存 数 据 的 情 况 下 关 闭 内 存 控 制 器 红 帽 企 业 版 Linux 6 使 用 的 内 核 可 在 Intel 图 形 适 配 器 处 于 闲 置 状 态 时 触 发 内 存 自 动 刷 新, 并 可 节 约 0.8 W 左 右 的 电 力 GPU 时 钟 修 订 典 型 图 形 处 理 单 元 (GPU) 包 含 管 理 其 内 部 电 路 不 同 部 分 的 内 部 时 钟 红 帽 企 业 版 Linux 6 使 用 的 内 核 可 降 低 部 分 Intel 和 ATI GPU 的 内 部 时 钟 频 率 减 少 GPU 组 件 在 给 定 时 间 内 执 行 循 环 的 次 数 可 减 少 其 在 那 些 它 们 不 一 定 要 执 行 的 循 环 中 消 耗 的 能 量 当 GPU 闲 置 时, 内 核 可 自 动 降 低 这 些 时 钟 的 速 度 ; 同 时 当 GPU 活 性 增 强 时 会 提 高 其 时 钟 速 度 降 低 GPU 时 钟 循 环 最 多 可 节 省 5 W 电 力 GPU 关 闭 红 帽 企 业 版 Linux 6 中 使 用 的 Intel 和 ATI 图 形 驱 动 程 序 可 探 测 到 什 么 时 候 适 配 器 中 没 有 连 接 显 示 器, 并 完 全 关 闭 GPU 这 个 功 能 对 不 经 常 连 接 显 示 器 的 服 务 器 尤 为 重 要 3.10. RFKILL 很 多 计 算 机 系 统 包 含 无 线 电 传 输, 其 中 包 括 Wi-Fi 蓝 牙 和 3G 设 备 这 些 设 备 消 耗 电 源, 在 不 使 用 这 些 设 备 时 是 一 种 浪 费 RFKill 是 Linux 内 核 中 的 一 个 子 系 统, 它 可 提 供 一 个 界 面, 在 此 界 面 中 可 查 询 激 活 并 取 消 激 活 计 算 机 系 统 中 的 无 线 电 传 输 当 取 消 激 活 传 输 时, 可 使 其 处 于 可 被 软 件 重 新 激 活 的 状 态 ( 软 锁 定 ) 或 者 将 其 放 在 软 件 无 法 重 新 激 活 的 位 置 ( 硬 锁 定 ) 25
电 源 管 理 指 南 RFKill 核 为 子 系 统 提 供 应 用 程 序 编 程 界 面 (API) 内 核 驱 动 程 序 被 设 计 为 支 持 RFKill 使 用 这 个 API 注 册 内 核, 并 包 含 启 用 和 禁 用 这 个 设 备 的 方 法 另 外,RFKill 核 提 供 用 户 程 序 可 解 读 的 通 知 以 及 用 户 程 序 查 询 传 输 状 态 的 方 法 RFKill 界 面 位 于 /dev/rfkill, 其 中 包 含 系 统 中 所 有 无 线 电 传 输 的 当 前 状 态 每 个 设 备 都 在 sysfs 中 注 册 当 前 RFKill 状 态 另 外, 在 启 用 了 RFKill 的 设 备 中 每 当 状 态 更 改 时,RFKill 会 发 出 uevents Rfkill 是 一 个 命 令 行 工 具, 您 可 使 用 它 查 询 和 更 改 系 统 中 启 用 了 RFKill 的 设 备 要 获 得 这 个 工 具, 请 安 装 rfkill 软 件 包 使 用 命 令 rfkill list 获 得 设 备 列 表, 每 个 都 包 含 与 之 关 联 的 索 引 号, 从 0 开 始 您 可 以 使 用 这 个 索 引 号 让 rfkill 停 止 使 用 或 者 使 用 某 个 设 备, 例 如 : rfkill block 0 停 用 系 统 中 第 一 个 启 用 RFKill 的 设 备 您 还 可 以 使 用 rfkill 阻 断 某 一 类 设 备, 或 者 所 有 启 用 了 RFKill 的 设 备 例 如 : rfkill block wifi 停 用 系 统 中 的 所 有 Wi-Fi 设 备 要 停 用 所 有 启 用 了 RFKill 的 设 备, 请 运 行 : rfkill block all 要 重 新 使 用 设 备, 请 运 行 rfkill unblock, 而 不 是 rfkill block 要 获 得 rfkill 可 停 用 的 完 整 设 备 类 别 列 表, 请 运 行 rfkill help 3.11. 在 用 户 空 间 中 优 化 减 少 系 统 硬 件 的 工 作 量 是 节 能 的 关 键 因 此 虽 然 第 3 章核 心 基 础 结 构 及 技 巧 中 描 述 的 更 改 允 许 系 统 在 减 少 电 源 消 耗 的 各 种 状 态 下 操 作, 而 用 户 空 间 中 要 求 系 统 硬 件 进 行 不 必 要 工 作 的 程 序 会 阻 止 硬 件 进 入 这 种 状 态 在 红 帽 企 业 版 Linux 6 开 发 过 程 中, 在 以 下 区 域 执 行 审 核 来 降 低 硬 件 的 不 必 要 需 求 : 减 少 唤 醒 红 帽 企 业 版 Linux 6 使 用 无 空 循 环 内 核 ( 请 参 考 第 3.4 节 无 空 循 环 内 核 ), 它 允 许 CPU 保 持 深 度 闲 置 状 态 的 时 间 更 长 一 些 但 是 计 时 器 刻 度 不 是 过 度 CPU 唤 醒 的 唯 一 原 因, 来 自 程 序 的 功 能 调 用 还 可 阻 止 CPU 进 入 或 者 保 持 闲 置 状 态 可 在 50 多 个 程 序 中 减 少 不 必 要 的 功 能 调 用 减 少 存 储 和 网 络 IO 输 入 或 者 输 出 (IO) 到 存 储 设 备 和 网 络 接 口 会 强 制 消 耗 电 源 在 具 有 处 于 闲 置 状 态 时 减 少 电 源 消 耗 功 能 ( 比 如 ALPM 或 者 ASPM) 的 存 储 和 网 络 设 备 中, 这 个 流 量 可 阻 止 该 设 备 进 入 或 者 保 持 闲 置 状 态, 并 可 阻 止 硬 盘 在 不 使 用 时 转 速 降 低 已 经 在 有 些 程 序 中 最 小 化 了 过 度 或 者 不 必 要 的 需 求 特 别 是 那 些 阻 止 硬 盘 降 低 转 速 的 需 求 初 始 化 脚 本 审 核 无 论 是 否 需 要 都 自 动 启 动 的 服 务 会 在 很 大 程 度 上 浪 费 系 统 资 源 系 统 应 尽 量 将 其 设 定 为 默 认 "off" 或 者 "on demand" 例 如 : 无 论 是 否 有 蓝 牙 设 备, 以 前 在 系 统 启 动 时, 启 用 蓝 牙 服 务 的 BlueZ 会 自 动 运 行 BlueZ 启 动 脚 本 现 在 在 启 动 该 服 务 前 检 查 系 统 中 是 否 有 蓝 牙 设 备 26
第 4 章使 用 案 例 第 4 章使 用 案 例 本 章 描 述 了 两 类 使 用 案 例 演 示 本 指 南 中 描 述 的 分 析 和 配 置 方 法 第 一 个 示 例 说 的 是 典 型 服 务 器, 第 二 个 是 典 型 笔 记 本 电 脑 4.1. 示 例 - 服 务 器 现 在 典 型 的 标 准 服 务 器 基 本 都 包 含 红 帽 企 业 版 Linux 6 中 支 持 的 所 有 所 需 硬 件 功 能 您 的 首 要 考 虑 是 该 服 务 器 主 要 使 用 的 负 载 类 型 根 据 这 个 信 息 您 可 以 决 定 要 优 化 哪 些 组 件 节 能 不 考 虑 服 务 器 类 型, 通 常 不 需 要 图 像 性 能 因 此 可 打 开 GPU 节 能 网 页 服 务 器 网 页 服 务 器 需 要 网 络 和 磁 盘 I/O 根 据 外 部 连 接 速 度,100 Mbit/s 应 该 足 够 了 如 果 该 机 器 大 多 数 提 供 的 是 静 态 页 面,CPU 性 能 则 并 不 重 要 因 此 电 源 管 理 选 项 应 包 括 : 计 算 服 务 器 无 tuned 的 磁 盘 或 者 网 络 插 件 打 开 ALPM 打 开 按 需 调 节 器 网 卡 限 制 为 100 Mbit/s 计 算 服 务 器 主 要 是 CPU 电 源 管 理 选 择 可 能 包 括 : 邮 件 服 务 器 根 据 任 务 以 及 出 现 数 据 存 储 的 位 置, 激 活 tuned 的 磁 盘 或 者 网 络 插 件 ; 或 者 在 批 处 理 系 统 中 完 全 激 活 tuned 根 据 应 用, 可 能 是 性 能 调 节 器 邮 件 服 务 器 主 要 需 要 磁 盘 I/O 和 CPU 电 源 管 理 选 择 应 包 括 : 文 件 服 务 器 打 开 按 需 调 节 器, 因 为 CPU 最 后 的 几 个 百 分 比 并 不 重 要 无 tuned 的 磁 盘 或 者 网 络 插 件 不 应 该 限 制 网 络 速 度, 因 为 邮 件 通 常 是 内 部 的, 并 可 因 此 从 1 Gbit/s 或 者 10 Gbit/s 连 接 中 获 益 文 件 服 务 器 的 需 要 与 邮 件 服 务 器 类 似, 但 根 据 所 用 协 议, 可 能 需 要 更 多 的 CPU 性 能 通 常, 基 于 Saba 的 服 务 器 需 要 的 CPU 比 NFS 多, 而 NFS 又 比 iscsi 需 要 更 多 的 CPU 即 使 如 此, 您 应 可 以 使 用 按 需 调 节 器 目 录 服 务 器 目 录 服 务 器 通 常 对 磁 盘 I/O 的 要 求 较 低, 特 别 是 在 有 足 够 RAM 的 情 况 下 网 络 延 迟 最 重 要, 而 网 络 I/O 次 之 您 可 以 考 虑 使 用 较 低 连 接 速 度 的 延 迟 网 络 调 节, 但 您 应 为 具 体 网 络 进 行 细 心 的 测 试 4.2. 示 例 - 笔 记 本 电 脑 27
电 源 管 理 指 南 另 一 个 电 源 管 理 和 节 能 通 常 起 作 用 的 示 例 就 是 笔 记 本 电 脑 因 为 笔 记 本 电 脑 一 般 已 经 被 设 计 为 比 工 作 站 或 者 服 务 器 节 省 很 多 电 力 当 使 用 电 池 模 式 时, 节 能 可 让 您 的 电 池 使 用 时 间 多 几 分 钟 虽 然 这 部 分 着 重 阐 述 笔 记 本 电 脑 的 电 池 模 式, 但 您 仍 然 可 在 使 用 交 流 电 供 电 时 也 使 用 一 些 或 者 所 有 调 整 在 笔 记 本 电 脑 中 单 一 组 件 中 的 节 能 通 常 要 比 在 工 作 站 中 更 明 显 例 如 :1 Gbit/s 网 络 接 口 以 100 Mbits/s 运 行 时 可 节 电 大 约 3-4 瓦 对 于 总 耗 电 400 瓦 的 典 型 服 务 器 来 说, 这 个 节 能 大 概 是 在 1 % 在 总 耗 电 40 瓦 的 典 型 笔 记 本 电 脑 中, 这 一 个 组 件 的 节 能 就 是 总 耗 电 量 的 10 % 典 型 笔 记 本 电 脑 中 的 具 体 节 能 优 化 包 括 : 将 系 统 BIOS 配 置 为 禁 用 所 有 您 不 使 用 的 硬 件 例 如 : 并 口 或 者 串 口 读 卡 器 摄 像 头 WiFi 以 及 蓝 牙, 这 里 只 给 出 一 些 可 能 的 硬 件 在 较 暗 的 环 境 中, 您 不 需 要 使 用 最 大 亮 度 就 可 舒 服 地 阅 读 屏 幕 中 的 内 容, 此 时 可 调 暗 显 示 请 在 GNOME 桌 面 中 使 用 系 统 + 首 选 项 电 源 管 理, 在 KDE 桌 面 中 使 用 Kickoff Application Launcher + 计 算 机 + 系 统 设 置 + 高 级 电 源 管 理, 或 者 在 命 令 行 中 使 用 gnome-power-manager 或 者 xbacklight, 或 者 您 笔 记 本 电 脑 中 的 功 能 键 使 用 tuned-adm 的 laptop-battery-powersave 侧 写 启 用 整 个 节 能 机 制 请 注 意 会 影 响 硬 盘 和 网 络 接 口 的 性 能 和 延 迟 另 外 您 可 在 各 种 系 统 设 置 中 执 行 很 多 小 的 调 整 : 请 使 用 按 需 调 节 器 ( 红 帽 企 业 版 Linux 6 中 默 认 启 用 ) 启 用 笔 记 本 电 脑 模 式 (laptop-battery-powersave 侧 写 的 一 部 分 ): echo 5 > /proc/sys/vm/laptop_mode 增 加 磁 盘 冲 洗 时 间 (laptop-battery-powersave 侧 写 的 一 部 分 ): echo 1500 > /proc/sys/vm/dirty_writeback_centisecs 禁 用 nmi 监 视 器 (laptop-battery-powersave 侧 写 的 一 部 分 ): echo 0 > /proc/sys/kernel/nmi_watchdog 启 用 AC97 音 频 节 能 ( 在 红 帽 企 业 版 Linux 6 中 默 认 启 用 ): echo Y > /sys/module/snd_ac97_codec/parameters/power_save 启 用 多 核 节 能 (laptop-battery-powersave 侧 写 的 一 部 分 ): echo Y > /sys/module/snd_ac97_codec/parameters/power_save 启 用 USB 自 动 挂 起 : for i in /sys/bus/usb/devices/*/power/autosuspend; do echo 1 > $i; done 请 注 意 :USB 自 动 挂 起 并 不 适 用 于 所 有 USB 设 备 为 ALPM 启 用 最 小 能 量 设 置 (laptop-battery-powersave 侧 写 的 一 部 分 ): 28
第 4 章使 用 案 例 echo min_power > /sys/class/scsi_host/host*/link_power_management_policy 使 用 relatime 挂 载 文 件 系 统 ( 在 红 帽 企 业 版 Linux 6 中 默 认 使 用 ): mount -o remount,relatime mountpoint 为 硬 盘 激 活 最 佳 节 能 模 式 (laptop-battery-powersave 侧 写 的 一 部 分 ): hdparm -B 1 -S 200 /dev/sd* 禁 用 CD-ROM 调 用 (laptop-battery-powersave 侧 写 的 一 部 分 ): hal-disable-polling --device /dev/scd* 将 屏 幕 亮 度 降 低 至 50 或 更 小, 例 如 : xbacklight -set 50 为 屏 幕 闲 置 激 活 DPMS: xset +dpms; xset dpms 0 0 300 降 低 Wi-Fi 能 源 等 级 (laptop-battery-powersave 侧 写 的 一 部 分 ): for i in /sys/bus/pci/devices/*/power_level ; do echo 5 > $i ; done 取 消 激 活 Wi-Fi: echo 1 > /sys/bus/pci/devices/*/rf_kill 将 有 线 网 络 限 制 为 100 Mbit/s(laptop-battery-powersave 侧 写 的 一 部 分 ): ethtool -s eth0 advertise 0x0F 29
电 源 管 理 指 南 附录 A. 开 发 者 小 贴 示 每 本 优 秀 的 编 程 课 本 都 包 含 内 存 分 配 以 及 具 体 功 能 性 能 的 问 题 当 您 开 发 自 己 的 软 件 时, 请 注 意 可 能 在 运 行 该 软 件 的 系 统 中 增 加 电 源 消 耗 的 问 题 虽 然 这 些 考 虑 不 会 影 响 每 一 行 代 码, 但 您 可 以 优 化 那 些 经 常 成 为 性 能 瓶 颈 部 分 的 代 码 经 常 会 出 问 题 的 技 术 包 括 : 使 用 线 程 不 必 要 CPU 唤 醒 以 及 未 有 效 使 用 唤 醒 如 果 您 必 须 执 行 唤 醒, 尽 快 一 次 做 完 所 有 的 事 ( 迅 速 返 回 闲 置 状 态 ) 不 必 要 的 [f]sync() 使 用 不 必 要 的 活 跃 调 用 或 者 使 用 简 短 常 规 超 时 ( 使 用 响 应 事 件 ) 没 有 有 效 使 用 唤 醒 低 效 磁 盘 访 问 使 用 大 量 缓 冲 来 避 免 频 繁 的 磁 盘 访 问 一 次 写 入 大 块 信 息 低 效 使 用 计 时 器 可 能 时 使 用 跨 应 用 程 序 ( 甚 至 跨 系 统 ) 的 组 群 计 时 器 过 量 的 I/O, 电 源 消 耗 或 者 内 存 使 用 ( 包 括 内 存 泄 露 ) 执 行 不 必 要 计 算 下 面 的 部 分 更 详 细 地 阐 述 这 些 方 面 A.1. 使 用 线 程 普 遍 认 为 使 用 线 程 使 应 用 程 序 可 更 好 且 更 迅 速 地 执 行, 但 并 不 总 是 这 样 Python Python 使 用 全 局 锁 定 解 码 器 [1], 因 此 使 用 线 程 只 能 在 有 大 量 I/O 操 作 时 受 益 Unladen-swallow [2] 是 一 个 Python 快 速 部 署, 您 可 用 它 来 优 化 您 的 代 码 Perl Perl 线 程 原 是 用 于 系 统 中 不 使 用 forking 技 术 的 应 用 程 序 ( 比 如 使 用 32 位 Windows 操 作 系 统 的 系 统 ) 在 Perl 线 程 中 会 为 每 个 单 一 线 程 复 制 数 据 ( 写 时 复 制 ) 数 据 不 是 默 认 共 享 的, 因 为 用 户 应 该 可 以 定 义 数 据 共 享 等 级 必 须 包 括 共 享 threads::shared 模 块 的 数 据 但 是 数 据 不 仅 仅 是 被 复 制 ( 写 时 复 制 ), 该 模 块 还 为 这 些 数 据 生 成 了 捆 绑 变 量, 这 就 需 要 更 多 的 时 间, 且 速 度 更 慢 [3] C C 线 程 共 享 同 一 内 存, 每 个 线 程 都 有 自 己 的 栈, 同 时 内 核 不 一 定 要 生 成 新 的 文 件 描 述 符 并 分 配 新 的 内 存 空 间 C 可 以 真 正 在 更 多 线 程 中 使 用 更 多 CPU 支 持 因 此 要 最 大 化 您 的 线 程 性 能, 请 使 用 低 级 语 言, 比 如 C 或 者 C++ 如 果 您 使 用 脚 本 语 言, 请 考 虑 写 入 一 个 C 绑 定 请 使 用 分 析 器 识 别 不 能 很 好 执 行 的 代 码 [4] A.2. 唤 醒 30
附录 A. 开 发 者 小 贴 示 很 多 应 用 程 序 都 会 扫 描 配 置 文 件 中 的 更 改 在 很 多 情 况 下, 这 种 扫 描 的 时 间 间 隔 是 固 定 的, 例 如 : 每 分 钟 这 可 能 是 个 问 题, 因 为 它 强 制 将 磁 盘 从 低 转 速 状 态 唤 醒 最 佳 解 决 方 案 是 找 到 合 理 的 时 间 间 隔, 好 的 检 查 机 制 或 者 使 用 inotify 检 查 并 响 应 每 个 事 件 Inotify 可 查 看 文 件 或 者 目 录 中 的 各 种 更 改 例 如 : int fd; fd = inotify_init(); int wd; /* checking modification of a file - writing into */ wd = inotify_add_watch(fd, "./myconfig", IN_MODIFY); if (wd < 0) { inotify_cant_be_used(); switching_back_to_previous_checking(); }... fd_set rdfs; struct timeval tv; int retval; FD_ZERO(&rdfs); FD_SET(0, &rdfs); tv.tv_sec = 5; value = select(1, &rdfs, NULL, NULL, &tv); if (value == -1) perror(select); else { do_some_stuff(); }... 这 个 方 法 的 优 点 是 您 可 执 行 不 同 的 检 查 主 要 的 局 限 是 一 个 系 统 中 的 查 看 次 数 是 有 限 的 次 数 可 在 /proc/sys/fs/inotify/max_user_watches 中 获 得, 虽 然 该 数 字 是 可 以 更 改 的, 但 并 不 建 议 如 此 操 作 再 有,inotify 失 败 时, 该 代 码 必 须 返 回 不 同 的 检 查 方 法, 通 常 意 味 着 在 源 代 码 中 会 有 很 多 #if #define 有 关 inotify 的 详 情 请 参 考 inotify man page A.3. FSYNC Fsync 被 视 为 大 量 消 耗 I/O 的 操 作, 但 这 并 不 完 全 正 确 例 如 : 参 见 Theodore Ts'o's 的 文 章 不 要 害 怕 fsync! [5] 以 及 附 带 的 讨 论 Firefox 原 来 在 用 户 每 次 点 击 一 个 链 接 时 都 调 用 sqlite 程 序 库 进 入 新 的 页 面 Sqlite 调 用 fsync, 且 由 于 文 件 系 统 设 置 ( 主 要 使 用 数 据 排 序 模 式 的 ext3), 什 么 都 不 发 生 时 会 有 一 个 长 时 间 延 迟 如 果 另 一 个 进 程 同 时 正 在 复 制 一 个 大 文 件, 这 就 需 要 很 长 的 时 间 ( 最 长 可 达 30 秒 ) 但 在 另 一 个 示 例 中 根 本 不 使 用 fsync, 则 在 切 换 到 ext4 文 件 系 统 时 出 了 问 题 Ext3 是 被 设 定 为 数 据 排 序 模 式, 它 会 每 几 秒 钟 排 空 一 次 内 存 并 将 其 保 存 到 磁 盘 中 但 ext4 使 用 的 是 笔 记 本 电 脑 模 式, 保 存 内 存 的 时 间 间 隔 较 长, 且 可 能 在 系 统 意 外 关 闭 时 丢 失 数 据 现 在 ext4 有 一 个 补 丁, 但 我 们 必 须 仍 在 设 计 应 用 程 序 时 小 心 谨 慎, 正 确 使 用 fsync 下 面 读 取 和 写 入 配 置 文 件 的 简 单 示 例 演 示 了 如 何 备 份 文 件 或 者 数 据 是 怎 么 丢 失 的 : 31