-j для Intel Core i3 330M

Любые разговоры которые хоть как-то связаны с тематикой форума

Модератор: Модераторы разделов

Аватара пользователя
Devider
Сообщения: 476
ОС: GNU/Linux

-j для Intel Core i3 330M

Сообщение Devider »

Сабж. Проц 2х ядерный, но с гипертрейдингом и cat /proc/cpuinfo показывает 4 ядра. Так какое же значение задавать? Вообще кто какие значения ставит?
Спасибо сказали:
sciko
Сообщения: 1744
Статус: Ъ-участник
ОС: Debian/Ubuntu/etc

Re: -j для Intel Core i3 330M

Сообщение sciko »

Может стоит банально взять сырцы, скомпилисть с разными значениями -j и сравнить время выполнения?
Спасибо сказали:
Аватара пользователя
Devider
Сообщения: 476
ОС: GNU/Linux

Re: -j для Intel Core i3 330M

Сообщение Devider »

sciko писал(а):
29.03.2011 13:13
Может стоит банально взять сырцы, скомпилисть с разными значениями -j и сравнить время выполнения?

Видимо, так и придется поступить. Поотключать всякие ccache'ы и протчая и собрать либру.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5426
ОС: Gentoo

Re: -j для Intel Core i3 330M

Сообщение /dev/random »

Devider писал(а):
29.03.2011 13:18
...и собрать либру.

Вот тут осторожнее. При сборке тяжёлых пакетов на выборе числа потоков сказывается не только процессор, но и память. Её может банально не хватить на несколько потоков. Особенно это заметно для boost'а и chromium'а.
Спасибо сказали:
reji
Сообщения: 81

Re: -j для Intel Core i3 330M

Сообщение reji »

Такой же вопрос возникал. Поставил 5, руководствуясь волшебным "число ядер/процессоров + 1".
Сейчас потестировал, повторив действия из "Impact of hyperthreading on compiler performance?"
(Процессор: Intel Core i5 650)

Код: Выделить всё

ami@vesch:~/src/coreutils-8.10$ ./configure
ami@vesch:~/src/coreutils-8.10$ make clean
ami@vesch:~/src/coreutils-8.10$ time make -j1
real    0m36.367s
user    0m29.856s
sys     0m4.822s
ami@vesch:~/src/coreutils-8.10$ make clean && time make -j2
real    0m19.788s
user    0m33.436s
sys     0m3.712s
ami@vesch:~/src/coreutils-8.10$ make clean && time make -j3
real    0m15.509s
user    0m38.817s
sys     0m4.145s
ami@vesch:~/src/coreutils-8.10$ make clean && time make -j4
real    0m14.133s
user    0m46.563s
sys     0m4.702s
ami@vesch:~/src/coreutils-8.10$ make clean && time make -j5
real    0m14.205s
user    0m46.828s
sys     0m4.841s
ami@vesch:~/src/coreutils-8.10$ make clean && time make -j6
real    0m14.275s
user    0m47.139s
sys     0m4.811s
ami@vesch:~/src/coreutils-8.10$ make clean && time make -j7
real    0m14.413s
user    0m47.321s
sys     0m4.775s
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: -j для Intel Core i3 330M

Сообщение KiWi »

reji писал(а):
29.03.2011 20:00
Такой же вопрос возникал. Поставил 5, руководствуясь волшебным "число ядер/процессоров + 1".

Магическая формула: число потоков = число ядер(с учётом HT, то есть тех, которые видно в /proc/cpuinfo).
Больше/меньше не имеет смысла:
- в первом случае -- на каком-то ядре будет борьба за процессорное время и ненужные переключения контекстов
- во втором -- не будут загружены все ядра

P.S.: на лёгких программах, возможно, стоит выставить и число потоков = 2*число процессоров и т.п. -- сильно зависит от того, как прогружается машина.
Спасибо сказали: