我有一个 Java 进程,它启动一堆子进程并通过执行“kill -STOP”和“kill -CONT”将它们交错(按照Suspend a child process spawned by java 中给出的建议)
现在我想计时这个过程。我运行“时间 java [...]”
并且由此产生的“用户”时间大约是“真实”时间的一半(“sys”时间可以忽略不计)。
无论子进程是否算作“用户”时间,这都没有意义,因为(除非我的代码使用的 CPU 比我想象的要多得多)我的 java 代码花费的大部分时间都被花费了(或者应该花费)等待(通过wait(10000)
每十秒唤醒一次的循环来杀死 -STOP 一个进程并杀死 -CONT 另一个,直到其中一个成功返回)。
调用是否有很多开销kill
(即间隔太短十秒)?子进程是否计入用户时间?如果是这样,还有什么可以解释这种差异?