Снижаем программными средствами шум, издаваемый компьютеромМаксим "hatchet" Полевой (maks.hatchet@yandex.ru) Когда речь заходит о снижении уровня шума, издаваемого компом, люди обычно начинают говорить о низкооборотных кулерах, жестких дисках на салазках, водных системах охлаждения и прочих вещах, далеких от мира софта. Но сегодня мы поговорим о шуме как о проблеме программного характера, какие настройки и с помощью каких утилит можно произвести в Linux, чтобы машина стала по-настоящему бесшумной. Мы все знаем, что есть ровно три основных источника шума, издаваемого железным другом: вентиляторы внутри корпуса, вентилятор на видеокарте и жесткий диск, постоянно гоняющий головки по пластинам. Следовательно, есть три возможных способа снижения уровня шума: воздействие на скорость вращения кулеров корпуса, понижение производительности видеоподсистемы и оптимизация работы жесткого диска. Начнем, как полагается, с первого. КулерыКорпус современного компьютера может насчитывать от одного до пяти (или даже восьми) вентиляторов, все зависит от фантазии и прихотей его владельца. Обычно только три из них подключаются к материнской плате, благодаря чему последняя получает возможность контролировать скорость их вращения. Все остальные же "цепляются" напрямую к блоку питания, поэтому всегда работают на полной скорости (если, конечно, не имеют аналоговых регуляторов вращения на корпусе). Соответственно, для получения бесшумного компа нам необходимо:
С отверткой ты уже должен быть знаком, поэтому первый пункт мы пропустим и остановимся на последних двух подробнее.
С помощью такой команды можно узнать о текущем регуляторе энергосбережения, а с помощью следующей - изменить его:
Всего каталог cpufreq насчитывает 11 файлов, изменяя содержимое которых, ты сможешь очень гибко управлять частотой процессора. Их перечень и описания приведены далее:
Есть два ключевых момента, относящихся к изменению тактовой частоты процессора в Linux, которые следует запомнить раз и навсегда: 1. Технологии управления частотами и энергосбережением улучшаются с выходом каждой новой модели процессора, независимо от его марки. Поэтому почти каждая модель процессора имеет собственный драйвер, который необходимо загрузить в память для того, чтобы получить возможность изменять файлы каталога cpufreq. Вот список наиболее используемых модулей:
Во многих дистрибутивах все эти модули встроены в ядро, поэтому подбирать подходящего кандидата вручную не придется. 2. Для автоматического управления частотой используются регуляторы — программные алгоритмы, которые изменяют производительность процессора в зависимости от каких-либо условий. Последние ядра Linux предоставляют пять различных регуляторов на все случаи жизни:
В некоторых дистрибутивах регуляторы могут быть вынесены в отдельные модули, поэтому перед использованием их придется загрузить в память с помощью команды вроде:
Далее регулятор можно активировать путем записи его имени в файл scaling_governor:
В нашем случае полезными могут оказаться все четыре последних регулятора. Алгоритм ondemand подойдет тогда, когда требуется только временное снижение шума вентилятора, например ночью, когда качаются торренты, и процессор простаивает. Последние два алгоритма будут полезны всем, кто хочет постоянной тишины. Причем, в случае активирования регулятора userspace, частоту придется самостоятельно записать в файл scaling_setspeed:
Значение следует брать из файла scaling_available_frequencies. Чтобы не убивать клавиатуру, набирая длинные пути к управляющим файлам после каждой перезагрузки, советую установить пакет cpufrequtils, доступный в любом дистрибутиве. В том числе в Debian/Ubuntu:
После установки запусти команду cpufreq-info, которая выведет всю информацию о текущих настройках: драйвер, регуляторы, диапазон частот и т.д. Для изменения регулятора используй следующую команду:
Частота меняется с помощью флага '-f':
Для изменения устанавливаемого во время инициализации системы регулятора укажи его имя в строке GOVERNOR файла /etc/init.d/cpufrequtils (по умолчанию используется ondemand). Все эти действия должны привести к снижению тактовой частоты процессора и уменьшению уровня шума, издаваемого его вентилятором. Однако в некоторых случаях это не сработает, и придется использовать специальные программы для управления скоростью вращения кулера. Одна из таких программ носит имя fancontrol и распространяется вместе с пакетом lm-sensors. Для того чтобы начать ее использовать, нужно установить lm-sensors, используя менеджер пакетов, и запустить стандартную утилиту конфигурирования sensors-detect. На вопросы можно смело отвечать нажатием <Enter>. Дойдя до вопроса "Do you want to add these lines automatically?", напиши yes, скопируй приведенные в вопросе имена модулей и скорми их команде modprobe. В моем случае команда получилась такой:
Чтобы проверить работоспособность сенсоров, выполни команду sensors. На экране ты должен увидеть массу информации, снятой с самых разных датчиков. Обрати внимание на строки "CPU Fan" и "CPU Temp", в них указана текущая скорость вращения кулера и температура процессора. Наверняка скорость кулера будет очень высокой (свыше 4000 оборотов), а температура процессора — очень низкой (намного ниже 60 градусов). Все это указывает на нерациональное использование вентилятора. Чтобы исправить ситуацию, следует задействовать демон fancontrol, который будет регулировать подаваемое на вентилятор напряжение, изменяя его в зависимости от текущей температуры процессора. Демон требует специфичных для данной машины настроек, поэтому перед его запуском мы воспользуемся скриптом pwmconfig, который сгенерирует рабочую конфигурацию. Запусти pwmconfig и нажимай клавишу <Enter> в ответ на любые вопросы. Когда конфигурирование будет завершено, и на экране появится строка "Select fan output to configure, or other action:", введи в ответ цифру "1" и следуй дальнейшим инструкциям. Наиболее важный — первый вопрос, скрипт потребует выбрать температурный датчик, который будет влиять на скорость кулера. Лично я получил пять различных вариантов, никак не идентифицируемых кроме текущего значения, благодаря которому и удалось определить правильный вариант. Он оказался вторым, скорее всего, в твоем случае будет так же. Далее скрипт попросит выбрать диапазоны температур и скоростей, отвечай <Enter>, дефолтовые значения более чем разумны. После окончания допроса pwmconfig создаст конфигурационный файл, и ты, наконец, сможешь запустить демон fancontrol:
Стоит отметить, что fancontrol подойдет далеко не ко всем машинам (в основном это касается различных ноутбуков и нетбуков), поэтому придется поискать специальную программу для своего устройства. Например, для управления кулерами на нетбуке Acer Aspire One может быть использована утилита acerhdf (www.piie.net/?section=acerhdf). Утилита для ноутбука Sony Vaio называется Fan Silencer (www.taimila.com/fansilencer.php). Погуглив, ты наверняка сможешь найти подобные утилиты и для своего лаптопа. ВидеоадаптерИтак, с кулерами внутри корпуса вроде разобрались, теперь надо что-то сделать с вентилятором на видеокарте, который иногда оказывается даже более шумным, чем все остальные. На самом деле здесь все намного проще: хороший видеоадаптер сам изменяет скорость вращения своего кулера, основываясь на показаниях температурного датчика видеочипа, который нагревается только во время активной работы (то есть игр или использования 3D-редактора). Большую же часть времени видеочип простаивает, и его охлаждающий вентилятор должен работать на пониженных оборотах. Если же этого не происходит — пора обращаться к специальным утилитам. Для начала запусти утилиту с флагом '-i' и посмотри на вывод в секции "-- Sensor info --", там ты должен увидеть текущую температуру графического ядра и скорость вращения кулера в процентах. Далее можно просто запустить nvclock с флагами '-f' и '-F', чтобы изменить скорость кулера:
Значение должно быть в пределах от 10 до 100 с шагом 10. Заметь, что далеко не каждая видюха позволит тебе произвести такую операцию. Жесткий дискНу вот, осталось усмирить накопитель. К слову сказать, современные винты почти не шумят, и услышать их даже за низкооборотным кулером довольно непросто. Однако, если ты обладатель системы, оснащенной старыми жесткими дисками — постоянный треск должен быть тебе хорошо знаком и не менее хорошо слышен. Как от него избавиться? Для начала попробуем разобраться, что есть этот самый треск. Паря над пластинами жесткого диска, головки делают очень много перемещений, постоянно меняя направление своего движения. В моменты фиксации головки над пластиной или изменения ее движения происходит характерный треск, издаваемый механикой. Поэтому лучший способ заставить диск меньше трещать — сделать так, чтобы перемещения головки свелись к минимуму. Этого можно добиться тремя способами:
Первый способ радикален, но при достаточном количестве оперативной памяти вполне оправдан. Чтобы сделать диск менее шумным с его помощью, надо просто убрать соответствующую строку из файла /etc/fstab (слово swap в третьей колонке). Второй способ включает в себя использование наименее подверженных фрагментации файловых систем, таких как ext4, и специальных дефрагментаторов, которые позволят собрать разбросанные по диску кусочки файлов в один непрерывный блок. Не верь тем, кто говорит, что в Linux файловые системы не фрагментируются, это просто невозможно без потери ощутимого количества свободного пространства диска. Фрагментации подвержена и ext2, и ext4, и reiserfs, каждая, конечно, в разной степени и далеко не так ярко выражено как FAT, но тем не менее. Для дефрагментации любой файловой системы можно использовать универсальные дефрагментаторы, например defrag (http://ck.kolivas.org/apps/defrag) или Shake (http://vleu.net/shake). Попробуем применить второй как более продвинутый и производительный вариант. Переходим на официальную страничку проекта и скачиваем последнюю версию инсталлятора (shake-0.99.1-Linux.sh), делаем его исполняемым и запускаем. Скорее всего, не будут учтены некоторые зависимости, так что их придется установить вручную. Пользователи Debian и Ubuntu могут установить программу с помощью apt, соответствующие инструкции приведены на страничке http://vleu.net/apt.
Время работы программы может составить от 5 до 15 минут в зависимости от количества файлов и размера каталога.
Трудно сказать, какие значения будут оптимальными в конкретном случае. В скобках указаны значения, которые позволят отложить момент сброса буферов на достаточно продолжительный период времени. Если машина, освобождаемая тобой от шума, не должна часто использовать жесткий диск, ты можешь настроить энергосберегающий режим, при котором хард будет отключаться на время бездействия. Сделать это можно с помощью известной утилиты hdparm. Например, так:
Опция '-B 1' включает самый "агрессивный" уровень сбережения энергии. Всего их 254, с 1 по 127 из которых отличаются тем, что приводят к остановке винчестера в случае необходимости. Опция '-S 12' – это время, по прошествии которого жесткий диск будет останавливать шпиндель. Предусмотрено 255 значений: с 1 до 240 просто умножаются на 5 секунд, а 0 – отключает остановку шпинделя.
Эта команда активирует самый тихий режим работы винчестера, за наиболее быстрым закреплено значение 254. Выбирая значение между этими двумя порогами, ты сможешь подобрать оптимальное соотношение шум/скорость, но помни, что большинство жестких дисков реально поддерживает только два или три режима (например, 128 – тихо, 254 – быстро, все, что между, будет либо вообще не работать, либо активировать один из двух режимов). И тишина…Как ты смог убедиться, снижать уровень создаваемого компьютером шума программно не только можно, но и нужно. В большинстве случаев этого будет вполне достаточно для того, чтобы получить количество децибел, не раздражающее твой слух, без необходимости приобретения дорогостоящих кулеров и корпусов. |