2012-05-15 2 views
4

I порт Ядро Linux 2.6.32 для Intel (R) Xeon (R) CPU E31275 @ 3,40 ГГц. Если я включу hyperthread в BIOS, я могу увидеть 8 ядер процессора (CPU0 ~ CPU7). Большинство прерываний происходит в CPU 4, а использование ЦП этого ядра намного выше, чем у других (почти в два раза больше, чем у других). Я не очень хорошо это понимаю, потому что думаю, что я не устанавливал никаких операций привязки IRQ.Почему производительность ухудшается после включения hyperthread?

Если я отключу гиперпоток в BIOS, тогда все будет в порядке. IRQ были сбалансированы, и использование ЦП всех ядер (CPU0 ~ CPU3) также сбалансировано.

Может кто-нибудь объяснить это? Связано ли это с BIOS? Должен ли я делать некоторые специальные настройки в ядре?

+0

Производительность зависит от того, что вы делаете. Программа, которая сжимает номера, которая делает много дисковых операций ввода-вывода, и то, что делает множество сетевых операций ввода-вывода, будет вести себя по-разному. – ugoren

ответ

5

Некоторые программы получают отрицательный эффект от HT (Hyper Threading), чтобы объяснить это, вам нужно понять, что такое HT. Как вы сказали, вы видели, что 7 (0-7 - это выше 8) ядер процессора, это не так, у вас есть 4 ядра в вашем процессоре, 8 ядер - это виртуальные ядра, поэтому одно ядро ​​имеет 2 потока (и действует так, как будто он 2 ядра). Обычно HT помогает быстрее запускать программы из-за того, что CPU/OS может работать (выполняя то, что делают эти программы) 8 программ одновременно, без HT вы можете запускать только 4 одновременно. Вам не нужно устанавливать какие-либо настройки, так как вы не можете изменить этот внешний вид, если вы являетесь разработчиком этой программы, вы должны перепроверить код и оптимизировать его для HT, если хотите, или вы можете просто отключить HT.

Другая информация из-за некоторых дерьмовых народов говорит: HT увеличивает мощность CPU это НЕ верно! даже если вы видите 8 ядер с разрешением 4 ГГц (ГГц ничего не говорит, нужно измерять на флопе), вы получили ту же мощность, что и при включении HT и получили 4 ядра с частотой 4 ГГц. Если у вас есть HT на 2 виртуальных ядрах, вы делитесь одним физическим ядром от процессора ur.

Вот еще несколько сведения о HT: http://www.makeuseof.com/tag/hyperthreading-technology-explained/

Я не смог найти свою старую ссылку на очень хороший сайт, где есть фрагменты кода, который показывает плохой код для HT и хороший код (в значении Худшие из того медленнее чем без HT и наоборот).

TL; DR: не каждая программа помогает от HT из-за ее развития.

+0

примечание для добавления, так как это разделы linux. HT работает хорошо на linux, на Winblows его все еще замедляется, поэтому, если вы когда-либо (и я надеюсь, что у вас не будет), используйте winblows на машине, где включен HT, отключите его. – K1773R

+0

Спасибо за информацию. Я думаю, мне нужно найти плохой код для HT. Но для ядра Linux я не сильно изменил, поэтому я не знаю, почему планирование является странным. – flypen

+0

это не код ядра, на который вы должны обратить внимание, его код вашего приложения. sheduling не является странным, это всего лишь часть технологии. если это ответ на вопрос ур, примите этот вопрос (иначе другие ppls ответят на него, может быть), если вам нужно знать больше, просто спросите. приветствия – K1773R

Смежные вопросы