-j для Intel Core i3 330M
Модератор: Модераторы разделов
-
Devider
- Сообщения: 476
- ОС: GNU/Linux
-j для Intel Core i3 330M
Сабж. Проц 2х ядерный, но с гипертрейдингом и cat /proc/cpuinfo показывает 4 ядра. Так какое же значение задавать? Вообще кто какие значения ставит?
-
sciko
- Сообщения: 1744
- Статус: Ъ-участник
- ОС: Debian/Ubuntu/etc
Re: -j для Intel Core i3 330M
Может стоит банально взять сырцы, скомпилисть с разными значениями -j и сравнить время выполнения?
-
Devider
- Сообщения: 476
- ОС: GNU/Linux
-
/dev/random
- Администратор
- Сообщения: 5426
- ОС: Gentoo
-
reji
- Сообщения: 81
Re: -j для Intel Core i3 330M
Такой же вопрос возникал. Поставил 5, руководствуясь волшебным "число ядер/процессоров + 1".
Сейчас потестировал, повторив действия из "Impact of hyperthreading on compiler performance?"
(Процессор: Intel Core i5 650)
Сейчас потестировал, повторив действия из "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
Магическая формула: число потоков = число ядер(с учётом HT, то есть тех, которые видно в /proc/cpuinfo).
Больше/меньше не имеет смысла:
- в первом случае -- на каком-то ядре будет борьба за процессорное время и ненужные переключения контекстов
- во втором -- не будут загружены все ядра
P.S.: на лёгких программах, возможно, стоит выставить и число потоков = 2*число процессоров и т.п. -- сильно зависит от того, как прогружается машина.