小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

RedHat Enterprise Linux在IBM System x服務(wù)器上的調(diào)優(yōu)(一)

 sys 2010-03-01
一.理解Linux的性能

我們可以在文章的開(kāi)始就列出一個(gè)列表,列出可能影響Linux操作系統(tǒng)性能的一些調(diào)優(yōu)參數(shù),但這樣做其實(shí)并沒(méi)有什么價(jià)值。因?yàn)樾阅苷{(diào)優(yōu)是一個(gè)非常困難的任務(wù),它要求對(duì)硬件、操作系統(tǒng)、和應(yīng)用都有著相當(dāng)深入的了解。如果性能調(diào)優(yōu)非常簡(jiǎn)單的話(huà),那些我們要列出的調(diào)優(yōu)參數(shù)早就寫(xiě)入硬件的微碼或者操作系統(tǒng)中了,我們就沒(méi)有必要再繼續(xù)讀這篇文章了。

當(dāng)面對(duì)一個(gè)使用單獨(dú)IDE硬盤(pán)的有20000用戶(hù)的數(shù)據(jù)庫(kù)服務(wù)器時(shí),即使我們使用數(shù)周時(shí)間去調(diào)整I/O子系統(tǒng)也是徒勞無(wú)功的,通常一個(gè)新的驅(qū)動(dòng)或者應(yīng)用程序的一個(gè)更新卻可以使這個(gè)服務(wù)器的性能得到明顯的提升。正如我們前面提到的,不要忘記系統(tǒng)的性能是受多方面因素影響的。理解操作系統(tǒng)管理系統(tǒng)資源的方法將幫助我們?cè)诿鎸?duì)問(wèn)題時(shí)更好的判斷應(yīng)該對(duì)哪個(gè)子系統(tǒng)進(jìn)行調(diào)整。

下面的部分對(duì)Linux操作系統(tǒng)的架構(gòu)進(jìn)行了簡(jiǎn)單的介紹,對(duì)Linux內(nèi)核的完整的分析超出了我們這本紅皮書(shū)的內(nèi)容,感興趣的讀者可以尋找相關(guān)文檔做更深入的研究。本書(shū)對(duì)Linux性能的調(diào)整主要針對(duì)Red Hat發(fā)行版本。

1.Linux的CPU調(diào)度

任何計(jì)算機(jī)的基本功能都十分簡(jiǎn)單,那就是計(jì)算。為了實(shí)現(xiàn)計(jì)算的功能就必須有一個(gè)方法去管理計(jì)算資源、處理器和計(jì)算任務(wù)(也被叫做線(xiàn)程或者進(jìn)程)。非常感謝Ingo Molnar,他為L(zhǎng)inux內(nèi)核帶來(lái)了O(1)CPU調(diào)度器,區(qū)別于舊有的O(n)調(diào)度器,新的調(diào)度器是動(dòng)態(tài)的,可以支持負(fù)載均衡,并以恒定的速度進(jìn)行操作。
新調(diào)度器的可擴(kuò)展性非常好,無(wú)論進(jìn)程數(shù)量或者處理器數(shù)量,并且調(diào)度器本身的系統(tǒng)開(kāi)銷(xiāo)更少。新調(diào)取器的算法使用兩個(gè)優(yōu)先級(jí)隊(duì)列。
·活動(dòng)運(yùn)行隊(duì)列
·過(guò)期運(yùn)行隊(duì)列

調(diào)度器的一個(gè)重要目標(biāo)是根據(jù)優(yōu)先級(jí)權(quán)限有效地為進(jìn)程分配CPU 時(shí)間片,當(dāng)分配完成后它被列在CPU的運(yùn)行隊(duì)列中,除了 CPU 的運(yùn)行隊(duì)列之外,還有一個(gè)過(guò)期運(yùn)行隊(duì)列。當(dāng)活動(dòng)運(yùn)行隊(duì)列中的一個(gè)任務(wù)用光自己的時(shí)間片之后,它就被移動(dòng)到過(guò)期運(yùn)行隊(duì)列中。在移動(dòng)過(guò)程中,會(huì)對(duì)其時(shí)間片重新進(jìn)行計(jì)算。如果活動(dòng)運(yùn)行隊(duì)列中已經(jīng)沒(méi)有某個(gè)給定優(yōu)先級(jí)的任務(wù)了,那么指向活動(dòng)運(yùn)行隊(duì)列和過(guò)期運(yùn)行隊(duì)列的指針就會(huì)交換,這樣就可以讓過(guò)期優(yōu)先級(jí)列表變成活動(dòng)優(yōu)先級(jí)的列表。通常交互式進(jìn)程(相對(duì)與實(shí)時(shí)進(jìn)程而言)都有一個(gè)較高的優(yōu)先級(jí),它占有更長(zhǎng)的時(shí)間片,比低優(yōu)先級(jí)的進(jìn)程獲得更多的計(jì)算時(shí)間,但通過(guò)調(diào)度器自身的調(diào)整并不會(huì)使低優(yōu)先級(jí)的進(jìn)程完全被餓死。新調(diào)度器的優(yōu)勢(shì)是顯著的改變Linux內(nèi)核的可擴(kuò)展性,使新內(nèi)核可以更好的處理一些有大量進(jìn)程、大量處理器組成的企業(yè)級(jí)應(yīng)用。新的O(1)調(diào)度器包含仔2.6內(nèi)核中,但是也向下兼容2.4內(nèi)核。

按此在新窗口瀏覽圖片


新調(diào)度器另外一個(gè)重要的優(yōu)勢(shì)是體現(xiàn)在對(duì)NUMA(non-uniform memory architecture)和SMP(symmetric multithreading processors)的支持上,例如INTEL@的超線(xiàn)程技術(shù)。

改進(jìn)的NUMA支持保證了負(fù)載均衡不會(huì)發(fā)生在CECs或者NUMA節(jié)點(diǎn)之間,除非發(fā)生一個(gè)節(jié)點(diǎn)的超出負(fù)載限度。Linux的CPU調(diào)度器沒(méi)有使用大部分UNIX和Windows操作系統(tǒng)使用的進(jìn)程-線(xiàn)程模式,它只使用了線(xiàn)程。在Linux中一個(gè)進(jìn)程表示為一組線(xiàn)程,可以用線(xiàn)程組ID或者TDGID代替標(biāo)準(zhǔn)UNIX中的進(jìn)程ID或者PID。然而大多數(shù)Linux命令例如ps和top都使用PIDs表達(dá),因此在下面的文章中我們會(huì)經(jīng)常使用進(jìn)程和線(xiàn)程組。

2.Linux的內(nèi)存架構(gòu)

今天我們面對(duì)選擇32位操作系統(tǒng)還是64位操作系統(tǒng)的情況。對(duì)企業(yè)級(jí)用戶(hù)它們之間最大的區(qū)別是64位操作系統(tǒng)可以支持大于4GB的內(nèi)存尋址。從性能角度來(lái)講,我們需要了解32位和64位操作系統(tǒng)都是如何進(jìn)行物理內(nèi)存和虛擬內(nèi)存的映射的。

在下面圖示中我們可以看到64位和32位Linux內(nèi)核在尋址上有著顯著的不同。探究物理內(nèi)存到虛擬內(nèi)存的映射超出了本文研究的范圍,因此這里我們只是著重研究一下Linux內(nèi)存架構(gòu)的特點(diǎn)。

在32位架構(gòu)中,比如IA-32,Linux內(nèi)核可以直接尋址的范圍只有物理內(nèi)存的第一個(gè)GB(如果去掉保留部分還剩下896MB),訪(fǎng)問(wèn)內(nèi)存必須被映射到這小于1GB的所謂ZONE_NORMAL空間中,這個(gè)操作是由應(yīng)用程序完成的。但是分配在ZONE_HIGHMEM中的內(nèi)存頁(yè)將導(dǎo)致性能的降低。
在另一方面,64位架構(gòu)比如x86-64(也稱(chēng)作EM64T或者AMD64)。ZONE_NORMAL空間將擴(kuò)展到64GB或者128GB(實(shí)際上可以更多,但是這個(gè)數(shù)值受到操作系統(tǒng)本身支持內(nèi)存容量的限制)。正如我們看到的,使用64位操作系統(tǒng)我們排除了因ZONE_HIGHMEM部分內(nèi)存對(duì)性能的影響的情況。

按此在新窗口瀏覽圖片


3.虛擬內(nèi)存管理

因?yàn)椴僮飨到y(tǒng)將內(nèi)存都映射為虛擬內(nèi)存,所以操作系統(tǒng)的物理內(nèi)存結(jié)構(gòu)對(duì)用戶(hù)和應(yīng)用來(lái)說(shuō)通常都是不可見(jiàn)的。如果想要理解Linux系統(tǒng)內(nèi)存的調(diào)優(yōu),我們必須了解Linux的虛擬內(nèi)存機(jī)制。應(yīng)用程序并不分配物理內(nèi)存,而是向Linux內(nèi)核請(qǐng)求一部分映射為虛擬內(nèi)存的內(nèi)存空間。如下圖所示虛擬內(nèi)存并不一定是映射物理內(nèi)存中的空間,如果應(yīng)用程序有一個(gè)大容量的請(qǐng)求,也可能會(huì)被映射到在磁盤(pán)子系統(tǒng)中的swap空間中。

另外要提到的是,通常應(yīng)用程序不直接將數(shù)據(jù)寫(xiě)到磁盤(pán)子系統(tǒng)中,而是寫(xiě)入緩存和緩沖區(qū)中。Bdflush守護(hù)進(jìn)程將定時(shí)將緩存或者緩沖區(qū)中的數(shù)據(jù)寫(xiě)到硬盤(pán)上。

Linux內(nèi)核處理數(shù)據(jù)寫(xiě)入磁盤(pán)子系統(tǒng)和管理磁盤(pán)緩存是緊密聯(lián)系在一起的。相對(duì)于其他的操作系統(tǒng)都是在內(nèi)存中分配指定的一部分作為磁盤(pán)緩存,Linux處理內(nèi)存更加有效,默認(rèn)情況下虛擬內(nèi)存管理器分配所有可用內(nèi)存空間作為磁盤(pán)緩存,這就是為什么有時(shí)我們觀察一個(gè)配置有數(shù)G內(nèi)存的Linux系統(tǒng)可用內(nèi)存只有20MB的原因。

同時(shí)Linux使用swap空間的機(jī)制也是相當(dāng)高效率的,如下圖所示虛擬內(nèi)存空間是由物理內(nèi)存和磁盤(pán)子系統(tǒng)中的swap空間共同組成的。如果虛擬內(nèi)存管理器發(fā)現(xiàn)一個(gè)已經(jīng)分配完成的內(nèi)存分頁(yè)已經(jīng)長(zhǎng)時(shí)間沒(méi)有被調(diào)用,它將把這部分內(nèi)存分頁(yè)移到swap空間中。經(jīng)常我們會(huì)發(fā)現(xiàn)一些守護(hù)進(jìn)程,比如getty,會(huì)隨系統(tǒng)啟動(dòng)但是卻很少會(huì)被應(yīng)用到。這時(shí)為了釋放昂貴的主內(nèi)存資源,系統(tǒng)會(huì)將這部分內(nèi)存分頁(yè)移動(dòng)到swap空間中。上述就是Linux使用swap空間的機(jī)制,當(dāng)swap分區(qū)使用超過(guò)50%時(shí),并不意味著物理內(nèi)存的使用已經(jīng)達(dá)到瓶頸了,swap空間只是Linux內(nèi)核更好的使用系統(tǒng)資源的一種方法。

按此在新窗口瀏覽圖片


4.模塊化的I/O調(diào)度器

就象我們知道的Linux2.6內(nèi)核為我們帶來(lái)了很多新的特性,這其中就包括了新的I/O調(diào)度機(jī)制。舊的2.4內(nèi)核使用一個(gè)單一的I/O調(diào)度器,2.6內(nèi)核為我們提供了四個(gè)可選擇的I/O調(diào)度器。因?yàn)長(zhǎng)inux系統(tǒng)應(yīng)用在很廣闊的范圍里,不同的應(yīng)用對(duì)I/O設(shè)備和負(fù)載的要求都不相同,例如一個(gè)筆記本電腦和一個(gè)10000用戶(hù)的數(shù)據(jù)庫(kù)服務(wù)器對(duì)I/O的要求肯定有著很大的區(qū)別。

(1)Anticipatory

anticipatory I/O調(diào)度器創(chuàng)建假設(shè)一個(gè)塊設(shè)備只有一個(gè)物理的查找磁頭(例如一個(gè)單獨(dú)的SATA硬盤(pán)),正如anticipatory調(diào)度器名字一樣,anticipatory調(diào)度器使用“anticipatory”的算法寫(xiě)入硬盤(pán)一個(gè)比較大的數(shù)據(jù)流代替寫(xiě)入多個(gè)隨機(jī)的小的數(shù)據(jù)流,這樣有可能導(dǎo)致寫(xiě)I/O操作的一些延時(shí)。這個(gè)調(diào)度器適用于通常的一些應(yīng)用,比如大部分的個(gè)人電腦。

(2)Complete Fair Queuing (CFQ)

Complete Fair Queuing(CFQ)調(diào)度器是Red Hat Enterprise Linux使用的標(biāo)準(zhǔn)算法。CFQ調(diào)度器使用QoS策略為系統(tǒng)內(nèi)的所有任務(wù)分配相同的帶寬。CFQ調(diào)度器適用于有大量計(jì)算進(jìn)程的多用戶(hù)系統(tǒng)。它試圖避免進(jìn)程被餓死和實(shí)現(xiàn)了比較低的延遲。

(3)Deadline

deadline調(diào)度器是使用deadline算法的輪詢(xún)的調(diào)度器,提供對(duì)I/O子系統(tǒng)接近實(shí)時(shí)的操作,deadline調(diào)度器提供了很小的延遲和維持一個(gè)很好的磁盤(pán)吞吐量。如果使用deadline算法請(qǐng)確保進(jìn)程資源分配不會(huì)出現(xiàn)問(wèn)題。

(4)NOOP

NOOP調(diào)度器是一個(gè)簡(jiǎn)化的調(diào)度程序它只作最基本的合并與排序。與桌面系統(tǒng)的關(guān)系不是很大,主要用在一些特殊的軟件與硬件環(huán)境下,這些軟件與硬件一般都擁有自己的調(diào)度機(jī)制對(duì)內(nèi)核支持的要求很小,這很適合一些嵌入式系統(tǒng)環(huán)境。作為桌面用戶(hù)我們一般不會(huì)選擇它。

5.網(wǎng)絡(luò)子系統(tǒng)

新的網(wǎng)絡(luò)中斷緩和(NAPI)對(duì)網(wǎng)絡(luò)子系統(tǒng)帶來(lái)了改變,提高了大流量網(wǎng)絡(luò)的性能。Linux內(nèi)核在處理網(wǎng)絡(luò)堆棧時(shí),相比降低系統(tǒng)占用率和高吞吐量更關(guān)注可靠性和低延遲。所以在某些情況下,Linux建立一個(gè)防火墻或者文件、打印、數(shù)據(jù)庫(kù)等企業(yè)級(jí)應(yīng)用的性能可能會(huì)低于相同配置的Windows服務(wù)器。

在傳統(tǒng)的處理網(wǎng)絡(luò)封包的方式中,如下圖藍(lán)色箭頭所描述的,一個(gè)以太網(wǎng)封包到達(dá)網(wǎng)卡接口后,如果MAC地址相符合會(huì)被送到網(wǎng)卡的緩沖區(qū)中。網(wǎng)卡然后將封包移到操作系統(tǒng)內(nèi)核的網(wǎng)絡(luò)緩沖區(qū)中并且對(duì)CPU發(fā)出一個(gè)硬中斷,CPU會(huì)處理這個(gè)封包到相應(yīng)的網(wǎng)絡(luò)堆棧中,可能是一個(gè)TCP端口或者Apache應(yīng)用中。

這是一個(gè)處理網(wǎng)絡(luò)封包的簡(jiǎn)單的流程,但從中我們可以看到這個(gè)處理方式的缺點(diǎn)。正如我們看到的,每次適合網(wǎng)絡(luò)封包到達(dá)網(wǎng)絡(luò)接口都將對(duì)CPU發(fā)出一個(gè)硬中斷信號(hào),中斷CPU正在處理的其他任務(wù),導(dǎo)致切換動(dòng)作和對(duì)CPU緩存的操作。你可能認(rèn)為當(dāng)只有少量的網(wǎng)絡(luò)封包到達(dá)網(wǎng)卡的情況下這并不是個(gè)問(wèn)題,但是千兆網(wǎng)絡(luò)和現(xiàn)代的應(yīng)用將帶來(lái)每秒鐘成千上萬(wàn)的網(wǎng)絡(luò)數(shù)據(jù),這就有可能對(duì)性能造成不良的影響。

按此在新窗口瀏覽圖片


正是因?yàn)檫@個(gè)情況,NAPI在處理網(wǎng)絡(luò)通訊的時(shí)候引入了計(jì)數(shù)機(jī)制。對(duì)第一個(gè)封包,NAPI以傳統(tǒng)的方式進(jìn)行處理,但是對(duì)后面的封包,網(wǎng)卡引入了POLL的輪詢(xún)機(jī)制:如果一個(gè)封包在網(wǎng)卡DMA環(huán)的緩存中,就不再為這個(gè)封包申請(qǐng)新的中斷,直到最后一個(gè)封包被處理或者緩沖區(qū)被耗盡。這樣就有效的減少了因?yàn)檫^(guò)多的中斷CPU對(duì)系統(tǒng)性能的影響。同時(shí),NAPI通過(guò)創(chuàng)建可以被多處理器執(zhí)行的軟中斷改善了系統(tǒng)的可擴(kuò)展性。NAPI將為大量的企業(yè)級(jí)多處理器平臺(tái)帶來(lái)幫助,它要求一個(gè)啟用NAPI的驅(qū)動(dòng)程序。在今天很多驅(qū)動(dòng)程序默認(rèn)沒(méi)有啟用NAPI,這就為我們調(diào)優(yōu)網(wǎng)絡(luò)子系統(tǒng)的性能提供了更廣闊的空間。

6.Linux文件系統(tǒng)

Linux作為一個(gè)開(kāi)源操作系統(tǒng)的優(yōu)勢(shì)之一就是為用戶(hù)提供了多種操作系統(tǒng)的支持?,F(xiàn)代Linux內(nèi)核幾乎可以支持所有計(jì)算機(jī)系統(tǒng)常用的文件系統(tǒng),從基本的FAT到高性能的文件系統(tǒng)例如JFS。因?yàn)镽ed Hat Enterprise Linux主要支持兩種文件系統(tǒng)(ext2和ext3),我們將主要介紹它們的特點(diǎn),對(duì)其他Linux文件系統(tǒng)我們僅做簡(jiǎn)要介紹。

(1)ext2

ext2文件系統(tǒng)是ext3文件系統(tǒng)的前身。是一個(gè)快速、簡(jiǎn)便的文件系統(tǒng),它與目前大部分文件系統(tǒng)的顯著不同就是ext2不支持日志。

(2)ext3,Red Hat默認(rèn)的文件系統(tǒng)

自從Red Hat 7.2開(kāi)始,安裝默認(rèn)的文件系統(tǒng)就是ext3。Ext3是應(yīng)用廣泛的ext2文件系統(tǒng)的更新版本,它加入了對(duì)日志的支持。下面列舉了這個(gè)文件系統(tǒng)的一些特性。
·可用性:ext3可以保證數(shù)據(jù)寫(xiě)入磁盤(pán)的一致性,萬(wàn)一出現(xiàn)了非正常的關(guān)機(jī)(電源的失效或者系統(tǒng)的崩潰),服務(wù)器不需要花費(fèi)時(shí)間去校驗(yàn)數(shù)據(jù)的一致性,因此極大的減少了系統(tǒng)恢復(fù)的時(shí)間。

·數(shù)據(jù)完整性:加入特殊的日志功能,所有數(shù)據(jù),包括文件數(shù)據(jù)和元數(shù)據(jù)都是有日志記錄的。
·速度:通過(guò)data=writeback參數(shù),你可以根據(jù)應(yīng)用的需要來(lái)調(diào)整數(shù)據(jù)的寫(xiě)入速度。
·靈活性:從ext2轉(zhuǎn)換到ext3文件系統(tǒng)是非常簡(jiǎn)單的并且不需要重新格式化硬盤(pán)。通過(guò)執(zhí)行tune2fs命令和編輯/etc/fstab文件,你可以非常容易的將ext2文件系統(tǒng)更新到ext3文件系統(tǒng)。Ext3文件系統(tǒng)也可以禁用日志后作為ext2使用。利用一些第三方的工具軟件可以更靈活的使用ext3文件系統(tǒng),比如PartitionMagic可以編輯ext3分區(qū)。

(3)ReiserFS

ReiserFS是一個(gè)快速的日志文件系統(tǒng),它優(yōu)化了磁盤(pán)空間的使用、加快了故障恢復(fù)速度。今天ReiserFS是SUSE Linux默認(rèn)的文件系統(tǒng)。

(4)JFS

JFS是一個(gè)完全64位的文件系統(tǒng),它可以支持非常大的文件和分區(qū)。JFS是由IBM為AIX系統(tǒng)開(kāi)發(fā)的,現(xiàn)在在GPL license下以及可以使用了。JFS對(duì)大容量的分區(qū)和文件,尤其是HPC和數(shù)據(jù)庫(kù)應(yīng)用來(lái)說(shuō)是一種理想的操作系統(tǒng)。如果你想了解更多關(guān)于JFS的信息,請(qǐng)?jiān)L問(wèn)下面鏈接
http://jfs.

(5)XFS 
XFS是SGI為IRIX系統(tǒng)開(kāi)發(fā)的高性能的日志文件系統(tǒng)。它的特點(diǎn)和應(yīng)用都和JFS相當(dāng)接近。

7.Proc文件系統(tǒng)

proc文件系統(tǒng)不是一個(gè)實(shí)時(shí)文件系統(tǒng),但是它的作用卻非常大。它提供了一個(gè)運(yùn)行中的內(nèi)核的接口,并不存儲(chǔ)實(shí)際的數(shù)據(jù)。Proc文件系統(tǒng)使系統(tǒng)管理員可以監(jiān)控和調(diào)整內(nèi)核運(yùn)行狀態(tài)。下圖描述了一個(gè)proc文件系統(tǒng)的示例,大部分Linux性能調(diào)優(yōu)工具都需要借助proc文件系統(tǒng)的信息來(lái)進(jìn)行工作。

按此在新窗口瀏覽圖片


在proc文件系統(tǒng)中,我們可以看到分別記錄不同信息的多個(gè)子目錄,但是proc目錄下的大部分文件可讀性都不是很強(qiáng),建議最好使用可讀性更強(qiáng)的工具例如vmstat等來(lái)查看proc中記錄的信息。請(qǐng)牢記proc目錄的相應(yīng)目錄結(jié)構(gòu)。

·在/proc目錄下的文件

proc根目錄下保存著一些記錄了系統(tǒng)信息的文件,這些文件你可以通過(guò)vmstat和cpuinfo等工具來(lái)讀取。

·數(shù)字1到X

各個(gè)以數(shù)字為名稱(chēng)的文件夾,代表的是運(yùn)行進(jìn)程的PID。例如,目錄1記錄了init進(jìn)程的一些統(tǒng)計(jì)信息。

·acpiapci是一個(gè)現(xiàn)代桌面和筆記本電腦的電源配置和管理接口,因?yàn)閍pci主要是一個(gè)個(gè)人電腦的技術(shù),所以在一些服務(wù)器系統(tǒng)上經(jīng)常被禁用。可以訪(fǎng)問(wèn)下面鏈接獲得更多acpi的相關(guān)信息http://www.

·bus

這個(gè)子目錄記錄了系統(tǒng)的總線(xiàn)子系統(tǒng)的信息,例如pci總線(xiàn)或者usb接口。

·irq

irq子目錄下記錄了系統(tǒng)的中斷信息。

·net

net子目錄記錄了一些關(guān)于你的網(wǎng)卡的重要信息,比如接收的多點(diǎn)廣播封包或者每個(gè)網(wǎng)卡的路由。

·scsi

scsi子目錄包含了關(guān)于系統(tǒng)的scsi子系統(tǒng)的信息,例如連接的設(shè)備或者驅(qū)動(dòng)的版本。ips子目錄是記錄關(guān)于IBM ServerRAID陣列卡信息的。

·sys

sys目錄下包含了一些可以調(diào)整的內(nèi)核參數(shù)。

·tty

tty子目錄包含了系統(tǒng)虛擬終端的信息。

8.理解Linux調(diào)優(yōu)參數(shù)

在我們介紹Linux系統(tǒng)的各種調(diào)優(yōu)參數(shù)和性能監(jiān)測(cè)工具之前,需要先討論一些關(guān)于性能調(diào)優(yōu)的參數(shù)。因?yàn)長(zhǎng)inux是一個(gè)開(kāi)源操作系統(tǒng),所以又大量可用的性能監(jiān)測(cè)工具。對(duì)這些工具的選擇取決于你的個(gè)人喜好和對(duì)數(shù)據(jù)細(xì)節(jié)的要求。所有的性能監(jiān)測(cè)工具都是按照同樣的規(guī)則來(lái)工作的,所以無(wú)論你使用哪種監(jiān)測(cè)工具都需要理解這些參數(shù)。下面列出了一些重要的參數(shù),有效的理解它們是很有用處的。

(1)處理器參數(shù)

·CPU utilization

這是一個(gè)很簡(jiǎn)單的參數(shù),它直觀的描述了每個(gè)CPU的利用率。在xSeries架構(gòu)中,如果CPU的利用率長(zhǎng)時(shí)間的超過(guò)80%,就可能是出現(xiàn)了處理器的瓶頸。

·Runable processes

這個(gè)值描述了正在準(zhǔn)備被執(zhí)行的進(jìn)程,在一個(gè)持續(xù)時(shí)間里這個(gè)值不應(yīng)該超過(guò)物理CPU數(shù)量的10倍,否則CPU方面就可能存在瓶頸。

·Blocked

描述了那些因?yàn)榈却齀/O操作結(jié)束而不能被執(zhí)行的進(jìn)程,Blocked可能指出你正面臨I/O瓶頸。

·User time

描述了處理用戶(hù)進(jìn)程的百分比,包括nice time。如果User time的值很高,說(shuō)明系統(tǒng)性能用在處理實(shí)際的工作。

·System time

描述了CPU花費(fèi)在處理內(nèi)核操作包括IRQ和軟件中斷上面的百分比。如果system time很高說(shuō)明系統(tǒng)可能存在網(wǎng)絡(luò)或者驅(qū)動(dòng)堆棧方面的瓶頸。一個(gè)系統(tǒng)通常只花費(fèi)很少的時(shí)間去處理內(nèi)核的操作。

·Idle time

描述了CPU空閑的百分比。

·Nice time

描述了CPU花費(fèi)在處理re-nicing進(jìn)程的百分比。

·Context switch

系統(tǒng)中線(xiàn)程之間進(jìn)行交換的數(shù)量。

·Waiting

CPU花費(fèi)在等待I/O操作上的總時(shí)間,與blocked相似,一個(gè)系統(tǒng)不應(yīng)該花費(fèi)太多的時(shí)間在等待I/O操作上,否則你應(yīng)該進(jìn)一步檢測(cè)I/O子系統(tǒng)是否存在瓶頸。

·Interrupts

Interrupts值包括硬Interrupts和軟Interrupts,硬Interrupts會(huì)對(duì)系統(tǒng)性能帶來(lái)更多的不利影響。高的Interrupts值指出系統(tǒng)可能存在一個(gè)軟件的瓶頸,可能是內(nèi)核或者驅(qū)動(dòng)程序。注意Interrupts值中包括CPU時(shí)鐘導(dǎo)致的中斷(現(xiàn)代的xServer系統(tǒng)每秒1000個(gè)Interrupts值)。

(2)內(nèi)存參數(shù)

·Free memory

相比其他操作系統(tǒng),Linux空閑內(nèi)存的值不應(yīng)該做為一個(gè)性能參考的重要指標(biāo),因?yàn)榫拖裎覀冎疤岬竭^(guò)的,Linux內(nèi)核會(huì)分配大量沒(méi)有被使用的內(nèi)存作為文件系統(tǒng)的緩存,所以這個(gè)值通常都比較小。

·Swap usage

這個(gè)值描述了已經(jīng)被使用的swap空間。Swap usage只表示了Linux管理內(nèi)存的有效性。對(duì)識(shí)別內(nèi)存瓶頸來(lái)說(shuō),Swap In/Out才是一個(gè)比較又意義的依據(jù),如果Swap In/Out的值長(zhǎng)期保持在每秒200到300個(gè)頁(yè)面通常就表示系統(tǒng)可能存在內(nèi)存的瓶頸。

·Buffer and cache

這個(gè)值描述了為文件系統(tǒng)和塊設(shè)備分配的緩存。注意在Red Hat Enterprise Linux 3和更早一些的版本中,大部分空閑內(nèi)存會(huì)被分配作為緩存使用。在Red Hat Enterprise Linux 4以后的版本中,你可以通過(guò)修改/proc/sys/vm中的page_cache_tuning來(lái)調(diào)整空閑內(nèi)存中作為緩存的數(shù)量。

·Slabs

描述了內(nèi)核使用的內(nèi)存空間,注意內(nèi)核的頁(yè)面是不能被交換到磁盤(pán)上的。

·Active versus inactive memory

提供了關(guān)于系統(tǒng)內(nèi)存的active內(nèi)存信息,Inactive內(nèi)存是被kswapd守護(hù)進(jìn)程交換到磁盤(pán)上的空間。

(3)網(wǎng)絡(luò)參數(shù)

·Packets received and sent

這個(gè)參數(shù)表示了一個(gè)指定網(wǎng)卡接收和發(fā)送的數(shù)據(jù)包的數(shù)量。

·Bytes received and sent

這個(gè)參數(shù)表示了一個(gè)指定網(wǎng)卡接收和發(fā)送的數(shù)據(jù)包的字節(jié)數(shù)。

·Collisions per second

這個(gè)值提供了發(fā)生在指定網(wǎng)卡上的網(wǎng)絡(luò)沖突的數(shù)量。持續(xù)的出現(xiàn)這個(gè)值代表在網(wǎng)絡(luò)架構(gòu)上出現(xiàn)了瓶頸,而不是在服務(wù)器端出現(xiàn)的問(wèn)題。在正常配置的網(wǎng)絡(luò)中沖突是非常少見(jiàn)的,除非用戶(hù)的網(wǎng)絡(luò)環(huán)境都是由hub組成。

·Packets dropped

這個(gè)值表示了被內(nèi)核丟掉的數(shù)據(jù)包數(shù)量,可能是因?yàn)榉阑饓蛘呤蔷W(wǎng)絡(luò)緩存的缺乏。

·Overruns

Overruns表達(dá)了超出網(wǎng)絡(luò)接口緩存的次數(shù),這個(gè)參數(shù)應(yīng)該和packets dropped值聯(lián)系到一起來(lái)判斷是否存在在網(wǎng)絡(luò)緩存或者網(wǎng)絡(luò)隊(duì)列過(guò)長(zhǎng)方面的瓶頸。

·Errors

這個(gè)值記錄了標(biāo)志為失敗的幀的數(shù)量。這個(gè)可能由錯(cuò)誤的網(wǎng)絡(luò)配置或者部分網(wǎng)線(xiàn)損壞導(dǎo)致,在銅口千兆以太網(wǎng)環(huán)境中部分網(wǎng)線(xiàn)的損害是影響性能的一個(gè)重要因素。

(4)塊設(shè)備參數(shù)

·Iowait

CPU等待I/O操作所花費(fèi)的時(shí)間。這個(gè)值持續(xù)很高通常可能是I/O瓶頸所導(dǎo)致的。

·Average queue length

I/O請(qǐng)求的數(shù)量,通常一個(gè)磁盤(pán)隊(duì)列值為2到3為最佳情況,更高的值說(shuō)明系統(tǒng)可能存在I/O瓶頸。

·Average wait

響應(yīng)一個(gè)I/O操作的平均時(shí)間。Average wait包括實(shí)際I/O操作的時(shí)間和在I/O隊(duì)列里等待的時(shí)間。

·Transfers per second

描述每秒執(zhí)行多少次I/O操作(包括讀和寫(xiě))。Transfers per second的值與kBytes per second結(jié)合起來(lái)可以幫助你估計(jì)系統(tǒng)的平均傳輸塊大小,這個(gè)傳輸塊大小通常和磁盤(pán)子系統(tǒng)的條帶化大小相符合可以獲得最好的性能。

·Blocks read/write per second

這個(gè)值表達(dá)了每秒讀寫(xiě)的blocks數(shù)量,在2.6內(nèi)核中blocks是1024bytes,在早些的內(nèi)核版本中blocks可以是不同的大小,從512bytes到4kb。

·Kilobytes per second read/write

按照kb為單位表示讀寫(xiě)塊設(shè)備的實(shí)際數(shù)據(jù)的數(shù)量。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多