У меня есть программа на Python, которая использует multiprocessing.Pool
, что означает, что он порождает несколько процессов. Программа получает 70 тыс. Текстовых файлов, выполняет некоторую обработку и сохраняет их в другой каталог. Я хочу использовать все мои ядра процессора при его запуске, вот так.
И какое-то время я смог. Моя программа работала ~ 10 секунд каждый раз, и это хорошо.
real 0m12.430s
user 0m13.072s
sys 0m9.704s
Но в течение последних нескольких дней это было противоречивым. Иногда он использует 100% CPU для всех ядер. В других случаях, без какой-либо причины, программа использует только 0-1%, а запуск занимает 5 минут.
real 5m6.186s
user 0m4.844s
sys 0m4.968s
Обратите внимание, что настоящий >> пользователь + sys, хотя я понятия не имею, что это означает. Также обратите внимание, что я не изменяю никакие параметры кода или любые другие настройки между запусками. В этом случае я также заметил, что использование ОЗУ каждого процесса никогда не превышает 10 МБ, что может повлиять на использование ЦП.
У меня вопрос, как я могу даже начать диагностировать эту проблему? Некоторые из моих гипотез:
- ОС обнаружила, что моему ноутбуку 2 года и пытается продлить его жизнь, ограничивая использование ЦП / ОЗУ
- Возможно, ОС ограничивает использование процессором / оперативной памятью процесса, если он довольно долго израсходовал.
- Кто-то получил удаленный доступ к моему ноутбуку и троллит меня
Я использую Linux Mint 17.3 на ноутбуке с процессором Intel® Core ™ TM i3-4005U @ 1,70 ГГц, 4 ядрами, 8 ГБ ОЗУ, жесткий диск
Заранее спасибо.
РЕДАКТИРОВАТЬ: Вот вывод vmstat во время работы программы
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 1 0 2773588 242912 2522744 0 0 114 54 229 812 11 2 83 5 0