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