Вместо функции печати попробуйте использовать модуль syslog
.
import syslog
syslog.syslog('System is going to shutdown')
У вас есть два 10-ядерных процессора, всего 20 ядер, но каждое из этих ядер является гиперпоточным и представляется операционной системе как два процессора: вы заканчиваете до 40 процессоров. (Я немного упрощаю: ядро осознает разницу между ядрами и потоками и принимает это во внимание.) Это то, что отображает htop
.
Что касается вашей нагрузки, 10 - это нормально; одно практическое правило (приведенное в комментарии к ответу на Понимание загрузки системы ) заключается в том, что мониторинг должен предупреждать, если нагрузка превышает количество процессоров, но в вашем случае меньше, чем количество ( настоящие) ядра.
В этом случае допустима нагрузка 10. Эмпирическое правило состоит в том, что вы хотите, чтобы средняя загрузка была меньше общего количества ядер. Причина того, что у вас вдвое больше ядер, кроется в гиперпоточности . Вот выдержка из связанной статьи в Википедии:
Для каждого физически присутствующего ядра процессора операционная система обращается к двум виртуальным или логическим ядрам и по возможности распределяет рабочую нагрузку между ними. . Основная функция гиперпоточности - увеличить количество независимых инструкций в конвейере; он использует преимущества суперскалярной архитектуры, в которой несколько инструкций работают с отдельными данными параллельно. При использовании HTT одно физическое ядро отображается в операционной системе как два процессора, которые могут использовать каждое ядро для одновременного планирования двух процессов. Кроме того, два или более процессов могут использовать одни и те же ресурсы: если ресурсы для одного процесса недоступны, то другой процесс может продолжить, если его ресурсы доступны.