#javascript #node.js #cpu #throttling #sox
#javascript #node.js #процессор #регулирование #sox
Вопрос:
Не уверен, как спросить об этом. Я написал скрипт nodejs, который я запускаю на своем компьютере, и он вызывает некоторые процессы с интенсивным использованием ЦП (sox amp; ffmpeg) и многие из них. До определенного момента все в порядке, но как только он становится слишком тяжелым, все начинает ломаться.
Мне интересно, как я мог бы улучшить что-то подобное? Я новичок, но я попробовал несколько вещей. Я пробовал использовать setTimeouts
, но я не уверен, действительно ли это помогло или это просто добавило больше работы поверх моего скрипта. Я также пытался поискать в Google информацию об отмене / регулировании в nodejs, но я нахожу только то, что связано с запросами API.
Комментарии:
1. Знаете ли вы причину замедления? Попробуйте в системе Unix
top
. Это может быть чрезмерное переключение процессов, но это станет проблемой, только если у вас намного больше процессов, чем ядер процессора (сотни или тысячи процессов). Это может быть вызвано высокой загрузкой вtop
. Это также может быть нехватка памяти, вызывающая замену. Вы можете определить это вtop
как высокийwa
процент (wa
= ожидание ввода-вывода, что чаще всего указывает на замену).2. большое спасибо. Я запускаю сотни процессов (которые фактически являются командами терминала sox / ffmpeg) в цикле for, так что, возможно, это все. где мне нужно было бы ввести
top
или что именно это такое? Извините, не уверен, что искать 🙂3.
top
это программа командной строки в системах Unix (доступна в любом Linux, возможно, также в macOS), которая показывает запущенные процессы вместе с их использованием процессора и памяти. Вы запускаете его с терминала, набравtop
и нажав Enter. Вы можете выполнить сортировку по использованию памяти с помощьюShift M
и выйти из нее с помощьюq
ключа.
Ответ №1:
Одновременный запуск сотен процессов с интенсивным использованием процессора (таких как sox и ffmpeg) бессмыслен, если у вас нет сотен ядер процессора. Чтобы предоставить каждому процессу справедливую долю ЦП, это приводит к чрезмерному переключению процессов, что сопряжено со своими накладными расходами.
Ваша программа завершится быстрее и сделает систему более полезной, если вы ограничите количество процессов количеством ядер. Например, если у вас 8 ядер, сначала запустите 8 процессов, затем запустите следующий, как только один из них завершится.