win和linux下的磁盘测速(读写速度)1 – 命令行工具测速
后面接Linux下的代码测速 Linux磁盘测速2 – 代码测速
一、linux 下磁盘测速
1. 首先找到都有那些磁盘df命令(disk free,查看磁盘还有多少空闲空间)
wc@r740:~/EDCR/EDCR_C$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 63G 0 63G 0% /dev
tmpfs 13G 4.1M 13G 1% /run
/dev/sda4 492G 272G 195G 59% /
tmpfs 63G 1.1G 62G 2% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 63G 0 63G 0% /sys/fs/cgroup
/dev/sda5 3.8T 3.6T 54G 99% /home
/dev/sda2 477M 118M 330M 27% /boot
/dev/sdb1 15T 11T 4.5T 70% /data
/dev/loop2 112M 112M 0 100% /snap/core/12941
/dev/loop1 111M 111M 0 100% /snap/core/12834
2. 磁盘读性能(hdparm命令)
根据df命令列出来的磁盘,找到自己想测的磁盘,比如我这里是/dev/sdb1 (也就是我系统中的/data)。
需要注意,要使用管理员权限运行。
wc@r740:~/EDCR/EDCR_C$ sudo hdparm -Tt /dev/sdb1
[sudo] password for wc:
/dev/sdb1:
Timing cached reads: 16792 MB in 1.99 seconds = 8427.60 MB/sec
Timing buffered disk reads: 2050 MB in 3.00 seconds = 682.58 MB/sec
其中T代表的是cached reads, t代表的是buffered disk reads。这里就是3s读取了2050MB,速度是 682.58 MB/sec。
3. 磁盘写性能(time + dd命令)
同样是管理员权限,我这里同样是磁盘/dev/sdb1(请注意自己修改对应的磁盘名称)
wc@r740:~/EDCR/EDCR_C$ sudo time dd if=/dev/sdb1 bs=1024 count=1000000 of=/1Gb.file
1000000+0 records in
1000000+0 records out
1024000000 bytes (1.0 GB, 977 MiB) copied, 2.5374 s, 404 MB/s
0.57user 1.94system 0:02.53elapsed 99%CPU (0avgtext+0avgdata 2280maxresident)k
2000360inputs+2000000outputs (0major+82minor)pagefaults 0swaps
可以看到,写入1GB的文件,使用了2.5374s,速度是404MB/s
二、 Windows系统下 winsat命令
1. 打开cmd,运行winsat disk -disk C(不指定盘的话,默认是C盘)
C:\Users\LEVI>winsat disk
如果运行成功将会出现
Windows 系统评估工具
> 正在运行: 功能枚举 ''
> 运行时间 00:00:00.00
> 正在运行: 存储评估 '-drive C -ran -read'
> 运行时间 00:00:00.30
> 正在运行: 存储评估 '-drive C -seq -read'
> 运行时间 00:00:02.77
> 正在运行: 存储评估 '-drive C -seq -write'
> 运行时间 00:00:03.55
> 正在运行: 存储评估 '-drive C -flush -seq'
> 运行时间 00:00:00.86
> 正在运行: 存储评估 '-drive C -flush -ran'
> 运行时间 00:00:00.83
> Dshow 视频编码时间 0.00000 s
> Dshow 视频解码时间 0.00000 s
> 媒体基础解码时间 0.00000 s
> Disk Random 16.0 Read 159.43 MB/s 7.5
> Disk Sequential 64.0 Read 438.28 MB/s 8.0
> Disk Sequential 64.0 Write 222.04 MB/s 7.4
> 顺序写操作的平均读取时间 0.434 ms 8.1
> 延迟: 95% 2.062 ms 7.6
> 延迟: 最大 19.430 ms 7.9
> 随机写操作的平均读取时间 0.453 ms 8.7
> 总运行时间 00:00:08.59
2. 如果失败(出现运行界面,但是没看到最终结果),应该是权限不够。找到powershell,右键,以管理员身份运行。继续输入winsat disk -drive C
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
PS C:\WINDOWS\system32> winsat disk -drive C
Windows 系统评估工具
> 正在运行: 功能枚举 ''
> 运行时间 00:00:00.00
> 正在运行: 存储评估 '-drive C -ran -read'
> 运行时间 00:00:00.30
> 正在运行: 存储评估 '-drive C -seq -read'
> 运行时间 00:00:02.77
> 正在运行: 存储评估 '-drive C -seq -write'
> 运行时间 00:00:03.55
> 正在运行: 存储评估 '-drive C -flush -seq'
> 运行时间 00:00:00.86
> 正在运行: 存储评估 '-drive C -flush -ran'
> 运行时间 00:00:00.83
> Dshow 视频编码时间 0.00000 s
> Dshow 视频解码时间 0.00000 s
> 媒体基础解码时间 0.00000 s
> Disk Random 16.0 Read 159.43 MB/s 7.5
> Disk Sequential 64.0 Read 438.28 MB/s 8.0
> Disk Sequential 64.0 Write 222.04 MB/s 7.4
> 顺序写操作的平均读取时间 0.434 ms 8.1
> 延迟: 95% 2.062 ms 7.6
> 延迟: 最大 19.430 ms 7.9
> 随机写操作的平均读取时间 0.453 ms 8.7
> 总运行时间 00:00:08.59
值得一提的是,我的D盘的随机读时间要慢不少( 2.17 MB/s )。应该是因为D盘是HDD(随机读需要频繁移动磁头),C盘是SSD(SSD主要由flash组成,本身就以随机读能力著称,此外,SSD现在也可以和RAID结合,有些SSD由于其多块FLASH闪存芯片组成的RAID 0阵列,其处理随机读能力要更强,当然我这里C盘是SSD还是SSD + RAID,我就不去继续考虑了)。
PS C:\WINDOWS\system32> winsat disk -drive D
Windows 系统评估工具
> 正在运行: 功能枚举 ''
> 运行时间 00:00:00.00
> 正在运行: 存储评估 '-drive D -ran -read'
> 运行时间 00:00:07.72
> 正在运行: 存储评估 '-drive D -seq -read'
> 运行时间 00:00:04.70
> 正在运行: 存储评估 '-drive D -seq -write'
> 运行时间 00:00:04.16
> 正在运行: 存储评估 '-drive D -flush -seq'
> 运行时间 00:00:04.08
> 正在运行: 存储评估 '-drive D -flush -ran'
> 运行时间 00:00:10.17
> Dshow 视频编码时间 0.00000 s
> Dshow 视频解码时间 0.00000 s
> 媒体基础解码时间 0.00000 s
> Disk Random 16.0 Read 2.17 MB/s 4.3
> Disk Sequential 64.0 Read 200.74 MB/s 7.3
> Disk Sequential 64.0 Write 208.30 MB/s 7.3
> 顺序写操作的平均读取时间 3.385 ms 6.5
> 延迟: 95% 19.177 ms 4.7
> 延迟: 最大 56.988 ms 7.8
> 随机写操作的平均读取时间 6.905 ms 5.4
> 总运行时间 00:00:31.16