sysctl в Solaris отсутствует. Аналог есть, но он не один. Иными словами параметры разнесены по разным категориям и соответственно управляются через разные утилиты. И так, приступим к небольшому обзору.
Тестовый стенд: Solaris 10/11
1) Параметры ядра.
За них отвечает утилита kstat, которая без параметров выведет список всех параметров и их значений. Это так сказать статистика ядра, то есть различнве значения в режиме RO и счётчики, которые со временем меняются. Очень удобно, к примеру, для отслеживания чего-либо. Каждый параметр имеет такую форму
module:instance:name:statistic
Если нужно вывести группу значений, то просто опускаем последний параметр.
Пример: узнать параметры страниц:
$kstat -n system_pages
2) Сетевые параметры.
Часть из них можно сделать с помощью утилиты ipadm set-prop/show-prop/reset-prop (соответственно имеют значение: установить/просмотреть/сбросить в дефолт).
Пример: изменить размер буфера
#ipadm set-prop -p max_buf=8388608 tcp
Здесь мы указали параметр ‘-p’, что означает на постоянной основе.
Но гораздо больше сетевых параметров можно изменить с помощью утилиты ndd.
Команда ndd имеет такой формат:
ndd [-set] устройство ? | переменная [значение]
Устройства, с которыми работает команда ndd в Solaris
Устройство | Описание | Имена переменных |
/dev/tcp | Переменные протокола TCP | tcp_* |
/dev/udp | Переменные протокола UDP | udp_* |
/dev/ip | Переменные протокола IP | ip_* |
/dev/icmp | Переменные протокола ICMP | icmp_* |
/dev/rawip | То же, что /dev/icmp | icmp_* |
/dev/arp | Переменные протокола ARP | arp_* |
/dev/hme | Переменные Ethernet | нет конкретной схемы |
Пример:
#ndd -set /dev/tcp tcp_conn_grace_period 500
3) Остальные параметры.
Остальные параметры нужно прописывать в /etc/system и они применяются при загрузке системы. Но что делать, если нужно применить параметр прямо сейчас? Ответ – использовать отладчик mdb. Ему можно напрямую передать имя и значения параметра и он сразу применит его. Правда в сети ходят мнения, что это иногда может привести к зависанию или ребуту системы (но я сильно в этом сомневаюсь). Так же с помощью mdb можно не только установить, но и посмотреть текущее значение параметра.
Пример: посмотреть параметры zfs
#echo ::zfs_params | mdb -k
Пример: установить значение
#echo apic_timer_preferred_mode = 0x0 | mdb -k