6

Я буду максимизировать несколько ящиков, работающих с интенсивной процессорной нагрузкой.

Каждый процесс использует только 1 поток, поэтому я буду запускать их параллельно. Я использую машины с 4 ядрами, так что это 8 с включенной гиперпоточностью.

Каждый процесс также использует 1 ГБ ОЗУ, поэтому мне потребуется 8 ГБ ОЗУ на машину, если включена технология Hyper-Threading, или 4 ГБ, если она отключена.

Мой вопрос: я должен включить или отключить гиперпоточность?

Стоимость оперативной памяти - это не проблема, а скорость, с которой может выполняться обработка. Будет ли это более эффективно при включенной или отключенной гиперпоточности?

3 ответа3

8

Единственный способ узнать наверняка - это сравнительный анализ.

Тем не менее, существует очень мало сценариев, в которых HT замедляет работу современного ЦП, но переход от 4 до 8 процессов может добавить достаточно ввода-вывода, чтобы другие области системы превратились в узкое место (диск, сеть, пропускная способность ОЗУ и т.д.).)

Я думаю, что несмотря ни на что, HT следует оставить включенным, но вам нужно будет сравнить свою систему, чтобы увидеть, сколько заданий можно запустить одновременно для максимальной пропускной способности.

Если ничего другого, ОС может использовать некоторые дополнительные ресурсы для выполнения.

4

Краткий скрипт для отключения многопоточных процессоров приведен ниже. Это может быть полезно для бенчмаркинга. Работает на Centos 6.2 (ядро 2.6.32).

#!/bin/sh
cat /sys/devices/system/cpu/cpu*/topology/thread_siblings_list |
sort -u |
while read sibs
do
    case "$sibs" in
            *,*)
                    oldIFS="$IFS"
                    IFS=",$IFS"
                    set $sibs
                    IFS="$oldIFS"

                    shift
                    while [ "$1" ]
                    do
                            echo Disabling CPU $1 ..
                            echo 0 > /sys/devices/system/cpu/cpu$1/online
                            shift
                    done
                    ;;
            *)
                    ;;
    esac
done
3

Тестовый запуск одного процесса с отключенным HT.

Если процесс не максимально использует одно ядро, когда HT отключен, было бы более эффективно работать с включенным HT, так как вы бы "тратили" меньше циклов ЦП.

Если он максимально исчерпает ядро, то в теории любая ситуация должна занимать одинаковое количество времени для выполнения. Прочитав ответ и ваш ответ afrazier, вы увидите, что это единственный действительный тест, который вам может потребоваться выполнить.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .