独立的CPU和IO时间

独立的CPU和IO时间,c,linux,io,profiling,C,Linux,Io,Profiling,我有一个有很多IO的应用程序。这个应用程序是多线程的,只有一个线程专门处理IO请求,因此在某些时候,IO和CPU是重叠的 它是用C为Linux编写的 我想知道CPU做了多少有用的工作。例如,如果我们制作了一个完美的RAID系统,我们可能能够显著降低(如果不能消除)IO因素。之后,我们受到主内存和CPU吞吐量的限制。我怎么知道?我如何测量这个 谢谢 Bob实用程序或系统调用可以为您提供一些计时信息。进程没有花在执行代码上的任何时间都是它花在阻塞I/O上的时间。好吧,几乎所有时间都是这样,但在其他未

我有一个有很多IO的应用程序。这个应用程序是多线程的,只有一个线程专门处理IO请求,因此在某些时候,IO和CPU是重叠的

它是用C为Linux编写的

我想知道CPU做了多少有用的工作。例如,如果我们制作了一个完美的RAID系统,我们可能能够显著降低(如果不能消除)IO因素。之后,我们受到主内存和CPU吞吐量的限制。我怎么知道?我如何测量这个

谢谢
Bob

实用程序或系统调用可以为您提供一些计时信息。进程没有花在执行代码上的任何时间都是它花在阻塞I/O上的时间。

好吧,几乎所有时间都是这样,但在其他未使用的机器上,挂钟时间-CPU时间是一个很好的指示+1.我看了《时间与getrusage》的手册页。time命令有一个称为IO的小节,但(讽刺的是)它们实际上与时间无关。getrusage可以根据用户时间和内核时间进行分离,但内核时间不一定转化为IO时间。我知道如何计算墙壁时间,但如何按照拉斯曼的建议测量“CPU时间”。非常感谢。@Bob Dole,CPU时间是用户时间加上
time
报告的内核时间。实时时间是挂钟时间。
time
实用程序不测量I/O时间。。正如@larsmans所提到的,它只测量程序执行的有用量。挂钟时间和执行时间之间的任何差异都是进程被阻塞的时间——最常见的情况是I/O,假设你的机器没有被加载去做其他的事情。这太棒了!非常感谢你,卡尔。出于好奇,您知道多线程应用程序会发生什么吗?例如,如果进程运行10秒,并且有两个线程正在100%使用。这意味着实际时间是20秒还是10秒?再次感谢你。@Bob Dole,大部分时间都是实时的。系统时间和用户时间都是CPU时间,因此它们可能会达到您拥有的处理器数量的实时倍。