Linux 中更强大的 notebook_mode

Vi.*_*Vi. 6 linux laptop hard-drive kernel power-management

我可以在 Linux 中使用更强的笔记本电脑模式吗?

我想关闭硬盘驱动器并防止它旋转,即使有些东西想要读取不在缓存中的东西。一般来说,我想要这些模式:

  1. 普通的
  2. 当前笔记本模式
  3. 更强大的笔记本电脑模式:仅在需要读取未缓存的内容(并缓存它)时才启动。除非真的有内存压力,否则不能写一些东西(例外:控制台中的显式“同步”命令)。为此,内核可以将进程保持在 D-sleep 状态 10 秒钟。
  4. 强制笔记本电脑模式:不启动,期间。除非我关闭此模式,否则请继续在 D-sleep 中进行违规进程。就像有一个炸弹而不是硬盘。

我还想跟踪访问时间(mount -o atime),但我不希望硬盘驱动器只是为了更新它们而旋转。

是否有一些设置或内核补丁可以更接近于此?

可能我应该为“强制笔记本电脑模式”编写特殊的 io 调度程序吗?例如echo suspend > /sys/block/sda/queue/scheduler锁定驱动器并echo cfq > /sys/block/sda/queue/scheduler再次解锁?

Vi.*_*Vi. 1

快速将“强制笔记本电脑模式”编码为 io 调度程序。首先在 UML 中进行测试,然后在我的笔记本电脑上进行测试,即使没有重新启动。

http://vi-server.org/vi/0001-block-Introduce-hung-iosched.patch

当我发出 时echo hung > /sys/block/sda/queue/schedulerhdparm -y /dev/sda硬盘驱动器停止并且不恢复。

当我需要阅读一些东西时,我就会这么做” echo cfq > /sys/block/sda/queue/scheduler

我还可以看到哪些进程想要引起旋转(它们正在 D 睡眠)。reiserfs 和 pdflush 挂起。然后是 syslogd。

为了防止同步尝试,我暂时禁用syncs echo 0 > /proc/sys/fs/sync-enable。鉴于硬盘驱动器已被锁定,它应该或多或少是安全的。这是由http://vi-server.org/vi/0001-fs-Introduce-sync-enable-flag.patch提供的。