本文将从Linux系统的特性和Power架构自身的优势谈起,概略性的讲解如何在Power上更好的使用Linux系统,如何优化Linux on Power,以求带给我们的客户更大的使用价值。
IBM系统与科技事业部OpenPower系统工程师 李建文
2004年,IBM高调推出了OpenPower服务器产 品系列,进一步完善了自己的Linux产品线,旨在让开放源码的Linux操作系统能够更加可靠高效的进行在Power平台上。本文将从Linux系统的 特性和Power架构自身的优势谈起,概略性的讲解如何在Power上更好的使用Linux系统,如何优化Linux on Power,以求带给我们的客户更大的使用价值。
在整个IBM的产品战略中Linux占有举足轻重的作用。IBM目前拥有五大硬件构架: System z、System i、System p、System x以及System storage,五大软件品牌:WebSphere、DB2、Lotus、Tivoli、Rational,在这样一个异构的环境中,Linux可以相对 简洁的提供一个同构的操作系统层,从而能够向广大的合作伙伴和独立软件开发商提供一个技术整合和商业整合的平台。
经过开源界不断的努力,Linux事实上也被证明是解决目前日益复杂的IT应用的一剂良药, 它能够支持几十种截然不同的硬件架构,本身优秀的Unix血统又使之非常适合作为软件研发的底层平台。IBM也正是看到了这些Linux的特性,才决心在 自己的全线产品中支持Linux,并向我们的合作伙伴推荐这个操作系统平台。
对Linux的支持上,除了人所共知的基于X86及其衍生CPU构架的IBM X系统服务器以外,IBM P系统服务器也能非常好的支持Linux操作系统及其相关软件。IBM Power平台在产生之初就考虑到是为高性能计算和高商业负载运行而设计的。在IBM与RedHat、Novell SUSE、RedFlag、Turbo等Linux厂商合作研发之后,Linux on Power平台更趋完善可用,性能也更趋优越,下面我们就主要来探讨Linux on Power上的性能调试技术。
一。性能调优的层次
对于一个应用系统来说,可以进行性能调整的层次很多。
从系统调用的层次上来说,首先应该是应用层,即应用开发者使用C、C++、Java、SQL等等开发语言和相关开发工具开发客户的应用程序,使用高效的开发类库、优化算法,避免各类已知的开发错误,在应用层优化是最能够提高性能的一个办法。
接下来就有可能在中间件层进行优化,对应用服务器如WebSphere及数据库管理系统如DB2进行优化,调整连接池或者内存区进行优化。
再下来则应该是对操作系统如Linux进行优化,除了在客户应用层面会反映出性能问题(如常常连接超时,没有在有效时间内返回正确结果)以外,在操作系统的监控终端上我们也能够发现性能问题(如CPU运行100%,内存消耗殆尽)。虽然所有这些问题并不一定是操作系统本身的的问题,但是通过操作系统,我们能够感知系统的性能问题,并为下一步的解决提供线索。
最后有可能需要对硬件构架进行调整,以适应整个应用系统的性能要求。
下面根据我们的经验,简要列出一些应用系统在出现性能问题时的组件。
从应用开发的角度来划分性能问题的解决的途径,那么第一应该是系统设计阶段就重视性能问题,仔细斟酌客户对性能的要求,选择合适的应用系统构架以应对性能问题。
在应用程序开发阶段,严密监控开发流程,,使用优秀的算法和工具,避免未来的性能损失。
尽可能早的进入到性能测试阶段,找到问题关键,合力解决问题。
二。Linux on Power性能分析工具
当在应用层次我们已经经过艰苦的努力,提高了应用程序的性能,接下来就要聚焦在Linux操作系统和Power硬件平台上调整性能。在设法调整之前,我们需要一系统的监控工具告诉我们性能的瓶颈在哪里。下面就简要列出Linux on Power上的性能分析工具和命令。
CPU性能分析工具:
vmstat
ps
sar
time
strace
pstree
top
Memory性能分析工具:
vmstat
strace
top
ipcs
ipcrm
cat /proc/meminfo
cat /proc/slabinfo
cat /proc/<pid #>/maps
I/O性能分析工具:
vmstat
ipstat
repquota
quotacheck
Network性能分析工具:
ifconfig
ethereal
tethereal
iptraf
iwconfig
nfsstat
mrtg
ntop
netstat
cat /proc/sys/net
三。Linux on Power性能调优工具
当通过上述工具及命令,我们发现了应用的性能瓶颈以后,我们可以通过以下工具或者命令来进行性能的调整。
CPU性能调优工具:
nice / renic
sysctl
Memory性能调优工具:
swapon
ulimit
sysctl
I/O性能调优工具:
edquota
quoton
sysctl
boot line:
elevator= <ioscheduler>
Network性能调优工具:
ifconfig
iwconfig
sysctl
四。CPU性能调整
当一个系统的CPU空闲时间或者等待时间小于5%时,我们就可以认为系统的CPU资源耗尽,我们应该对CPU进行性能调整。
CPU性能调整方法:
1。减少工作负载,选择合适的运行级。
# vi /etc/inittab
…
# Default runlevel. The runlevels used by RHS are:
# 0 – halt (Do NOT set initdefault to this)
# 1 – Single user mode
# 2 – Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 – Full multiuser mode
# 4 – unused
# 5 – X11
# 6 – reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
…
2。关闭非核心的服务进程。
使用如下命令关闭非核心的服务守护进程。
命令形式:#chkconfig [–level levels] name <on/off/reset>
# chkconfig –list talk
talk on
# chkconfig talk off
# chkconfig –list talk
talk off
命令形式:# service [ service_name ] <start|stop|restart|condrestart|status|panic|save>
# service sshd status
sshd (pid 29927 28946 23589) is running…
# service sshd stop
3。关闭增加型加密Linux特性,在/etc/yaboot.conf文件中让selinux=0。
#vi /etc/yaboot.conf
…
image=/vmlinuz-2.6.9-11.EL
label=linux
read-only
initrd=/initrd-2.6.9-11.EL.img
root=/dev/VolGroup00/LogVol00
append="selinux=0 rhgb quiet"
…
4。编辑/proc/sys/kernel/中的文件,修改内核参数。
#cd /proc/sys/kernel/
# ls /proc/sys/kernel/
acct hotplug panic real-root-dev
cad_pid modprobe panic_on_oops sem
cap-bound msgmax pid_max shmall
core_pattern msgmnb powersave-nap shmmax
core_uses_pid msgmni print-fatal-signals shmmni
ctrl-alt-del ngroups_max printk suid_dumpable
domainname osrelease printk_ratelimit sysrq
exec-shield ostype printk_ratelimit_burst tainted
exec-shield-randomize overflowgid pty threads-max
hostname overflowuid random version
一般可能需要编辑的是pid_max和threads-max,如下:
# sysctl kernel.threads-max
kernel.threads-max = 8192
# sysctl kernel.threads-max=10000
kernel.threads-max = 10000
5。关闭SMT功能。
最有效的资本是我们的信誉,它24小时不停为我们工作。