Jump to content
Калькуляторы

CoreQuad и smp_affinity Чем различаются ядра?

Имеется CoreQuad Q6600 (ядра 0,1,2,3).

Прерывания от eth0 и eth1 через smp_affinity повешены на разные ядра.

Заметил такой эффект:

нагрузка при разнесении на 2 и 3 ядро существенно меньше,

чем при разнесении на 1 и 3.

 

Чем это вызвано?

Share this post


Link to post
Share on other sites

 

Линузятники прибивать треды к ядрам уже научились, но спеки на проц читать еще нет. :-)))))

Share this post


Link to post
Share on other sites

Q6600 по сути два 2-ядерника в одной упаковки, соответственно производительность падает при обмене данными между разными ядрами разных процессоров

 

ps линузятник ;)

Edited by DemYaN

Share this post


Link to post
Share on other sites

Ilya Evseev, потому что на Q6600 L2 кеш пошарен между парами ядер.

 

Share this post


Link to post
Share on other sites

Второй вопрос касается номеров прерываний.

При загрузке они были 16 и 17, и были общими для ethX и usb.

Сейчас у ethX номера прерываний стали 2300 и 2999.

 

Это как-то сказывается на скорости их вызова?

После перезагрузки номера не изменятся?

Ядро меняет номера самостоятельно или это решает какой-то userland-процесс?

Share this post


Link to post
Share on other sites

Наверное, так:

#!/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

Edited by Ilya Evseev

Share this post


Link to post
Share on other sites

mask=`echo "obase=16; $[2 ** $cpu]" | bc`

 

иначе будет неправильно работать на системах с более чем 4-мя CPU

Edited by a0d75

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this