[转帖]linux性能优化笔记之CPU篇

linux,性能,优化,笔记,cpu · 浏览次数 : 0

小编点评

**mpstat** * 查看 CPU 使用率的变化情况 * 使用 `mpstat -P ALL 5` 命令可以查看 CPU 使用率随时间的变化。 **pidstat** * 查看具体进程的 CPU 使用率 * 使用 `pidstat -u 5 1` 命令可以查看 1 秒内进程 IO 和 CPU 使用率。 **perf** * 使用 `perf record -g -p < pid>` 命令可以监控指定进程的 CPU 使用率。 * 使用 `perf report` 命令可以生成性能报告,包括 CPU 使用率。 **vmstat** * 使用 `vmstat 1` 命令可以分析 CPU 使用率的上下文切换情况。 * 使用 `vmstat 12# in中断` 可以分析 CPU 使用率的上下文切换情况在中断情况下。 **其他工具** * `top` 命令可以显示 CPU 使用率和其他性能指标。 * `perl系工具` 可以追查引起性能问题的函数。 * `sudo perf top -g -p 30377` 命令可以获取平均负载。

正文

http://blog.trumandu.top/2019/03/02/linux%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E7%AC%94%E8%AE%B0%E4%B9%8BCPU%E7%AF%87/

 

cpu优化用到的命令

  • mpstat
    进程相关统计工具,cpu/io可以同时对比
  • vmstat
    内存分析工具
  • pidstat
    进程分析工具
  • perf 使用perf record -g -p < pid>和perf report就足够了

CPU篇

根据指标找工具

image

根据工具查指标

image

指标工具关联

image

相关命令

查看cpu核数:

1
$ grep 'model name' /proc/cpuinfo | wc -l
 

mpstat 查看 CPU 使用率的变化情况

1
2
# -P ALL 表示监控所有 CPU,后面数字 5 表示间隔 5 秒后输出一组数据
$ mpstat -P ALL 5
 

pidstat查看具体进程cpu使用率

1
2
3
4
5
6
7
8
# 间隔 5 秒后输出一组数据

$ pidstat -u 5 1
# 查看进程IO读写情况
$ pidstat -d
# w可以查看上下文切换情况(进程) cswch/s 自愿切换(资源不够) nvcswch/s被动切换(时间片到期等中断)
# wt是可以查看到线程
$ pidstat -wt 5
 

vmstat内存分析工具,可以分析上下文切换情况

1
2
# in中断 sc上下文切换
$ vmstat 1
 

perl系能分析工具,可以追查引起性能问题的函数

1
$ sudo perf top -g -p 30377
 

名词解释

  1. 平均负载

    简单来说,平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。可运行状态顾名思义只得是正在运行的任务,不可中断状态例如等待cpu,等待IO。

  2. cpu上下文

    CPU寄存器和程序计数器为任务运行必备依赖环境,即为cpu上下文

cpu上下文切换包含哪些?
(1)进程上下文切换(2)线程上下文切换(3)中断上下文切换

知识点

  1. cpu使用率和平均负载一致吗?

不一定,当平均负载高的时候,任务主要是等待IO型,IO密集型任务,CPU使用率就不一定高。

注意

  1. pidstat中缺少%wait

centos中版本较低是,安装新版本即有
2. pidstat中%wait与top wa区别

pidstat 中, %wait 表示进程等待 CPU 的时间百分。

top 中 ,iowait%(简写wa) 则表示等待 I/O 的 CPU 时间百分。

与[转帖]linux性能优化笔记之CPU篇相似的内容:

[转帖]linux性能优化笔记之CPU篇

http://blog.trumandu.top/2019/03/02/linux%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E7%AC%94%E8%AE%B0%E4%B9%8BCPU%E7%AF%87/ cpu优化用到的命令 mpstat进程相关统计工具,cpu/io

[转帖]《Linux性能优化实战》笔记(三)—— CPU 上下文切换(下)

上篇介绍了三种CPU 上下文切换以及它们可能造成的问题和原因,这一篇来看看在系统中如何发现CPU 上下文切换问题。 一、 查看上下文切换情况 主要使用两个命令:vmstat以及之前用过的pidstat。 1. vmstat # 每隔5秒输出1组数据vmstat 5 procs memory swap

[转帖]《Linux性能优化实战》笔记(七)—— CPU瓶颈快速分析及性能优化思路

相当于是前面篇章的小结 一、 CPU 性能指标 常见指标包括: 平均负载CPU 使用率(user、iowait、system、软硬中断等)进程上下文切换(自愿、非自愿)CPU 缓存的命中率 CPU 的处理速度就比内存的访问速度快得多。这样,CPU 在访问内存的时候,免不了要等待内存的响应。为了协调这

[转帖]《Linux性能优化实战》笔记(二)—— CPU 上下文切换(上)

上一篇的最后一个例子,在多个进程竞争CPU时,我们看到每个进程实际上%usr部分只有20%多,70%多是在wait,但是load远远高于单个进程使用CPU达到100%。 这让我想到之前看的RWP公开课,里面有一篇连接池管理。为什么相同的业务量,起6千个连接(进程)远远要慢于200个连接,因为绝大多数

[转帖]《Linux性能优化实战》笔记(四)—— CPU 使用率

一、 节拍率与CPU时间 前一篇说到,Linux 作为一个多任务操作系统,将每个 CPU 的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉。 为了维护 CPU 时间,Linux 通过事先定义的节拍率(内核中表示为 HZ),触发时间中断,并使用全局变量 Jif

[转帖]《Linux性能优化实战》笔记(23)—— 内核线程 CPU 利用率过高,perf 与 火焰图

在排查网络问题时,我们还经常碰到的一个问题,就是内核线程的 CPU 使用率很高。比如,在高并发的场景中,内核线程 ksoftirqd 的 CPU 使用率通常就会比较高。回顾一下前面学过的 CPU 和网络模块,你应该知道,这是网络收发的软中断导致的。 要分析 ksoftirqd 这类 CPU 使用率比

[转帖]《Linux性能优化实战》笔记(五)—— 不可中断进程与僵尸进程

一、 进程状态 1. 状态含义 从 ps或者 top 命令的输出中,可以看到处于不同状态的进程 R:Running 或 Runnable,表示进程在 CPU 的就绪队列中,正在运行或者正在等待运行D:Disk Sleep,不可中断状态睡眠(Uninterruptible Sleep)S:Interr

[转帖]Linux性能调优之内存负载调优的一些笔记

https://zhuanlan.zhihu.com/p/548770928 写在前面 整理一些Linux内存调优的笔记,分享给小伙伴 博文没有涉及的Demo,理论方法偏多,可以用作内存调优入门 博文内容涉及: Linux内存管理的基本理论 寻找内存泄露的进程 内存交换空间调优 不同方式的内存回收

[转帖]《Linux性能优化实战》笔记(一)—— 平均负载

最近在看极客时间的《Linux性能优化实战》课程,记录下学习内容。 一、 平均负载(Load Average) 1. 概念 我们都知道uptime命令的最后三列分别是过去 1 分钟、5 分钟、15 分钟系统的平均负载,到底平均负载是什么? 简单来说,平均负载是指单位时间内,系统处于可运行状态和不可中

[转帖]《Linux性能优化实战》笔记(八)—— 内存是怎么工作的

一、 内存映射 我们通常所说的内存容量,指的是物理内存。物理内存也称为主存,大多数计算机用的主存都是动态随机访问内存(DRAM)。只有内核才可以直接访问物理内存。那么,进程要访问内存时,该怎么办呢? Linux 内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。这样,进程就可以