Узнаём класс, установленный по умолчанию, а так же список используемых (именно используемых, а не доступных) классов:
$ priocntl -d TIME SHARING PROCESSES: PID[/LWP] TSUPRILIM TSUPRI 558743 0 0 $ dispadmin -l CONFIGURED CLASSES ================== SYS (System Class) TS (Time Sharing) SDC (System Duty-Cycle Class) FX (Fixed Priority)
Как видим, по умолчанию используется TS.
Информацию о том, как именно сконфигурированы классы, можно получить так:
# priocntl -l
CONFIGURED CLASSES
==================
SYS (System Class)
TS (Time Sharing)
Configured TS User Priority Range: -60 through 60
SDC (System Duty-Cycle Class)
FX (Fixed priority)
Configured FX User Priority Range: 0 through 60
FSS (Fair Share)
Configured FSS User Priority Range: -60 through 60
Меняем дефолтное на FSS:
# dispadmin -d FSS # dispadmin -l CONFIGURED CLASSES ================== SYS (System Class) TS (Time Sharing) SDC (System Duty-Cycle Class) FX (Fixed Priority) FSS (Fair Share)
А теперь нужно перенести все процессы в класс FSS:
# priocntl -s -c FSS -i pid 1; priocntl -s -c FSS -i all
После переноса, нужно сконфиругировать global-зону, выделив ей определённые доли cpu-shares:
# zonecfg -z global set cpu-shares=100 # zonecfg -z global info cpu-shares [cpu-shares: 100]
Но это означает лишь то, что наши значения применяться только при следующей перезагрузке сервера. А если нам нужно налету? Меняем:
# prctl -n zone.cpu-shares -t privileged -i zone global
zone: 0: global
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
zone.cpu-shares
usage 1
privileged 1 - none
# prctl -n zone.cpu-shares -t privileged -v 100 -r -i zone global
# prctl -n zone.cpu-shares -t privileged -i zone global
zone: 0: global
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
zone.cpu-shares
usage 100
privileged 100 - none
Точно так же можно менять и для не-global зон.