本文介绍如何对您的计算机进行优化,并研究一些关于服务器性能优化的通用规则。计算机就好像为您完成任务的雇员,最好不要让它们负担过重。避免这种情况发生的方法之一就是仔细地对计算机上运行的进程进行优化。UNIX® nice 命令对于完成该工作是很有用的。
在您继续探索 UNIX® 广袤领域的过程中,请将注意力转向有关多任务的问题。现代计算机,就像您的敏捷而高效的雇员,拥有非常高速的内存,这使得它们可以在内存中同时容纳成百上千个单独的程序。
内存中的程序通常有许多不同的名称,包括线程、进程、守护进程、内核、库、共享对象等等。如果您想了解这种看似杂乱的现象中的基础规则,那么拿起您的弯刀,劈开挡住去路的荆棘。您会发现内存中的程序都是具有共同特征的简单二进制模式:它们拥有各自的运行上下文。为了简单起见,在本文中将它们都称为任务。
操作系统的任务切换程序,也称为调度程序,用来完成下列工作:
将任务的上下文加载到中央处理器 (CPU) 寄存器。
让任务运行一小段时间。
在加载下一个任务的上下文之前,保存该任务的上下文。
调度程序维护了大量的内部表以管理系统中每个运行任务的上下文。它还使用称为运行队列 和睡眠队列 的一对队列来对资源进行管理。运行队列中的任务已经获得它们所需的所有资源。睡眠队列中的任务则等待获得一个或多个资源。通常,调度程序确保系统以有序的并能作出快速响应的方式运行。
所有的信息都保存在上下文中
运行任务的上下文由许多内容组成。当任务运行时,有一个称为指令指针 (IP) 的 CPU 寄存器,它包含了当前正在执行的机器代码指令的内存地址。当任务被换出时,任务切换程序必须保存这个 IP 寄存器的值,以便在该任务以后被再次换入时可以重新加载它。因此,当前 IP 值是任务上下文中的一部分。
组成任务上下文的另一个重要的值是堆栈指针 (SP)。堆栈是一个后进先出 (LIFO) 队列,它保存了子例程的返回地址、数据项、指针等等。根据程序员的详细设计,由操作这些数据项的指令来确定堆栈中每一项的具体含义。
IP 和 SP,加上组成运行任务上下文的所有其他重要 CPU 寄存器,这些都是任务切换程序用来切换上下文并运行不同任务的底层细节信息。任务切换程序还可以利用更高层次的细节信息。任务的优先级是这些更高层次细节信息之一。
优先级
程序在创建时并不是平等的。有些对计算机本身的操作至关重要的程序必须比其他次要的程序具有更高的优先级。在 UNIX 系统方案中,使用从 -20 到 +19 的一个可变数值来表示优先级,这个数值又称为任务的 nice 数值。具有最高优先级的程序,其 nice 值最低,所以在 UNIX 系统方案中,值 -20 使得一项任务变得非常重要。与之相反,如果任务的 nice 为 +19,则表示它是一个高尚的、无私的任务,允许所有其他任务比自己享有宝贵的 CPU 时间的更大使用份额。
UNIX 提供了许多强大的工具,可以在任何时候查看计算机中正在运行的任务的细节,ps 命令可用来提供这些细节信息。启动一个 xterm 并输入下面的命令以查看程序的 nice:
$ ps -eo pid,state,nice,args | less -S
该命令所生成的输出,如下面的清单 1 所示。
清单 1. 输出
PID S NI COMMAND
1 S 0 init [5]
2 S 19 [ksoftirqd/0]
3 S -10 [events/0]
4 S -10 [khelper]
5 S -10 [kblockd/0]
28 S 0 [kapmd]
30 S 0 [pdflush]
31 S 0 [pdflush]
33 S -10 [aio/0]
32 S 0 [kswapd0]
138 S 0 [kseriod]
176 S 0 [kjournald]
1080 S 0 [kjournald]
1081 S 0 [kjournald]
1082 S 0 [kjournald]
1564 S 0 /sbin/dhclient -1 -q -lf /var/lib/dhcp/dhclient-eth0...
1610 S 0 syslogd -m 0
1614 S 0 klogd -x
1632 S 0 portmap
1651 S 0 rpc.statd
1729 S 0 /usr/sbin/sshd
1744 S 0 xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid
1760 S 0 ntpd -U ntp
.
.
.
2364 S 0 konsole
2373 S 0 /bin/bash
2563 R 0 ps -eo pid,state,nice,args
在我的工作站上,共生成了 84 行输出。这表示当时 ps 任务正在运行,它仅仅是那些争用 CPU 上的运行时间的 84 个不同任务的其中之一。现在来研究一下该命令中的部分内容,以便更好地理解系统输出的含义。-eo pid、state 和 nice args 开关告诉 ps 任务列出系统中每项运行任务的下列信息:
进程 ID (pid)
任务处于运行还是睡眠状态 (state)
Nice 数值 (nice)
调用任务时的参数 (args)
带 -S 开关的 less 命令通过将列表中的每行限制为 xterm 的宽度,从而创建了一个整洁、漂亮的列表。
其中大部分任务的 nice 值为“0”,这使得它们处于优先级范围的正中间。有少数运行任务的 nice 数值为 -10 或 19,这使得它们分别具有高的或低的优先级。同时,大多数任务处于睡眠状态,这表明它们正等待着获得某种资源。事实上,在我生成该列表时,只有 ps 命令在运行。大多数任务都是用来快速地完成它们所需执行的操作,然后退出或睡眠。
Nice 和 renice
nice 命令根据给定的 nice 数值来执行其参数中指定的命令。而 renice 命令则用来更改任务的 nice 数值。关于这些命令开关的详细信息,请参阅每个命令的 man 页面。
UNIX 计算机主要分为两大类:工作站和服务器。需要对它们所运行的进程加以关注,以确保有限的资源不会被重复执行且对预定目标并不重要的任务浪费。
工作站
因为工作站可以用来完成各种各样的任务,所以对于每个工作站的优化,没有固定的规则。有些工作站用来进行编程、艺术图形设计、繁重的数值计算和数据挖掘。在所有情况下,如果您能够在完成所需活动的同时查看正在运行的进程,并对工作站进行相应的优化,那么这将是很有帮助的。
例如,在程序员的工作站上,编译和连接某些程序可能花费数小时。如果程序员想不惜一切代价地加速其执行过程,那么可以使用超级用户登录,并按照如下命令启动编译任务:
$ su
Password:
# nice -n -15 make
参数 -n -15 将 make 任务的 nice 数值降低了 15,这就大大提高了它的优先级,以至于您在屏幕上移动鼠标时能够确切地感受到这一点。在大多数系统中,只有超级用户帐户才能够对任务进行这种优先级的更改。尽管如此,对于运行长进程的工作站来说,这是值得的。
另一种进行工作站性能优化的重要方法是标识出您并不使用但却有可能在工作站上运行的特性和功能。例如,许多 Linux® 系统都有一个称为 /etc/cron.daily/slocate.cron 的文件,它每天都会运行磁盘密集型的 dbupdate 程序。这个程序允许您使用 locate 命令来代替 find 命令,以执行查找文件的工作。如果您从来都不使用 locate 命令,那么您可以对 /etc/cron.daily/slocate.cron 文件进行编辑,以使 dbupdate 程序不以超级用户的身份运行,启动您最喜欢的编辑器,并且注释其中的指令,如下面的清单 2 所示。
清单 2. /etc/cron.daily/slocate.cron 文件
$ su
Password:
# cd /etc/cron.daily
# vi slocate.cron
清单 3 显示了在您完成注释工作后该文件中的内容。每行开始处的英镑标记阻止了该命令的运行。
清单 3. 文件结果
#!/bin/sh
# renice +19 -p $$ >/dev/null 2>&1
# /usr/bin/updatedb -f "nfs,proc,devpts" -e "/tmp,/var/tmp,/usr/tmp,/afs,/net"
请记住,这也是关于个人首选参数设置的问题。如果您的计算机属于雇主,那么我并不建议在没有管理许可的情况下进行这样的更改。毕竟,当您不在的时候,系统管理员可能打算使用 locate 命令。
服务器
与工作站不同,服务器通常具有明确定义的用途,因此更容易进行优化。例如,Web 服务器的主要职责是接收和响应来自 Internet 上的浏览器请求。与之类似,文件服务器则必须迅速而准确地分发所请求的文件。在这两种情况下,服务器不应该执行通常分配给工作站的那些任务。
如果服务器专门用于某个主要功能,如 Web 服务器,那么请对配置文件进行编辑以去掉任何其他的服务。通常,Web 服务器会运行 ftp、nfs、dhcp、dns 和其他非必需的守护进程。计算机所需共享的资源越少,那么它对其主要任务的响应能力越高。作为回报,安全性也更高,因为可供攻击的漏洞更少。
本文为服务器性能优化提供了一些通用规则。有关详细信息,请查阅参考资料部分中的链接。
结束语
如果您对工作站和服务器上所运行的进程进行仔细地优化,包括设置适当的任务优先级以及移除浪费资源的任务,那么您的计算机将继续作为您称职的和忠实的雇员。
72.232.63.* 于 2007-05-28 17:48:11发表:
Good design!
free ctu ringtone | download free polyphonic ringtones | download free mp3 ringtones | kyocera ringtones | free lg ringtones | funny ringtones free | motorola q ringtones | nextel ringtone program | tmobile free ringtones | cisco ringtones
72.232.63.* 于 2007-05-27 17:39:06发表:
Good design!
free ringtone creator | free cell phone ringtones | cingular free ringtones | mp3 ringtone converter | wwe ringtones | ringtones for sprint phones | free ctu ringtone | kyocera ringtones | real ringtones | free mp3 ringtones
72.232.63.* 于 2007-05-27 17:38:29发表:
Well done!
download ringtones | cell phone ringtones | centennial wireless ringtones | free hi fi ringtones | free mobile phone ringtones | free ringtones us cellular | mp3 ringtone download | 24 ctu ringtone verizon | motorola mp3 | crazy frog ring tone
72.232.63.* 于 2007-05-27 17:38:04发表:
Thank you!
lg ringtones | ringtones mp3 | free cricket ringtones | razr v3 ringtones | ringtones wav | free samsung ringtones | free cell phone ring tones | samsung free ringtones | free sprint pcs ringtones | suncom ringtones
72.232.63.* 于 2007-05-27 17:37:35发表:
Great work!
free tracfone ringtones | free kyocera ringtones | real tone ringtones | cellular south | ringtone | free anime | motorola free ringtones | ringtone uploader | free ringtones for motorola | alltel ringtones
72.232.63.* 于 2007-05-27 17:37:14发表:
Nice site!
free midi ringtone | country ringtones | christian ringtones | ringtones for nokia | mosquito ringtone | free cingular cell phone ringtones | free ringtones for boost mobile | download ringtones free | ringtones mp3 free | ringtones for tracfones
72.232.63.* 于 2007-05-26 19:30:21发表:
Nice site!
free roulette online | free online strip blackjack | download blackjack | poker game download | keno online | internet poker | casino free game online | free online slot machines | free no download slots | casino deposit bonus
72.232.63.* 于 2007-05-26 19:29:59发表:
Well done!
play texas hold em | planet poker | free online roulette | poker texas holdem | online slot games | free online bingo | free gambling games | play texas holdem free | free 3 card poker | video poker machines
72.232.63.* 于 2007-05-26 19:29:29发表:
Well done!
pokerstars download | play poker | free online blackjack | russian roulette game | blackjack free games | online roulette game | roulette | free blackjack games | play free slots | casino games online
72.232.63.* 于 2007-05-26 19:28:59发表:
Nice site!
online video slots | internet gambling | free fun slots | free poker game download | online black jack | free joker poker | slots of fun | empire poker | free online slot games | free online poker
72.232.63.* 于 2007-05-26 19:28:44发表:
Great work!
free texas holdem | free play slots | caribbean poker | casino bonuses | free video | online free roulette | free poker | casino no deposit | slots for free | play bingo online
72.232.63.* 于 2007-05-25 17:35:38发表:
Nice site!
ringtones for suncom | absolutely free ringtones | ringtone jukebox | download ringtones | cricket ringtones | free mp3 ringtone downloads | free ringtone downloads | free blackberry ringtones | ringtones for sprint phones | free downloadable t mobile ringtones
72.232.63.* 于 2007-05-25 17:35:06发表:
Thank you!
ringtones cingular | ringtone composer | free midi ringtones | free samsung ringtones | hindi ringtone | ringtones for nextel | free wwe ringtones | us cellular ring tones | wav ringtones | wwe ringtones
72.232.63.* 于 2007-05-25 17:34:42发表:
Thank you!
nokia free download | ringtones | ringtones for tracfones | download free polyphonic ringtones | samsung free ringtones | sprint free ringtones | free ctu ringtone | alltel ringtones | cellphone ringtones | free nokia ringtones
72.232.63.* 于 2007-05-25 17:34:16发表:
Thank you!
boost ringtones | ringtones nokia | free star wars ringtones | christian music ringtones | mtv ringtones | free ringtones for tracfone | free midi ringtone | free t mobile ringtones | free mobile phone ringtones | free cingular cell phone ringtones
72.232.63.* 于 2007-05-25 17:33:52发表:
Thank you!
free ringtones for us cellular | free ringtones download | real ringtones | country ringtones | mp3 ringtone converter | ringtones for alltel | mosquito ringtone | nextel ringtone | sanyo ringtones | free cellular south ringtones
72.232.63.* 于 2007-05-24 17:43:59发表:
Well done!
video slot machines | blackjack games | slot machine software | poker for fun | free casino downloads | free monopoly online | free poker download | free no deposit casinos | texas hold em online | free online casino
72.232.63.* 于 2007-05-24 17:43:29发表:
Good design!
free black jack game | online roulette game | best bonus casino | pokerstars download | games download | free online poker games | play money poker | flash casinos | free on line poker | free texas holdem
72.232.63.* 于 2007-05-24 17:43:09发表:
Good design!
play free slots online | free poker | online games | new no deposit online casinos | three card poker | online casinos | poker stars | online casino | online roulette free | video slots
72.232.63.* 于 2007-05-24 17:42:44发表:
Thank you!
gambling games | full tilt poker | play free online slots | free bingo online | free texas holdem | free roulette online | on line gambling | internet casinos | free black jack games | play blackjack
72.232.63.* 于 2007-05-24 17:42:20发表:
Good design!
free slot downloads | poker bonus | play casino games | blackjack software | slot machine games free | online strip blackjack | online free blackjack | slots for fun | slot games free | omaha poker
72.232.63.* 于 2007-05-23 17:38:44发表:
Great work!
free mp3 ringtones | free nokia ringtones | hindi ringtone | mosquito ringtone | free boost mobile ringtones | ringtones for motorola q | free downloadable ringtones | star wars ringtone | free wav ringtones | download free ringtone
72.232.63.* 于 2007-05-23 17:38:15发表:
Great work!
alltel free ringtones | free 24 ringtones | free cell phone ring tones | sprint ringtones | ringtones composer | free real tone ringtones | 24 ring tone | free nextel downloads | free ringtones sprint | ringtones lg
72.232.63.* 于 2007-05-23 17:37:46发表:
Well done!
free ringtones for us cellular | nextel ringtone program | gospel ringtones | free ringtones for alltel | verizon free ringtones | free music ringtones | free ringtones for tracfone | t mobile ringtones | real tone ringtones | download free polyphonic ringtones
72.232.63.* 于 2007-05-23 17:37:18发表:
Good design!
free cingular cell phone ringtones | 50 cent ringtones | mp3 ringtone | ringtones cingular | anime ringtones | ringtone creator | ringtones samsung | nokia free ringtones | cellphone ringtones | free ringtone download
72.232.63.* 于 2007-05-23 17:36:56发表:
Thank you!
free ringtones for t mobile | free cricket ringtones | free ringtone converter | free suncom ringtones | lg free ringtones | nascar ringtones | motorola ringtones free | sprint pcs ringtones | ringtones for verizon | real ringtones
72.232.63.* 于 2007-05-22 17:57:23发表:
Thank you!
free gambling games | casino download | free online slot machines | free blackjack | free slot games | online texas holdem | strip blackjack | free online black jack | free online casino slots | blackjack online free
72.232.63.* 于 2007-05-22 17:56:51发表:
Well done!
cleopatra slots | poker game download | free multi line slots | free poker download | blackjack software | poker games | free casino game | online poker free | free casino cash | no deposit bonus
72.232.63.* 于 2007-05-22 17:56:30发表:
Great work!
free online slot machine | free roulette games | strip blackjack game | free sim slots | free poker sites | online holdem | free slot games no download | no deposit bonuses | stud poker | 3 card poker
72.232.63.* 于 2007-05-22 17:55:59发表:
Thank you!
bonus casino free online | caribbean stud poker | blackjack online | new free money online casinos | blackjack download | play free slots | play slot machines | online slot machines | no deposit bonus casinos | online poker game
72.232.63.* 于 2007-05-22 17:55:42发表:
Nice site!
world series of poker | monopoly slot machine | play texas holdem | play slots for free | free online slot machine games | free casino online | slots for fun | three card poker | free texas holdem poker | free casinos
72.232.63.* 于 2007-05-21 17:40:18发表:
Good design!
free polyphonic ringtone | free mp3 ringtones | download free nokia ringtone | free ringtones for sprint | ringtone midi | ctu 24 ringtone | wav ringtones | free ringtones | free lg ringtones | free anime ringtones
72.232.63.* 于 2007-05-21 17:39:44发表:
Well done!
free monophonic ringtones | free mp3 tones | motorola keypress ringtones | cingular wireless ringtones | voice ringtone | composer ringtones | ringtones for tracfones | free sanyo ringtones | 24 ringtone | 24 ring tones
72.232.63.* 于 2007-05-21 17:39:20发表:
Nice site!
funny ringtones | free ringtones for suncom | free nokia ringtones | ringtones for alltel | free cricket ringtones | free ringtones verizon | samsung ringtones | free blackberry ringtones | free star wars ringtones | free phone ringtones
72.232.63.* 于 2007-05-21 17:38:54发表:
Great work!
nokia ringtones | ringtone converter | free christian ringtones | free boost mobile ringtones | free harry potter ringtones | ringtone download | free downloadable ringtones | ringtone free | ringtone 24 | us cellular ringtones
72.232.63.* 于 2007-05-21 17:38:31发表:
Great work!
free ringtones for nextel | sprint ringtones | cellular one ringtones | verizon ringtones | mobile ringtones | blackberry ringtones | free ctu ringtone | free ringtones for lg | motorola razr v3 ringtones | ring tones
72.232.63.* 于 2007-05-20 18:03:44发表:
Well done!
play poker for free | free gambling games | roulette game | best poker sites | no limit texas hold em | free slot machines games | online roulette game | poker stars | casino deposit bonus | best usa casino online
72.232.63.* 于 2007-05-20 18:03:21发表:
Great work!
gambling sites | free online games | blackjack free games | black jack | online games | play roulette | play free blackjack | casino online download | video poker machines | free slot machine downloads
72.232.63.* 于 2007-05-20 18:02:49发表:
Good design!
free online roulette | online slot machines | planet poker | video slot machine | free online blackjack | free black jack games | play bingo online | online slots free | online holdem | texas hold em
72.232.63.* 于 2007-05-20 18:02:17发表:
Well done!
free slot machine games | black jack download | on line poker | free on line poker | poker web sites | download slots | free texas hold em | free video poker | free online slots games | free poker game download