《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能

来源极客时间

cpu

  • 总览

uptime可查看系统平均负载:平均活跃进程数(可运行、不可中断)

cpu个数:grep ‘model_name’ /proc/cpuinfo | wc -l

mpstat:实时查看cpu性能指标(整体)

pidstat:实时查看进程的cpu、内存、io、上下文切换等性能指标

stress:压测

iostat:io状态

超过百分之70的使用率就该警醒

  • cpu

cpu上下文切换:进程/线程/中断上下文切换

vmstat:查看系统上下文切换情况、系统内存使用情况

pidstat -w可以查看每个进程上下文切换情况,-u输出cpu使用指标,-t输出线程指标

sysbench:模拟上下文切换过多、评估不同系统参数下的数据库负载情况

watch -d cat /proc/interrupts:查看中断的变化情况

上下文切换上w次,或者呈数量级增长,就该警醒

cat /proc/stat | grep ^cpu :cpu状态

cpu使用率:除了空闲时间外的其他时间占总cpu时间的百分比,可查看目录/proc/stat
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第1张图片

ab:用来模拟压测

进程运行情况的统计信息:/proc/[pid]/stat

最常见的查看cpu使用率的命令:top、ps

结合pidstat,可查看具体进程的cpu使用情况

适合第一时间分析进程的cpu问题:perl,可以使用-g开启调用关系分析,-p指定pid

perl record -g 可以查看性能报告

execsnoop:可以监控短时进程

  • 僵尸进程/不可中断状态进程

dstat:吸收了vmstat、iostat、ifstat,可同时观察cpu、io、网络、内存

僵尸进程:pstree找出父进程,看代码,检查wait调用或sigchld信号处理函数

不可中断状态进程:iowait升高,则用dstat、pidstat,确实是不是磁盘io的问题,再用ps找到d状态的进程,看谁哪些进程导致了io,如果变成了僵尸进程没啥信息了,可以perl看性能报告

  • 软中断

linux将中断分为两部分:
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第2张图片

watch -d配合下图两个命令可查看变化速率
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第3张图片

ps aux | grep softirq:可查看软中断线程运行情况

sar:可以实时查看系统当前活动、查看历史统计数据,可查看每秒接受、发送的网络帧数、千字节数,可由此计算每帧的大小

Hping3:构造tce/ip协议数据包,可以测试系统

tcpdump:网络抓包工具

  • 总结
    《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第4张图片

工具总结:
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第5张图片

指标:
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第6张图片

使用工具的流程:
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第7张图片

内存

free:查看整个系统的内存的使用情况,也可以查看swap

top、ps:查看进程的内存使用情况

Buffer和Cache分别是磁盘和文件系统的读写数据缓存

cachestat、cachetop
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第8张图片

pcstat:查看文件在内存中的缓存大小以及缓存比例

strace:观察系统调用

sar:-r/-S可查看内存/swap使用情况

memleak:检测内存泄露

pmap:分析进程地址空间中内存的使用情况

内存性能指标:
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第9张图片

根据指标找工具:
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第10张图片

根据工具找指标:
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第11张图片

问题定位流程:
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第12张图片

文件系统

df:查看文件系统的磁盘空间使用情况

slabtop:查看slab的内存

磁盘性能指标:
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第13张图片

fio:性能测试工具

iostat:提供了每个磁盘的使用率、iops、吞吐量等,其指标解读如下图

%util:磁盘io使用率
r/s+w/s:iops
rkb/s+wkb/s:吞吐量
r_await+w_await:响应时间

可以把观测到的平均请求队列长度或者读写请求完成的等待时间跟基准测试的结果进行对比,综合评估磁盘的饱和情况

pidstat -d和iotop:观察进程的io情况

lsof -p:查看进程打开了哪些文件

如果strace找不到系统调用,可以尝试filetop,主要用来跟踪内核中文件的读写情况,并输出线程id、读写大小、读写类型以及文件名称(基于ebpf机制)

opensnoo可以跟踪open调用

根据指标找工具:

根据工具找指标:

定位流程图:
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第14张图片

网络

指标:带宽、吞吐量、延时、pps、网络可用性、并发连接数、丢包率、重传率
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第15张图片

ifconfig和ip命令可以查看网络接口收发数据包的统计信息

ifconfig etho 、ip -s addr show dev eth0

netstat和ss可以查看socket、网络栈、网络接口、协议栈以及路由表的信息

Netstat -nlp、ss -ltnp

sar可以查看网络吞吐量和pps,参数为-n
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第16张图片

Bandwidth可以通过ethanol eth0 | grep Speed来查看

ping:测试远程主机的连通性和延时

网络层性能测试:hping3、pktgen

传输层tcp性能测试:iperf、netperf

应用层http性能测试:ab、webbench

应用负载性能:wrk、tcpcopy、jmeter

dns:nslookup可以查询到域名对应的ip和dns相关信息,如延迟等、dig可以查询递归查询的过程

tcedump、wireshark:dns没问题,但还是慢,则可以进行抓包分析

hping3也可以用来获取网络延迟,traceroute也可以(如果pnig不能用)

System tap:把用户提供的脚本,转换为内核模块来执行,用来监测和跟踪内核的行为(可以写一个跟踪内核函数的调用脚本)

根据指标找工具:
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第17张图片
根据工具找指标:
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能_第18张图片

你可能感兴趣的:(Linux,linux,性能优化)