Перейти к содержимому
Калькуляторы

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

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

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

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Изменено пользователем DemYaN

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Изменено пользователем Ilya Evseev

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Изменено пользователем a0d75

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.