当前位置: 首页 > news >正文

Linux——性能调优工具一览

一、CPU

1.调优工具

根据指标找工具

性能指标工具说明

平均负载

uptime、top

uptime最简单、top提供了更全的指标

系统整体CPU使用率

vmstat、mpstat、top、sar、/proc/stat

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

进程CPU使用率

top、pidstat、ps、htop、atop

top和ps可以按CPU使用率给进程排序,而pidstat只显示实际用了CPU的进程,htop和atop以不同颜色显示更为直观

系统上下文切换

vmstat

除了上下文切换此时,还提供运行状态和不可中断状态进程的数量

进程上下文切换

pidstat

注意加上-w选项

软中断

top、/proc/softirqs、mpstat

top提供软中断CPU使用率,而/proc/softirqs和mpstat提供了各种软中断在每个CPU上的运行次数

硬中断

vmstat、/proc/interrupts

vmstat提供总的中断次数,而/proc/interrupts提供各种中断在每个CPU上的运行的累积次数

网络

dstat、sar、tcpdump

dstat和sar提供总的网络接收和发送情况,而tcpdump则是动态抓取正在进行的网络通讯

I/O

dstat、sar

dstat和sar都提供了I/O的整体情况

CPU个数

/proc/cpuinfo、lscpu

lscpu更直观一些

事件剖析

perf、execsnoop

perf可以用来分析CPU的缓存以及内核调用链,execsnoop用来监控短时进程

根据工具查指标

性能工具   性能指标
uptime   平均负载
top平均负载、运行队列、整体的CPU使用率以及每个进程的状态和CPU使用率
htop   top增强版,以不同颜色区分不同类型的进程,更直观
atop   CPU、内存、磁盘和网络等各种资源的全面监控
vmstat   系统整体的CPU使用率、上下文切换次数、中断次数,还包括处于运行和不可中断状态的进程数量
mpstat   每个CPU的使用率和软中断次数
pidstat   进程和线程的CPU使用率、中断上下文切换次数
/proc/softirqs软中断类型和在每个CPU上的累积中断次数
/proc/interrupts硬中断类型和在每个CPU上的累积中断次数
ps每个进程的状态和CPU使用率
pstree进程的父子关系
dstat   系统整体的CPU使用率
sar   系统整体的CPU使用率,包括可配置的历史数据
strace   进程的系统调用
perfCPU性能时间剖析,如调用链分析、CPU缓存、CPU调度等
execsnoop   监控短时进程

2.CPU性能瓶颈

3.从不同的角度看待CPU调优

如何才能降低 CPU 使用率,提高 CPU 的并行处理能力,大体分析方向为两部分

应用程序

系统优化

编译器优化

 CPU绑定

算法优化CPU独占
异步处理优先级调整
多线程代替多进程为进程设置资源限制
善用缓存NUMA(Non-Uniform Memory Access)优化

                    中断负载均衡

 

二、磁盘

1.磁盘性能指标

使用率:指磁盘处理 I/O 的时间百分比
饱和度:指磁盘处理 I/O 的繁忙程度
IOPS:指每秒的 I/O 请求数
吞吐量:指每秒的 I/O 请求大小
响应时间:指 I/O 请求从发出到收到响应的间隔时间

2.调优工具

根据工具查指标

性能工具

文件系统和I/O性能指标

iostat磁盘I/O使用率、IOPS、吞吐量、响应时间、I/O平均大小以及等待队列长度
pidstat进程I/O大小以及I/O延迟
sar磁盘I/O使用率、IOPS、吞吐量以及响应时间
dstat磁盘I/O使用率、IOPS以及吞吐量
iotop按I/O大小对进程排序
slabtop目录项、索引节点以及文件系统的缓存
/proc/slabinfo目录项、索引节点以及文件系统的缓存
/proc/meminfo页缓存和可回收Slab缓存
/proc/diskstats磁盘的IOPS、吞吐量以及延迟
/proc/pid/io进程IOPS、I/O大小以及I/O延迟
vmstat缓存和缓冲区用量汇总
blktrace跟踪块设备I/O事件
biosnoop跟踪进程的块设备I/O大小
biotop   跟踪进程块I/O并按大小I/O大小排序
strace跟踪进程的I/O系统调用
perf跟踪内核中的I/O事件
df磁盘空间和索引节点使用量和剩余量
mount文件系统的挂载路径以及挂载参数
du目录占用的磁盘空间大小
tune2fs显示和设置文件系统参数
hdparm显示和设置磁盘参数

根据指标找工具

性能指标工具说明
文件系统空间容量、使用量以及剩余空间df查看文件系统的存储状态
索引节点容量、使用量以及剩余量df使用-i选项
页缓存和可回收Slab缓存/proc/meminfo、sar、vmstat使用sar -r选项
缓冲区/proc/meminfo、sar、vmstat使用sar -r选项
目录项、索引节点以及文件系统的缓存/proc/slabinfo、slabtopslabtop更直观
磁盘I/O使用率、IOPS、吞吐量、响应时间、I/O平均大小以及等待队列长度iostat、sar、dstat使用iostat -d -x或sar -d选项
进程I/O大小以及I/O延迟pidstat、iotop使用pidstat -d选项
块设备I/O事件跟踪blktrace示例:blktrace -d /dev/sda -o- | blkparse -i-
进程I/O系统调用跟踪strace通过系统调用跟踪进程的I/O
进程块I/O系统调用跟踪biosnoop、biotop需要安装bcc软件包

iostat使用详解:iostat 命令详解_iostat命令详解参数-CSDN博客

三、网络

1.网络性能指标

带宽:表示链路的最大传输速率,单位通常为 b/s (比特 / 秒)。

吞吐量,表示单位时间内成功传输的数据量,单位通常为 b/s(比特 / 秒)或者 B/s(字节 / 秒)。吞吐量受带宽限制,而吞吐量 / 带宽,也就是该网络的使用率。

延时,表示从网络请求发出后,一直到收到远端响应,所需要的时间延迟。在不同场景中,这一指标可能会有不同含义。比如,它可以表示,建立连接需要的时间(比如 TCP 握手延时),或一个数据包往返所需的时间(比如 RTT)。

PPS,是 Packet Per Second(包 / 秒)的缩写,表示以网络包为单位的传输速率。PPS 通常用来评估网络的转发能力,比如硬件交换机,通常可以达到线性转发(即 PPS 可以达到或者接近理论最大值)。而基于 Linux 服务器的转发,则容易受网络包大小的影响。

2.分析工具

通过sarifconfig命令查看Vastbase内节点网络使用情况,分析是否存在由于网络导致的性能瓶颈。

  • errors表示收包错误的总数量。
  • dropped表示数据包已经进入了Ring Buffer,但是由于内存不够等系统原因,导致在拷贝到内存的过程中被丢弃的总数量。
  • overruns表示Ring Buffer队列中被丢弃的报文数目,由于Ring Buffer(aka Driver Queue)传输的IO大于kernel能够处理的IO导致。

分析时,如果发现上述三个值持续增长,则表示网络负载过大或者存在网卡、内存等硬件故障。

3.详细排查

排查网络状态使用netstat -anp | grep命令

标记所在情况;
一个叫“redis-server”的进程,正在监听127.0.1:6379/0.0.0.:2222端口等等,“LISTEN”表示监听 PID:代表该进程的id 38464 

检查特定程序的网络链接情况 

查看端口 : 例如 5432端口我们看下

netstat -anp | grep 5432 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据资产目录中的主数据划分(汽车制造行业)
  • Go语言设计与实现 学习笔记 第六章 并发编程(2)
  • Ubuntu/Linux 配置 locale
  • 【AI学习笔记】AIGC,AI绘画 ComfyUI+ComfyUI Manager安装
  • [服务器_1]rpc框架收集
  • 入行「游戏策划」,该从何处下手?
  • django外键表查询
  • 黑马程序员Python数据挖掘|1Jupyter Notebook的使用
  • JAVA学习-练习试用Java实现“数据流的中位数”
  • 金融科技初创企业建设指南
  • 解决方案:在autodl环境下安装torch被killed掉
  • 随笔十、音频扩展模块测试
  • ZW3D二次开发_UI_ZsCc::OptionRadios控件回调
  • windows C++ 并行编程-在 UWP 应用中使用 C++ AMP
  • 【Python报错已解决】ValueError: cannot reindex from a duplicate axis
  • 深入了解以太坊
  • 【EOS】Cleos基础
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【node学习】协程
  • input的行数自动增减
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • python docx文档转html页面
  • python 装饰器(一)
  • Python利用正则抓取网页内容保存到本地
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Spring-boot 启动时碰到的错误
  • 阿里云购买磁盘后挂载
  • 高度不固定时垂直居中
  • 搞机器学习要哪些技能
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 检测对象或数组
  • 前嗅ForeSpider中数据浏览界面介绍
  • 听说你叫Java(二)–Servlet请求
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​Spring Boot 分片上传文件
  • ​补​充​经​纬​恒​润​一​面​
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #考研#计算机文化知识1(局域网及网络互联)
  • (¥1011)-(一千零一拾一元整)输出
  • (13):Silverlight 2 数据与通信之WebRequest
  • (C)一些题4
  • (HAL库版)freeRTOS移植STMF103
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (苍穹外卖)day03菜品管理
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (七)Activiti-modeler中文支持
  • (十六)Flask之蓝图
  • (十三)Flask之特殊装饰器详解