Я знаю, что вся эта терминология - запутанное поле, но я пытаюсь объяснить, как они используются по адресу: http://www.cpu-world.com/CPUs/Xeon/Intel-Xeon%20E7-8870.html.

У меня есть такой контекст, что у меня есть старая программа, написанная на VB6, которую я могу запустить много раз. И мне интересно, сколько экземпляров я смогу запустить до того, как обработка значительно замедлится? Например. для Xeon E7-8870 меня будут душить 10 ядер, 20 потоков или 8 мультипроцессоров?

(Я знаю, что программа нуждается в переписывании на C #, сначала другие приоритеты ...)

Очень ценится

2 ответа2

2

Там действительно нет путаницы.

Ядро - это процессор на кристалле. Вы можете иметь процессор, который представляет собой одно ядро в одном пакете. Вы также можете иметь двухъядерный процессор, который представляет собой 1 пакет с несколькими процессорами. То же самое касается любого многоядерного. Вы могли бы иметь 1000-ядерный процессор, его еще один пакет с 1000 процессоров.

Мультипроцессор - это несколько сокетов и физических пакетов ЦП. Вы можете иметь 2 одноядерных процессора или более. Вы также можете иметь несколько многоядерных процессоров, предполагая, что процессор поддерживает это. Четырехъядерные процессоры - это то же самое, что иметь 16 процессоров в отдельных пакетах или 1 16-ядерный пакет с точки зрения мощности и производительности. Это просто 4 пакета и 4 ядра для каждого пакета.

Потоки - это количество отдельных процессов, которые могут выполняться одновременно. Проще говоря, большинство процессоров могут обрабатывать 1 поток одновременно, а Hyperthreading может выполнять 2 потока одновременно. HTT (Hyperthreading) означает, что каждое ядро (не имеет значения, если его 2 на 1 или 1 на 2) может выполнять 2 потока. Таким образом, четырехъядерный HTT-процессор теоретически может делать 8 потоков. Это не всегда правильно, и некоторые программы очень плохо справляются с HTT.

Что касается вашего процесса, сложно сказать. Если у вас было 10 ядер с Hyper-многопоточностью, и приложение могло работать только в одном потоке, то вы, вероятно, могли бы иметь 20 отдельных экземпляров, предполагая: у вас достаточно оперативной памяти. Дисководы могут не отставать от операций ввода-вывода. Ничто другое не прерывает и не берет на себя

Если процесс не может заполнить весь ЦП сам по себе (скажем, он загружен на 50%), вы также можете добавить несколько дополнительных потоков / заданий в пул.

1

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

Вы действительно не будете знать, пока не попробуешь. Если задачи выполняют много операций ввода-вывода, вы можете обнаружить, что большее количество экземпляров позволяет центральному процессору работать даже во время ввода-вывода. Однако, если задачи используют много памяти, вы можете обнаружить, что большее давление на кеши и контроллер памяти приводит к тому, что общая пропускная способность фактически падает, возможно, радикально.

Даже в самых лучших условиях гиперпоточность увеличивает пропускную способность примерно на 15%. Это означало бы, что два потока работают примерно на 57% быстрее, чем один поток.

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