Попробую реанимировать блог, а то вся активность в последние полгода была исключительно в твиттере :)
Сегодня немного о новом (по сравнению с пятой версией Red Hat Enterprise Linux) демоне tuned. Демон предназначен для динамической оптимизации поведения севера или рабочей станции под различными нагрузками. В первую очередь, вам стоит посмотреть в сторону tuned, если вас интересуют вопросы настройки производительности и/или экономии электроэнергии. С последним вопросом простой пользователь в первую очередь сталкивается при работе с лэптопом от батареи.
Для начала установим сервис:
[root@rhel6 ~]# yum -y install tuned
Теперь можно активировать один из профилей tuned. В последней версии RHEL 6.3 присутствуют одиннадцать заранее подготовленных профилей для различных ролей. Просмотрим список профилей:
[root@rhel6 ~]# tuned-adm list
Available profiles:
- virtual-host
- server-powersave
- laptop-battery-powersave
- throughput-performance
- latency-performance
- laptop-ac-powersave
- spindown-disk
- desktop-powersave
- default
- virtual-guest
- enterprise-storage
Current active profile: default
Имена профилей "говорящие", так что вам не составит труда выбрать подходящий. В моем случае, поскольку я работаю с виртуальной машиной, очевидный выбор virtual-guest
[root@rhel6 ~]# tuned-adm profile virtual-guest
Switching to profile 'virtual-guest'
Применение настроек ktune sysctl:
/etc/ktune.d/tunedadm.conf: [ OK ]
Calling '/etc/ktune.d/tunedadm.sh start': [ OK ]
Applying sysctl settings from /etc/sysctl.conf
Применяется конвейер deadline:dm-0 dm-1 dm-2 dm-3 sda [ OK ]
Запускается tuned: [ OK ]
Если проверить вывод команды chkconfig, то вы увидите два новых включенных сервиса:
[root@rhel6 ~]# chkconfig | grep tune
ktune 0:выкл 1:выкл 2:выкл 3:вкл 4:вкл 5:вкл 6:выкл
tuned 0:выкл 1:выкл 2:выкл 3:вкл 4:вкл 5:вкл 6:выкл
Активизация профиля через tuned-adm автоматически выполняет chkconfig on. Следующая команда отключает оба сервиса:
[root@rhel6 ~]# tuned-adm off
Возврат сохранённых настроек sysctl: [ OK ]
Calling '/etc/ktune.d/tunedadm.sh stop': [ OK ]
Вернуть конвейер cfq:dm-0 dm-1 dm-2 dm-3 sda [ OK ]
Останавливается tuned: [ OK ]
[root@rhel6 ~]# chkconfig | grep tune
Помимо использования готовых профилей, администратор может создать свой. Проще всего это делать на основе существующего.
[root@rhel6 ~]# cp -av /etc/tune-profiles/virtual-guest/ /etc/tune-profiles/my-guest
«/etc/tune-profiles/virtual-guest/» -> «/etc/tune-profiles/my-guest»
«/etc/tune-profiles/virtual-guest/ktune.sh» -> «/etc/tune-profiles/my-guest/ktune.sh»
«/etc/tune-profiles/virtual-guest/ktune.sysconfig» -> «/etc/tune-profiles/my-guest/ktune.sysconfig»
«/etc/tune-profiles/virtual-guest/sysctl.ktune» -> «/etc/tune-profiles/my-guest/sysctl.ktune»
«/etc/tune-profiles/virtual-guest/tuned.conf» -> «/etc/tune-profiles/my-guest/tuned.conf»
Профиль определяется несколькими файлами:
- tuned.conf - включает и выключает модули мониторинга и настройки для различных подсистем
- sysctl.ktune - настройки sysctl для ktune. В документации не говорится, но обратите внимание, что /etc/sysctl.conf всегда имеет приоритет по сравнению с этим файлом.
- ktune.sysconfig - включает и выключает ktune, а также задает планировщик ввода-вывода. Можете заметить что, например, во всех профилях, предполагающих высокую нагрузку, вместо планировщика по умолчанию cfq используется deadline.
- ktune.sh - скрипт, который включает или выключает настройки, не описанные в других файлах. Обратите внимание на файл /etc/tune-profiles/functions. В нем содержатся полезные функции-кандидаты на вызов из ktune.sh
Отредактировав один или несколько из этих конфигурационных файлов, вы можете применить свой профиль:
[root@rhel6 ~]# tuned-adm profile my-guest
Возможно, имеет смысл задать переключение профилей в cron для того, чтобы в нерабочее время менять профиль серверов на более экономичный по питанию вариант.
Что касается динамического мониторинга и изменения параметров, в настоящий момент это поддерживается для ЦП, сетевых карт и дисков.
Куда смотреть дальше/глубже:
- Руководство по управлению энергопотреблением
- Руководство по настройке производительности
- tuned(8)
- tuned-adm(1)