用C语言写了一个程序,用time命令测得了程序运行时的real,user 跟 sys time, 然后用time 测同时运行两个副本时的速度(用 “time ./程序名 & time ./程序名” 命令测的),real & user time 好像都少了一点点,但是不排除有误差;可是同时运行四个副本的时候,每个副本的real time 变成了原来的两倍,user time 基本没变,这是为什么? 急求答案,谢谢各位~~
sys time是程序使用的内核态的时间,如果同时运行多个程序,系统会花时间在来回调度和切换进程生。运行多个副本时,会出现sys time增加的现象,至于real time变成两倍了。这个纯属和运行环境有关系。。追问
可是我这个程序下正常运行user time跟real time都是7s多,user time只有0.004s。到了四个副本的时候user time还是7s多,user time也不过变成了0.008-0.012s差不多,但是每一个副本的real time都在14s多,这个差得太多了,没有什么固定的解释么?
追答你描述的我没太看懂。。怎么都是user time~~~
追问不好意思,错了。到了四个副本的时候user time还是7s多,sys time变成了0.008-0.012s
追答sys time变成了0.008-0.012s是正常的啊。因为进程调度和切换需要时间啊。。
至于real time 变成14s, 也是正常的啊。。real time是指从进程开始到进程结束所消耗的时间。。
附上官方解释:
Real is wall clock time - time from start to finish of the call. This is all elapsed time including time slices used by other processes and time the process spends blocked (for example if it is waiting for I/O to complete).
这就是一个很长的循环,要循环1000000000次所以时间比例测得应该比较准。。。
追答时间你自己把握一下吧。 我几个零少几个零很容易。
追问我们调的时候规定把时间控制在5-10s,我把程序的时间控制在7s多,如果时间变成了14s肯定不会是误差的缘故
追答有人说如何优化系统速度? CPU不是瓶颈,内存也不是瓶颈,硬盘IO才是瓶颈。 你猜这根你有关系啊? 天晓得。