Нет многопоточности с R в Linux

Я делаю статистический анализ с использованием R на операционной системе Ubuntu 15.10. Мой сценарий R занимает очень много времени. Около 2 - 3 часов.

Тем временем я проверил загрузку своих процессоров. Я только заметил, что все процессоры почти простаивают, кроме одного. На рисунке ниже, как вы можете видеть, только CPU 8 находится на 100%.

Почему ядро ​​Linux не уравновешивает рабочую нагрузку на всех процессорах?

3 ответа

Решение

Linux действительно балансирует рабочую нагрузку на всех процессорах. Однако для этого рабочая нагрузка должна быть многопоточной. Невозможно распределить однопотоковую рабочую нагрузку по нескольким ЦП, и, действительно, наиболее эффективно хранить однопоточную задачу на одном ЦП.

Проблема здесь в том, что рассматриваемый скрипт R не был написан как многопоточный.

Если ваш процесс уступает mapReduce, вы можете разбить скрипт на части и запустить каждый фрагмент на другом процессоре.

Это не kernel кто решает, как использовать CPU, Если ваш скрипт создан для многопоточности, то только он будет использовать другие потоки.

Другие вопросы по тегам