15 июля 2012

Tuned в RHEL6


Попробую реанимировать блога то вся активность в последние полгода была исключительно в твиттере :)

Сегодня немного о новом (по сравнению с пятой версией 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 для того, чтобы в нерабочее время менять профиль серверов на более экономичный по питанию вариант.

Что касается динамического мониторинга и изменения параметров, в настоящий момент это поддерживается для ЦП, сетевых карт и дисков. 

Куда смотреть дальше/глубже: