Насколько хорошо ядро ​​linux в новых процессорах Quad Core с многопоточным приложением - PullRequest
4 голосов
/ 07 января 2009

Есть ли здесь кто-нибудь с опытом работы с планировщиком потоков linux, выполняющим многопоточные приложения на новых четырехъядерных процессорах ?. Если есть кто-то подобный, пожалуйста, напишите здесь свой опыт о том, как производительность ядра управляет различными потоками. Испытывали ли вы какой-либо голодающий поток или голодание одного из ядер?.

Спасибо.

Ответы [ 4 ]

7 голосов
/ 12 января 2009

Учитывая, что разработчики ядра, такие как Christoph Lameter (и Ingo Molnar в планировщике), настроили ядро ​​так, чтобы оно хорошо работало на 4096 процессорах, и учитывая количество оптимизаций, вложенных самой Intel в эту проблему, с многоядерной настройкой как для производительности и экономия энергии, держу пари, ядро ​​гораздо более оптимизировано, чем все, что любой из нас может написать в пользовательском пространстве.

То же самое в библиотеке потоков; в настоящее время есть только одна библиотека потоков, NPTL для Linux 2.6. LinuxThreads был удален из glibc в версии 2.4, а NPTL был выпущен до версии 2.6. И это действительно быстро.

Просто избегайте использования старого ядра, так как последний выпуск вашего дистрибутива или kernel.org - лучший. Перед развертыванием в рабочей среде обязательно измерьте разницу в производительности и подумайте, стоит ли это дополнительных затрат на поддержку (если есть).

5 голосов
/ 07 января 2009

Linux очень хорошо поддерживает использование многих процессоров. Если я правильно помню с SMP, Linux поддерживает 4096 процессоров. Что действительно будет иметь значение, так это то, что ваши приложения написаны так, чтобы использовать преимущества нескольких процессоров.

1 голос
/ 07 января 2009

Я получил совершенно потрясающие результаты на наших процессорах Intel Q6600, как для параллельных производителей, так и для некоторых других параллельных приложений, но я был осторожен, чтобы избежать чрезмерного параллелизма: я обычно разветвляюсь между четырьмя и восемью потоками, так что не так уж много споров , Если вы разветвляете достаточно потоков, у вас будут заметные накладные расходы, особенно если они борются за одни и те же семафоры. Я предполагаю, что тысячи потоков, вероятно, слишком много, и десятки потоков, вероятно, в порядке. Но это только предположение; если вы хотите знать, вам придется найти кого-то, кто измерил, или вам придется провести эксперимент самостоятельно.

Но для дюжины тем наши результаты были потрясающими.

1 голос
/ 07 января 2009

Очень хорошо работает на двухъядерной системе (V8), которую мы производим ... чертовски быстро.

Но очень осторожно относитесь к склонности Linux к истощению потоков, когда блокировки (мьютексы) сильно оспариваются. Представьте себе сценарий, когда 10 потоков работают с одной блокировкой, когда блокировка требуется очень часто, но в течение очень коротких промежутков времени и работа, выполняемая вне блокировки в любой заданной точке, меньше временного интервала. Linux будет стремиться доставить блокировку почти всегда одному потоку, исключая все остальные.

Это также зависит от конкретного пакета потоков, привязанного к ядру - я думаю, что их несколько.

...