linux性能分析工具、调试工具-浅析.pptVIP

  • 2
  • 0
  • 约3.09千字
  • 约 49页
  • 2018-07-06 发布于上海
  • 举报
Linux性能分析工具、调试工具 浅析;目 录 性能分析工具;目 录 调试工具;性能分析工具;Linux内存浅析-swap;Linux内存浅析-buffer和cache;free;性能分析工具;iostat;iostat;iostat;rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s 0.00 44.90 1.02 27.55 8.16 579.57 4.08 289.80 avgrq-sz avgqu-sz await svctm %util 20.57 22.35 78.21 5.00 14.29 1、平均每次设备I/O操作的等待时间 平均每次I/O 操作只需要 5ms 就可以完成(svctm),即1s可以处理200个请求 但这里只有28.57 次请求,每个 I/O 请求却需要等上 78ms(await),为什么? 因为同一时间发出的 I/O 请求太多 平均等待时间 = 单个 I/O 服务时间 * ( 1 + 2 + … + 请求总数-1) / 请求总数,应用到上面的例子: 平均等待时间 = 5ms * (1+2+…+28)/29 = 70ms,和 iostat 给出的78ms 很接近。 2、 平均I/O队列长度 一秒中有 14.29% 的时间 I/O 队列中是有请求的,所有 29 个 请求都在142毫秒之内处理掉 78.21*28.57 = 2232.8,表明每秒内的I/O请求总共需要等待2232.8ms。所以平均队列长度应为 2232.8ms/142ms =15.7,而且在142ms中有可能某一个时间段是请求更为集中的时间,这时候的队列长度又比15.7更高,所以iostat返回的22.35还是有道理的。 3、如果能看到每次操作的请求大小,就可以看到平均操作avgrq-sz个扇区是合并后的,一些I/O被合并以便更有效地像硬盘写入数据。 ;性能分析工具;lsof;lsof;readlink;性能分析工具;vmstat;vmstat; System – in: 每秒产生的中断次数 – cs: 每秒产生的上下文切换次数 上面这2个值越大,会看到由内核消耗的CPU时间会越多。 若值太大 1、 调低线程或者进程的数目 2、 看能否减少系统调用,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换(比如time) 上下文切换次数过多表示你的CPU大部分浪费在上下文切换;Cpu 都是百分比,相加为100% –us: 用户进程消耗的CPU时间百分比 该值较高说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进 行加速了 – sy: 内核进程消耗的CPU时间百分比 该值较高说明系统内??消耗的CPU资源多。如果太高,表示系统调用时间长,例如是IO操作频繁。 根据经验,us+sy的参考值为80%,如果us+sy大于 80%说明可能存在CPU资源不足。 – id: CPU处在空闲状态时间百分比 – wa: IO等待消耗的CPU时间百分比 该值较高(30%)说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。 b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比)可配合iostat使用 ;几个简单的例子: 1、程序中有一个死循环,不断地求平方根 procs中r增加,us上升; 2、大量的系统调用, cs增加(上下文切换),sy增加 3、大量的IO操作 dd if=/dev/zero of=/data/irenezhan/tmp/tmp_file bs=1K count=10000 bi和bo增大(bo骤然升高,因为dd不断向磁盘写数据) ;top;调试工具;file;作用: 获取二进制文件包含的符号信息 如果没有指出目标文件,则目标文件为a.out 输出: 其值(十六进制)、 类型、名字 ;c++filt;ldd;作用: 当ulimit -c 悲剧的等于0时,就可以用来查看代码core的源代码文件及行数。 当某个进程崩溃时,日志文件(/var/log/messages)中就会给出附加的信息,包括程序终止原因、

文档评论(0)

1亿VIP精品文档

相关文档