电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

UNIX 系統(tǒng)性能優(yōu)化

瀏覽:66日期:2024-06-13 09:06:45

在您繼續(xù)探索 Unix® 廣袤領(lǐng)域的過程中,請(qǐng)將注意力轉(zhuǎn)向有關(guān)多任務(wù)的問題。現(xiàn)代計(jì)算機(jī),就像您的敏捷而高效的雇員,擁有非常高速的內(nèi)存,這使得它們可以在內(nèi)存中同時(shí)容納成百上千個(gè)單獨(dú)的程序。

內(nèi)存中的程序通常有許多不同的名稱,包括線程、進(jìn)程、守護(hù)進(jìn)程、內(nèi)核、庫、共享對(duì)象等等。如果您想了解這種看似雜亂的現(xiàn)象中的基礎(chǔ)規(guī)則,那么拿起您的彎刀,劈開擋住去路的荊棘。您會(huì)發(fā)現(xiàn)內(nèi)存中的程序都是具有共同特征的簡(jiǎn)單二進(jìn)制模式:它們擁有各自的運(yùn)行上下文。為了簡(jiǎn)單起見,在本文中將它們都稱為任務(wù)。

操作系統(tǒng)的任務(wù)切換程序,也稱為調(diào)度程序,用來完成下列工作:

將任務(wù)的上下文加載到中央處理器 (CPU) 寄存器。

讓任務(wù)運(yùn)行一小段時(shí)間。

在加載下一個(gè)任務(wù)的上下文之前,保存該任務(wù)的上下文。

調(diào)度程序維護(hù)了大量的內(nèi)部表以管理系統(tǒng)中每個(gè)運(yùn)行任務(wù)的上下文。它還使用稱為運(yùn)行隊(duì)列 和睡眠隊(duì)列 的一對(duì)隊(duì)列來對(duì)資源進(jìn)行管理。運(yùn)行隊(duì)列中的任務(wù)已經(jīng)獲得它們所需的所有資源。睡眠隊(duì)列中的任務(wù)則等待獲得一個(gè)或多個(gè)資源。通常,調(diào)度程序確保系統(tǒng)以有序的并能作出快速響應(yīng)的方式運(yùn)行。

所有的信息都保存在上下文中

運(yùn)行任務(wù)的上下文由許多內(nèi)容組成。當(dāng)任務(wù)運(yùn)行時(shí),有一個(gè)稱為指令指針 (IP) 的 CPU 寄存器,它包含了當(dāng)前正在執(zhí)行的機(jī)器代碼指令的內(nèi)存地址。當(dāng)任務(wù)被換出時(shí),任務(wù)切換程序必須保存這個(gè) IP 寄存器的值,以便在該任務(wù)以后被再次換入時(shí)可以重新加載它。因此,當(dāng)前 IP 值是任務(wù)上下文中的一部分。

組成任務(wù)上下文的另一個(gè)重要的值是堆棧指針 (SP)。堆棧是一個(gè)后進(jìn)先出 (LIFO) 隊(duì)列,它保存了子例程的返回地址、數(shù)據(jù)項(xiàng)、指針等等。根據(jù)程序員的詳細(xì)設(shè)計(jì),由操作這些數(shù)據(jù)項(xiàng)的指令來確定堆棧中每一項(xiàng)的具體含義。

IP 和 SP,加上組成運(yùn)行任務(wù)上下文的所有其他重要 CPU 寄存器,這些都是任務(wù)切換程序用來切換上下文并運(yùn)行不同任務(wù)的底層細(xì)節(jié)信息。任務(wù)切換程序還可以利用更高層次的細(xì)節(jié)信息。任務(wù)的優(yōu)先級(jí)是這些更高層次細(xì)節(jié)信息之一。

優(yōu)先級(jí)

程序在創(chuàng)建時(shí)并不是平等的。有些對(duì)計(jì)算機(jī)本身的操作至關(guān)重要的程序必須比其他次要的程序具有更高的優(yōu)先級(jí)。在 Unix 系統(tǒng)方案中,使用從 -20 到 +19 的一個(gè)可變數(shù)值來表示優(yōu)先級(jí),這個(gè)數(shù)值又稱為任務(wù)的 nice 數(shù)值。具有最高優(yōu)先級(jí)的程序,其 nice 值最低,所以在 UNIX 系統(tǒng)方案中,值 -20 使得一項(xiàng)任務(wù)變得非常重要。與之相反,如果任務(wù)的 nice 為 +19,則表示它是一個(gè)高尚的、無私的任務(wù),允許所有其他任務(wù)比自己享有寶貴的 CPU 時(shí)間的更大使用份額。

UNIX 提供了許多強(qiáng)大的工具,可以在任何時(shí)候查看計(jì)算機(jī)中正在運(yùn)行的任務(wù)的細(xì)節(jié),ps 命令可用來提供這些細(xì)節(jié)信息。啟動(dòng)一個(gè) xterm 并輸入下面的命令以查看程序的 nice:

$ ps -eo pid,state,nice,args | less -S

該命令所生成的輸出,如下面的清單 1 所示。

清單 1. 輸出

 PID S NI COMMAND1 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 01614 S  0 klogd -x1632 S  0 portmap1651 S  0 rpc.statd1729 S  0 /usr/sbin/sshd1744 S  0 xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid1760 S  0 ntpd -U ntp . . .2364 S  0 konsole2373 S  0 /bin/bash2563 R  0 ps -eo pid,state,nice,args

在我的工作站上,共生成了 84 行輸出。這表示當(dāng)時(shí) ps 任務(wù)正在運(yùn)行,它僅僅是那些爭(zhēng)用 CPU 上的運(yùn)行時(shí)間的 84 個(gè)不同任務(wù)的其中之一。現(xiàn)在來研究一下該命令中的部分內(nèi)容,以便更好地理解系統(tǒng)輸出的含義。-eo pid、state 和 nice args 開關(guān)告訴 ps 任務(wù)列出系統(tǒng)中每項(xiàng)運(yùn)行任務(wù)的下列信息:

進(jìn)程 ID (pid)

任務(wù)處于運(yùn)行還是睡眠狀態(tài) (state)

Nice 數(shù)值 (nice)

調(diào)用任務(wù)時(shí)的參數(shù) (args)

帶 -S 開關(guān)的 less 命令通過將列表中的每行限制為 xterm 的寬度,從而創(chuàng)建了一個(gè)整潔、漂亮的列表。

其中大部分任務(wù)的 nice 值為“0,這使得它們處于優(yōu)先級(jí)范圍的正中間。有少數(shù)運(yùn)行任務(wù)的 nice 數(shù)值為 -10 或 19,這使得它們分別具有高的或低的優(yōu)先級(jí)。同時(shí),大多數(shù)任務(wù)處于睡眠狀態(tài),這表明它們正等待著獲得某種資源。事實(shí)上,在我生成該列表時(shí),只有 ps 命令在運(yùn)行。大多數(shù)任務(wù)都是用來快速地完成它們所需執(zhí)行的操作,然后退出或睡眠。

Nice 和 renice

nice 命令根據(jù)給定的 nice 數(shù)值來執(zhí)行其參數(shù)中指定的命令。而 renice 命令則用來更改任務(wù)的 nice 數(shù)值。關(guān)于這些命令開關(guān)的詳細(xì)信息,請(qǐng)參閱每個(gè)命令的 man 頁面。

Unix 計(jì)算機(jī)主要分為兩大類:工作站和服務(wù)器。需要對(duì)它們所運(yùn)行的進(jìn)程加以關(guān)注,以確保有限的資源不會(huì)被重復(fù)執(zhí)行且對(duì)預(yù)定目標(biāo)并不重要的任務(wù)浪費(fèi)。

工作站

因?yàn)楣ぷ髡究梢杂脕硗瓿筛鞣N各樣的任務(wù),所以對(duì)于每個(gè)工作站的優(yōu)化,沒有固定的規(guī)則。有些工作站用來進(jìn)行編程、藝術(shù)圖形設(shè)計(jì)、繁重的數(shù)值計(jì)算和數(shù)據(jù)挖掘。在所有情況下,如果您能夠在完成所需活動(dòng)的同時(shí)查看正在運(yùn)行的進(jìn)程,并對(duì)工作站進(jìn)行相應(yīng)的優(yōu)化,那么這將是很有幫助的。

例如,在程序員的工作站上,編譯和連接某些程序可能花費(fèi)數(shù)小時(shí)。如果程序員想不惜一切代價(jià)地加速其執(zhí)行過程,那么可以使用超級(jí)用戶登錄,并按照如下命令啟動(dòng)編譯任務(wù):

$ suPassWord:# nice -n -15 make

參數(shù) -n -15 將 make 任務(wù)的 nice 數(shù)值降低了 15,這就大大提高了它的優(yōu)先級(jí),以至于您在屏幕上移動(dòng)鼠標(biāo)時(shí)能夠確切地感受到這一點(diǎn)。在大多數(shù)系統(tǒng)中,只有超級(jí)用戶帳戶才能夠?qū)θ蝿?wù)進(jìn)行這種優(yōu)先級(jí)的更改。盡管如此,對(duì)于運(yùn)行長(zhǎng)進(jìn)程的工作站來說,這是值得的。

另一種進(jìn)行工作站性能優(yōu)化的重要方法是標(biāo)識(shí)出您并不使用但卻有可能在工作站上運(yùn)行的特性和功能。例如,許多 Linux® 系統(tǒng)都有一個(gè)稱為 /etc/cron.daily/slocate.cron 的文件,它每天都會(huì)運(yùn)行磁盤密集型的 dbupdate 程序。這個(gè)程序允許您使用 locate 命令來代替 find 命令,以執(zhí)行查找文件的工作。如果您從來都不使用 locate 命令,那么您可以對(duì) /etc/cron.daily/slocate.cron 文件進(jìn)行編輯,以使 dbupdate 程序不以超級(jí)用戶的身份運(yùn)行,啟動(dòng)您最喜歡的編輯器,并且注釋其中的指令,如下面的清單 2 所示。

清單 2. /etc/cron.daily/slocate.cron 文件

$ suPassword:# cd /etc/cron.daily# vi slocate.cron

清單 3 顯示了在您完成注釋工作后該文件中的內(nèi)容。每行開始處的英鎊標(biāo)記阻止了該命令的運(yùn)行。

清單 3. 文件結(jié)果

#!/bin/sh# renice +19 -p $$ >/dev/null 2>&1# /usr/bin/updatedb -f "nfs,proc,devpts" -e "/tmp,/var/tmp,/usr/tmp,/afs,/net"

請(qǐng)記住,這也是關(guān)于個(gè)人首選參數(shù)設(shè)置的問題。如果您的計(jì)算機(jī)屬于雇主,那么我并不建議在沒有管理許可的情況下進(jìn)行這樣的更改。畢竟,當(dāng)您不在的時(shí)候,系統(tǒng)管理員可能打算使用 locate 命令。

服務(wù)器

與工作站不同,服務(wù)器通常具有明確定義的用途,因此更容易進(jìn)行優(yōu)化。例如,Web 服務(wù)器的主要職責(zé)是接收和響應(yīng)來自 Internet 上的瀏覽器請(qǐng)求。與之類似,文件服務(wù)器則必須迅速而準(zhǔn)確地分發(fā)所請(qǐng)求的文件。在這兩種情況下,服務(wù)器不應(yīng)該執(zhí)行通常分配給工作站的那些任務(wù)。

如果服務(wù)器專門用于某個(gè)主要功能,如 Web 服務(wù)器,那么請(qǐng)對(duì)配置文件進(jìn)行編輯以去掉任何其他的服務(wù)。通常,Web 服務(wù)器會(huì)運(yùn)行 ftp、nfs、dhcp、dns 和其他非必需的守護(hù)進(jìn)程。計(jì)算機(jī)所需共享的資源越少,那么它對(duì)其主要任務(wù)的響應(yīng)能力越高。作為回報(bào),安全性也更高,因?yàn)榭晒┕舻穆┒锤佟?/p>

本文為服務(wù)器性能優(yōu)化提供了一些通用規(guī)則。有關(guān)詳細(xì)信息,請(qǐng)查閱參考資料部分中的鏈接。

結(jié)束語

如果您對(duì)工作站和服務(wù)器上所運(yùn)行的進(jìn)程進(jìn)行仔細(xì)地優(yōu)化,包括設(shè)置適當(dāng)?shù)娜蝿?wù)優(yōu)先級(jí)以及移除浪費(fèi)資源的任務(wù),那么您的計(jì)算機(jī)將繼續(xù)作為您稱職的和忠實(shí)的雇員。

標(biāo)簽: Unix系統(tǒng)
主站蜘蛛池模板: 北钻固控设备|石油钻采设备-石油固控设备厂家 | 不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰]-不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰] | 金蝶帐无忧|云代账软件|智能财税软件|会计代账公司专用软件 | 广州展览制作工厂—[优简]直营展台制作工厂_展会搭建资质齐全 | H型钢切割机,相贯线切割机,数控钻床,数控平面钻,钢结构设备,槽钢切割机,角钢切割机,翻转机,拼焊矫一体机 | 单机除尘器 骨架-脉冲除尘器设备生产厂家-润天环保设备 | 昆明网络公司|云南网络公司|昆明网站建设公司|昆明网页设计|云南网站制作|新媒体运营公司|APP开发|小程序研发|尽在昆明奥远科技有限公司 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 贵州水玻璃_-贵阳花溪闽兴水玻璃厂 | 企业管理培训,企业培训公开课,企业内训课程,企业培训师 - 名课堂企业管理培训网 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 有源电力滤波装置-电力有源滤波器-低压穿排电流互感器|安科瑞 | 三价铬_环保铬_环保电镀_东莞共盈新材料贸易有限公司 | 集装箱标准养护室-集装箱移动式养护室-广州璟业试验仪器有限公司 | 万师讲师网-优质讲师培训师供应商,讲师认证,找讲师来万师 | 胶辊硫化罐_胶鞋硫化罐_硫化罐厂家-山东鑫泰鑫智能装备有限公司 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 通信天线厂家_室分八木天线_对数周期天线_天线加工厂_林创天线源头厂家 | 阴离子_阳离子聚丙烯酰胺厂家_聚合氯化铝价格_水处理絮凝剂_巩义市江源净水材料有限公司 | 制氮设备_PSA制氮机_激光切割制氮机_氮气机生产厂家-苏州西斯气体设备有限公司 | 高压包-点火器-高压发生器-点火变压器-江苏天网 | 实战IT培训机构_IT培训班选大学生IT技术培训中心_中公优就业 | 三价铬_环保铬_环保电镀_东莞共盈新材料贸易有限公司 | NM-02立式吸污机_ZHCS-02软轴刷_二合一吸刷软轴刷-厦门地坤科技有限公司 | nalgene洗瓶,nalgene量筒,nalgene窄口瓶,nalgene放水口大瓶,浙江省nalgene代理-杭州雷琪实验器材有限公司 | 坏男孩影院-提供最新电影_动漫_综艺_电视剧_迅雷免费电影最新观看 | 深圳天际源广告-形象堆头,企业文化墙,喷绘,门头招牌设计制作专家 | 钢制暖气片散热器_天津钢制暖气片_卡麦罗散热器厂家 | 南溪在线-南溪招聘找工作、找房子、找对象,南溪综合生活信息门户! | 合肥风管加工厂-安徽螺旋/不锈钢风管-通风管道加工厂家-安徽风之范 | 避光流动池-带盖荧光比色皿-生化流动比色皿-宜兴市晶科光学仪器 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 微型气象仪_气象传感器_防爆气象传感器-天合传感器大全 | 餐饮加盟网_特色餐饮连锁加盟店-餐饮加盟官网 | 河南档案架,档案密集架,手动密集架,河南密集架批发/报价 | 高精度-恒温冷水机-螺杆式冰水机-蒸发冷冷水机-北京蓝海神骏科技有限公司 | 中细软知识产权_专业知识产权解决方案提供商| LCD3D打印机|教育|桌面|光固化|FDM3D打印机|3D打印设备-广州造维科技有限公司 | 自恢复保险丝_贴片保险丝_力特保险丝_Littelfuse_可恢复保险丝供应商-秦晋电子 | PE拉伸缠绕膜,拉伸缠绕膜厂家,纳米缠绕膜-山东凯祥包装 | 南京技嘉环保科技有限公司-杀菌除臭剂|污水|垃圾|厕所|橡胶厂|化工厂|铸造厂除臭剂 | 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | 首页-恒温恒湿试验箱_恒温恒湿箱_高低温试验箱_高低温交变湿热试验箱_苏州正合 |