• cpu 性能分析基础


    1 理论基础

    1.1 cpu load 运行队列

    Linux进程,要么是可运行状态,要么是阻塞状态。可运行不一定是正在运行,可能是正在等待进程调度。阻塞可能是在等待IO设备数据,也可能是在等待系统调用返回。可运行进程的队列越长,处于等待状态的进程就越多。
    在一定的时间内,可运行进程个数的平均值,包括正在运行的进程,即平均负载,这个时间一般为1分钟、5分钟、15分钟。理想情况下,平均负载不超过CPU核心数的70%

    1.2 上下文切换

    单核CPU一次只能运行一个进程或线程,超线程除外,看上去多个任务在同时运行,其实是Linux内核在不同的进程间切换,公平地分配CPU时间片,这便是上下文切换。上下文切换,需要移动跟踪进程的大量信息,开销很大。内核调度,会周期性地中断正在运行的进程,切换其它进程,引起上下文切换。如果上下文切换明显多于定时器中断,那么可能是IO请求或长时间的系统调用造成的,在这种操作不能立即完成的情况下,为了提高CPU效率,内核也会调度进程,发生上下文切换。

    1.3 中断

    硬件设备有事件需要内核处理时,会触发中断,即硬中断。如果有相应的已注册的中断处理程序,就会处理这个中断,否则将忽略。中断处理程序运行时的优先级很高,速度也很快。如果不需要高优先级时,会启动下半部,交给软中断处理程序。

    1.4 cpu usage

    CPU状态,包括idle空闲状态、执行user用户代码的用户态、执行system系统代码的内核态、执行低优先级用户代码的友好用户态、iowait状态、irq硬中断状态、softirq软中断状态。
    CPU使用率即CPU各个状态占总时间的百分比,常用来作为衡量系统性能的一个指标。理想情况下,系统CPU使用率不超过70%。

    1.5 时间

    应用程序在运行时,消耗在系统调用即内核上的时间为系统时间,消耗在依赖库和程序代码上的时间为用户时间。
    分析CPU性能问题时,往往需要细化到主要是哪个函数或哪行代码在消耗CPU时间。

    2 工具

    2.1 proc

    通过/proc/cpuinfo文件可以查看cpu相关信息

    3 其他工具

    4 调优

  • 相关阅读:
    upload-labs靶场通关指南(5-8关)
    小程序-走迷宫
    2022年笔试知识总结展望(前后端均有)
    靶场练习——SDcms文件上传漏洞靶场
    聚力打造四个“高地”,携手合作伙伴共铸国云
    Linux :mysql数据库自动备份
    编程题练习@9-7
    POJ—1338-丑陋的数字
    Python | R | MATLAB群体消息和遗传病筛选多元统计模型
    Azure AD功能一览(访问篇)
  • 原文地址:https://blog.csdn.net/gangjindianzi/article/details/136422062