Linux 性能调优(1)

读书笔记--- linux 性能调优指南 (首先建议对内核又足够的了解,尤其内存管理,不然很多概念很难理解)

1.理解linux 操作系统

2.监控和检测工具

3.分析性能瓶颈

4.优化操作系统

处理器指标
处理器指标如下:
CPU利用率( CPU utilization)
这个可能是最直接的指标,它全面展示了每个处理器的利用率。在IBM System x架构
中,如果CPU利用率持续高于80%,就可能遇到了处理器瓶颈。
用户时间( User time)
表示CPU在用户进程上的时间百分比,包括nice时间。用户时间值高是一个较好的状
态,在这种情况下,系统在处理真正的任务。
系统时间( System time)
表示CPU花在内核操作上的时间百分比,包括IRQ和softirq时间。持续的高系统时间可以
指出网络和驱动栈的瓶颈。CPU花在内核上的时间越少越好。
等待( Waiting)
CPU花在等待I/O操作上的时间总和。类似blocked值,系统不应该把大量时间花在等待
I/O操作上;否则,你应该调查I/O子系统的性能。
空闲时间( Idle time)
表示系统处于空闲等待任务的时间比。
Nice时间( Nice time)
表示CPU花在re-nicing进程,改变进程执行顺序和优先级上的时间。
平均负载( Load average)
平均负载不是百分比,是下面的和的滚动平均值:
在队列中等待被处理的进程数
等待非中断任务完成的进程数
1.6.理解Linux性能指标
44
是TASK_RUNNING和TASK_UNINTERRUPTIBLE的和的平均值。如果进程请求
CPU时间被阻塞( 表示CPU没有时间处理它们) ,平均负载就会升高。另一方面,
如果每个进程直接就能获得CPU时间并且没有CPU周期丢失,负载就会降下来。
可运行进程( Runable processes)
表示已经准备好要执行的进程。这个值不应该持续超过CPU个数的10倍,否则就是出现
了CPU瓶颈。
阻塞的( Blocked)
在等待I/O操作完成的时候,进程不能执行。阻塞进程可以指出你的I/O瓶颈。
上下文切换( Context switch)
系统上有大量的切换在线程间发生,在有大量中断和上下文切换发生时,表示驱动或应
用程序出现了问题。一般来说,上下文切换不是好现象,因为CPU缓存需要刷新,但是
有些上下文切换是必要的。
中断( Interrupts)
中断值包含硬中断和软中断。硬中断对系统性能有更大的影响。高中断值指示了软件瓶
颈,无论是内核还是驱动程序层面的。记住中断值包含CPU时钟引起的中断。

 

Linux性能监控工具

工具常用功能
top所有进程情况
vmstat系统活动,硬件和系统信息
uptime, w系统平均负载
ps, pstree显示进程
free内存使用情况
iostatcpu负载和磁盘活动
sar收集和报告系统状态
mpstat多处理器使用情况
numastatNUMA相关统计
pmap进程内存情况
netstat网络统计
iptraf实时网络统计
tcpdump,ethereal详细网络流量分析
nmon收集和报告系统活动
strace系统调用
proc文件系统各种内核统计信息
KDE system guard实时的系统图形报告
Gnome System Monitor实时的系统图形报告


压测工具

工具常用功能
lmbench微型系统功能评测工具
iozone文件系统压测
netperf网络性能测试
bonnie磁盘IO和文件系统测试 http://www.textuality.com/bonnie/
bonnie++磁盘IO和文件系统测试 http://www.coker.com.au/bonnie++/
NetBench文件服务器测试,运行在Windows上
dbench文件系统测试,通常用来文件服务器压测
http://freshmeat.net/projects/dbench/
iometer磁盘I/O和网络压测 http://www.iometer.org/
ttcp简单的网络测试
iperf网络测试 http://dast.nlanr.net/projects/Iperf/
ab ( Apache
Bench)
简单的web服务器测试,包含在Apache服务器中
http://httpd.apache.org/
WebStoneWeb服务器测试 http://www.mindcraft.com/webstone/
Apache
Jmeter
主要用来web服务器性能测试。也支持其它协议,例如SMTP,LDAP,
JDBC等,有很好的报告功能http://jakarta.apache.org/jmeter/
fsstone,
smtpstone
邮件服务器测试,包含在postfix中 http://www.postfix.org/
nhfsstone网络文件系统测试,包含在nfs-utils包中
DirectoryMarkLDAP测试 http://www.mindcraft.com/directorymark/


性能优化选项
第一步是要确保,系统性能问题是由CPU引起的,而不是其它子系统。如果处理器是服务器
瓶颈,可以采取如下的办法来增强性能:
使用ps -ef来确保没有不必要的进程程序在后台运行,如果找到了这样的程序,关掉它,
或者使用cron让它在非高峰的时候运行。
通过top找到非关键的、CPU密集型进程,然后用renice修改它的优先级。
在基于SMP的机器上,尝试使用taskset命令绑定进程到CPU上,避免进程在多个处理器
之间切换,引起cache刷新。
基于运行的应用,确认你的应用是否能高效的利用多处理器。来决定是否应该使用更强
劲的CPU而不是更多的CPU。例如,单线程应用,会从更快的CPU中受益,增加值CPU
个数也没用。
还有其它办法,比如,确保你使用的是最新的驱动和固件,这能影响到他们在系统上的
负载
 

如果确定是内存瓶颈,可以执行下面的操作:
使用bigpages、hugetlb和共享内存调优swap空间。
增加或者减少页大小。
改善活动和非活动的内存处理
调整page-out率
限制服务器上每个用户可使用的资源
关掉用不到的服务
增加内存
网络性能调优
当网络瓶颈出现时,你应该试试如下的办法:
确保网卡配置和路由器交换机配置相匹配。
修改子网的组织方式
使用更快的网卡
适当调整IPv4的TCP内核参数。有些安全相关的参数调整会提升性能,详见下一章。
如果可能的话,更换网卡,然后重新检测性能。
如果可能的话,增加网卡,绑定成一个网卡组。
3.5.网络瓶颈
100
Linux发行版和内核提供了各种参数和选项给Linux用户优化系统性能,将软硬件性能发挥到最
大。正如前文所说,没有适用于所有应用的提升系统性能的优化魔法。下文中所讨论的提升
性能的办法只适用于特定的硬件和应用。某些配置会提升web服务器性能,但是配置在数据库
系统上可能适得其反。
这节中的步骤可以用来优化基于内核2.6的Linux发行版。由于在本书写作时,基于2.6内核的
发行版从2.6.9到2.6.19的版本都有,有些优化选项可能只适用于特定的内核版本。本章内容
如下。
Linux内核管理
系统清理
使用sysctl优化性能
网络优化
章节如下:
4.1 优化原则
4.2 安装考量
4.3 修改内核参数
4.4 优化处理器子系统
4.5 优化虚拟内存子系统
4.6 优化磁盘子系统
4.7 优化网络子系统

优化原则
优化原则
管理变更
优化任何系统都应该基于一些简单的原则,最重要的是变更管理。大体上,系统调整的第一
步是分析和评估当前系统配置。确保所有系统设备运行在硬件厂家所宣称的最佳状态,有助
于为接下来的调整提供坚实基础。还有,优良的业务系统上应该没有任何不必要的服务和子
系统在运行。最后,落实到具体的系统优化,需要注意的是,调优通常是针对特定应用负载
而进行的。所以,根据系统负载行为的调优使得系统更高效,但是对其它负载模式可能是不
利的。例如,对系统低延时的调整,通常来说会降低系统的吞吐量。
管理变更
管理变更和性能优化并不直接相关,但可能是成功性能调优最重要的因素。如下可能是第二
位考虑的,但是作为提醒,我们强调一下:
在调优之前,实施合理的管理流程变更
永远不要在生产系统上调优
在调优过程中,每次只修改一个变量
反复测试提升性能的参数,有时候,统计来的结果更加可靠
把成功的参数调整整理成文档,和社区分享,即使你觉得它们微不足道。生产环境中获
得的任何结果对Linux性能都有很大用处。
 

相关推荐
程序员的必经之路! 【限时惠】 现在下单,还享四重好礼: 1、教学课件免费下载 2、课程案例代码免费下载 3、专属VIP学员群免费答疑 4、下单还送800元编程大礼包 【超实用课程内容】  根据《2019-2020年中国开发者查报告》显示,超83%的开发者都在使用MySQL数据库。使用量大同时,掌握MySQL早已是运维、DBA的必备技能,甚至部分IT开发岗位也要求对数据库使用和原理有深入的了解和掌握。 学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能!   套餐中一共包含2门MySQL数据库必学的核心课程(共98课时)   课程1:《MySQL数据库从入门到实战应用》   课程2:《高性能MySQL实战课》   【哪些人适合学习这门课程?】  1)平时只接触了语言基础,并未学习任何数据库知识的人;  2)对MySQL掌握程度薄弱的人,课程可以让你更好发挥MySQL最佳性能; 3)想修炼更好的MySQL内功,工作中遇到高并发场景可以游刃有余; 4)被面试官打破沙锅问到底的问题问到怀疑人生的应聘者。 【课程主要讲哪些内容?】 课程一:《MySQL数据库从入门到实战应用》 主要从基础篇,SQL语言篇、MySQL进阶篇三个角度展开讲解,帮助大家更加高效的管理MySQL数据库。 课程二:《高性能MySQL实战课》主要从高可用篇、MySQL8.0新特性篇,性能化篇,面试篇四个角度展开讲解,帮助大家发挥MySQL的最佳性能化方法,掌握如何处理海量业务数据和高并发请求 【你能收获到什么?】  1.基础再提高,针对MySQL核心知识点学透,用对; 2.能力再提高,日常工作中的代码换新貌,不怕问题; 3.面试再加分,巴不得面试官打破沙锅问到底,竞争力MAX。 【课程如何观看?】  1、登录CSDN学院 APP 在我的课程中进行学习; 2、移动端:CSDN 学院APP(注意不是CSDN APP哦)  本课程为录播课,课程永久有效观看时长 【资料开放】 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、化。  下载方式:电脑登录课程观看页面,点击右侧课件,可进行课程资料的打包下载。
©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页