Ilya Evseev Опубликовано 16 декабря, 2009 · Жалоба Имеется CoreQuad Q6600 (ядра 0,1,2,3). Прерывания от eth0 и eth1 через smp_affinity повешены на разные ядра. Заметил такой эффект: нагрузка при разнесении на 2 и 3 ядро существенно меньше, чем при разнесении на 1 и 3. Чем это вызвано? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 16 декабря, 2009 · Жалоба Линузятники прибивать треды к ядрам уже научились, но спеки на проц читать еще нет. :-))))) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
DemYaN Опубликовано 16 декабря, 2009 (изменено) · Жалоба Q6600 по сути два 2-ядерника в одной упаковки, соответственно производительность падает при обмене данными между разными ядрами разных процессоров ps линузятник ;) Изменено 16 декабря, 2009 пользователем DemYaN Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Умник Опубликовано 16 декабря, 2009 · Жалоба Ilya Evseev, потому что на Q6600 L2 кеш пошарен между парами ядер. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 16 декабря, 2009 · Жалоба Второй вопрос касается номеров прерываний. При загрузке они были 16 и 17, и были общими для ethX и usb. Сейчас у ethX номера прерываний стали 2300 и 2999. Это как-то сказывается на скорости их вызова? После перезагрузки номера не изменятся? Ядро меняет номера самостоятельно или это решает какой-то userland-процесс? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nuclearcat Опубликовано 17 декабря, 2009 · Жалоба cat /sys/class/net/eth0/device/irq Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 17 декабря, 2009 (изменено) · Жалоба Наверное, так: #!/bin/sh # # irq2smp -- distribute hardware interrupts from Ethernet devices by CPU cores. # # Should be called from /etc/rc.local. # ncpus=`grep -ciw ^processor /proc/cpuinfo` test "$ncpus" -gt 1 || exit 1 for n in `seq 0 31`; do f="/sys/class/net/eth$n/device/irq" test -r "$f" || continue irq=`cat $f` cpu=$[$ncpus - ($n % $ncpus) - 1] mask=$[2 ** $cpu] echo "Assign SMP affinity: eth$n, irq $irq, cpu $cpu, mask $mask" f="/proc/irq/$irq/smp_affinity" test -w "$f" || { echo "ERROR: $f not found, exit."; exit 1; } echo "$mask" > "$f" done Изменено 18 декабря, 2009 пользователем Ilya Evseev Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
a0d75 Опубликовано 23 декабря, 2009 (изменено) · Жалоба mask=`echo "obase=16; $[2 ** $cpu]" | bc` иначе будет неправильно работать на системах с более чем 4-мя CPU Изменено 23 декабря, 2009 пользователем a0d75 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...