IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    systemctl suspend VS pm-suspend

    Terry发表于 2014-08-13 06:00:59
    love 0

    因为 RHEL 7 及其衍生版 CentOS 7.0 和 Oracle Linux 7.0 的相继发布,开始系统地学习 systemd ;-D

    RHEL 7 的文档是一如既往的棒,而且红帽系的血统纯正,拿来当参照物学习再好不过的选择了。虽然之前在 Arch Linux 上用 systemd 已近两年(2012年10月起 systemd 就成为新安装系统的默认 init 系统),但仅停留在需要用到什么用什么学习什么的层次。

    最近看 RHEL 7 的文档注意到 systemctl 工具已经替换了旧的 pm-utils 包提供的电源管理命令,建议尽可能使用 systemctl 命令来做相关的电源管理操作,比如 {halt,poweroff,reboot,pm-suspend} 等。

    此前三星在 N148 上网本上 sleep 都是通过 pm-utils 里的 pm-suspend 做的,看完文档决定试了一下 systemctl suspend 结果发现后者快多了!

    花了点时间一探究竟,简单的说 systemd 完全是新的实现,没有调用 pm-utils 中的命令,和后者没有关系。

    从技术上来讲 systemctl suspend 的过程是这样的

    • systemctl suspend 进入目标 suspend.target
    • 该目标绑定的服务是 systemd-suspend.service
    • 这个服务调用的底层命令是 /usr/lib/systemd/systemd-sleep suspend

    做了十几次测试,结论是 systemctl suspend 比 pm-suspend 快的根本原因是前者在 user mode (用户模式)和 kernel mode (内核模式,主要是系统调用)下执行所消耗的 CPU 时间之和远小于后者。

    在三星 N148 上测试的结果为: systemctl suspend 在用户模式+内核模式执行共消耗时间约0.01秒,而后者超过2秒!因为用了最新的 3.16 内核,可能还受益于 Linux 3.15 中加入的 SATA HDD 异步快速恢复特性。

    如图(忽略 real 与测试无关)

    systemctl suspend VS pm-suspend

    此外,在 CentOS 7.0 的台式机上测试 systemctl suspend 速度也非常快。所以,是时候和 pm-utils 说再见了。

    Enjoy systemd :-D

    Related posts:

    1. iSCSI Targets on Linux
    2. Oracle Enterprise Linux 那点事儿
    3. CVE-2014-0196



沪ICP备19023445号-2号
友情链接