使用C ++获取系统HDD使用率

时间:2012-02-13 03:48:02

标签: c++ winapi io diskspace

我想知道在非托管C ++代码中是否可以这样做?

我正在编写一个显示系统当前CPU使用率的程序,但我观察到在一些较新的桌面上,当一些冗长的硬盘驱动器操作正在进行时(比如,从后台备份过程),CPU使用率保持不变非常低(低于10%),但系统使用起来有些慢。所以我想在系统范围内添加我的程序当前的HDD使用情况,我只是不确定使用什么API。

1 个答案:

答案 0 :(得分:1)

您正在寻找“%Disk Time”效果计数器。这表示磁盘忙于处理请求的(平均)时间部分。如果它接近100%,则CPU可能会等待很多I / O完成。

另一个选项是“当前磁盘队列长度”。这表示有多少请求待处理,这反过来又是对超额操作的测量(已发布的操作 - 操作已完成)。如果队列中有零暂挂操作,则CPU不等待磁盘;如果有吨,那么CPU就无所事事了。

当然,如果存在低优先级CPU-cound线程,那么当优先级较高的线程等待I / O时,这些线程仍会运行。 Windows不会因为磁盘繁忙而浪费CPU时间。