zoukankan      html  css  js  c++  java
  • Linux性能分析方法

    CPU

    1.先用top确定系统整体情况

    • 系统CPU【sys】
    • 用户CPU【us】
    • 僵尸进程【zombie】
    • 硬中断【hi】
    • 平均负载【load average】
    • 等待IO CPU【wa】
    • 软中断【si】 查看 /proc/softirqs,【NET_RX】高,通过sar -n定位,【NET_TX】高,通过tcpdump定位

    2.用vmstat(虚拟内存统计)进一步细化指标,并查看趋势

    • 系统CPU sys指标偏高,查看上下文切换次数【cs】
    • 硬中断hi偏高,查看中断次数【in】,细看/proc/interrupts
    • 平均负载高,查看运行状态进程数【r】,不可中断进程数【b】=>通过IO分析工具进一步定位[dstat] [sar -d]

    3.定位到进程pidstat

    • 上下文切换较多,需要看自愿上下文切换【cswch】和非自愿上下文切换【nvcswch】
    • 查看具体进程是用户CPU【usr】高,还是系统CPU【system】高

    4.定位到具体代码strace和perf

    • strace 用于系统CPU高,排查内核线程或者系统调用
    • perf 用于用户CPU高,排查进程性能问题,实时显示占用CPU最多的函数,可以排查CPU占用100%的问题
    • CPU使用率高但是占不到CPU高的应用=>execsnoop(监控短时进程)

    内存

    1. 先用free 确定系统整体内存情况
    • 系统已用内存【used】
    • 系统空闲内存【free】
    • 系统内存总数【total】
    • 缓存/缓冲区【cache/buffer】
    • swap已用空间【swap used】
    • swap剩余空间【swap free】
    1. 用vmware/sar打印每秒趋势
      vmware
    • 系统剩余内存【free】
    • 缓冲区【buff】
    • 缓存【cache】
    • 虚拟内存大小【swpd】,如果swpd不为0,SI SO为0对性能没影响
    • 磁盘换入内存SI
    • 内存换入磁盘SO
    1. 确认内存问题
    • 内存分配分析
    memleak
    strace
    valgrind
    slabtop
    /proc/buddyinfo
    
    • 进程内存分析
    pidstat/top(内存使用率 虚拟内存 常驻内存 缺页异常)
    pmap
    /proc/pid/status
    /proc/pid/smaps
    
    • 缓存 缓冲区分析
    cachetop
    slabtop
    cachestat
    pcstat
    

    IO

    1. 先确认整体IO情况
    iostat -d -x 1
    
    • I/O使用率【%util】
    • IOPS【r/s w/s】
    • 吞吐量【rkb/s wkb/s】
    • 响应时间【svctm】
    1. 确认IO瓶颈
    pidstat -d 1
    
    • 进程IO读【kB_rd/s】
    • 进程IO写【kB_wr/s】
    • 进程IO延迟【iodelay】
    vmstat 2 5
    
    • iowait%【wa】
    • cache【cache】
    • buffer【buff】
    • swap换入【si】
    • swap换出【so】
    1. 确认IO来源
    • 内核线程(文件系统和磁盘分析)
    df/du
    perf
    blktrace
    biosnoop
    biotop
    
    • 普通进程(进程IO分析)
    strace
    lsof
    
    • 内存问题,包括缓存(内存分析)
    /proc/meminfo
    /proc/slabinfo
    pcstat
    slabtop
    cachetop
    cachestat
    
    • 来源:《Linux操作系统知识地图》
  • 相关阅读:
    移动端前端开发调试
    Safari 前端开发调试 iOS 完美解决方案
    IOS下移除按钮原生样式 -webkit-appearance
    修复iPhone的safari浏览器上submit按钮圆角bug
    解决 placeholder 垂直不居中,偏上的问题
    如何使用JavaScript和正则表达式进行数据验证
    关于VSS(Volume Shadow Copy Service)一
    centOS目录结构
    如何解决windows 80端口被占用的情况
    linux系统TCP协议之Send(转)
  • 原文地址:https://www.cnblogs.com/jaychan/p/14274363.html
Copyright © 2011-2022 走看看