当前位置: 首页 > news >正文

平台网站建设公司福州网站优化公司

平台网站建设公司,福州网站优化公司,延庆住房和城乡建设委员会网站,java高性能网站开发一、systemtap介绍 SystemTap是一个强大的调试工具,是监控和跟踪运行中的Linux 内核的操作的动态方法,确切的说应该是一门调试语言,因为它有自己的语法,也有解析、编译、运行等过程(准确的说有五个阶段)&am…

一、systemtap介绍

  SystemTap是一个强大的调试工具,是监控和跟踪运行中的Linux 内核的操作的动态方法,确切的说应该是一门调试语言,因为它有自己的语法,也有解析、编译、运行等过程(准确的说有五个阶段),但它主要解决的问题是收集Linux内核或者用户进程的信息,主要目的是调试。gdb、kgdb同是linux最强大的调试器,gdb和SystemTap不是竞争关系,而是互补关系,gdb能做的事情SystemTap做不到,比如断点/watch变量等等这些SystemTap都做不到,而SystemTap能做的事情gdb做不到或者非常麻烦才做到,比如很方便查看内核调试栈/嵌入C语言等等gdb就很难。

 

二、systemtap安装

1.安装步骤:

  1.1 yum install systemtap

  1.2 yum install kernel-devel  kernel-headers gcc elfutils

     1.3 通过 http://debuginfo.centos.org/6/x86_64/  

        下载kernel-debuginfo 以及kernel-debuginfo-common,要下载对应内核版本的(错误版本会提示semantic error: no match等报错);

         例如测试机器下载:

        

       

        

  执行rpm安装(先安装依赖包common):

  rpm -ivh kernel-debuginfo-common-x86_64-2.6.32-279.el6.x86_64.rpm

  rpm -ivh kernel-debuginfo-2.6.32-279.el6.x86_64.rpm

  1.4  执行 stap-prep进行stap环境检查,如没有报错,表示stap可以正常使用。

  1.5 测试脚本执行查看是否成功(检查正在添加系统中的page_cache信息):

  stap -e 'probe vfs.add_to_page_cache {printf("dev=%x, devname=%s, ino=%d, index=%d, nrpages=%d\n", dev, devname, ino, index, nrpages)}'

 

三、实战应用及常用工具瓶颈

  1.故障处理中遇到的困境:

  1.1 iostat等命令看到的是系统级的统计,比如下例中我们看到/dev/vdb很忙,如果要追查是哪个进程导致的I/O繁忙,应该怎么办?

              

  进程的内核数据结构中包含了I/O数量的统计:

  struct task_struct {

        struct task_io_accounting ioac;
    };
可以直接在 /proc/<pid>/io 中看到:
         
  # cat /proc/3088/io
   rchar: 125119 //在read(),pread(),readv(),sendfile等系统调用中读取的字节数
   wchar: 632    //在write(),pwrite(),writev(),sendfile等系统调用中写入的字节数
   syscr: 111    //调用read(),pread(),readv(),sendfile等系统调用的次数
   syscw: 79     //调用write(),pwrite(),writev(),sendfile等系统调用的次数
   read_bytes: 425984 //进程读取的物理I/O字节数,包括mmap pagein,在submit_bio()中统计的
   write_bytes: 0     //进程写出的物理I/O字节数,包括mmap pageout,在submit_bio()中统计的
   cancelled_write_bytes: 0 //如果进程截短了cache中的文件,事实上就减少了原本要发生的写I/O
  我们关心的是实际发生的物理I/O,从上面的注释可知,应该关注 read_bytes 和 write_bytes。请注意这都是历史累计值,从进程开始执行之初就一直累加。如果要 观察动态变化情况,可以使用 pidstat 命令,它就是利用了/proc/<pid>/io 中的原始数据计算单位时间内的增量:
  

  另外还有一个常用的命令 iotop 也可以观察进程的动态I/O:

             pidstat 和 iotop 也有不足之处,它们无法具体到某个硬盘设备,如果系统中有很多硬盘设备,都在忙,而我们只想看某一个特定的硬盘的I/O来自哪些进程,这两个命令就帮不上忙了。怎么办呢?

       

  2.SystemTap查找方法:

  可以用上万能SystemTap工具。比如:我们希望找出访问/dev/vdb的进程,可以用下列脚本,它的原理是对submit_bio下探针:

           [root@template ~]# cat io_vdb.stap
   #! /usr/bin/env stap
 
   global device_of_interest

           probe begin {
      device_of_interest = $1
      printf ("device of interest: %x\n", device_of_interest)
    }
 
   probe kernel.function("submit_bio")
   {
      dev = $bio->bi_bdev->bd_dev
      if (dev == device_of_interest)
          printf ("[%s](%d) dev:0x%x rw:%d size:%d\n",
                  execname(), pid(), dev, $rw, $bio->bi_size)
   }

  这个脚本需要在命令行参数中指定需要监控的硬盘设备号,得到这个设备号(fc,10)的方法如下:

       十六进制: (fc,10)---->(主设备号Major number(12-bit),次设备号Minor number(20-bit))  需要转换为10进制作为io_vdb.stap的入参数($1)

       十进制:(252,10)

  

  stat /dev/vdb:

       

  cat /proc/devices:

        

 

 

  3.SystemTap 查证结果:

  3.1 查看某个分区或目录io访问情况:

  脚本执行命令:./io_vdb 264241171

  (264241171为 fc00013的十进制表示,因为 fc00010为/dev/vdb,我们的测试目录为/dev/vdb3,所以对应的次设备号变为13(fc,13)

       

            执行grep命令进行验证io实际执行情况:

         执行前:

       

 

  执行后:

  通过结果,我们看到是进程号为8446的grep命令在对/dev/vdb3进行读操作(rw:0)。

         

               

   Enjoyjing youeself!

 

参考文章:

  http://linuxperf.com/?cat=4

  http://www.xbwolf.com/507

  http://blog.csdn.net/wangzuxi/article/details/42849053

          

          

 

转载于:https://www.cnblogs.com/Jeb15/p/7120568.html

http://www.lbrq.cn/news/2405575.html

相关文章:

  • 网络私人定制网站宣传推广
  • 汉狮做网站公司郑州网页制作图片
  • dede学校网站免费源码安卓优化清理大师
  • 做网站的网页设计用cdr吗公司域名注册查询
  • 天津企业网站专业订制搭建网站多少钱
  • 做网购内部优惠券网站百度收录网站入口
  • 用什么软件做网站前端seo顾问是干什么
  • 西安企业网站seo网络推广方式有哪些
  • 国内网站空间免费发布信息网平台
  • 建筑公司企业标语百度seo分析工具
  • 西安设计工作室推荐seo营销方案
  • 有人说做网站赌厦门网
  • 政务门户网站建设方案网站制作河南
  • 网站建设的大概费用站长工具大全集
  • 人工智能写作网站seo优化信
  • 策划书的网站个人怎么注册自己的网站
  • 郑州本地seo顾问搜索排名优化软件
  • 计算机网站建设与管理是什么我想找一个营销团队
  • 网站图片链接怎么做的网站建站模板
  • 网站快照是什么外贸推广平台排名
  • 福州网站怎么做单页网站怎么优化
  • 河北网站开发地推拉新app推广平台有哪些
  • 价格划算的做网站seo推广一个月见效
  • 南宁网站建设 超博网络网络营销网站有哪些
  • 新余做网站公司seo教程技术整站优化
  • 建网站做点什么好南京百度seo
  • 网站开发进度安排文档杭州网站优化搜索
  • 网站建设背景图片站长工具免费
  • B2B网站建设哪家好?怎么创建公司网站
  • 徐州 商城网站设计seo推广软件怎样
  • 【Go语言-Day 22】解耦与多态的基石:深入理解 Go 接口 (Interface) 的核心概念
  • 前端静态资源免费cdn服务推荐
  • 【LeetCode 热题 100】236. 二叉树的最近公共祖先——DFS
  • `tidyverse` 中涉及的函数及其用法
  • 第一章: 初识 Redis:背后的特性和典型应用场景
  • 多线程 示例