资讯

挂钟时间是什么?程序从开始到结束实际花了多久

2026-11-052 分钟阅读百科
TL;DR挂钟时间(Wall Clock Time)指程序或任务从开始执行到结束所经历的真实时间,包括等待输入输出、网络、调度等所有时间,与只统计处理器实际计算时间的 CPU 时间相对,是衡量 AI 训练和推理速度时最直观的指标。

挂钟时间(Wall Clock Time)是指一个程序或进程从开始执行到结束所花费的实际时间,也叫真实时间(Real-World Time)或墙上时间(Wall Time)。名字的意思是:就像看墙上挂的钟一样,记下开始和结束的时刻,两者相减就是挂钟时间。它包括了所有类型的等待和阻塞时间。

和 CPU 时间的区别

与挂钟时间相对的概念是 CPU 时间:它只统计程序在处理器上实际执行计算的时间,不包括等待的时间。一个程序在运行过程中,常常需要等待:等待从硬盘读取数据,等待网络请求返回,等待用户输入,或者因为操作系统同时在运行很多程序,暂时被调度器挂起、排队等候。这些时间都计入挂钟时间,但不计入 CPU 时间。

举个例子:一个程序从硬盘读取一个大文件,再对内容做一些简单的处理。读取文件花了 9 秒,处理只花了 1 秒。那么它的挂钟时间大约是 10 秒,而 CPU 时间可能只有 1 秒多。反过来,在多核处理器上并行运行的程序,CPU 时间可能大于挂钟时间:如果 8 个核心同时满负荷工作了 1 秒,CPU 时间累计是 8 秒,而挂钟时间只有 1 秒。在 Linux 中用 time 命令运行程序,会同时显示 real(挂钟时间)、user 和 sys(用户态和内核态的 CPU 时间)。

在 AI 中为什么重要

在 AI 领域,挂钟时间是衡量训练和推理效率最直观、最实际的指标。对于用户来说,真正关心的是“我等了多久才拿到结果”,而不是处理器忙碌了多少时间。在评估训练效率时,很多论文会报告达到某个效果所需的挂钟时间,比如“在 8 张 GPU 上训练 3 天”;比较不同的算法时,只看计算量(FLOPs)往往不够:一个算法即使计算量更少,如果因为频繁地读写显存、等待通信而让 GPU 空闲,实际的挂钟时间反而可能更长。FlashAttention 等优化方法的价值,很大程度上就体现在挂钟时间的缩短上:它的计算量并没有减少,但通过减少等待数据搬运的时间,显著加快了实际速度。

在大规模分布式训练中,机器之间的通信、数据加载、检查点保存等都会增加挂钟时间,优化这些环节,往往和优化计算本身一样重要。