1

У меня есть программа на 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 МБ, что может повлиять на использование ЦП.

У меня вопрос, как я могу даже начать диагностировать эту проблему? Некоторые из моих гипотез:

  1. ОС обнаружила, что моему ноутбуку 2 года и пытается продлить его жизнь, ограничивая использование ЦП / ОЗУ
  2. Возможно, ОС ограничивает использование процессором / оперативной памятью процесса, если он довольно долго израсходовал.
  3. Кто-то получил удаленный доступ к моему ноутбуку и троллит меня

Я использую 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

0