c++ - 使用 C++ 获取系统硬盘使用情况

标签 c++ winapi io diskspace

我想知道在非托管 C++ 代码中是否可行?

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

最佳答案

您正在查找“% Disk Time”性能计数器。这表示磁盘忙于服务请求的(平均)时间部分。如果它接近 100%,那么 CPU 可能会等待 I/O 完成。

另一个选项是“当前磁盘队列长度”。这表明有多少请求待处理,这反过来又是对超额操作(发出的操作 - 完成的操作)的度量。如果队列中有零个未决操作,则 CPU 没有在等待磁盘;如果有吨,则 CPU 无事可做。

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

关于c++ - 使用 C++ 获取系统硬盘使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9255350/

相关文章:

c++ - 析构函数调用数量超过构造函数调用

C++ 模板友元类

C++ FatFs 未定义的函数引用

c++ - 忽略来自 WindowFromPoint() 的 HWND

c - 为什么要限制与套接字交互的 C 标准 I/O 流?

python - 转换为 TextIOWrapper 的 BytesIO 对象没有 fileno 属性。

c++ - 无法找出以下程序中的运行时错误

c - GetProcAddress 为所有函数返回 0

c++ - 可以将键盘输入绑定(bind)到 Win32 中的单个应用程序吗?

go - 在 Golang 中读取/复制从 `io.Reader` 到 `io.Writer` 的特定数量的字节,或者如果超过特定字节限制则返回错误?