检索磁盘读/写最大速度(以编程方式)

Posted

技术标签:

【中文标题】检索磁盘读/写最大速度(以编程方式)【英文标题】:Retrieving disk read/write max speed (programmatically) 【发布时间】:2019-12-28 13:39:11 【问题描述】:

我正在创建一个测量磁盘使用情况的 C++ 应用程序。我已经能够通过定期读取/proc/diskstats 来检索当前的磁盘使用情况(读写速度)。

我现在希望能够以百分比的形式显示此使用情况(我发现它比原始数字更便于用户使用,这可能很难解释)。因此,有人知道在 Linux 上以编程方式检索最大(或标称)磁盘 I/O 速度(API 调用、读取文件等)的方法吗?

我知道有关测量磁盘速度的各种答案(例如https://askubuntu.com/questions/87035/how-to-check-hard-disk-performance),但都通过测试。我想避免这样的方法,因为它们需要一些时间来运行并且在运行时需要大量的磁盘 I/O(因此可能会降低其他正在运行的应用程序的性能)。

【问题讨论】:

【参考方案1】:

在 IBM PC 时代来临之际,有一个很棒的 DOS 实用程序,我忘记了它的名字,但它正在测量计算机的速度(也许是 Speedtest?随便)。屏幕底部 2/3 处有一个条形图,表示 CPU 的速度。如果您有 4.0 MHz(不是 GHz!),则该条占据了 10% 的屏幕。

2-3年后,'386电脑崛起了,速度指示条不仅长满了线,还长满了屏幕,看起来很烂。

因此,没有诸如 100% 磁盘速度、CPU 速度等。

你能做到的最好:如果你的程序运行一段时间,你可以记住最高值并将其设置为 100%。可能您可以将值保存到 tmp 文件中。

【讨论】:

以上是关于检索磁盘读/写最大速度(以编程方式)的主要内容,如果未能解决你的问题,请参考以下文章

dd命令测磁盘读写速度

SylixOS NandFlash读CACHE

windows和Linux测试磁盘读写速度

Linux下测试磁盘读写速度

读《程序是怎么跑起来的》第五章有感

做各种raid需要多少块硬盘