文档章节

IO性能测试及cache对读写性能的影响

gk4030
 gk4030
发布于 2016/07/24 21:42
字数 669
阅读 150
收藏 1

dd只能提供一个大概的测试结果,而且是连续IO 而不是随机IO ,理论上文件规模越大,测试结果越准确。
Linux下对文件的访问和设备的访问通常会被cache起来加快访问速度,这个是系统的默认行为


写测试 (直接落盘,不通过cache)

[root@centos-FI ~]# time dd oflag=direct,nonblock if=/dev/zero of=/opt/iotest bs=8k count=100000
100000+0 records in
100000+0 records out
819200000 bytes (819 MB) copied, 20.7926 s, 39.4 MB/s

real    0m20.873s
user    0m0.012s
sys 0m7.226s

写测试 (通过cache)

[root@centos-FI ~]# time dd if=/dev/zero of=/opt/iotest2 bs=8k count=100000
100000+0 records in
100000+0 records out
819200000 bytes (819 MB) copied, 11.9159 s, 68.7 MB/s

real    0m11.948s
user    0m0.028s
sys 0m1.913s

读写 (不通过cache)

[root@centos-FI ~]# time dd oflag=direct,nonblock iflag=direct,nonblock if=/opt/iotest2 of=/opt/iotest3 bs=8k count=100000
100000+0 records in
100000+0 records out
819200000 bytes (819 MB) copied, 114.291 s, 7.2 MB/s

real    1m54.292s
user    0m0.017s
sys 0m14.401s

cache对性能的影响:

cmd result
dd oflag=direct,nonblock if=/dev/zero of=/opt/iotest bs=8k count=100000 39.4 MB/s
dd if=/dev/zero of=/opt/iotest2 bs=8k count=100000 68.7 MB/s
dd oflag=direct,nonblock iflag=direct,nonblock if=/opt/iotest2 of=/opt/iotest3 bs=8k count=100000

7.2 MB/s

 

 

 

  • 读性能测试

# time dd  iflag=direct,nonblock  if=/dev/sda2 of=/dev/null bs=8k count=100000

因为/dev/sda2是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO,
所以,这个命令的IO只发生在/dev/sdb1上,也相当于测试磁盘的读能力。

  • 写测试

# time dd oflag=direct,nonblock if=/dev/zero of=/opt/iotest bs=8k count=100000

因为/dev/zero是一个伪设备,它只产生空字符流,对它不会产生IO,
所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。

  • 读写测试

# time dd iflag=direct,nonblock oflag=direct,nonblock if=/dev/sda2 of=/opt/iotest bs=8k count=100000

说明:
bs是一次io读的规模,理论上bs越大,所测得性能越高
count是读多少个"bs",也可以写成count=16G
direct 模式就是把写入请求直接封装成io 指令发到磁盘
非direct 模式,就把数据写入系统缓存,然后就认为io 成功,并由操作系统决定缓存中的数据什么时候被写入磁盘
参数oflag和iflag, 控制源文件和目标文件的读写方式为direct IO,即读或写文件时越过操作系统的读写buffer。
如果指定oflag=direct,nonblock,写文件时忽略cache的影响;
而如果指定iflag=direct,nonblock,读文件时忽略cache的影响

 

© 著作权归作者所有

共有 人打赏支持
gk4030
粉丝 6
博文 21
码字总数 8547
作品 0
深圳
架构师
私信 提问
SQL Server 2008 I/O性能监控

原文首发于it168,链接见http://tech.it168.com/a2011/0221/1158/000001158998.shtml   I/O性能诊断   SQL Server性能非常依赖于I/O子系统。除非你的数据库适合物理内存,SQL Server经常...

技术小美
2017/10/31
0
0
存储方式与介质对性能的影响

摘要 数据的存储方式对应用程序的整体性能有着极大的影响。对数据的存取,是顺利读写还是随机读写?将数据放磁盘上还将数据放flash卡上?多线程读写对性能影响?面对着多种数据存储方式,我们...

晨曦之光
2012/03/09
264
0
磁盘性能指标--IOPS、吞吐量及测试

一、概念介绍: 磁盘性能指标--IOPS ---------------------------------------------------------- IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指...

wushank
2018/06/29
0
0
磁盘io性能分析

一,概念 磁盘io,顾名思义就是磁盘的输入输出。即向磁盘写入数据和从磁盘读取数据。 I/O 读写的类型,大体上讲,I/O 的类型可以分为: 读 / 写 I/O、大 / 小块 I/O、连续 / 随机 I/O, 顺序 ...

leejia1989
2014/09/15
0
0
RocketMQ高性能之底层存储设计

说在前面 RocketMQ在底层存储上借鉴了Kafka,但是也有它独到的设计,本文主要关注深刻影响着RocketMQ性能的底层文件存储结构,中间会穿插一点点Kafka的东西以作为对比。 例子 Commit Log,一...

薛定谔的旺
02/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

day11

architect刘源源
21分钟前
2
0
论学好Linux系统的超级重要性

不知道各位在日常的工作生活中有没有接触过“rm -rf /*”这个命令,因为这个命令搞出来的事情可还不少呢!前段时间就在一个群里看到了有个小伙子,老板让他去维护一下服务器,这小伙也不太懂...

Linux就该这么学
昨天
1
0
git 使用

1,首先在github配置好信息和仓库,然后在本地进行操作 git init git config user.name 'zhangwuer' git config user.email '56789053@qq.com' 2,与远程分支建立连接 git checkout -b test......

天王盖地虎626
昨天
3
0
git checkout 命令详解

在日常的git操作中,git checkout——检出,是我们的常用命令。最为常用的两种情形是创建分支和切换分支。 在下面的命令中,使用了一些简写,在这里说明一下: git st # git statusgit ci ...

shzwork
昨天
8
0
【Nginx】Nginx多级代理,获取客户端真实请求IP以及每级代理IP

Nginx多级代理,获取客户端真实请求IP以及每级代理IP 如图所示,每一级nginx里的location配置里需要加上对应的配置,最后一级nginx是直接到应用,测试时为了方便,直接用echo模块去测试,打印...

薛定谔的旺
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部