Запуск taskset
на одном пиде занимает 2 мс на моем компьютере. Издержки GNU Parallel составляют 2-10 мс, что замедляет их запуск. В моей системе я могу запустить 500 наборов задач за 5 секунд:
seq 500 | time parallel taskset -p {} $$
(Очевидно, вы захотите изменить ввод на PID, а не на маски, а шаблон команды на PID).
Поэтому я озадачен, если вашей системе требуется> 30 секунд, чтобы сделать то же самое.
Если 5 секунд слишком длинны, xargs
имеет меньше функций безопасности, но быстрее:
seq 500 | time xargs -P4 -n1 -I{} taskset -p {} $$
Если это все еще слишком медленно, вы пытаетесь создать свою собственную C -программу.