如何在Linux上执行n个CPU周期的进程?我在多核服务器上有一个批处理系统,并希望确保每个任务获得完全相同的 CPU 时间。一旦消耗了CPU量,我想停止该过程。到目前为止,我试图用/proc/pid/stats utime 和 stime 做一些事情,但我没有成功。
我认为这是不可能的(为多个进程提供完全相同的周期数;一个CPU周期通常小于纳秒)。您可以执行一个进程 x CPU 秒。为此,使用 setrlimit(2) 和 RLIMIT_CPU
你的批处理器也可以管理时间本身,参见 time(7)。你可以使用计时器(参见timer_create(2)和timerfd_create(2)),围绕poll(2)有一个事件循环,用clock_getttime(2)测量时间。
我不确定编写自己的批处理系统是否有用。您可以使用现有的批处理或slurm或gnqs(另请参阅商业产品,如pbsworks,lsf..)