LINUX.ORG.RU

Запретить небуфферизованную запись на винч


0

0

Есть такая неприятная особенность у некоторых программ - чуть что, сразу же скидывать изменившиеся конфиги/базы/логи на ФС в обход системного буфера записи.

Вот например syslog скидывает изменения логов перманентно, т.е. сразу же после их изменения. Amarok тоже любит почесать винч, при изменении коллекции, независимо от обстоятельств. Альбом заметок Basket - тоже самое: после набора каждого символа текста, перестановки окна HDD-светодиод подмигивает, а винч потрескивает.

Я бы мог смириться с этим, но меня это реально напрягает, ведь я пользуюсь ноутбуком, и каждое пробуждение, раскрутка и щелкание винча сокращает время автономной работы и создает посторонний шум на фоне общей тишины.

Хотелось бы найти способ препарировать на корню способность программ к небуфферизованной записи на уровне ядра/ФС. Помогите, кто чем может.

★★★★★

пересобрать амарок ?

kto_tama ★★★★★
()

>на ФС в обход системного буфера записи.

Я так понял, что вы говорите про системный вызов sync(). Наверное, можно покорежить ядро и сделать так, чтобы sync() не приводил к записи буферов на НЖМД. Но, если я правильно помню, ядро все равно записывает буферы не только когда заканчивается выделенное под них место в ОЗУ, но и по таймауту (вроде бы 30 сек). С этим боролся NOFLUSHD http://noflushd.sourceforge.net/, еще есть http://samwel.tk/laptop_mode/

mky ★★★★★
()

спасибо, пойду по ссылкам.

shahid ★★★★★
() автор топика

Сходил по ссылкам и сделал некоторые шаги.

1. Добавил в /etc/syslog-ng/syslog-ng.conf в разные строчки fsync(no) в подобном стиле:

-destination acpid { file("/var/log/acpid"); }; +destination acpid { file("/var/log/acpid" fsync(no)); };

2. Скачал сорцы libnosync c http://bourbaki.math.uni-kiel.de/~oschmidt/nosync/nosync/ и собрал, кинул в /lib64.

2.1 Добавил в /etc/profile строчку

export LD_PRELOAD=libnosync.so

Ноут стал заметно быстрее грузиться и работать и винч отдыхает (у меня reiser4 на /, каждый fsync == нескольким atomic transactions), amarok отныне без лишнего шума переключает дорожи, а konqueror - вкладки (сам только вчера заметил, у него тоже где-то fsync). В общем, всем спасибо!

зы: команда sync в консоли работает как и раньше, так что можно не беспокоится.

shahid ★★★★★
() автор топика
Ответ на: комментарий от shahid

>у меня reiser4 на /, каждый fsync == нескольким atomic transactions

Вначале создаем проблемы, а потому мужественно с ними боремся. ext3 надо было ставить

Reset ★★★★★
()
Ответ на: комментарий от Reset

Ext3 - пройденный этап, уже несколько лет им пользовался - надоело. Ext4 ещё сыра и почти ничем не отличается актомя extent'ов, такая же тормозная и стабильная. Как правило чем-то надо пожертвовать, чтобы получить нечто большее.

shahid ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.