• 记录一下 性能分析问题


    问题: 系统的内核负载偏高

     可以看到 user 以及si hi 也就是 用户态 软中断  硬件中断很低,只是 sy 偏高。

    同时cpu 负载1-5-15分钟为:8.77    9.15  9.55  

    首先面对cpu 高问题我们有什么工具 需要查看什么指标:https://www.cnblogs.com/codestack/p/12570863.html  请参考这篇文档

    平均负载

    uptimetop

    uptime 简单展示最近一段时间的平均负载top 展示更多指标

    CPU 使用率

    vmstat mpstat top sar /proc/stat

    top、vmstat、mpstat 只可以动态查看当前,而 sar 可以查看历史/proc/stat 是其他性能工具的数据来源

    进程 CPU 使用率

    top pidstatps htop atop

    top、ps 可以以排序方式展示进程 CPU、pidstat 不可排序展示htop、atop 则以不同颜色展示各类数据更直观

    系统上下文切换

    vmstat

    展示上下文切换此时、运行状态、不可中断状态进程数量

    进程上下文切换

    pidstat

    展示项很多,包括进程上下文切换信息

    软中断

    top /proc/softirqsmpstat

    top 可查看软中断 CPU 使用率/proc/softirqs 和 mpstat 则可以查看每个 CPU 上的累计信息

    硬中断

    vmstat/proc/interrupts

    vmstat 查看总中断次数信息/proc/interrupts 查看各种中断在每个 CPU 核心上的累计信息

     可以看到 进程上下文切换和平时一样。中断也是还行

    此时就猜测 系统调用了;使用perf 工具查看:

    perf record -g -a sleep 10

     可知  很多是 ethtool 问题导致。

    通过 while  true; do ps -elf  ; sleep 0.5; done 

    可以找出 调用ethtool 的父进程。。。

    一般来说:

     系统CPU => vmstat 上下文切换次数 => pidstat 非自愿上下文切换次数 => 各类进程分析工具(perf strace ps execsnoop pstack)
     用户CPU => pidstat 用户CPU => 一般是CPU计算型任务
    僵尸进程 =>  各类进程分析工具(perf strace ps execsnoop pstack)
     平均负载 => vmstat 运行状态进程数 =>  pidstat 用户CPU => 各类进程分析工具(perf strace ps execsnoop pstack)
     等待IO CPU => vmstat 不可中断状态进程数  => IO分析工具(dstat、sar -d)
    硬中断 => vmstat 中断次数 => 查看具体中断类型(/proc/interrupts)
    软中断 => 查看具体中断类型(/proc/softirqs) => 网络分析工具(sar -n、tcpdump) 或者 SCHED(pidstat 非自愿上下文切换)

    问题二:

    top 结果:

     sy si 都高:

    vmstat 的结果是:

     对user 高的用户进程 经行strace

    strace -c -f -p  xxx

     结果发现 select 有点高。 很奇怪 怎么select 和epoll 一起用

    perf top  结果:

    万恶的大锁

  • 相关阅读:
    vs中无法找到头文件
    c++ vector 用法
    c++ queue 用法
    c++ 中 毫秒级时间获取
    vs2013 boost signals
    vs2013环境下boost配置
    C++ static 用法
    fopen()和fclose()
    删除字符串尾的回车符
    WaitForSingleObject()
  • 原文地址:https://www.cnblogs.com/codestack/p/13579448.html
Copyright © 2020-2023  润新知