On Wed, Oct 21, 2009 at 10:56:12AM +0400, Кирилл wrote:
> Добрый день, коллеги. Буду благодарен, если кто подскажет что это за процесс
> (*em0 taskq*) и почему так много поедает процессора. Ну не верю я что
> хваленая реализация сетевого стека во FreeBSD так проседает при 100Мбит.
> Машина: Celeron 2.8, 1Gb ОЗУ, 7.2-i386-20091008-RELENG_7_2. Выступает в роле
> web-акселератора, и кроме nginx ничего не крутится.
>
> /etc/rc.d/ipfilter onestop - Ни малейших перемен.
>
> # top -SP
> CPU: 13.5% user, 0.0% nice, 46.8% system, 6.4% interrupt, 33.3% idle
> Mem: 205M Active, 266M Inact, 152M Wired, 1068K Cache, 111M Buf, 368M Free
> Swap: 4096M Total, 56M Used, 4040M Free, 1% Inuse
>
> PID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU COMMAND
> 11 root 1 171 ki31 0K 8K RUN 476:04 30.76% idle:
> cpu0
> 22 root 1 -68 - 0K 8K - 204:36 *29.20% em0
> taskq*
> 34 root 1 -68 - 0K 8K WAIT 73:52 8.40% irq18:
> em0 atapci1
> 15763 www 1 96 0 203M 191M RUN 3:35 1.17% nginx
> ...
> # netstat -dw1
> input (Total) output
> packets errs bytes packets errs bytes colls drops
> 8448 0 4671078 9177 0 6720956 0 0
> 25776 0 17436726 28118 0 17904026 0 0
> 32230 0 26810636 32266 0 21383868 0 0
> 23703 0 19727356 23627 0 13323592 0 0
Как уже правильно сказал Михаил, дело в числе пакетов, а не в мегабитах.
Чтобы посмотреть, сколько уходит на TCP/IP, нужно выключить
net.isr.direct=0, предварительно увеличив net.inet.ip.intr_queue_maxlen=2048.
Тогда в top'е появится процесс "swi1: net", который и занимается обработкой
TCP/IP. Удивляет большой процент у "irq18: em0 atapci1", что показывает
"vmstat -i" ? Имеет смысл попробовать в BIOS'е рассадить em и atapci
на разные прерывания (хотя это не всегда возможно).
--
Игорь Сысоев
http://sysoev.ru