blackraven 27.10.2010 11:17

ПереводыКак настроить ядро Linux с помощью sysctl

Не многие из сегодняшних пользователей Linux помнят дни, когда вы могли (и часто должны были) собрать собственное ядро. Если у вас было специфическое устройство, или какие-то особые требования к ядру, для вас не было другого пути. Сегодня большинство ядер работают "из коробки" с большинством оборудования. Но бывают случаи, когда вам нужно выжать еще немного производительности или даже облегчить ваше ядро на лету. Вы можете сделать это с помощью команды sysctl.

Эта утилита позволяет изменять различные параметры ядра на лету, или вы можете подредактировать специальный файл для настройки этих параметров (имеется в виду - для применения настроек при каждой загрузке - прим. пер.). В обоих случаях, вы можете изменить любые параметры, упомянутые в /proc/sys, так что если вы просто хотите проверить, как много вы можете поменять, посмотрите в каждую подпапку в /proc/sys. Например, вы можете изменить максимальное количество файловых дескрипторов на вашей машине, изменив параметр kern.maxfiles.

Примечание: вам необходимо быть ОЧЕНЬ осторожными, пока вы играете с этой командой, потому что, помимо некорректного изменения какого-то конкретного параметра, она может вызвать потери данных или что-нибудь похуже.


Использование

В общем виде sysctl используется так:

1
sysctl <опции> <параметр> <переменная>



Переменная для параметра может быть логической, строковой или числовой. Вы должны запускать sysctl или как суперпользователь, или с помощью sudo.
В начале вы, наверное, захотите выполнить sudo sysctl -a. Эта команда покажет вам все настраиваемые переменные на вашей машине. Это будет выглядеть примерно так:

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
kernel.sched_min_granularity_ns = 2000000
kernel.sched_latency_ns = 10000000
kernel.sched_wakeup_granularity_ns = 2000000
kernel.sched_shares_ratelimit = 500000
kernel.sched_shares_thresh = 4
kernel.sched_features = 15834235
kernel.sched_migration_cost = 500000
kernel.sched_nr_migrate = 32
kernel.sched_time_avg = 1000
kernel.timer_migration = 1
kernel.sched_rt_period_us = 1000000
kernel.sched_rt_runtime_us = 950000
kernel.sched_compat_yield = 0
kernel.panic = 0
kernel.core_uses_pid = 0
kernel.core_pattern = core
kernel.core_pipe_limit = 0
kernel.tainted = 0
kernel.latencytop = 0
kernel.real-root-dev = 0
kernel.print-fatal-signals = 0



В общем, в обычной Linux-системе около 500 настраиваемых параметров - много возможностей для настройки, не правда ли? Если вам необходимо внимательно изучить весь список, выполните команду
1
sudo sysctl -a > tunable


и откройте получившийся файл в любимом текстовом редакторе. Давайте попробуем сделать что-нибудь полезное. Например, мы хотим включить сочетание <Ctrl>-<Alt>-<Del>, которое обычно отключено во многих дистрибутивах. Для начала, проверим, что наш дистрибутив - не исключение. Это можно сделать с помощью следующей команды:

1
sudo sysctl kernel.ctrl-alt-del



Вывод:

kernel.ctrl-alt-del = 0


Он информирует нас о том, что упомянутая функция была отключена. Давайте включим ее. Это можно сделать, выполнив:

1
sudo sysctl -w kernel.ctrl-alt-del=1



Мы должны увидеть такой вывод:

kernel.ctrl-alt-del = 1


Что говорит нам о том, что команда выполнена успешно. Вы можете, конечно, восстановить исходное значение с помощью команды:

1
sudo sysctl -w kernel.ctrl-alt-del=0



Конечно, это только простой пример того, что может быть настроено с помощью sysctl. Изучив более 500 различных параметров, вы можете настроить ваше ядро под любые специфические нужды.

Заключение

Как и с любым другим инструментом, изменяющим работающее ядро, будьте крайне осторожны при работе с sysctl. Вам лучше будет попрактиковаться с этой командой на тестовой машине, перед тем, как делать что-то на рабочем сервере. Начните с простого. Попробуйте изменить какие-нибудь параметры, которые не сделают вашу машину незагружаемой, ваши жесткие диски незаписываемыми, а вашу сеть недоступной и т. п.

Оригинал

Переведено при помощи сервиса translated.by инициативной группой переводчиков welinux при участии blackraven, Zereal.


Тэги: sysctl перевод
+ 12 -
Похожие Поделиться

WiseLord 27.10.2010 11:32 #
В /etc/sysctl.conf вышеупомянутая команда ничего не пишет, посему вопрос: запомнит ли система таким образом внесённое изменение при следующей загрузке?
divius 27.10.2010 11:39 #
Нет. Чтобы запомнила, надо написать в sysctl.conf.
blackraven 27.10.2010 12:03 #
Не успел :)
Uzix 27.10.2010 12:58 #
ИМХО: Большинство переводных статей совсем не раскрывают темы - как будто повествование оборвалось на введении
blackraven 27.10.2010 13:09 #
Предлагай хорошие статьи - переведем.
thebeetlebum 27.10.2010 15:39 #
Статья хорошая, введение хорошее, но не хватает жаль не хватает очень большого, и действительно, нужного куска.
thebeetlebum 27.10.2010 15:40 #
буду читать свои сообщения перед отправкой
буду читать свои сообщения перед отправкой
буду читать свои сообщения перед отправкой
Zereal 27.10.2010 13:10 #
будьте добры, укажите критерии статей для перевода. что в них должно быть обязательно и по умолчанию? какой уровень раскрытия темы и пр?
Uzix 27.10.2010 13:26 #
имхо: не хватает примеров реального использования
nikebl 27.10.2010 13:59 #
Угу и желательно что-нить про тюнинг tcp/ip стэка на каком-нить реальном вебсервере:)
Сразу бы ушло в закладки, а то приходится каждый раз гуглить по параметрам и собирать то что нужно из подобных обрывков...
razum2um 27.10.2010 17:50 #
нда. я уж приготовился.. и реально - оборвалось...
давайте хоть общими силами соберем стопку параметров, которые реально и заметно что-то меняют...

от меня:
можно менять файл /etc/sysctl.conf чтобы он применялся при каждой загрузке.
чтобы применить его на лету: sysctl -p
goblinyara 27.10.2010 17:56 #
хмм... надо будет попробовать... угроблю свою машинку=)))
ну, и как обычно, мой придирчивый взгляд нашёл очепятки=)) отправил в ПС blackraven
blackraven 27.10.2010 18:48 #
Парсер-лох... Он сожрал то, что было написано в угловых скобках...
megabaks 28.10.2010 17:13 #
в статье неправильное ядро!
у меня 407 строк там
а так - согласен - не раскрыт не tcp/ip ни виртпамять...нифига короче :(
blackraven 28.10.2010 18:18 #
Претензии к автору статьи, плз...
Zereal 28.10.2010 18:19 #
продолжение следует:)
dr_magnus 29.10.2010 02:50 #
помнят дни, когда вы могли (и часто должны были) собрать собственное ядро

ну почему же, помню. открываешь любую книгу/руководство по Линуксу, а она обязательно начинается - "Для начала мы должны собрать ядро..." :-)
ностальгия..
Daria 29.10.2010 18:47 #
вопрос для расширения кругозора - когда вступают в силу настройки из /etc/sysctl.conf ? загружается ли сначало ядро и система, а потом применяются эти настройки, или же ядро уже подгружается с этими опциями?
cppmm 29.10.2010 18:56 #
Сначала загружается ядро, а потом применяются настройки sysctl одним из скриптов из /etc/init.d/ (в разных дистрибутивах, разными скриптами).