[solaris] Правильно настраиваем cpu-shares

Узнаём класс, установленный по умолчанию, а так же список используемых (именно используемых, а не доступных) классов:

$ 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 зон.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *