Linux操作系统下测试磁盘读写速度
如何提高系统的性能是所有Linux系统工程师都要考虑的问题,尤其对于大数据处理,不得不考虑系统的读写性能。要知道读写性能,前面博客中提到/O性能,可以看到每个I/O的状态,现在需要知道一个磁盘每秒读写数据的速度到底可以达到多少?
可以使用hdparm工具,需要注意的是这个命令是用来获取或者设置SATA/IDE设备参数的命令。其命令的使用格式如下:
hdparm [flag] [device] ...
有关这个命令具体的使用参数可以使用man进行查看。这里我们使用下面的命令进行磁盘读写速度的查看:
hdparm -Tt /dev/sda
这里的T表示直接从Linux的缓存区而不通过磁盘读取数据的速度,t表示读取磁盘数据的速度,可以看到下面的结果:
/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
以上只是早期的Linux工程师为了测试磁盘的读写状态而写的一个命令。但实际中有IDE、SATA、SCSI、光纤,这四种类型的磁盘接口,前两种比较普遍,主要使用与家用设备,一些服务器上也使用;SCSI主要用于服务器接口且支持热插拔,其具有多任务、带宽大、CPU的占用率低等特点;光纤则用于高端服务器接口,它也具有热插拔、高速带宽、远程连接、可连接设备多等特点。使用这个命令,只是能解决前面两种,后面两种无法解决,这种情况下只能另寻出路了。
Linux系统有个命令,df与dd。我们可以首先使用df查看一下系统中可用的磁盘容量,然后再利用time命令,结合dd命令最后得出磁盘的读写速度,这样就可以解决上面的问题了。
这里需要注意的一点是,提取这个time的输出内容的时候要注意,我们通过使用man time可以看见这么一句话:
When command finishes ,time writes a message to standard error giving timing statistics about this program run.
可以得time命令是使用标准出错(STDERROR)将程序的运行结果输出,所以直接使用管道通过标准输出获取结果是错误的。这里我们需要进行重定向,命令之间的重定向我们利用管道可以实现,输出重定向有以下几种:
>等价于1>重定向标准输出;
> file重定向到文件file;
2>&1将标准错误输出重定向到标准输出。这里的形式n>&m,可以使得文件描述符n成为输出文件描述符m的副本,也就是n的输出重定向到m;
&>file,标准错误输出与标准输出重定向到文件file中。
可以使用下面两种命令来实现
(time dd if=/dev/zero of=/opt/hello.txt bs=8k count=100000 conv=fdatasync) 2>&1 | grep 'real'
上面的命令,我们将time作为一个子命令进行运行用()操作,然后再利用2>&1将标准出错重定向到标准输出,然后再提取出含real字符串的一项。
{time dd if=/dev/zero of=/opt/hello.txt bs=8k count=100000 conv=fdatasync; }2>&1 |grep 'real'
上面命令使用{}进行子命令的执行,注意结尾的}前面有一个空格,否则此命令无法执行。
可以写一个脚本进行测试:
#!/bin/bash
testfile=/opt/tempfile.txtoption1=sync
option2=fsync
option3=fdatasyncfreespace=$(df -m |sed -n '2p' | awk '{print $4}')
echo $freespace
if [ $(($freespace > 2048)) ]
thencosttime=$( (time dd if=/dev/zero of=$testfile bs=8k count=200000 conv=$option3) 2>&1 |grep 'real'|awk '{print $2}')echo $costtimemin=${costtime%m*}sectemp=${costtime#*m}sec=${sectemp%s*}total_time=$(echo "$min*60+$sec" | bc -l)if [ $(echo "$total_time>0"|bc) -eq 1 ];thenecho "the total time is $total_time secs"average=$( echo "1638.4/$total_time"|bc -l)echo "the speed of this disk is $average Mb/s"firm -rf $testfile
fi
以上脚本测试往磁盘写入1.6G数据的时候磁盘的速度,这里在使用dd命令的时候,使用了参数conv=fdatasync,表示直接将数据写入到磁盘,这样测得的数据就是实际写入磁盘的速度,了解IO同步可以看下本博客中 这篇。
Linux操作系统下测试磁盘读写速度相关推荐
- linux下测试磁盘的读写IO速度-简易方法
linux下测试磁盘的读写IO速度-简易方法 参考资料: https://blog.csdn.net/zqtsx/article/details/25487185 一:使用hdparm命令 这是一个是 ...
- OS实验——测试磁盘读写速度与多进程并发(C语言,Linux)
前言 这几天换季了,身边的很多人包括自己都感冒了,大家要注意保暖防寒,适当运动,规律作息.这期的blog本来想分两期做的,结果这几天一直重感冒,拖到了现在,索性就来个二合一. 完整代码在文末 测试磁盘 ...
- Linux操作系统下Moodle平台的搭建
转自http://fuwu.aieln.com/info/show/711/ 软件下载地址(Moodle2.2.2(Build:20120312)):http://bbs.aieln.com/arti ...
- Linux操作系统下 NAND FLASH驱动程序框架
当我们需要在操作系统上读写普通文件的时候,总是需要一层层往下,最终到达硬件相关操作,当然底层设备大多数都是块设备 NAND FLASH就作为一个最底层的块设备. 而我们写驱动,就是要构建硬件与操作系统 ...
- linux c语言 ppt,linux操作系统下c语言编程入门.ppt
linux操作系统下c语言编程入门.ppt Linux操作系统下C语言编程入门 CNT Linux操作系统简介基础知识进程介绍文件操作时间概念消息管理线程操作网络编程Linux下C开发工具介绍 一 L ...
- Linux操作系统下iptables+nat实现ADSL共享上网!
Linux操作系统下iptables+nat实现ADSL共享上网! ADSL作为一种较为成熟的宽带接入技术,凭着传输速度快.安装使用方便,无需太多的投入,以及节省费用等优点被现在大部分家庭和中小企业所 ...
- linux确定刻录机目录,在Linux操作系统下使用DVD刻录机(转)
在Linux操作系统下使用DVD刻录机(转)[@more@] 现在,越来越多的用户开始装备DVD刻录机.在Windows平台上使用DVD刻录机应该不存在什么问题,那么在Linux平台又应该如何使用DV ...
- Linux操作系统下SSH默认22端口修改方法
NO 1: 01假如要改SSH的默认端口(22),那么你只要修改:/etc/ssh/sshd_config中Port 22,这里把22改成自己要设的端口就行了,不过千万别设和现已有的端口相同哦,以防造 ...
- linux操作系统下 c语言编程入门
linux操作系统下 c语言编程入门 (一)目录介绍 1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门 ...
最新文章
- Blender 2.9中的真实感三维产品全流程制作学习教程
- 汇编语言--串处理指令
- 使用DOM读取和维护XML数据
- 深度学习aps_深度学习的目标检测算法是如何解决尺度问题的?
- ObjectC 与 C++ 混编时的编译器设置
- 测试显卡游戏里FPS温度性能的软件,求一个在游戏中显示FPS 显卡温度之类的工具...
- 学习通信原理之——什么是傅立叶级数
- 通过镜像安装torch,torchvision
- li怎么让文字在图片下面_div+css(ul li)实现图片上文字下列表布局
- iOS开发之MOVE设计模式
- 前端字体图标的使用总结
- 车子Linux系统,Linux车载系统Automotive Grade Linux
- 命令与征服2完全版+烈火风暴资料片
- 史上最全的团队文档协作及管理工具盘点,看看哪款适合你
- Java获取随机数的3种方法和总结
- 鸿蒙系统 新闻,首款鸿蒙系统终端新闻 华为正式发布鸿蒙系统
- 大数据未来产业的爆发,主要会集中在哪几个方面?
- 弗洛伊德算法——最短路径算法
- iOS 修改键盘的return键
- UniAPP 安卓应用版本自动更新及下载安装