Linux 性能优化笔记

74 篇文章 4 订阅
35 篇文章 4 订阅

前言

实验环境:ubuntu 18.04、切换至 root 权限下操作

查看命令详细使用方法,可以:man xxx
提及到路径的话,一般可以 cat /x/xx/xxx
提及到工具的话,如果没安装,可以:apt-get install xxx

CPU 篇

CPU 性能指标

Linux 性能优化

根据指标找工具

性能指标工具说明
平均负载uptime topuptime 最简单; top 提供了更全的指标
系统整体 CPU 使用率vmstat mpstat top sar /proc/stattop、vmstat、mpstat 只可以动态查看, /proc/stat/ 是其他性能工具的数据来源
进程 CPU 使用率top pidstat ps htop atoptop 和 ps 可以按 CPU 使用率给进程排序, 而 pidstat 只显示实际用了 CPU 的进程 htop 和 atop 以不同颜色显示更为直观
系统上下文切换vmstat除了上下文切换次数, 还提供运行状态和不可中断状态进程的数量
进程上下文切换pidstat注意加上 - w 选项
软中断top /proc/softirqs mpstattop 提供软中断 CPU 使用率, 而 /proc/softirqs 和 mpstat 提供了各种软中断在每个 CPU 上的运行次数
硬中断vmstat /proc/interruptsvmstat 提供总的中断次数, 而 /proc/interrupts 提供各种中断在每个 CPU 上运行的累积次数
网络dstat sar tcpdumpdstat 和 sar 提供总的网络接收和发送情况, 而 tcpdump 则是动态抓取正在进行的网络通讯
I/Odstat sardstat 和 sar 都提供了 I/O 的整体情况
CPU 个数/proc/cpuinfo lscpulscpu 更直观
事件剖析perf execsnoopperf 可以用来分析 CPU 的缓存以及内核调用链,execsnoop 用来监控短时进程

根据工具查指标

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

CPU 性能优化分析

Linux 性能优化

内存篇

内存性能指标

Linux 性能优化

根据指标找工具

内存指标性能工具
系统已用、可用、剩余内存free vmstat sar /proc/meminfo
进程虚拟内存、常驻内存、共享内存ps top
进程内存分布pmap
进程 Swap 换出内存top /proc/pid/status
进程缺页异常ps top
系统换页情况sar
缓存(Cache)/ 缓冲区(Buffer)用量free vmstat sar cachestat
缓存(Cache)/ 缓冲区(Buffer)用量cachetop
SWAP 已用空间和剩余空间free sar
Swap 换入换出vmstat
内存泄漏检测memleak valgrind
指定文件的缓存大小pcstat

根据工具查指标

性能工具内存指标
free /proc/meninfo系统已用、可用、剩余内存以及缓存和缓冲区的使用量
top ps进程虚拟、常驻、共享内存以及缺页异常
vmstat系统剩余内存、缓存、缓冲区、换入、换出
sar系统部分内存换页情况、内存使用率、缓存和缓冲区用量 以及 Swap
cachestat系统缓存和缓冲区的命中率
cachetop进程缓存和缓冲区的命中率
slabtop系统 Slab 缓存使用情况
/proc/pid/status进程 Swap 内存等
/proc/pid/smaps pmap进程地址空间和内存状态
valgrind进程内存错误检查器,用来检测内存初始化、泄漏、 越界访问等各种内存错误
memleak内存泄漏检测
pcstat查看指定文件的缓存情况

内存性能优化分析

Linux 性能优化

I/O 篇

I/O 性能指标

Linux 性能优化

根据指标找工具

性能指标工具说明
文件系统空间容量、使用量以及剩余空间df详细文档见 info coreutils ‘df invocation’
索引结点容量、使用量以及剩余量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磁盘 I/O 使用率、IOPS、吞吐量、响应时间、I/O 平均大小以及等待队列长度
pidstat进程 I/O 大小以及 I/O 延迟
sar磁盘 I/O 使用率、IOPS、吞吐量以及响应时间
dstat磁盘 I/O、IPOS 以及吞吐量
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 大小排序
strace跟踪进程的 I/O 系统调用
perf跟踪内核中的 I/O 事件
df磁盘空间和索引结点使用量和剩余量
mount文件系统的挂载路径以及挂载参数
du目录占用的磁盘空间大小
tune2fs显示和设置文件系统参数
hdparam显示和设置磁盘参数

I/O 性能优化分析

Linux 性能优化

网络篇

根据指标找工具

性能指标工具说明
吞吐量(BPS)sar nethogs iftop分别可以查看网络接口、进程以及 IP 地址的网络吞吐量
PPSsar /proc/net/dev查看网络接口的 PPS
连接数nestat ss查看网络连接数
延迟ping hping3通过 ICMP、TCP 等测试网络延迟
连接跟踪数conntrack查看和管理连接跟踪状况
路由mtr route traceroute查看路由并测试链路信息
DNSdig nslookup排查 DNS 解析问题
防火墙和 NATiptables配置和管理防火墙及 NAT 规则
网卡功能ethtool查看和配置网络接口的功能
抓包tcpdump Wireshark抓包分析网络流量
内核协议栈跟踪bcc systemtap动态跟踪内核协议栈的行为

根据工具查指标

性能工具主要功能
ifconfig ip配置和查看网络接口
ss查看网络连接数
sar /proc/net/dev/sys/class/net/eth0/statistics查看网络接口的收发情况
nethogs查看进程的网络收发情况
iftop查看 IP 的网络收发情况
ethool查看和配置网络接口
conntrack查看和管理连接跟踪状况
nslookup dig排查 DNS 解析问题
mtr route traceroute查看路由并测试链路信息
ping hping3测试网络延迟
tcpdump网络抓包工具
Wireshark网络抓包和图形界面分析工具
iptables配置和管理防火墙及 NAT 规则
perf剖析内核协议栈的性能
systemtap bcc动态追踪内核协议栈的行为

结语 & 案例

“纸上得来终觉浅,绝知此事要躬行” 。在此,提供本人实践的课程案例,希望对你有帮助。

案例:某个应用的 CPU 使用率居然达到 100%,我该怎么办?
案例:系统的 CPU 使用率很高,但为啥却找不到高 CPU 的应用?
案例:系统中出现大量不可中断进程(D)和僵尸进程(Z)怎么办?

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值