使用blktrace统计磁盘块I/O访问频率 + IO调度CFQ
http://blog.chinaunix.net/uid-24774106-id-4096470.html
http://blog.csdn.net/wyzxg/article/details/7449821
了解IO协议栈
[root@localhost ~]# stap -l 'ioscheduler.*'
ioscheduler.elv_add_request
ioscheduler.elv_completed_request
ioscheduler.elv_next_request [root@localhost ~]# stap -l 'ioblock.*'
ioblock.end
ioblock.request
mount -t debugfs debugfs /sys/kernel/debug
btrace /dev/xvda1
[root@server1 ~]# btrace /dev/xvda1
, 0.000000000 A WS + <- (,)
, 0.000002288 Q WS + [jbd2/xvda1-]
, 0.000008167 G WS + [jbd2/xvda1-]
, 0.000010829 I WS + [jbd2/xvda1-]
^C202, 0.000015747 m N cfq225S / insert_request
, 0.000016552 m N cfq225S / add_to_rr
, 0.000020871 m N cfq workload slice:
, 0.000021950 m N cfq225S / set_active wl_prio: wl_type:
, 0.000023149 m N cfq225S / fifo=(null)
, 0.000023724 m N cfq225S / dispatch_insert
, 0.000025445 m N cfq225S / dispatched a request
, 0.000026338 m N cfq225S / activate rq, drv=
, 0.000026463 D WS + [jbd2/xvda1-]
, 0.000034989 A WS + <- (,)
, 0.000035222 Q WS + [jbd2/xvda1-]
, 0.000035927 G WS + [jbd2/xvda1-]
, 0.000036342 I WS + [jbd2/xvda1-]
, 0.000036929 m N cfq225S / insert_request
, 0.000037721 m N cfq225S / dispatch_insert
, 0.000038336 m N cfq225S / dispatched a request
, 0.000038829 m N cfq225S / activate rq, drv=
, 0.000039058 D WS + [jbd2/xvda1-]
, 0.000040827 A WS + <- (,)
, 0.000041061 Q WS + [jbd2/xvda1-]
, 0.000041647 G WS + [jbd2/xvda1-]
, 0.000041825 I WS + [jbd2/xvda1-]
, 0.000042266 m N cfq225S / insert_request
, 0.000042776 m N cfq225S / dispatch_insert
, 0.000043250 m N cfq225S / dispatched a request
, 0.000043626 m N cfq225S / activate rq, drv=3
...
blktrace is a block layer IO tracing mechanism which provides detailed informa-tion about request queue operations up to user space. mount -t debugfs debugfs /sys/kernel/debug
blktrace -d /dev/sda -o - |blkparse -i - -o blkparse.out
[root@server1 ~]# cat blkparse.out |grep cfq
202,1 0 0 0.000015618 0 m N cfq225S / insert_request
202,1 0 0 0.000020115 0 m N cfq225S / slice expired t=0
202,1 0 0 0.000022817 0 m N cfq225S / sl_used=120 disp=7 charge=7 iops=1 sect=56
202,1 0 0 0.000024892 0 m N cfq workload slice:100
202,1 0 0 0.000025825 0 m N cfq225S / set_active wl_prio:0 wl_type:1
202,1 0 0 0.000027072 0 m N cfq225S / fifo=(null)
202,1 0 0 0.000027564 0 m N cfq225S / dispatch_insert
202,1 0 0 0.000029452 0 m N cfq225S / dispatched a request
202,1 0 0 0.000030065 0 m N cfq225S / activate rq, drv=1
202,1 0 0 0.000041729 0 m N cfq225S / insert_request
202,1 0 0 0.000042400 0 m N cfq225S / dispatch_insert
202,1 0 0 0.000043012 0 m N cfq225S / dispatched a request
202,1 0 0 0.000043463 0 m N cfq225S / activate rq, drv=2
202,1 0 0 0.005256969 0 m N cfq225S / complete rqnoidle 1
202,1 0 0 0.005258751 0 m N cfq225S / set_slice=120
202,1 0 0 0.005263485 0 m N cfq225S / complete rqnoidle- ----------------
CFQ 调度
[root@server1 ~]# debugfs -R 'stats' /dev/xvda1
debugfs 1.41. (-May-)
Filesystem volume name: <none>
Last mounted on: /
Filesystem UUID: 94e4e384-0ace-437f-bc96-057dd64f42ee
Filesystem magic number: 0xEF53
Filesystem revision #: (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_
file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count:
Block count:
Reserved block count:
Free blocks:
Free inodes:
First block:
Block size:
Fragment size:
Reserved GDT blocks:
Blocks per group:
Fragments per group:
Inodes per group:
Inode blocks per group:
RAID stride:
Flex block group size:
Filesystem created: Thu Aug ::
Last mount time: Tue Jun ::
Last write time: Sun Apr ::
Mount count:
Maximum mount count: -
Last checked: Wed Jan ::
Check interval: (<none>)
Lifetime writes: GB
Reserved blocks uid: (user root)
Reserved blocks gid: (group root)
First inode:
Inode size:
Required extra isize:
Desired extra isize:
Journal inode:
Default directory hash: half_md4
Directory Hash Seed: d5c54a86-d535-4c9b-9dea-e1b8e8088761
Journal backup: inode blocks
Directories:
Group : block bitmap at , inode bitmap at , inode table at
free blocks, free inodes, used directories, unused inodes
使用blktrace统计磁盘块I/O访问频率 + IO调度CFQ的更多相关文章
- Linux,du、df统计磁盘情况不一致
转载:http://blog.linezing.com/?p=2136 在运维Linux服务器时,会碰到需要查看硬盘空间的情况,这时候,通常会使用df -lh命令来检查每个挂载了文件系统的硬盘的总量和 ...
- df 和du 命令统计磁盘空间不准确
Linux & Unix 中 df 和 du 命令统计磁盘空间数值不一致 经常会使用 df 和 du 分别查看磁盘空闲空间和占用空间,偶尔会发现 df(空闲空间) 会小于磁盘大小减去 du(占 ...
- 性能调优之访问日志IO性能优化
性能调优之访问日志IO性能优化 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821 ...
- IO调度 | Linux块设备中的IO路径及调度策略
当文件系统通过submit_bio提交IO之后,请求就进入了通用块层.通用块层会对IO进行一些预处理的动作,其目的是为了保证请求能够更加合理的发送到底层的磁盘设备,尽量保证性能最佳.这里面比较重要的就 ...
- web系统访问频率限制
无论是spring mvc还是struts,都可以为controller或者aciton执行前,增加拦截器. 通过拦截器中的逻辑控制,可以实现访问频率的限制. 首先构造访问频率数据类 class Fr ...
- C# 站点IP访问频率限制 针对单个站点
0x00 前言 写网站的时候,或多或少会遇到,登录,注册等操作,有时候,为了防止别人批量进行操作,不得不做出一些限制IP的操作(当前也可以用于限制某个账号的密码校验等). 这样的简单限制,我们又不想对 ...
- FW docker使用问题总结,解决国内不能访问gcr.io的问题
docker使用问题总结 解决国内不能访问gcr.io的问题 国内可以通过https://dashboard.daocloud.io来下载. 比如?gcr.io/google_containers/p ...
- nginx lua redis 访问频率限制(转)
1. 需求分析 Nginx来处理访问控制的方法有多种,实现的效果也有多种,访问IP段,访问内容限制,访问频率限制等. 用Nginx+Lua+Redis来做访问限制主要是考虑到高并发环境下快速访问控制的 ...
- Redis应用之[限制访问频率]
我们知道当网站的访问量突然很大的时候肯定会对服务器造成影响,甚至无法访问,如果是正常的访问那么很好说明业务量增大可以考虑系统的扩展,但是如果是搜索引擎爬虫频繁访问或是一些恶意访问,那这时候我们就应 ...
随机推荐
- 【python】python支持中文变量,醉了
哈哈 = 1 呜呜 = -1 哈哈 + 呜呜 = 0
- QML之TextEdit
TextEdit显示一个可编辑的,有格式的文本框.它也可以显示明文和富文本.例如:TextEdit { width: 240 text: "<b>Hello</ ...
- 无Xaml的WPF展示
我们创建一个wpf应用程序,我们把里面的xaml文件全部删除,添加一个新类: 如下图: 然后我们cs文件中的代码: using System; using System.Collections.Gen ...
- 简单学C——第四天
数组 在学数组之前,有必要把前面的知识复习一遍,当然我的复习,仅仅只是提一下,而对于你,则应该认真的看一下前面的知识点,不懂可以百度,哈哈. 前面我们大致学了 1.定义变量,2.数据的输入与输出,3. ...
- 2016 Multi-University Training Contest 2 第一题Acperience
Acperience Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Probl ...
- Sublime text 3 快键方式汇总 及 主题应用
Sublime Text 3 快捷键汇总 Sublime Text 3是款非常实用代码编辑神器,但是想要用任何一款软件,掌握一些快捷键还是很有必要的. 选择类 Ctrl+D 选中光标所占的文本,继续操 ...
- CALayer 为什么选择 cg 开头 而 不选择 UI 开头
CALayer 的属性 为什么选择 cg 开头 而 不选择 UI 开头 , 也就是说 为啥要选择 比如 .CGColor 等
- iOS版 hello,world版本2
// // main.m // Hello // // Created by lishujun on 14-8-28. // Copyright (c) 2014年 lishujun. All rig ...
- matlab常用小函数(二)
numel 元素个数 assert 表达式为假时输出某个字符串 int2str 整形转化为字符串型 numel(A) 返回A中的元素个数,A可以是任何的数据结构,如向量.矩阵.元胞.结构体等 asse ...
- C++结构简介
结构是一种比数组更灵活的数据格式,因为同一个结构可以储存多种类型的数据,这使得能够将篮球运动员的信息放在一个结构中,从而将数据的表示的合并到一起. 结构也是C++堡垒OOP(类)的基石.结构是用户定义 ...