Когда навалом процессоров… Часть 1
13.11.2009
Смотри также
Когда навалом процессоров… Часть 1
Когда навалом процессоров… Часть 2
Когда навалом процессоров… Часть 3
Для улучшения производительности в многопроцессорных (в том числе Multithreading ) системах с ОС Solaris можно использовать выделенные процессоры для обработки прерываний устройств ввода-вывода. Это позволяем снизить количество переключений контекста для процессоров, увеличить попадания в кэш, в конечном счете отдать больше ресурсов для обработки пользовательских задач.
Solaris 10:
Для того, чтобы привязать процессор к обработке прерываний устройства:
1. Определяем процессор, на который попадает большинство системных прерываний по данному адаптеру (например по сетевому адаптеру nxge):
UPDATE: смотри Когда навалом процессоров… Часть 3
# intrstat 2 1|egrep 'device|nxge'
..
device | cpu92 %tim cpu93 %tim cpu94 %tim cpu95 %tim
nxge#0 | 0 0.0 0 0.0 0 0.0 0 0.0
device | cpu96 %tim cpu97 %tim cpu98 %tim cpu99 %tim
nxge#0 | 20816 67.4 13877 33.6 0 0.0 0 0.0
device | cpu100 %tim cpu101 %tim cpu102 %tim cpu103 %tim
nxge#0 | 0 0.0 0 0.0 0 0.0 0 0.0
...
В нашем случае — это процессоры 96 и 97.
2. Проверяем количество переключений контекста для этих процессоров ( колонка csw в выводе команды mpstat ):
# mpstat 1 3 |egrep 'CPU|^ 96|^ 97'
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
96 0 0 3385 4021 3970 84 0 9 53 0 466 3 13 0 83
97 0 0 1028 1295 1207 131 2 14 29 0 691 9 5 0 87
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
96 0 0 3032 3552 3510 71 0 7 45 0 429 4 12 0 84
97 0 0 981 1201 1131 116 1 23 27 0 429 2 4 0 94
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
96 0 0 3049 3598 3547 78 0 9 34 0 645 12 12 0 77
97 0 0 980 1226 1139 160 1 5 29 0 245 3 5 0 92
3. Создаем процессорный сэт с процессорами 96 и 97
# psrset -c 96 97
created processor set 1
processor 96: was not assigned, now 1
processor 97: was not assigned, now 1
4. Проверяем переключений контекста:
# mpstat -P 1 1 3
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
96 1 0 2195 2462 2434 41 1 4 66 0 325 6 8 0 86
97 1 0 775 769 725 63 1 8 58 0 354 7 3 0 91
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
96 0 0 3103 3634 3634 0 0 0 34 0 0 0 11 0 89
97 0 0 1032 1193 1192 0 0 0 16 0 0 0 3 0 97
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
96 0 0 2941 3426 3425 0 0 0 44 0 0 0 12 0 88
97 0 0 997 1172 1170 0 0 0 18 0 0 0 3 0 97
Solaris 9:
Т.к. утилиты intrstat в Solaris 9 нет, то ориентироваться можно только на вывод команды mpstat (колонка intr). Выбираем процессор или несколько процессоров с наибольшим количеством прерываний и переносим их в сэт.
Ссылки в тему:
Solaris Processor Sets Made Easy
Monitoring Network Performance from Oracle STATSPACK
16.11.2009 в 10:38
Для систем с каким минимальным колличеством процессоров данный совет актуален? Спасибо
16.11.2009 в 13:07
Хм, ну минимум должно быть 2 процессора ;)
Зависит от характера нагрузки, я бы рекомендовал попробовать начиная от 4 процессоров (при очень высокой нагрузке на ввод-вывод и умеренной на процессора, или большой системной загрузке процессоров ). Попробовать, посмотреть — как система себя поведет, если не помогает — всегда можно вернуть все обратно.