我已经对一个 shell 脚本进行了计时,该脚本会执行一些复制和移动文件的操作,该脚本通常运行速度很快,但现在速度减慢,因为我认为新的病毒扫描程序在复制之前会扫描每个文件。
time copy.sh
返回:
1.54s user 24.57s system 1% cpu 16:16.06 total
手册页告诉我以下内容:
执行时间实用程序并计时实用程序。实用程序完成后,time 将已用的总时间、系统开销消耗的时间以及执行实用程序所用的时间写入标准错误流。时间以秒为单位报告。
3次结果是什么意思?
我确定的总时间是 16 分 16 秒。
答案1
user
是花费在用户空间的 CPU 时间,以及system
花费在系统调用上的 CPU 时间。根据程序的描述,系统时间如此之高并不奇怪,因为用户态代码可能主要只是检查这一点read(2)
并且write(2)
没有失败,而繁重的 I/O 工作发生在这些系统调用中。相反,进行 CPU 运算的程序会显示较低的系统时间和非常高的用户时间,因为只有几个系统调用来启动程序,然后进行大量的用户空间活动和任何计算。
如果您的系统有vmstat(8)
,vmstat 1
是查看系统级用户和系统统计信息(以及其他重要值,例如上下文切换)的好方法。