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. Spring 初学 1

    Spring是一个轻量级的框架,他有自己的MVC框架SpringMVC,在以往的Web项目中大多采用Structs2+hibernate+Spring的框架,Structs做web层,Hibernat ...

  2. Quartz1.8.5例子(三)

    /* * Copyright 2005 - 2009 Terracotta, Inc. * * Licensed under the Apache License, Version 2.0 (the ...

  3. iOS:导航栏的工具条和导航条

    功能:用NAV视图控制器打开新的视图,默认工具条和导航条隐藏,双击显示之 // // main.m // Hello // // Created by lishujun on 14-8-28. // ...

  4. 共享式以太网与交换式以太网的性能比较(OPNET网络仿真实验)

      一.实验目的 比较共享式以太网和交换式以太网在不同网络规模下的性能. 二.实验方法 使用opnet来创建和模拟网络拓扑,并运行分析其性能. 三.实验内容 3.1   实验设置(网络拓扑.参数设置. ...

  5. Nginx配置免费SSL证书StartSSL,解决Firefox不信任问题

    先在StartSSL上申请免费一年的SSL证书,具体过程网上很多教程.然后把申请到的key和crt文件上传到服务器,比如/usr/local/nginx/certs/. Nginx配置SSL证书 直接 ...

  6. BZOJ 3083 遥远的国度 树链剖分

    3083: 遥远的国度 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 797  Solved: 181[Submit][Status] Descrip ...

  7. 安卓天天练练(三)常用组件Toast

    要写几句java package com.narumi.android_7_2; import android.app.Activity; import android.os.Bundle; impo ...

  8. vim配置vimrc详解(转)

    vimrc的存放位置: 系统 vimrc 文件: "$VIM/vimrc" 用户 vimrc 文件: "$HOME/.vimrc" 用户 exrc 文件: &q ...

  9. lua中求table长度

    关于lua table介绍,看以前的文章http://www.cnblogs.com/youxin/p/3672467.html. 官方文档是这么描述#的: 取长度操作符写作一元操作 #. 字符串的长 ...

  10. 《深度探索c++对象模型》chapter1关于对象对象模型

    在c++中,有2种class data member:static和nostatic,以及3钟class member function:static,nostatic和virtual.已知下面这个c ...