linux 获取磁盘速度

2014-05-10 16:06:45 zqtsx 阅读数 51715
  • 红帽Linux企业内训之RHEL系统安装

    本课程基于红帽企业版Linux即RHEL(RHEL是Red Hat Enterprise Linux的缩写),在课程中讲解了RHEL的安装、基础网络命令、网卡设置、文件与目录管理、进程与线程管理、VI编辑器、用户与权限、软件包管理、如何快速地...

    2298课时 0分钟 6683人学习 杨璞
    免费试看

一:使用hdparm命令
这是一个是用来获取ATA/IDE硬盘的参数的命令,是由早期Linux IDE驱动的开发和维护人员 Mark Lord开发编写的( hdparm has been written by Mark Lord <mlord@pobox.com>, the primary developer and maintainer of the (E)IDE driver for Linux, with suggestions from many netfolk).该命令应该也是仅用于Linux系统,对于UNIX系统,ATA/IDE硬盘用的可能比较少,一般大型的系统都是使用磁盘阵列的.

使用方法很简单
# hdparm -Tt /dev/sda

/dev/sda:
Timing cached reads: 6676 MB in 2.00 seconds = 3340.18 MB/sec
Timing buffered disk reads: 218 MB in 3.11 seconds = 70.11 MB/sec


可以看到,2秒钟读取了6676MB的缓存,约合3340.18 MB/sec;
在3.11秒中读取了218MB磁盘(物理读),读取速度约合70.11 MB/sec


二:使用dd命令

这不是一个专业的测试工具,不过如果对于测试结果的要求不是很苛刻的话,平时可以使用来对磁盘的读写速度作一个简单的评估.
另外由于这是一个免费软件,基本上×NIX系统上都有安装,对于Oracle裸设备的复制迁移,dd工具一般都是首选.

首先了解两个特殊设备

/dev/null 伪设备,回收站.写该文件不会产生IO
/dev/zero 伪设备,会产生空字符流,对它不会产生IO

测试方法:
    a.测试磁盘的IO写速度
    time dd if=/dev/zero of=test.dbf bs=8k count=300000   如果要测试实际速度 还要在末尾加上 oflag=direct测到的才是真实的IO速度
   b.测试磁盘的IO读速度
    dd if=test.dbf bs=8k count=300000 of=/dev/null 

   #表示 每次写入/读取8k的数据,执行300000次

dd命令可以通用,但不够专业,也没有考虑到缓存和物理读的区分,测试的数据也是仅作参考,不能算是权威。

##########################

用这个方法测试我08年买的笔记本,写速度23M/s;读速度91M/s

##########################

dd命令解释

dd if= of= bs= skip= seek= conv=

一定不要搞混 source 和 target,不然数据会丢失。所以 dd 平时用着顺手就叫它 dd,但是不小心把数据弄没了就该哭着叫它 Data Destroyer 了。

一般它的常用参数有:

  • bs=n,block size,每次读取 n bytes 写入,可与 count 联用;
    • ibs=n,一次读入 bytes 个字节 (default is 512);
    • obs=n,一次性写 n bytes 个字节 (default is 512);
    • bs 可以同时设置上边两个参数;
    • cbs=n,一次转换 n 个 bytes,即转换缓冲区大小。;
  • count=n, bs 操作的次数,仅拷贝 n 个块,如 dvd: bs=1M count=4430;
  • skip=n,指 if 后面的原文件跳过 n bytes 再开始读取;
  • seek=n,指 of 后面的目标文件跳过 n bytes 再开始写入;   

    测试IO同时读和写的速度
    # time dd if=/dev/sda1 of=test.dbf bs=8k
    13048+1 records in
    13048+1 records out
    3.73s real 0.04s user 2.39s system
    # du -sm test.dbf
    500 test.dbf     (同事测试读写速度时生成一个大小500M的 test.dbf文件)

    上面测试的数据量比较小,仅作为参考.


    相比两种方法:
    前者是linux上专业的测试IDE/ATA磁盘的工具,但是使用范围有局限性;(此试验仅仅使用了测试磁盘IO的参数,对于其他参数及解释参考man手册)
    后者可以通用,但不够专业,也没有考虑到缓存和物理读的区分,测试的数据也是仅作参考,不能算是权威.

    如果用dd测试,需要加oflag=direct,测到的才是真实的磁盘io
2016-08-04 17:23:02 qq_29350001 阅读数 6607
  • 红帽Linux企业内训之RHEL系统安装

    本课程基于红帽企业版Linux即RHEL(RHEL是Red Hat Enterprise Linux的缩写),在课程中讲解了RHEL的安装、基础网络命令、网卡设置、文件与目录管理、进程与线程管理、VI编辑器、用户与权限、软件包管理、如何快速地...

    2298课时 0分钟 6683人学习 杨璞
    免费试看

有时候我们在做维护的时候,总会遇到类似于IO特别高,但不能判定是IO瓶颈还是软件参数设置不当导致热盘的问题.这时候通常希望能知道磁盘的读写速度,来进行下一步的决策.

下面是两种测试方法:
(1)使用hdparm命令
这是一个是用来获取ATA/IDE硬盘的参数的命令,是由早期Linux IDE驱动的开发和维护人员 Mark Lord开发编写的( hdparm has been written by Mark Lord , the primary developer and maintainer of the (E)IDE driver for Linux, with suggestions from many netfolk).该命令应该也是仅用于Linux系统,对于UNIX系统,ATA/IDE硬盘用的可能比较少,一般大型的系统都是使用磁盘阵列的.

使用方法很简单
# hdparm -Tt /dev/sda

/dev/sda:
Timing cached reads: 6676 MB in 2.00 seconds = 3340.18 MB/sec
Timing buffered disk reads: 218 MB in 3.11 seconds = 70.11 MB/sec


可以看到,2秒钟读取了6676MB的缓存,约合3340.18 MB/sec;
在3.11秒中读取了218MB磁盘(物理读),读取速度约合70.11 MB/sec

(2)使用dd命令
这不是一个专业的测试工具,不过如果对于测试结果的要求不是很苛刻的话,平时可以使用来对磁盘的读写速度作一个简单的评估.
另外由于这是一个免费软件,基本上×NIX系统上都有安装,对于Oracle裸设备的复制迁移,dd工具一般都是首选.

在使用前首先了解两个特殊设备
/dev/null 伪设备,回收站.写该文件不会产生IO
/dev/zero 伪设备,会产生空字符流,对它不会产生IO


测试方法:
a.测试磁盘的IO写速度
# time dd if=/dev/zero of=/test.dbf bs=8k count=300000
300000+0 records in
300000+0 records out
10.59s real 0.43s user 9.40s system
# du -sm /test.dbf
2347 /test.dbf

可以看到,在10.59秒的时间里,生成2347M的一个文件,IO写的速度约为221.6MB/sec;
当然这个速度可以多测试几遍取一个平均值,符合概率统计.

b.测试磁盘的IO读速度
# df -m
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
19214 9545 8693 53% /
/dev/sda1 99 13 82 14% /boot
none 506 0 506 0% /dev/shm

# time dd if=/dev/mapper/VolGroup00-LogVol00 of=/dev/null bs=8k
2498560+0 records in
2498560+0 records out
247.99s real 1.92s user 48.64s system

上面的试验在247.99秒的时间里读取了19214MB的文件,计算下来平均速度为77.48MB/sec

c.测试IO同时读和写的速度
# time dd if=/dev/sda1 of=test.dbf bs=8k
13048+1 records in
13048+1 records out
3.73s real 0.04s user 2.39s system
# du -sm test.dbf
103 test.dbf

上面测试的数据量比较小,仅作为参考.


相比两种方法:
前者是linux上专业的测试IDE/ATA磁盘的工具,但是使用范围有局限性;(此试验仅仅使用了测试磁盘IO的参数,对于其他参数及解释参考man手册)

后者可以通用,但不够专业,也没有考虑到缓存和物理读的区分,测试的数据也是仅作参考,不能算是权威.


先了解以下概念:
(1)首先null文件时一个黑洞文件,你把它理解为垃圾桶就行,什么废旧不需要的文件只需往里扔,进入它的内容都会永远丢失
 (2)zero文件当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00),最长用的做法就是想你这样生产一个特定大小的空白文件。
(3)if是读出来 of是写进去。

如果你想测试单口USB读写速度,需将U盘设置一个挂载点,挂载到一个位置上,然后再往里写入。

如:mount /dev/sda1 /mnt
应该如下:
1、测试写入应该这样:
dd if=/dev/zero of=/mnt/test.txt bs=100M count=1
2、测试读取是这样:
dd if=/mnt/test.txt of=/dev/null bs=100M count=1




附录
hdparm -h

-a<快取分区> 设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定。
-A<0或1> 启动或关闭读取文件时的快取功能。   
-c<I/O模式> 设定IDE32位I/O模式。   
-C 检测IDE硬盘的电源管理模式。   
-d<0或1> 设定磁盘的DMA模式。   
-f 将内存缓冲区的数据写入硬盘,并清楚缓冲区。   
-g 显示硬盘的磁轨,磁头,磁区等参数。   
-h 显示帮助。   
-i 显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供。   
-I 直接读取硬盘所提供的硬件规格信息。   
-k<0或1> 重设硬盘时,保留-dmu参数的设定。   
-K<0或1> 重设硬盘时,保留-APSWXZ参数的设定。   
-m<磁区数> 设定硬盘多重分区存取的分区数。   
-n<0或1> 忽略硬盘写入时所发生的错误。   
-p<PIO模式> 设定硬盘的PIO模式。   
-P<磁区数> 设定硬盘内部快取的分区数。   
-q 在执行后续的参数时,不在屏幕上显示任何信息。   
-r<0或1> 设定硬盘的读写模式。   
-S<时间> 设定硬盘进入省电模式前的等待时间。   
-t 评估硬盘的读取效率。   -T 评估硬盘快取的读取效率。   
-u<0或1> 在硬盘存取时,允许其他中断要求同时执行。   -v 显示硬盘的相关设定。   
-W<0或1> 设定硬盘的写入快取。   -X<传输模式> 设定硬盘的传输模式。   
-y 使IDE硬盘进入省电模式。   -Y 使IDE硬盘进入睡眠模式。   
-Z 关闭某些Seagate硬盘的自动省电功能。


参考: 

http://blog.chinaunix.net/uid-24250828-id-3239100.html

http://blog.csdn.net/gong_xucheng/article/details/12615405


扩展可参看:

Linux系统中使用 DD 命令测试 USB 和 SSD 硬盘的读写速度



扩展:linux 查看硬盘使用率

df   -h

Df命令是linux系统以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间信息,命令格式:

df -hl

显示格式为: 

文件系统            容量 已用 可用 已用% 挂载点 

Filesystem          Size Used Avail Use% Mounted on

/dev/hda2            45G   19G  24G 44% /

/dev/hda1           494M   19M 450M  4% /boot

/dev/hda6           4.9G 2.2G 2.5G 47% /home

/dev/hda5           9.7G 2.9G 6.4G 31% /opt

none               1009M    0 1009M   0% /dev/shm

/dev/hda3           9.7G 7.2G 2.1G 78% /usr/local

/dev/hdb2            75G   75G    0 100% /

/dev/hdb2            75G   75G    0 100% /

以上面的输出为例,表示的意思为:

HD硬盘接口的第二个硬盘(b),第二个分区(2),容量是75G,用了75G,可用是0,因此利用率是100%,被挂载到根分区目录上(/)。

下面是相关命令的解释:

df -hl 查看磁盘剩余空间

df -h 查看每个根路径的分区大小

du -sh [目录名] 返回该目录的大小

du -sm [文件夹] 返回该文件夹总M数

更多功能可以输入一下命令查看:

df --help

du --help


查看硬盘的分区 #sudo fdisk -l

查看IDE硬盘信息 #sudo hdparm -i /dev/hda

查看STAT硬盘信息 #sudo hdparm -I /dev/sda 或 #sudo apt-get installblktool #sudo blktool /dev/sda id

查看硬盘剩余空间 #df -h #df -H

查看目录占用空间 #du -hs 目录名

优盘没法卸载 #sync fuser -km /media/usbdisk



2017-01-21 08:33:16 yangshangwei 阅读数 9130
  • 红帽Linux企业内训之RHEL系统安装

    本课程基于红帽企业版Linux即RHEL(RHEL是Red Hat Enterprise Linux的缩写),在课程中讲解了RHEL的安装、基础网络命令、网卡设置、文件与目录管理、进程与线程管理、VI编辑器、用户与权限、软件包管理、如何快速地...

    2298课时 0分钟 6683人学习 杨璞
    免费试看

概述

读取速度可以使用命令:hdparm –t 设备名(/dev/sda1)

写入速度使用命令:time dd if=/dev/zero of=/tmp/test.dat bs=1G count=1


测试磁盘的读写IO速度

有时候我们在做维护的时候,总会遇到类似于IO特别高,但不能判定是IO瓶颈还是软件参数设置不当导致热盘的问题.这时候通常希望能知道磁盘的读写速度,来进行下一步的决策.

下面是两种测试方法:

(1)使用hdparm命令

这是一个是用来获取ATA/IDE硬盘的参数的命令,是由早期Linux IDE驱动的开发和维护人员 Mark Lord开发编写的( hdparm has been written by Mark Lord mlord@pobox.com, the primary developer and maintainer of the (E)IDE driver for Linux, with suggestions from many netfolk).该命令应该也是仅用于Linux系统,对于UNIX系统,ATA/IDE硬盘用的可能比较少,一般大型的系统都是使用磁盘阵列的.

使用方法很简单

[root@entel2 ~]# hdparm -Tt /dev/mapper/vg00-lvhome

/dev/mapper/vg00-lvhome:
 Timing cached reads:   16690 MB in  2.00 seconds = 8357.37 MB/sec
 Timing buffered disk reads: 352 MB in  3.02 seconds = 116.72 MB/sec
[root@entel2 ~]# hdparm -Tt /dev/mapper/vg00-lvhomehdparm -Tt /dev/mapper/vg00-lvhome

(2)使用dd命令

这不是一个专业的测试工具,不过如果对于测试结果的要求不是很苛刻的话,平时可以使用来对磁盘的读写速度作一个简单的评估.

另外由于这是一个免费软件,基本上×NIX系统上都有安装,对于Oracle裸设备的复制迁移,dd工具一般都是首选.

在使用前首先了解两个特殊设备

  • /dev/null 伪设备,回收站.写该文件不会产生IO
  • /dev/zero 伪设备,会产生空字符流,对它不会产生IO

磁盘的IO写速度:

# time dd if=/dev/zero of=/var/test bs=2k count=1000000

测试磁盘的IO读速度:

# time dd if=/var/test of=/dev/null bs=2k

测试IO同时读和写的速度

# time dd if=/dev/sda1 of=test.dbf bs=8k

命令详解:

  • time用于计时
  • dd用于复制,从if读出,写到of。
  • if=/dev/zero不产生IO,因此可以用来测试纯写速度;同理of=/dev/null不产生IO,可以用来测试纯读速度。
  • bs是每次读或写的大小,即一个块的大小,count是读写块的数量,相乘就是读写数据量大小。

数据量越大越准确,多次测试取平均值。

[root@entel2 ~]# time dd if=/dev/zero of=/var/test bs=2k count=1000000
1000000+0 records in
1000000+0 records out
2048000000 bytes (2.0 GB) copied, 3.89646 s, 526 MB/s

real    0m3.910s
user    0m0.122s
sys 0m3.396s
[root@entel2 ~]# time dd if=/var/test of=/dev/null bs=2k
1000000+0 records in
1000000+0 records out
2048000000 bytes (2.0 GB) copied, 0.92143 s, 2.2 GB/s

real    0m0.923s
user    0m0.058s
sys 0m0.864s


[root@entel2 ~]# time dd if=/dev/sda1 of=test.dbf bs=8k
131072+0 records in
131072+0 records out
1073741824 bytes (1.1 GB) copied, 9.50776 s, 113 MB/s

real    0m9.509s
user    0m0.038s
sys 0m3.775s
[root@entel2 ~]# 

上面测试的数据量比较小,仅作为参考.

相比两种方法:
前者是linux上专业的测试IDE/ATA磁盘的工具,但是使用范围有局限性;(此试验仅仅使用了测试磁盘IO的参数,对于其他参数及解释参考man手册)
后者可以通用,但不够专业,也没有考虑到缓存和物理读的区分,测试的数据也是仅作参考,不能算是权威.

2015-08-04 17:01:09 vichie2008 阅读数 13857
  • 红帽Linux企业内训之RHEL系统安装

    本课程基于红帽企业版Linux即RHEL(RHEL是Red Hat Enterprise Linux的缩写),在课程中讲解了RHEL的安装、基础网络命令、网卡设置、文件与目录管理、进程与线程管理、VI编辑器、用户与权限、软件包管理、如何快速地...

    2298课时 0分钟 6683人学习 杨璞
    免费试看

root@ubuntu:~# fdisk -l

Disk /dev/cciss/c0d0: 300.0 GB, 299966445568 bytes
255 heads, 63 sectors/track, 36468 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000cbb89

          DeviceBoot     Start        End     Blocks   Id System
/dev/cciss/c0d0p1                    2432   19530752   83 Linux
/dev/cciss/c0d0p2           2432       3405    7812096   82 Linux swap / Solaris
/dev/cciss/c0d0p3           3405      27744  195507201    Extended
/dev/cciss/c0d0p5           3405       3429     194560   83 Linux
/dev/cciss/c0d0p6           3429      27744  195311616   83 Linux
root@ubuntu:~# hdparm -t/dev/cciss

/dev/cciss:
 BLKGETSIZE failed: Inappropriate ioctl fordevice
BLKFLSBUF failed: Inappropriate ioctl for device
root@ubuntu:~# hdparm -t/dev/cciss/c0d0

/dev/cciss/c0d0:
 Timing buffered disk reads:  550MB in  3.01 seconds = 182.76 MB/se

 

 

单个硬盘转速测试命令:

在linux下,可以查看硬盘的读写速度,比如
#hdparm -t /dev/hda 查看硬盘读写速度
最后可以看到
timing buffered disk reads:.......

开启DMA功能
hdparm -d 1 /dev/hda 开启DMA功能,可把它添加到/etc/rc.local文件中
2018-01-10 14:39:24 yangyang031213 阅读数 4849
  • 红帽Linux企业内训之RHEL系统安装

    本课程基于红帽企业版Linux即RHEL(RHEL是Red Hat Enterprise Linux的缩写),在课程中讲解了RHEL的安装、基础网络命令、网卡设置、文件与目录管理、进程与线程管理、VI编辑器、用户与权限、软件包管理、如何快速地...

    2298课时 0分钟 6683人学习 杨璞
    免费试看

Qt linux获取cpu使用率、内存、网络收发速度、磁盘读写速度、磁盘剩余空间等,实际上大部分都和qt无关的,用其他语言也可以获取。
code:
.h

#ifndef RESOURCE_MINITOR_H
#define RESOURCE_MINITOR_H
#include <QObject>
#include <QTimer>
#include <QProcess>
#include <QDebug>
class resource_minitor : public QObject
{
    Q_OBJECT
public:
    explicit resource_minitor(QObject *parent = nullptr);
private slots:
    void get_resource__();
private:
    bool get_mem_usage__();
    bool get_net_usage__();
    bool get_disk_speed__();
    bool get_cpu_usage__();
    bool get_disk_space__();
    bool get_path_space(const QString & path);
private:
    const int m_timer_interval__ = 1000;
    QTimer monitor_timer__;
    double m_send_bytes__ = 0;
    double m_recv_bytes__ = 0;
    double m_disk_read__ = 0;
    double m_disk_write__ = 0;
    double m_cpu_total__ = 0;
    double m_cpu_use__ = 0;
};
#endif // RESOURCE_MINITOR_H

.cpp

#include "resource_minitor.h"
#include "sys/statfs.h"
resource_minitor::resource_minitor(QObject *parent) : QObject(parent)
{
    connect(&monitor_timer__, &QTimer::timeout, this, &resource_minitor::get_resource__);
    monitor_timer__.start(m_timer_interval__);
}
void resource_minitor::get_resource__()
{
    get_cpu_usage__ ();
    get_disk_speed__();
    get_mem_usage__ ();
    get_net_usage__ ();
    get_disk_space__();
    get_path_space("/");
    qDebug()<<"\n";
}
bool resource_minitor::get_mem_usage__()
{
    QProcess process;
    process.start("free -m"); //使用free完成获取
    process.waitForFinished();
    process.readLine();
    QString str = process.readLine();
    str.replace("\n","");
    str.replace(QRegExp("( ){1,}")," ");//将连续空格替换为单个空格 用于分割
    auto lst = str.split(" ");
    if(lst.size() > 6)
    {
        qDebug("mem total:%.0lfMB free:%.0lfMB",lst[1].toDouble(),lst[6].toDouble());
        return true;
    }
    return false;
}
bool resource_minitor::get_net_usage__()
{
    QProcess process;
    process.start("cat /proc/net/dev"); //读取文件/proc/net/dev获取网络收发包数量,再除取样时间得到网络速度
    process.waitForFinished();
    process.readLine();
    process.readLine();
    while(!process.atEnd())
    {
        QString str = process.readLine();
        str.replace("\n","");
        str.replace(QRegExp("( ){1,}")," ");
        auto lst = str.split(" ");
        if(lst.size() > 9 && lst[0] == "enp2s0:")
        {
            double recv = 0;
            double send = 0;
            if(lst.size() > 1)
                recv = lst[1].toDouble();
            if(lst.size() > 9)
                send = lst[9].toDouble();
            qDebug("%s 接收速度:%.0lfbyte/s 发送速度:%.0lfbyte/s",lst[0].toStdString().c_str(),(recv - m_recv_bytes__) / (m_timer_interval__ / 1000.0),(send - m_send_bytes__) / (m_timer_interval__ / 1000.0));
            m_recv_bytes__ = recv;
            m_send_bytes__ = send;
        }
    }
    return true;
}
bool resource_minitor::get_cpu_usage__()
{
    QProcess process;
    process.start("cat /proc/stat");
    process.waitForFinished();
    QString str = process.readLine();
    str.replace("\n","");
    str.replace(QRegExp("( ){1,}")," ");
    auto lst = str.split(" ");
    if(lst.size() > 3)
    {
        double use = lst[1].toDouble() + lst[2].toDouble() + lst[3].toDouble();
        double total = 0;
        for(int i = 1;i < lst.size();++i)
            total += lst[i].toDouble();
        if(total - m_cpu_total__ > 0)
        {
            qDebug("cpu rate:%.2lf%%",(use - m_cpu_use__) / (total - m_cpu_total__) * 100.0);
            m_cpu_total__ = total;
            m_cpu_use__ = use;
            return true;
        }
    }
    return false;
}
bool resource_minitor::get_disk_speed__()
{
    QProcess process;
    process.start("iostat -k -d");
    process.waitForFinished();
    process.readLine();
    process.readLine();
    process.readLine();
    QString str = process.readLine();
    str.replace("\n","");
    str.replace(QRegExp("( ){1,}")," ");
    auto lst = str.split(" ");
    if(lst.size() > 5)
    {
        qDebug("disk read:%.0lfkb/s disk write:%.0lfkb/s",(lst[4].toDouble() - m_disk_read__ ) / (m_timer_interval__ / 1000.0),(lst[5].toDouble() - m_disk_write__) / (m_timer_interval__ / 1000.0));
        m_disk_read__ = lst[4].toDouble();
        m_disk_write__ = lst[5].toDouble();
        return true;
    }
    return false;
}
bool resource_minitor::get_disk_space__()
{
    QProcess process;
    process.start("df -k");
    process.waitForFinished();
    process.readLine();
    while(!process.atEnd())
    {
        QString str = process.readLine();
        if(str.startsWith("/dev/sda"))
        {
            str.replace("\n","");
            str.replace(QRegExp("( ){1,}")," ");
            auto lst = str.split(" ");
            if(lst.size() > 5)
                qDebug("挂载点:%s 已用:%.0lfMB 可用:%.0lfMB",lst[5].toStdString().c_str(),lst[2].toDouble()/1024.0,lst[3].toDouble()/1024.0);
        }
    }
    return true;
}
bool resource_minitor::get_path_space(const QString & path)
{
    struct statfs diskInfo;
    statfs(path.toUtf8().data(), &diskInfo);
    qDebug("%s 总大小:%.0lfMB 可用大小:%.0lfMB",path.toStdString().c_str(),(diskInfo.f_blocks * diskInfo.f_bsize)/1024.0/1024.0,(diskInfo.f_bavail * diskInfo.f_bsize)/1024.0/1024.0);
    return true;
}

效果:
这里写图片描述

示例代码(Qt5.9工程):http://download.csdn.net/download/yangyang031213/10204938
https://github.com/yangyang0312/cpp/tree/master/Qt/resource_minitor

linux 磁盘io监控

阅读数 8082