Пока VTune Analyzer работал на блейд-сервере с 8 ядрами, я наблюдал процент использования процессора с помощью mpstat -P ALL 1 .

mpstat показал мне, что VTune занимает 100% одного ядра, в то время как все остальные ядра простаивают.

Почему это происходит? Разве ОС (RHEL Server 5.2) не должна автоматически распределять нагрузку между ядрами? То же самое произошло, когда я попытался запустить MATLAB (даже после включения поддержки многопоточности в настройках MATLAB).

PS: я разработчик. Не системный администратор. Поэтому чувствовал, что лучше спросить здесь, а не на сервере.

1 ответ1

3

Операционная система распределяет потоки по ядрам.

Процесс состоит из одного или нескольких потоков.

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

Так что все дело в процессе.

Это будет работать только на одном ядре:

for(i=0; i<1000; i++)
{
    do_something_intensive();
}

Принимая во внимание, что это более дружественное ядро

pthread_create(pth1,&do_something_intensive,attr,&args);
pthread_create(pth1,&do_something_else_intensive,attr,&args);

Например.

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