2015-11-19 3 views
0

Я немного запутался здесь о ядер и потоков на процессораходнопоточного/на основе событий, программное обеспечение против ядер и H/W нитей

Часто в файлах конфигурации например. Nginx, golang вы должны определить количество ядер, чтобы получить максимальную производительность

Если вы посмотрите на этот CPU http://ark.intel.com/products/52213/Intel-Core-i7-2600-Processor-8M-Cache-up-to-3_80-GHz

Сколько «ядер» у него есть?

В спецификациях он имеет 4 ядра и 8 потоков .. Означает ли это 4 * 8 = 32 "ядра" ??

+0

Что должен делать этот вопрос с Go (язык программирования)? – icza

+0

«В спецификациях он имеет 4 ядра» ... Он ** имеет ** 4 ядра ... – SirDarius

+0

относительно Go, я думаю, что OP задается вопросом, что 'runtime.NumCPU()' собирается вернуться на этот CPU, следовательно максимальное значение, которое может быть передано 'GOMAXPROCS'. – tomasz

ответ

1

Нет, у процессора, с которым вы связались, есть четыре ядра. Тем не менее, он может одновременно запускать два потока на ядро ​​с технологией, называемой Hyper-Threading (HT), и имеет 8 "нитей". ОС будет представлена ​​8 процессорами, если вы не отключите HT в BIOS или в другом месте.

Обратите внимание, что гиперпоточность работает специальным образом: она использует неиспользуемые исполнительные устройства (в смысле superscalar processor) сердечника для второго потока. AFAIK есть действительно хорошие алгоритмы, которые перенаправляют инструкции для этого, чтобы быть наиболее эффективными, но имейте в виду, что гиперпотоки могут не принести лучшую производительность для всех приложений. Например: если вы все время используете все исполняемые единицы с плавающей точкой в ​​четырех «реальных» потоках, гиперпотоки не смогут использовать их большую часть времени.

+0

@clarkk, также имейте в виду, что 1) само ядро ​​использует несколько потоков для выполнения своих собственных задач; 2) обычно ваша программа 'nginx' или Go не является единственным процессом пользовательского пространства, запущенным в системе, и выделение всех ядер на« основной »процесс - не лучший способ избежать частых переключателей контекста. Еще одна вещь, которую следует учитывать при попытке выполнить проверку производительности вашей сетевой службы, - это [привязанность процессора IRQ к SMP-системам] (https://www.google.ru/search?q=linux+smp+irq+affinity) , – kostix