Я сделал несколько измерений времени компиляции вина с включенной и отключенной HyperThreading в BIOS на моем Core i7 930 @ 2,8 ГГц (четырехъядерный) в Linux 2.6.39 x86_64. Каждое измерение было таким:
git clean -xdf
./configure --prefix=/usr
time make -j$N
где N
- это число от 1 до 8.
Вот результаты («скорость» 60 / реальное время (1)):
Здесь синяя линия соответствует отключенному HT, а фиолетовая - включенному HT. Похоже, что когда HT включен, использование 1-4 потоков медленнее, чем без HT. Я предполагаю, что это может быть связано с тем, что ядро не распределяет процессы по разным ядрам и повторно использует вторые потоки уже занятых ядер.
Итак, мой вопрос: как я могу заставить ядро отдавать одному процессу на одно ядро планирование более высокого приоритета, чем добавление большего количества процессов в другой поток того же ядра? Или, если мои рассуждения неверны, как я могу добиться производительности с HT не хуже, чем без HT, для 1-4 процессов, работающих параллельно?