Linux 中更强大的 laptop_mode

Linux 中更强大的 laptop_mode

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

我希望硬盘减速,即使有东西想要读取缓存中没有的内容,也阻止它加速。一般来说,我希望有以下模式:

  1. 普通的
  2. 当前笔记本电脑模式
  3. 更强大的笔记本电脑模式:仅在需要读取未缓存的内容(并缓存)时启动。除非真的存在内存压力,否则不会启动写入内容(例外:控制台中的显式“同步”命令)。为此,内核允许将进程保持在 D 睡眠状态 10 秒。
  4. 强制笔记本电脑模式:不启动,就这样。除非我关闭此模式,否则让有问题的进程处于 D 睡眠状态。就像有炸弹而不是硬盘一样。

我还想跟踪访问时间(mount -o atime),但我不希望仅仅为了更新它们而启动硬盘。

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

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

答案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。

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

相关内容