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

39 篇文章 4 订阅
22 篇文章 3 订阅

来源极客时间

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


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将中断分为两部分:


watch -d配合下图两个命令可查看变化速率

 

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

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

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

tcpdump:网络抓包工具

  • 总结

 工具总结:


指标:

 

 使用工具的流程:

内存

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

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

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

cachestat、cachetop


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

strace:观察系统调用

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

memleak:检测内存泄露

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

内存性能指标:


根据指标找工具: 

 根据工具找指标:


问题定位流程:

 

 文件系统

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

slabtop:查看slab的内存

磁盘性能指标:


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调用

根据指标找工具:


根据工具找指标:

 

定位流程图:


网络

指标:带宽、吞吐量、延时、pps、网络可用性、并发连接数、丢包率、重传率


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

 ifconfig etho 、ip -s addr show dev eth0

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

Netstat -nlp、ss -ltnp

sar可以查看网络吞吐量和pps,参数为-n


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:把用户提供的脚本,转换为内核模块来执行,用来监测和跟踪内核的行为(可以写一个跟踪内核函数的调用脚本)

根据指标找工具:

 根据工具找指标:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux性能优化是指通过对系统的各方面进行调整和优化,以提高系统的运行效率和响应速度,减少资源的浪费和消耗,提升整个系统的性能表现。下面将从几个方面介绍Linux性能优化: 1. 内存管理优化:通过合理设置Linux内存管理参数,提高内存利用率和内存性能。例如,调整交换区(swap)的大小,合理设置内存页缓存(page cache)和文件系统缓存(buffer cache)的大小等。 2. 文件系统优化: Linux文件系统采用不同的文件系统类型,如ext4、XFS等。根据系统运行情况和需求,选择合适的文件系统类型,并进行相关的优化设置,提高文件系统的IO性能。 3. 网络优化:配置操作系统中的网络参数,如TCP窗口大小、拥塞控制等,以提高网络传输速度和稳定性,降低网络延迟。 4. CPU调度优化:调整Linux内核中的CPU调度算法参数,以确保各个进程和线程在多核环境下能够得到充分的CPU资源,提高系统的并行处理能力。 5. 硬件优化:对硬件进行优化,如调整服务器的BIOS设置,配置RAID等,减少硬件延迟和故障率,提高系统的稳定性和可靠性。 总之,Linux性能优化是一个综合性的工作,需要对系统的各个方面进行深入了解和调整。通过合理的配置和调优,可以提高Linux系统的运行效率和响应速度,提升整个系统的性能表现。在优化过程中,需要结合具体的应用场景和需求,进行有针对性的优化操作,才能取得最佳的性能提升效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值