Macbook测试磁盘读写速度

网上有很多测试磁盘读写速度的软件,比方说很有名的Disk Speed Test。但是这种软件因为用到了GUI,导致这款软件的安装体积很庞大,动辄上百MB。

其实我的目的只是想测试一下Mac上的磁盘读写的速度,看看究竟能有多快,那么简单几行代码,就能搞定。

这种写法的测试速度的单位是bytes/s,也就是B/s

1
2
3
4
5
// 磁盘写入速度测试
time dd if=/dev/zero bs=1024k of=tstfile count=1024

// 磁盘读区速度测试
dd if=tstfile bs=1024k of=/dev/null count=1024

如果想看得更直观一点的话,可以改为MB/s的单位

1
2
3
4
5
// 磁盘写入速度测试
time dd if=/dev/zero bs=1024k of=tstfile count=1024 2>&1 | grep sec | awk '{print $1 / 1024 / 1024 / $5, "MB/sec" }'

// 磁盘读区速度测试
dd if=tstfile bs=1024k of=/dev/null count=1024 2>&1 | grep sec | awk '{print $1 / 1024 / 1024 / $5, "MB/sec" }'

我的rmbp 13’’ early 2015 ,测试下来的结果

write 1123.32 MB/s
read 5460.58 MB/s

网上有种说法,说dd测试其实并不准,读取速度其实没那么快,可能一半左右,造成读取速度快的原因可能在于文件内容全是0,SSD主控做了相关优化,如果造一个文件内容比较随机的大文件,读速可能就不一样了。我个人蛮认同这个观点的,至于实际速度到底如何,我也只是测试了一个理论上的标准作为参考,并不强求。

更新

终于找到为什么磁盘读取速度这么高的原因了。生成的tstfile虽然保存在了磁盘上,但是也会缓存在内存RAM中。所以需要将tstfile从内存清空。保证读取只从磁盘进行,可以使用purge命令来实现。下面是更新之后的bash脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
echo "---------------------"
echo "Write Test Running. Please Wait..."
write=$(dd if=/dev/zero bs=2048k of=tstfile count=1024 2>&1 | grep sec | awk '{print $1 / 1024 / 1024 / $5, "MB/sec" }')
purge
echo ""
echo "Read Test Running. Please Wait..."
read=$(dd if=tstfile bs=2048k of=/dev/null count=1024 2>&1 | grep sec | awk '{print $1 / 1024 / 1024 / $5, "MB/sec" }')
clear
echo ""
echo "Read Speed is: $read"
echo "Write Speed is: $write"
echo "---------------------"
echo "Cleaning up. Please Wait..."
purge
rm tstfile
echo ""
exit 0

将该脚本命名为benchmarkdisks,添加可执行权限,然后放到Mac文件夹/usr/local/bin下,下次就可以直接调用了。
晒一下测试下来的结果

Read Speed is: 1151.3 MB/s
Write Speed is: 1223.73 MB/s

avatar

chilihotpot

You Are The JavaScript In My HTML