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