6

Могу ли я иметь более сильный режим ноутбука в Linux?

Я хочу раскрутить жесткий диск и не дать ему раскрутиться, даже если что-то хочет прочитать что-то не в кеше. В общем, я хочу иметь эти режимы:

  1. Нормальный
  2. Текущий режим ноутбука
  3. Более сильный режим ноутбука: раскручивать только тогда, когда нужно прочитать что-то без кэширования (и кэшировать это) Нет раскрутки, чтобы что-то написать, если только на самом деле не хватает памяти (Исключение: явная команда "sync" в консоли). Для этого ядру разрешается держать процессы в D-состоянии в течение 10 секунд.
  4. Принудительный режим ноутбука: не раскручиваться, точка. Держите оскорбительные процессы в D-sleep, если я не отключу этот режим. Как будто есть бомба вместо жесткого диска.

Я также хочу отслеживать время доступа (mount -o atime), но я не хочу, чтобы жесткий диск раскручивался только для их обновления.

Есть ли какие-то настройки или патчи ядра, которые могут приблизиться к этому?

Может быть, я должен написать специальный планировщик ввода-вывода для "принудительного режима ноутбука"? Например, echo suspend > /sys/block/sda/queue/scheduler чтобы заблокировать диск, и echo cfq > /sys/block/sda/queue/scheduler чтобы снова его разблокировать?

1 ответ1

1

Быстро закодировал "принудительный режим ноутбука" как планировщик ввода-вывода. Протестировано сначала в UML, затем на моем ноутбуке даже без перезагрузки.

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

Когда я запускаю echo hung > /sys/block/sda/queue/scheduler , а затем hdparm -y /dev/sda жесткий диск останавливается и не возобновляет работу.

Когда мне нужно что-то прочитать, я просто делаю " echo cfq > /sys/block/sda/queue/scheduler .

Также я вижу, какие процессы хотят вызвать раскрутку (они D-спящие). reiserfs и pdflush зависают. Тогда системный журнал.

Чтобы предотвратить попытки синхронизации, я временно отключаю синхронизацию echo 0 > /proc/sys/fs/sync-enable . Это должно быть более или менее безопасно, поскольку жесткий диск уже заблокирован. Это обеспечивается http://vi-server.org/vi/0001-fs-Introduce-sync-enable-flag.patch .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .