IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux CPU调优工具汇总 -> 正文阅读

[系统运维]Linux CPU调优工具汇总

Linux CPU调优工具汇总

top

得到系统实时资源使用状态,最近3s数据,可以排序
top -p:查看指定进程id的top信息,例如:
top -p 12793

top -H -p:查看指定进程id的所有线程的top信息
top -H -p 27376

strace

跟踪程序运行的情况

  1. 监控用户进程与内核进程的交互
  2. 追踪进程的系统调用、信号传递、状态变化
参数解释
-c统计每一系统调用的所执行的时间,次数和出错的次数等
-d输出strace关于标准错误的调试信息
-f跟踪由目标进程及调用所产生的子进程
-F尝试跟踪目标调用 在-f时,vfork不被跟踪
-a设置返回值的输出位置.默认 为40
-r打印出相对时间关于每一个系统调用
-t在每行输出的后面,显示调用花费时间
-tt在每行输出的前面,显示调用花费毫秒级别的时间
-T每次系统调用所花费的时间
-v对某些相关调用,把完整的环境变量、文件stat结构打印出来
-p pid指定要跟踪的进程pid,同时跟踪的多个pid,重复多次-p选项即可
-o filename: 将跟踪输出写入文件名
-s当系统调用的某个参数是字符串时,最多输出制定长度的内容,默认时32个字节
-e set仅跟踪某些系统调用
-e open,close仅跟踪打开/关闭系统调用
-e file仅跟踪文件系统调用/文件操作相关的
-e process跟踪所有涉及流程管理的系统调用
-e network跟踪所有与网络相关的系统调用
-e signal跟踪所有与信号相关的系统调用
-e ipc跟踪所有与ipc相关的系统调用
-e desc跟踪所有与文件描述符相关的系统调用
-e memory跟踪所有与内存映射相关的系统调用
-e set仅跟踪指定的信号子集

pstree

将所有进程以树状图显示,树状图将会以 pid (如果有指定) 或是以 init 这个基本进程为根 (root),如果有指定使用者 id,则树状图会只显示该使用者所拥有的进程。

参数解释
-a显示启动每个进程对应的完整指令,包括启动进程的路径、参数等。
-c不使用精简法显示进程信息,即显示的进程中包含子进程和父进程。
-n根据进程 PID 号来排序输出,默认是以程序名排序输出的。
-p显示进程的 PID。
-u显示进程对应的用户名称。

ps

进程在整个生命周期的数据信息, 展示当前进程的信息,以列表呈现

参数解释
a显示所有进程
-a显示同一终端下的所有程序
-A显示所有进程
c显示进程的真实名称
-N反向选择
-e等于“-A”
e显示环境变量
f显示程序间的关系
-H显示树状结构
r显示当前终端的进程
T显示当前终端的所有程序
u指定用户的所有进程
-au显示较详细的资讯
-aux显示所有包含其他使用者的行程
-C<命令>列出指定命令的状况
–lines<行数>每页显示的行数
–width<字符数>每页显示的字符数
–help显示帮助信息
–version显示版本显示

mpstat

mpstat的全称为Multiprocessor Statistics,是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标
mpstat [-P {|ALL}] [internal [count]]

参数解释
-P{ALL}
internal相邻的两次采样的间隔时间
count采样的次数,count只能和delay一起使用

各字段含义

参数解释
centered 文本居中right-aligned 文本居右
%usr在internal时间段里,用户态占用CPU的时间(%),不包含nice值为负的进程
%nice在internal时间段里,nice值为负的进程占用CPU的时间(%)
%sys在internal时间段里,内核态占用CPU的时间(%)
%iowait在internal时间段里,等待IO占用CPU的时间(%)
%irq在internal时间段里,硬中断占用CPU的时间(%)
%soft在internal时间段里,软中断占用CPU的时间(%)
%guestCPU处理虚拟进程花费的时间开销
%idle在internal时间段里,空闲CPU的时间(%)

vmstat

vmstat主要是用来检测虚拟内存的,可以展现给定时间间隔的服务器的状态值,包括CPU使用率,内存使用率,虚拟内存交换情况,IO读写情况等。一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数

参数解释
-a显示活跃和非活跃内存
-f显示从系统启动至今的fork数量
-m显示slabinfo
-s显示内存相关统计信息及多种系统活动数量
-d显示磁盘相关的统计信息
-S使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(Byte),默认单位为K(1024 Bytes)
delay刷新时间间隔,如果不指定,只显示一条结果
count刷新次数,如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷

解决CPU瓶颈的办法如下:

  1. 增加CPU个数或核数(推荐)
  2. 调整任务的执行时间,如把大任务放到系统不繁忙的时候进行,进而平衡系统的任务。
  3. 调整已有任务的优先级

通过vmstat识别CPU满负荷:

首先需要声明一点的是,vmstat中CPU的度量是百分比的。当us+sy的值接近100的时候,表示CPU正在接近满负荷工作。但要注意的是,CPU满负荷工作并不能说明什么,Linux总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化。唯一能够确定CPU瓶颈的还是r(运行队列)的值。

通过vmstat识别内存瓶颈:

当内存的需求大于实际的物理内存时,服务器就会启动虚拟内存机制,通过虚拟内存,可以将内存段移到SWAP DISK的特殊磁盘段上,这样就会出现虚拟内存的页导入和页导出现象。页导出并不能说明出现了内存瓶颈,虚拟内存系统经常会对内存段进行页导出,但是页导入操作就表明服务器需要更多的内存了, 页导入需要从SWAP DISK上将内存段复制回内存,导致服务器速度变慢。

解决内存瓶颈的办法如下:

  1. 最简单的,增加内存(推荐)
  2. 改小SGA,使得对内存的需求减少
  3. 改小PGA,使得对内存的需求减少

小结:

mpstat和vmstat命令的差别:mpstat可以显示每个CPU的统计信息,而vmstat只显示所有CPU的统计信息。因此,编写糟糕的应用程序(不使用多线程体系结构)可能会运行在一个多处理器机器上,而不使用所有处理器。从而导致一个 CPU 过载,而其他 CPU 却很空闲。通过 mpstat 可以轻松诊断这些类型的问题
vmstat中所有关于CPU的总结都适合mpstat。当您看到较低的 %idle 数字时,就知道出现了 CPU 不足的问题。当您看到较高的 %iowait 数字时,就知道在当前负载下等待IO严重

sar

可以全面地获取系统的 CPU、运行队列、磁盘读写(I/O)、分区(交换区)、内存、CPU 中断和网络等性能数据。

sar [options] [-o filename] interval [count]

-o filename:其中,filename 为文件名,此选项表示将命令结果以二进制格式存放在文件中;
interval:表示采样间隔时间,该参数必须手动设置;
count:表示采样次数,是可选参数,其默认值为 1;
options:

参数解释
-A显示系统所有资源设备(CPU、内存、磁盘)的运行状况。
-u显示系统所有 CPU 在采样时间内的负载状态。
-P显示当前系统中指定 CPU 的使用情况。
-d显示系统所有硬盘设备在采样时间内的使用状态。
-r显示系统内存在采样时间内的使用情况。
-b显示缓冲区在采样时间内的使用情况。
-v显示 inode 节点、文件和其他内核表的统计信息。
-n显示网络运行状态,此选项后可跟 DEV(显示网络接口信息)、EDEV(显示网络错误的统计数据)、SOCK(显示套接字信息)和 FULL(等同于使用 DEV、EDEV和SOCK)等,有关更多的选项,可通过执行 man sar 命令查看。
-q显示运行列表中的进程数、进程大小、系统平均负载等。
-R显示进程在采样时的活动情况。
-y显示终端设备在采样时间的活动情况。
-w显示系统交换活动在采样时间内的状态。

pidstat

pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程

pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]
参数解释
-u默认的参数,显示各个进程的cpu使用统计
-r显示各个进程的内存使用统计
-d显示各个进程的IO使用情况
-p指定进程号
-w显示每个进程的上下文切换情况
-t显示选择任务的线程的统计信息外的额外信息
-V版本号
-h在一行上显示了所有活动,这样其他程序可以容易解析。
-I在SMP环境,表示任务的CPU使用率/内核数量
-l显示命令名和所有参数

注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。

perf

用来进行软件性能分析的工具,可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计,用来分析内核和应用程序的性能。

taskset

用于设置进程(或 线程)的处理器亲和性(Processor Affinity),可以将进程(或 线程)绑定到特定的一个 或 多个CPU上去执行,而不允许将进程(或 线程)调度到其他的CPU上。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:40:15  更:2022-08-19 19:42:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 1:29:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码