我想知道在非托管C ++代码中是否可以这样做?
我正在编写一个显示系统当前CPU使用率的程序,但我观察到在一些较新的桌面上,当一些冗长的硬盘驱动器操作正在进行时(比如,从后台备份过程),CPU使用率保持不变非常低(低于10%),但系统使用起来有些慢。所以我想在系统范围内添加我的程序当前的HDD使用情况,我只是不确定使用什么API。
答案 0 :(得分:1)
您正在寻找“%Disk Time”效果计数器。这表示磁盘忙于处理请求的(平均)时间部分。如果它接近100%,则CPU可能会等待很多I / O完成。
另一个选项是“当前磁盘队列长度”。这表示有多少请求待处理,这反过来又是对超额操作的测量(已发布的操作 - 操作已完成)。如果队列中有零暂挂操作,则CPU不等待磁盘;如果有吨,那么CPU就无所事事了。
当然,如果存在低优先级CPU-cound线程,那么当优先级较高的线程等待I / O时,这些线程仍会运行。 Windows不会因为磁盘繁忙而浪费CPU时间。