LINUX.ORG.RU

Multi-threating на одноядерном процессоре.


0

0

Объясните чайнику такую вещь: почему выгодно делать количество процессов (точнее threads) бóльшим чем количество ядер. В генте советуют добавить к флагам компиляции -j2, да и личный опыт подтверждает пусть незначительный, но прирост перформанса при распараллеливании уже на одном единственном процессоре. Здравый разум вроде бы подсказывает, что должно быть наоборот - на сабж должны тратиться ресурсы ОС, однако эмпирический опыт расходится с ожиданиями. Почему?

anonymous

Процессы не молотят от начала до конца, есть медленные операции ввода/вывода, процессор стоит, а знчит его можно загрузить другим процессом.

sdio ★★★★★
()

Когда один поток застрял на I/O, другой может поиметь процессорное время.

Zenom ★★★
()
Ответ на: комментарий от anonymous

Тогда объясните мне.

Почему на PIV с HT, два видео или аудио конвертятся быстрее на 30% - 40% в два потока, чем друг за другом в один поток, I/O в этом случае минимальный.

linux4ever
()
Ответ на: комментарий от anonymous

У нас в универе лаба как-то была жутко бугогашная. Числодробильную задачу надо было решить многопоточно. Причем очень многопоточно, до 500 потоков. Никакого I/O после ввода исходных данных и до вывода результата. Двухпроцессорные машины тогда только-только появились и ни у кого их не было.

Zenom ★★★
()
Ответ на: комментарий от anonymous

В HT - два потока команд, легче анализировать ветвления и делать предсказания.

fdn
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.