Когда навалом процессоров… Часть 2
20.11.2009
Смотри также
Когда навалом процессоров… Часть 1
Когда навалом процессоров… Часть 2
Когда навалом процессоров… Часть 3
Если процессоров не так прямо уж и много, или сервер состоит из системных плат, объединенных через общую шину (типа sf4800, sf6900, e25k итд) — то можно пойти другим путем — привязать процессы к процессорному сэту и запретить прерывания для этого сэта. Тем самым повышаем попадания в кэш, уменьшится трафик между системными платами, можно выделить как бы гарантированный квант процессорных ресурсов приложению.
Итак, пусть у нас средняя железка, 24 процессора. Создадим
процессорный сэт из процессоров 0-7
# psrset -c 0-7
created processor set 1
processor 0: was not assigned, now 1
processor 1: was not assigned, now 1
processor 2: was not assigned, now 1
..
Проверяем:
# mpstat 2 5
...
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
...
21 308 0 17969 1410 1132 955 304 391 380 0 1340 67 29 3 1
22 364 0 18396 469 1 1541 472 583 612 0 2056 80 10 10 0
23 301 0 11905 375 1 1121 376 464 342 0 2969 86 8 5 0
0 0 0 221 499 396 0 0 0 14 0 0 0 1 0 99
1 0 0 1 5 1 0 0 0 0 0 0 0 0 0 100
2 0 0 1 5 1 0 0 0 0 0 0 0 0 0 100
...
Ищем процесс, который мы собираемся отдать в процессорный сэт:
# ps -ef | grep lsnr
oracle 1811 1 0 Apr 12 ? 74:55 /oracle/dbase10g/bin/tnslsnr listener -inherit
Привязываем процесс (и подпроцессы, которые он порождает в сэт)
# psrset -b 1811
Запрещаем прерывания на этот сэт
# psrset -f 1
Проверяем:
# mpstat 2 5
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
...
22 470 0 10802 557 218 708 342 282 109 0 1982 89 9 2 0
23 132 0 12200 1501 1260 610 262 264 166 0 1120 86 12 2 0
0 0 0 1 6 1 0 0 0 0 0 0 0 0 0 100
1 0 0 1 6 1 0 0 0 0 0 0 0 0 0 100
2 0 0 1 6 1 0 0 0 0 0 0 0 0 0 100
Убеждаемся, что прерывания на процессорах из сэта заметно уменьшились (столбец intr).
Ну и в любой момент процессорный сэт можно удалить:
# psrset -d 1
20.11.2009 в 18:07
Уважаемый, а всё же — почему «сэт»? Почему вы тогда не пишете «процэссор» и «сэрвер»? В исходных вариантах этих слов тоже стоит буква «e», а не «a».
С уважением, Граммар Наци.
21.11.2009 в 08:41
К содержанию претензии есть?
23.11.2009 в 22:57
Очень полезно, спасибо! А про то где «э» а где «е» не по-семантики темы
17.12.2009 в 17:51
Подскажите а выделять в сеты нужно именно процессоры или процессорные ядра, просто у меня железка с 2-мя процами по 4 ядра в каждом с гипер тридингом.
18.12.2009 в 11:02
в сеты организуются виртуальные процессора, в общем — то, что выводит солярис по команде mpstat:
# mpstat 2 5
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
…
21 308 0 17969 1410 1132 955 304 391 380 0 1340 67 29 3 1
22 364 0 18396 469 1 1541 472 583 612 0 2056 80 10 10 0
23 301 0 11905 375 1 1121 376 464 342 0 2969 86 8 5 0
А как они распределены, созданы или организованы физически — не важно, важно — как их видит соляра.
18.12.2009 в 12:03
Ок, спасибо, возможно в скором времени пригодится.