HT позволяет повысить примерно на 10-30% для , в основном задач, связанных с процессором, которые используют дополнительные виртуальные ядра. Хотя эти задачи могут показаться ограниченными процессором, если они не являются сборкой, выполненной на заказ, они обычно страдают от ожидания ввода-вывода между оперативной памятью и локальным кэшем. Это позволяет одному потоку, работающему на физическом ядре с поддержкой HT, работать, пока другой поток ожидает ввода-вывода. Это, однако, имеет недостаток, поскольку два потока совместно используют один и тот же кэш / шину, что приведет к меньшему количеству ресурсов в каждом, что может привести к паузе в обоих потоках во время ожидания ввода-вывода.
В последнем случае запуск одного потока уменьшит максимальную теоретическую мощность одновременной обработки (на 10-30%) в пользу запуска одного потока без замедления перегрузки кеша, что может быть очень значительным в некоторых приложениях.
Выбор используемых ядер так же важен, как и выбор количества потоков для запуска. Если каждый поток связан с ЦП примерно в течение одной и той же продолжительности, то лучше установить сродство так, чтобы потоки, использующие в основном разные ресурсы, оказывались на разных физических ядрах, а потоки, использующие общие ресурсы, группировались на одни и те же физические ядра (разные виртуальные ядра), поэтому что общие ресурсы могут использоваться из одного и того же кэша без дополнительного ожидания ввода-вывода.
Поскольку каждая программа имеет разные характеристики использования ЦП, а перегрузка кеша может или не может быть серьезным замедлением (как это обычно бывает), невозможно определить, какое идеальное количество потоков должно быть без предварительного профилирования. И последнее, на что следует обратить внимание, это то, что ОС / ядру также потребуются некоторые ресурсы ЦП и кеша. Как правило, рекомендуется хранить одно (физическое) ядро отдельно для ОС, если в потоках, связанных с процессором, требуется задержка в реальном времени, чтобы избежать совместного использования ресурсов кэша / процессора. Если потоки часто ожидают ввода-вывода и перегрузка кэша не является проблемой, или если запущена ОС реального времени, специально предназначенная для приложения, вы можете пропустить этот последний шаг.
http://en.wikipedia.org/wiki/Thrashing_(computer_science)
http://en.wikipedia.org/wiki/Processor_affinity