Динамічна зміна параметрів ядра (sysctl)

Матеріал з Wiki TNEU
Перейти до: навігація, пошук

Ядро Linux гнучке, і ви навіть можете змінювати спосіб його роботи нальоту, шляхом динамічної зміни деяких з його параметрів, завдяки команді sysctl. Sysctl надає інтерфейс, що дозволяє вам досліджувати і змінювати кілька сотень параметрів ядра в Linux або BSD. Зміни мають ефект негайно і також можна зберігати їх і після перезавантаження. Розумно використовуючи sysctl, ви можете оптимізувати вашу систему без перекомпіляції ядра, і отримати результати негайно.

Щоб почати вивчення того, що sysctl може змінити, виконайте sysctl-a, і ви побачите можливі параметри. Список може бути досить великим: на моїй поточній системі є 712 можливих установок:

$ sysctl -a $ Sysctl-a
kernel.panic = 0 kernel.panic = 0
kernel.core_uses_pid = 0 kernel.core_uses_pid = 0
kernel.core_pattern = core kernel.core_pattern = core
kernel.tainted = 129 kernel.tainted = 129

... Багато рядків пропущено ...

Якщо ви хочете отримати значення однієї змінної, використовуйте щось, на кшталт sysctl vm.swappiness, або просто sysctl vm, щоб отримати список всіх змінних, які починаються на «vm.». Додайте опцію-n, щоб виводилися тільки значення змінних, без імен;-N призведе до протилежного ефекту і виведе імена, але не значення.

Ви можете змінити будь-яку зміну, використовуючи опцію-w з наступним синтаксисом: sysctl-w мінлива = значення. Наприклад: sysctl-w net.ipv6.conf.all.forwarding = 1 встановлює відповідної змінної значення true (0 позначає «ні», або false, 1 означає «так», або true), що включає форвардинг IP6. Вам може і не знадобиться опція-w, - вона здається забороненою. Проведіть самостійно кілька експериментів, щоб переконатися в цьому.

Для більш детальної інформації, виконайте man sysctl для відображення стандартної документації .

Значення sysctl завантажуються під час завантаження системи з файлу / etc / sysctl.conf . У цьому файлі можуть бути порожні рядки, коментарі (рядки, що починаються на символ «#» або крапку з комою), а також рядки у форматі «змінна = значення». Наприклад, мій файл sysctl.conf наведено нижче. Якщо ви хочете застосувати його в будь-який момент часу, ви можете зробити це за допомогою команди sysctl-p.

Як вирішити, що робити з такою великою кількістю параметрів налаштування? На жаль, це болюче питання sysctl: більшість релевантної документації заховано в безлічі вихідних файлів ядра Linux, вона важкодоступна і не може допомогти, так як пояснення іноді приховані і важкі для розуміння. Дещо ви можете знайти в директорії / usr / src / linux / Documentation / sysctl, але більшість (якщо не всі) файлів там посилаються на ядро ​​2.2 і, схоже, не оновлювалися останні кілька років.

Пошук за темою в книгах, можливо, сильно не допоможе. Я знайшов hack # 71 в Linux Server Hacks, Volume 2 (O'Reilly) від 2005 року, і це все. Кілька інших книг посилаються на sysctl, але зі специфічними параметрами або можливостями, ви надані самі собі.

В якості експерименту, я спробував пошукати інформацію про параметр swappiness, який може оптимізувати управління віртуальною пам'яттю. Файл / usr / src / Linux / Documentation / sysctl / vm.txt навіть не посилався на нього, можливо, тому що цей параметр з'явився у версії ядра 2.6. Загальний пошук у всіх директорії / usr / src / linux повернув п'ять файлів, які містять «swappiness»: три заголовків (. H) файлу в include / linux, плюс kernel / sysctl.c і mm / vmscan.c. Останній файл містив наступну інформацію:

/* / *
* From 0 .. * From 0 .. 100. 100. Higher means more swappy. Higher means more swappy.
*/ * /
int vm_swappiness = 60; int vm_swappiness = 60; 

Ось воно! Ви можете бачити значення за замовчуванням (60) і мінімальне пояснення значення цього параметра. Наскільки корисно це може бути?

Моя пропозиція, - використовувати sysctl-a для вивчення доступних параметрів, а потім Google для додаткової допомоги. Скажімо, ви можете знайти приклад зміни виділення спільно використовуваної пам'яті для вирішення проблеми відео програми або пояснення vm.swappiness або навіть більше пропозицій по оптимізації мережевого трафіку IP4 .

sysctl і директорія /proc sysctl

Віртуальна директорія / proc / sys також надає інтерфейс для параметрів sysctl, дозволяючи вам перевіряти і змінювати їх. Наприклад, файл / proc / sys / vm / swappiness еквівалентний параметру vm.swappiness в sysctl.conf. Просто забудьте про початкову частини «/ proc / sys /», замініть точками слеші і ви отримаєте відповідний параметри sysctl (до речі, ця заміна взагалі-то і не потрібно; слеші також приймаються, хоча, схоже, що всі використовують замість них нотацію з точками ). Вот почему echo 10 >/proc/sys/vm/swappiness это то же самое, что и sysctl -w vm.swappiness=10. Ось чому echo 10> / proc / sys / vm / swappiness це те ж саме, що і sysctl-w vm.swappiness = 10. Але, як виявляється на практиці, якщо файл / proc / sys призначений тільки для читання, ви не зможете налаштувати його за допомогою sysctl.

Особисті інструменти
Простори назв

Варіанти
Дії
Навігація
Інструменти