multiple netisrs in FreeBSD-8.0

Igor Sysoev igor на sysoev.ru
Пт Апр 2 17:44:16 MSD 2010


Возможно, для кого-то это не новость, но я лишь недавно обратил внимание
на то, что в 8ке входящий TCP/IP может обрабатываться несколькими
процессорами. В /boot/loader.conf:

# 2 процессора
net.isr.maxthreads=2
# привязка netisr thread'ов к процессорам (пока не пробовал)
net.isr.bindthreads=1

Управляется sysctl'ями (значения по умолчанию):

net.isr.direct: 1
net.isr.direct_force: 1

Всё обрабатывается в трэде прерывания:

12 root   -68   -   0K   272K WAIT    1   9:14  7.18% {irq19: bge0}
12 root   -44   -   0K   272K WAIT    0   3:45  0.00% {swi1: netisr 0}
12 root   -44   -   0K   272K WAIT    0   1:54  0.00% {swi1: netisr 1}


net.isr.direct: 0
net.isr.direct_force: 0

TCP/IP обрабатывается в двух трэдах netisr:

12 root   -44   -   0K   272K WAIT    0   1:53  3.66% {swi1: netisr 1}
12 root   -68   -   0K   272K WAIT    1   9:10  2.39% {irq19: bge0}
12 root   -44   -   0K   272K WAIT    0   3:43  1.37% {swi1: netisr 0}


net.isr.direct: 1
net.isr.direct_force: 0

Комбинированный вариант: пакеты, которые должны обрабатываться на CPU1,
обрабатываются direct'ом (в трэде прерывания), остальные пакеты
обрабатываются в netisr0:

12 root   -68   -   0K   272K WAIT    1   9:02  6.05% {irq19: bge0}
12 root   -44   -   0K   272K WAIT    0   3:38  1.86% {swi1: netisr 0}
12 root   -44   -   0K   272K WAIT    1   1:46  0.00% {swi1: netisr 1}


-- 
Игорь Сысоев
http://sysoev.ru



Подробная информация о списке рассылки nginx-ru