Выполнить процесс за 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..)