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
  1. [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

  2. ----------------

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的更多相关文章

  1. Linux,du、df统计磁盘情况不一致

    转载:http://blog.linezing.com/?p=2136 在运维Linux服务器时,会碰到需要查看硬盘空间的情况,这时候,通常会使用df -lh命令来检查每个挂载了文件系统的硬盘的总量和 ...

  2. df 和du 命令统计磁盘空间不准确

    Linux & Unix 中 df 和 du 命令统计磁盘空间数值不一致 经常会使用 df 和 du 分别查看磁盘空闲空间和占用空间,偶尔会发现 df(空闲空间) 会小于磁盘大小减去 du(占 ...

  3. 性能调优之访问日志IO性能优化

    性能调优之访问日志IO性能优化   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821 ...

  4. IO调度 | Linux块设备中的IO路径及调度策略

    当文件系统通过submit_bio提交IO之后,请求就进入了通用块层.通用块层会对IO进行一些预处理的动作,其目的是为了保证请求能够更加合理的发送到底层的磁盘设备,尽量保证性能最佳.这里面比较重要的就 ...

  5. web系统访问频率限制

    无论是spring mvc还是struts,都可以为controller或者aciton执行前,增加拦截器. 通过拦截器中的逻辑控制,可以实现访问频率的限制. 首先构造访问频率数据类 class Fr ...

  6. C# 站点IP访问频率限制 针对单个站点

    0x00 前言 写网站的时候,或多或少会遇到,登录,注册等操作,有时候,为了防止别人批量进行操作,不得不做出一些限制IP的操作(当前也可以用于限制某个账号的密码校验等). 这样的简单限制,我们又不想对 ...

  7. FW docker使用问题总结,解决国内不能访问gcr.io的问题

    docker使用问题总结 解决国内不能访问gcr.io的问题 国内可以通过https://dashboard.daocloud.io来下载. 比如?gcr.io/google_containers/p ...

  8. nginx lua redis 访问频率限制(转)

    1. 需求分析 Nginx来处理访问控制的方法有多种,实现的效果也有多种,访问IP段,访问内容限制,访问频率限制等. 用Nginx+Lua+Redis来做访问限制主要是考虑到高并发环境下快速访问控制的 ...

  9. Redis应用之[限制访问频率]

      我们知道当网站的访问量突然很大的时候肯定会对服务器造成影响,甚至无法访问,如果是正常的访问那么很好说明业务量增大可以考虑系统的扩展,但是如果是搜索引擎爬虫频繁访问或是一些恶意访问,那这时候我们就应 ...

随机推荐

  1. Python中使用中文

    python的中文问题一直是困扰新手的头疼问题,这篇文章将给你详细地讲解一下这方面的知识.当然,几乎可以确定的是,在将来的版本中,python会彻底解决此问题,不用我们这么麻烦了. 先来看看pytho ...

  2. 通过Servlet的response绘制页面验证码

    java部分 package com.servlet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; ...

  3. smali 语法之if语句

    # virtual methods .method public onClick(Landroid/view/View;)V .locals 3 .parameter "v" .p ...

  4. RegularExpressionValidator 常用

    RegularExpressionValidator 控件用于验证输入值是否匹配正则表达式指定的模式 属性: ControlToValidate="要验证的控件名称" Valida ...

  5. 百度富文本编辑器ueditor使用总结

    最近做的项目用到了ueditor这个东东,但是他的一些配置文档对初次使用者来说很难以理解,故作此总结 相关详细操作链接地址: http://blog.csdn.net/wusuopubupt/arti ...

  6. jquery判断邮箱格式问题

    方法一: var search_str = /^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/; var email_val = $("#Email").val(); ...

  7. iReport中求和的问题

    数据库取出值TAX_AMT,但是不想在数据库里面计算,太麻烦,后面group by 字段太多.那就放到ireport里面去计算咯 在字段的如下位置进行计算吧.

  8. Android入门-Service-start,end,bind,unbind之间的区别

    写贴一段别人关于service中start与bind,end与unbind的分析了: Service创建有两种方法:  startService或者bindService 服务不能自己运行,需要通过调 ...

  9. 数学(概率):HNOI2013 游走

    [题目描述] 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这 ...

  10. HDU --- 4006

    The kth great number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Oth ...