我们正在使用 GridEngine 运行计算作业。每个作业都会返回 3 个不同的时间:
- 挂钟时间
- 用户时间
- CPU 时间
这三者之间有什么区别?这三者中哪一个最适合比较两个应用程序/脚本的性能
答案1
挂钟时间是执行一项工作所花费的实际时间。这相当于用秒表计时,完成任务所测量的时间可能会受到系统当时正在执行的任何其他操作的影响。
用户时间衡量 CPU 运行的时间你的代码。这不计算可能正在运行的任何其他程序,也不计算在内核中花费的 CPU 时间(例如文件 I/O)。
CPU 时间衡量 CPU 运行代码或代码所请求的任何内容所花费的总时间。这包括内核时间。
“用户时间”测量可能是最适合测量不同作业性能的测量方法,因为它受系统上发生的其他事情的影响最小。
答案2
来自维基百科:
术语“用户 CPU 时间”一开始可能有点误导。明确地说,总时间(实际 CPU 时间)是 CPU 为程序执行某些操作所花费的时间与 CPU 代表程序执行内核的系统调用所花费的时间的总和。当程序循环遍历数组时,它会累积用户 CPU 时间。相反,当程序执行系统调用(例如 exec 或 fork)时,它会累积系统 CPU 时间
挂钟时间是计算机完成一项任务所花费的实际时间。它是三个术语的总和:CPU 时间、I/O 时间和通信通道延迟(例如,如果数据分散在多台机器上)。与仅测量处理器积极执行某项任务的时间的 CPU 时间相比,挂钟时间测量完成该过程的总时间。两者之间的差异包括由于编程延迟或等待资源可用而花费的时间。
答案3
挂钟时间是您使用秒表测量运行时所获得的时间。用户时间是 CPU 专门运行作业中的代码所花费的时间(这不包括作业可能执行的系统调用)。CPU 时间是 CPU 主动运行代码(包括可能的系统调用)所花费的时间。