12 марта 2009

дисковые буфера и hibernate в Linux

Пока нет ничего серьёзного к опубликованию, вот вам лёгенькая тема.
Заметил давно, что используемый мой метод hibernate в виде ядра с патчами tuxonice и скриптом оттуда же ну слишком уж медленный. Краткое раскидывание мозгами и раскапывание вопроса показало, что достаточно большую долю времени занимает сохранение дисковых буферов, что само по себе весьма экстравагантный финт - сохранять на винт кеш обращений к винту. Решил отключать кеш перед засыпанием и восстанавливать после просыпания:

#/etc/hibernate/common.conf
OnSuspend 10 echo 3 > /proc/sys/vm/drop_caches
OnResume 10 echo 0 > /proc/sys/vm/drop_caches

Время засыпания теперь - "как в лучших домах Лондона и Филадельфии".

4 комментария:

Анонимный комментирует...

О, ужас!
Никогда бы не подумал, что это не сделано авторами.

Maksim Saratov комментирует...

Что-то ни разу не заметил разницу... хоть на ноуте, хоть на десктопе. "На глаз" вообще незаметно.

Maksim Saratov комментирует...

А, кстати, Writing caches... все равно вылезает... Может в этом дело? Хотя прописал в конфиг все верно.

PhoeniX комментирует...

Maksim, а вы посмотрите, может у вас уже это выставлено из другого места, например через sysctl при старте.