Выполнить процесс за n циклов процессора

Как выполнить процесс для n циклов процессора в Linux? У меня есть система пакетной обработки на многоядерном сервере, и я хочу, чтобы каждая задача выполняла одинаковое количество процессорного времени. Как только количество процессорного времени израсходовано, я бы хотел остановить процесс. До сих пор я пытался что-то сделать с / proc / pid / stats utime и stime, но мне это не удалось.

1 ответ

Я полагаю, что это невозможно (дать одинаковое количество циклов нескольким процессам; цикл процессора часто меньше наносекунды). Вы можете выполнить процесс в течение х секунд процессора. Для этого используйте setrlimit (2) с RLIMIT_CPU

Ваш пакетный процессор также может управлять самим временем, см. Time (7). Вы можете использовать таймеры (см. Timer_create (2) и timerfd_create (2)), иметь цикл обработки событий вокруг poll (2), измерять время с помощью clock_getttime(2)

Я не уверен, что полезно написать собственную систему пакетной обработки. Вы можете использовать существующую партию или сланец или gnqs (см. Также коммерческие продукты, такие как pbsworks, lsf..)

Другие вопросы по тегам