воскресенье, 11 января 2009 г.

famd vs gamin

Периодически при работе в KDE с NTFS-разделами, смонтированными с помощью модуля fuse ntfs-3g спотыкался о неприятное свойство famd. Иногда famd начинает отъедать почти 100% процессорного времени, останавливая прорисовку содержимого окон в KDE-программах.

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

Сегодня в списке рассылки порекомендовали заменить famd на gamin. Оба предоставляют библиотеку с одинаковым интерфейсом, но famd является демоном периодически опрашивающим каталоги, а gamin является библиотекой взаимодействующей с подсистемой ядра Linux, называющейся inotify. Эта подсистема позволяет обходиться без отдельного демона и доставляет необходимую информацию всем подписавшимся программам напрямую, без лишних посредников, из первых рук.

Установил gamin, система вроде бы стала ощутимо быстрее отображать содержимое каталогов. И главное - нет демона, который мог бы зациклиться и начать отжирать до 100% процессорного времени.

По каким-то причинам при установке KDE по-умолчанию ставится famd, а не gamin. Я погуглил на эту тему и встретил высказывание, что в большинстве дистрибутивов famd уже давно заменили gamin'ом. Консервативность Debian в этом случае просто озадачивает... Раз уж оба варианта поддерживаются, почему бы не выбрать в качестве используемой по умолчанию более технически продвинутую и надёжную систему?

7 комментариев:

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

famd при работе с ktorrent отравил мою (и не только) жизнь. Отжирает 100% CPU по несколько раз в день.

Поставил gamin. Буду проверять работу.

Нарушит ли это работу этих программ:
dpkg: зависимости мешают удалению пакета libfam0, но по вашему указанию
он всё равно будет удалён:
libkjsembed1 зависит от libfam0.
k3b зависит от libfam0.
klipper зависит от libfam0.
konqueror зависит от libfam0.
kicker зависит от libfam0.
libk3b3-extracodecs зависит от libfam0.
ksysguard зависит от libfam0.
libgnomevfs2-0 зависит от libfam0.
kompare зависит от libfam0.
kcontrol зависит от libfam0.
kdelibs5 зависит от libfam0.
kaddressbook зависит от libfam0.
kdepim-kresources зависит от libfam0.
kmenuedit зависит от libfam0.
kate зависит от libfam0.
kdebase-bin зависит от libfam0.
libk3b3 зависит от libfam0.
kdelibs4c2a зависит от libfam0.

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

У меня тоже aptitude ругался на то, что при удалении famd остаются неразрешённые зависимости.

Я по-моему просто установил gamin, при этом famd снёсся как конфликтующий, а gamin удовлетворил зависимости остальных пакетов.

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

Спасибо за совет! :-)
Правда при установке gamin удалился kdesdk, который имеет явную зависимость на fam, но он мне всё равно не нужен.

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

спасибо!
а то я всё не решался, щас попробую.

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

я раньше тупо использовал скрипт стоп/старта фамд
есссно он каждый раз спрашивал рутовый пароль, что напрягало

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

если famd еще хуже, чем gamin, то печаль

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

А что не так с gamin? С момента написания заметки он о себе не напоминал ни разу.