Тюнинг ядра Linux j1m (j1m@list.ru) Хакер, номер #082, стр. 082-102-1 Тонкая настройка ядра с помощью механизма sysctl В некоторых случаях стандартные настройки ядра оказываются не оптимальными и пагубно влияют на производительность всей системы в целом. Чтобы пользователю не пришлось копаться в исходниках и заново пересобирать ядро, был придуман удобный интерфейс, позволяющий изменять многие переменные ядра прямо во время работы ОС. [теория] Каталог /proc/sys является частью виртуальной файловой системы procfs, о которой я рассказывал в прошлой статье. Впервые он появился в ядре версии 1.3.57 в качестве интерфейса, позволяющего получить доступ к переменным ядра. В настоящий момент при помощи /proc/sys можно изменить настройки: файловых систем, виртуальной памяти, сетевого стека и внутренних структур ядра. Также во многих дистрибутивах можно найти удобную и близкую пользователям BSD-систем утилиту /sbin/sysctl, выполняющую те же функции. [практические занятия] Теперь перейдем непосредственно к тюнингу. Каталог /proc/sys содержит пять основных элементов: 1. kernel - структуры ядра 2. vm - подсистема виртуальной памяти 3. dev - управление оборудованием 4. net - сетевые настройки 5. fs - файловые системы Через файлы, находящиеся в приведенных каталогах, можно управлять соответствующими подсистемами ядра. Получение текущих настроек происходит путем чтение файла, а изменение - записью в этот файл. Разумеется, производить запись имеет право только root. Приведу пример. Узнаем текущее сетевое имя нашей машины: $ cat /proc/sys/kernel/hostname localhost Изменим его: # echo linuxoid >gt; /proc/sys/kernel/hostname # cat /proc/sys/kernel/hostname linuxoid Как видишь, все очень просто и понятно. А теперь выполним тоже самое, но используя утилиту sysctl: # sysctl kernel.hostname kernel.hostname = localhost # sysctl -w kernel.hostname=linuxoid kernel.hostname = linuxoid Наверное, ты заметил, что имя переменной - это всего лишь имя файла без префикса /proc/sys и с точкой вместо символа '/'. Для большего удобства существует конфиг /etc/sysctl.conf, где ты можешь прописать любые доступные переменные и их значения. Теперь тебе не надо заботиться о том, что настройки пропадут после перезагрузки. [мир ядра] Изменение настроек ядра - мера не всегда оправданная, но в некоторых случаях все-таки полезная. Поэтому мы внимательно рассмотрим каталог /proc/sys/kernel. В каталоге /proc/sys/kernel можно найти три файла, не доступных для записи: ostype, osrelease и version. Содержимое их таково: тип ОС (разумеется, всегда Linux), версия ядра (например, 2.6.11) и время сборки ядра, причем первое число строки указывает на число сборок из одного дерева исходников. Честно говоря, я так и не понял, зачем нужны эти файлы при живом /proc/version. Еще два файла, бросающиеся в глаза: hostname и domainname. Как можно догадаться, отображают сетевое имя и домен машины и, в отличие от предыдущих, доступны для записи. Пример их использования я приводил выше. Я надеюсь, ты в курсе, что происходит с системой, когда ты нажимаешь комбинацию из трех клавиш |