网上有很多测试磁盘读写速度的软件,比方说很有名的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