![Linux服務(wù)器性能調(diào)整教學(xué)提綱_第1頁(yè)](http://file4.renrendoc.com/view/cf55785ba79512305684b257b0c4a60b/cf55785ba79512305684b257b0c4a60b1.gif)
![Linux服務(wù)器性能調(diào)整教學(xué)提綱_第2頁(yè)](http://file4.renrendoc.com/view/cf55785ba79512305684b257b0c4a60b/cf55785ba79512305684b257b0c4a60b2.gif)
![Linux服務(wù)器性能調(diào)整教學(xué)提綱_第3頁(yè)](http://file4.renrendoc.com/view/cf55785ba79512305684b257b0c4a60b/cf55785ba79512305684b257b0c4a60b3.gif)
![Linux服務(wù)器性能調(diào)整教學(xué)提綱_第4頁(yè)](http://file4.renrendoc.com/view/cf55785ba79512305684b257b0c4a60b/cf55785ba79512305684b257b0c4a60b4.gif)
![Linux服務(wù)器性能調(diào)整教學(xué)提綱_第5頁(yè)](http://file4.renrendoc.com/view/cf55785ba79512305684b257b0c4a60b/cf55785ba79512305684b257b0c4a60b5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Good is good, but better carries it.精益求精,善益求善。Linux服務(wù)器性能調(diào)整Linux服務(wù)器性能調(diào)整(美)SandraK.JohnsonGerritHuizengaBadariPulavarty著韓智文譯北京AuthorizedtranslationfromtheEnglishlanguageedition,entitledPerformanceTuningforLinuxServers,9780137136285bySandraK.Johnson,GerritHuizenga,BadariPulavarty,publishedbyPearsonEduc
2、ation,Inc,publishingasIBMPress,Copyright2005.Allrightsreserved.Nopartofthisbookmaybereproducedortransmittedinanyformorbyanymeans,electronicormechanical,includingphotocopying,recordingorbyanyinformationstorageretrievalsystem,withoutpermissionfromPearsonEducation,Inc.CHINESESIMPLIFIEDlanguageeditionpu
3、blishedbyPEARSONEDUCATIONASIALTD.,andTSINGHUAUNIVERSITYPRESSCopyright2009.北京市版權(quán)局著作權(quán)合同登記號(hào)圖字:01-本書(shū)封面貼有PearsonEducation(培生教育出版集團(tuán))防偽標(biāo)簽,無(wú)標(biāo)簽者不得銷售。版權(quán)所有,侵權(quán)必究。侵權(quán)舉報(bào)電話:010-6278298913701121933圖書(shū)在版編目(CIP)數(shù)據(jù)Linux服務(wù)器性能調(diào)整/(美)約翰遜(Johnson,S.K.),(美)威曾格(HuizengaG.),(美)普拉瓦提(Pulavarty,B.)著;韓智文譯.北京:清華大學(xué)出版社,2009.8書(shū)名原文:Perf
4、ormanceTuningforLinuxServersISBN978-7-302-20739-9I.L.約威普韓.Linux操作系統(tǒng).TP316.89中國(guó)版本圖書(shū)館CIP數(shù)據(jù)核字(2009)第111077號(hào)責(zé)任編輯:王軍于平裝幀設(shè)計(jì):孔祥豐責(zé)任校對(duì):成鳳進(jìn)責(zé)任印制:出版發(fā)行:清華大學(xué)出版社地址:北京清華大學(xué)學(xué)研大廈A座郵編:100084社總機(jī)購(gòu)稿與讀者服務(wù)c-service質(zhì)量反饋zhiliang印刷者:裝訂者:經(jīng)銷:全國(guó)新華書(shū)店開(kāi)本:185260印張:27.5字?jǐn)?shù):669千字版次
5、:2009年8月第1版印次:2009年8月第1次印刷印數(shù):14000定價(jià):58.00元本書(shū)如存在文字不清、漏印、缺頁(yè)、倒頁(yè)、脫頁(yè)等印裝質(zhì)量問(wèn)題,請(qǐng)與清華大學(xué)出版社出版部聯(lián)系調(diào)換。聯(lián)系電話3103產(chǎn)品編號(hào):主要內(nèi)容:本書(shū)是優(yōu)化Linux系統(tǒng)和應(yīng)用程序性能的必備指南。從華爾街到好萊塢,在Linux操作系統(tǒng)上運(yùn)行著世界上大量最重要的商業(yè)系統(tǒng)。Linux的性能現(xiàn)在會(huì)對(duì)整個(gè)企業(yè)產(chǎn)生影響。在本書(shū)中,IBM公司經(jīng)驗(yàn)最豐富的Linux性能專家團(tuán)隊(duì)將介紹如何發(fā)現(xiàn)瓶頸、測(cè)量性能并確定有效的優(yōu)化措施。本書(shū)不僅涉及到內(nèi)核調(diào)整,還展示對(duì)運(yùn)行于Linux之上的真實(shí)應(yīng)用程序和數(shù)據(jù)庫(kù)的端到端性能加
6、以優(yōu)化的技術(shù)。在全書(shū)中,作者給出了建立在當(dāng)今最流行的企業(yè)級(jí)Linux平臺(tái)基于Intel的RedHatEnterpriseLinux以及NovellSUSELinuxEnterpriseServer之上的真實(shí)示例。這些示例簡(jiǎn)單明晰,易改編用于當(dāng)代的各種Linux環(huán)境。通過(guò)本書(shū),將可以學(xué)習(xí)以下內(nèi)容:安裝和配置Linux以便達(dá)到最高性能為用戶的Linux環(huán)境評(píng)估并選擇適當(dāng)?shù)挠布w系結(jié)構(gòu)理解Linux2.4至2.6版本的內(nèi)核:組件、性能問(wèn)題以及優(yōu)化可能性掌握Linux性能調(diào)整的核心原則和策略利用免費(fèi)的開(kāi)源工具進(jìn)行測(cè)量、監(jiān)控、系統(tǒng)跟蹤以及基準(zhǔn)測(cè)試對(duì)性能數(shù)據(jù)加以解讀,以便分析Linux服務(wù)器的真實(shí)行為優(yōu)化
7、Linux系統(tǒng)的調(diào)度器、內(nèi)存、I/O、文件系統(tǒng)和網(wǎng)絡(luò)對(duì)運(yùn)行商業(yè)工作負(fù)荷的Web、文件、數(shù)據(jù)庫(kù),及應(yīng)用服務(wù)器進(jìn)行調(diào)優(yōu)預(yù)測(cè)調(diào)整參數(shù)或配置信息的變化所產(chǎn)生的影響調(diào)整Linux代碼:對(duì)設(shè)計(jì)、定時(shí)、套接字、線程、同步等問(wèn)題加以優(yōu)化針對(duì)最高性能設(shè)計(jì)系統(tǒng)架構(gòu):SMP擴(kuò)展、集群方法及拓?fù)浣Y(jié)構(gòu)將內(nèi)核與應(yīng)用的調(diào)整集成到端到端的系統(tǒng)優(yōu)化方案之中無(wú)論對(duì)于管理員、開(kāi)發(fā)人員、集成人員還是咨詢顧問(wèn)來(lái)說(shuō),本書(shū)都有助于最大化所運(yùn)行的每個(gè)Linux系統(tǒng)和應(yīng)用程序的性能及價(jià)值。作者簡(jiǎn)介SandraK.Johnson博士是一名擁有16年經(jīng)驗(yàn)的高級(jí)技術(shù)人員。她的研究領(lǐng)域涉及cache一致性協(xié)議、存儲(chǔ)子系統(tǒng)、并行I/O子系統(tǒng)、Java服
8、務(wù)器以及Linux領(lǐng)域的工作負(fù)荷描述與性能分析。她是IBMLinux技術(shù)中心的Linux性能架構(gòu)師,目前是IBM系統(tǒng)與技術(shù)事業(yè)部的全球中小型企業(yè)部門(mén)的首席技術(shù)官。GerritHuizenga是IBM俄勒岡州比弗頓Linux技術(shù)中心的Linux基礎(chǔ)技術(shù)(LinuxBaseTechnologies)的軟件工程師和架構(gòu)師。Gerrit已經(jīng)致力于架構(gòu)、設(shè)計(jì)和實(shí)現(xiàn)操作系統(tǒng)的能力達(dá)20余年,重點(diǎn)關(guān)注性能、可擴(kuò)展性、標(biāo)準(zhǔn)和安全。在為IBMLinux技術(shù)中心工作之前,Gerrit是SequentComputerSystems公司的操作系統(tǒng)首席專家。BadariPulavarty是IBM俄勒岡州比弗頓Linux
9、技術(shù)中心的高級(jí)工程師;具有15年開(kāi)發(fā)UNIX操作系統(tǒng)的經(jīng)驗(yàn);主要研究領(lǐng)域是Linux在VM、I/O、文件系統(tǒng)和存儲(chǔ)子系統(tǒng)方面的性能問(wèn)題。前言廉價(jià)的硬件、運(yùn)行的高穩(wěn)定性以及不懈的技術(shù)開(kāi)發(fā)造就了Linux(開(kāi)源)操作系統(tǒng)的不斷發(fā)展。Linux最常見(jiàn)的用途是充當(dāng)Web服務(wù)器。當(dāng)前,它可以提供眾多企業(yè)級(jí)服務(wù),如電子郵件、防火墻、代理、網(wǎng)關(guān)、數(shù)據(jù)庫(kù)、應(yīng)用程序、文件服務(wù)器、打印等。在更高端的企業(yè)服務(wù)器領(lǐng)域,Linux也即將成為一種具有競(jìng)爭(zhēng)力的操作系統(tǒng)。主要的華爾街公司、電影制作公司以及其他眾多企業(yè)都在轉(zhuǎn)向使用Linux以滿足其對(duì)企業(yè)服務(wù)器的需求。隨著服務(wù)器的部署日益增多,服務(wù)器操作系統(tǒng)的性能已成為系統(tǒng)整體
10、效率的決定因素,并將會(huì)影響到所有用戶。雖然使用更新更快的服務(wù)器來(lái)替換整個(gè)服務(wù)器也是一種解決方案,但更合適的辦法常常是只替換或添加必需的組件而使其他組件保持不變。系統(tǒng)性能低下的原因多源于個(gè)別硬件子系統(tǒng)中存在著瓶頸、操作系統(tǒng)配置不當(dāng)或者應(yīng)用程序缺少性能優(yōu)化等問(wèn)題。提高性能的關(guān)鍵是要理解系統(tǒng)中有哪些可用的軟硬件配置選項(xiàng),理解性能工具及其用法,對(duì)利用這些工具獲取的結(jié)果進(jìn)行分析并對(duì)系統(tǒng)進(jìn)行適當(dāng)調(diào)整,從而對(duì)服務(wù)器性能產(chǎn)生正面影響。本書(shū)提供了理解和改善Linux服務(wù)器性能所需的基本知識(shí)和技能。由Linux專業(yè)人員編寫(xiě),并基于大家共同的實(shí)際經(jīng)驗(yàn),描述了Linux性能監(jiān)控、評(píng)估、測(cè)量和分析的方法以及Linux服
11、務(wù)器的調(diào)優(yōu)方法。還討論了對(duì)基于Intel硬件平臺(tái)以及Linux操作系統(tǒng)運(yùn)行的商業(yè)服務(wù)器應(yīng)用程序的性能加以改進(jìn)和優(yōu)化的方法。本書(shū)中采用的是簡(jiǎn)單易懂的漸進(jìn)式性能調(diào)優(yōu)方法。首先介紹Linux內(nèi)核的有關(guān)知識(shí),然后討論Linux服務(wù)器、性能工具和調(diào)優(yōu)技術(shù),之后介紹Linux服務(wù)器的性能特征,并給出稍加改動(dòng)就可適用于各種情形的調(diào)優(yōu)示例。本書(shū)中的論述主要基于兩種Linux版本:RedHatEnterpriseLinux和NovelSUSELinuxEnterpriseServer。另外,假定服務(wù)器基礎(chǔ)硬件為基于Intel的平臺(tái),這是因?yàn)檫@種硬件平臺(tái)在Linux社區(qū)中得到普遍使用。但Linux服務(wù)器的性能調(diào)優(yōu)
12、機(jī)制也很容易移植到其他平臺(tái)上。服務(wù)器的具體應(yīng)用包括Web服務(wù)器、文件和打印服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器、網(wǎng)絡(luò)管理服務(wù)器以及Web應(yīng)用服務(wù)器等。本書(shū)中涉及到的相關(guān)討論和示例都基于Linux2.4、2.5和2.6內(nèi)核。本書(shū)由5部分構(gòu)成:“Linux概述”、“性能分析工具”、“系統(tǒng)調(diào)優(yōu)”、“Linux服務(wù)器應(yīng)用的性能特征”與“調(diào)優(yōu)案例分析”。第部分“Linux概述”簡(jiǎn)述了與Linux安裝以及Linux內(nèi)核和服務(wù)器體系結(jié)構(gòu)相關(guān)的問(wèn)題。第部分“性能分析工具”詳細(xì)介紹了與3個(gè)領(lǐng)域相關(guān)的性能工具:系統(tǒng)性能和監(jiān)控、系統(tǒng)跟蹤以及基準(zhǔn)測(cè)試。第部分“系統(tǒng)調(diào)優(yōu)”討論了性能調(diào)優(yōu)的原則與策略,還討論了調(diào)度器、內(nèi)存、I/O、文件系
13、統(tǒng)以及網(wǎng)絡(luò)和代碼的調(diào)優(yōu)機(jī)制。第部分“Linux服務(wù)器應(yīng)用的性能特征”描述了服務(wù)器應(yīng)用程序的性能特征,包括影響其性能的潛在因素。還給出了關(guān)于Web、文件、數(shù)據(jù)庫(kù)和應(yīng)用程序服務(wù)器的討論。第部分“調(diào)優(yōu)案例分析”給出了大量示例來(lái)闡釋如何將前述各部分中的所有工作加以集成,從而實(shí)施一個(gè)包含各種場(chǎng)景的調(diào)優(yōu)方案。所提供的案例分析包括調(diào)度器、I/O、文件系統(tǒng)以及網(wǎng)絡(luò)和商業(yè)工作負(fù)荷的調(diào)優(yōu)。本書(shū)的附錄中討論了許多可調(diào)優(yōu)的內(nèi)核參數(shù),并闡述了使用sysctl、/proc和sysfs接口來(lái)調(diào)優(yōu)Linux內(nèi)核的方法。目錄第部分Linux概述第1章Linux系統(tǒng)安裝的性能問(wèn)題31.1引言31.2安裝前的規(guī)劃31.2.1選擇分
14、區(qū)位置41.2.2使用多個(gè)硬盤(pán)驅(qū)動(dòng)器41.2.3選擇文件系統(tǒng)41.2.4轉(zhuǎn)換文件系統(tǒng)51.2.5配置RAID61.3Linux2.6內(nèi)核的可配置屬性81.3.1I/O提升器81.3.2超大TLB頁(yè)面支持81.4Linux日志工具91.4.1/var/log/messages文件91.4.2/var/log/XFree86.0.log文件91.4.3日志輪轉(zhuǎn)101.4.4日志工具101.4.5日志定制101.5BSD與系統(tǒng)V的初始化機(jī)制111.5.1初始化表(/etc/inittab)111.5.2BSD的初始化表(Slackware)121.5.3系統(tǒng)V的初始化表(RedHat)131.6小結(jié)
15、141.7參考文獻(xiàn)14第2章Linux內(nèi)核機(jī)制152.1引言152.2Linux的發(fā)展歷程152.3Linux內(nèi)核體系結(jié)構(gòu)152.3.1內(nèi)核的職能162.3.2內(nèi)核組織結(jié)構(gòu)與模塊162.3.3內(nèi)核服務(wù)162.3.4/proc文件系統(tǒng)的外部性能視圖162.3.5內(nèi)存管理172.4進(jìn)程管理182.4.1進(jìn)程、任務(wù)與內(nèi)核線程192.4.2調(diào)度與上下文切換192.5進(jìn)程間通信202.5.1信號(hào)202.5.2管道202.5.3系統(tǒng)V的IPC機(jī)制212.6Linux對(duì)稱多處理(SMP)模型222.6.1多處理系統(tǒng)類型222.6.2同步與數(shù)據(jù)串行化222.6.3鎖、鎖粒度與鎖開(kāi)銷222.6.4cache一致
16、性232.6.5處理器親和度232.7文件系統(tǒng)232.7.1虛擬文件系統(tǒng)(VFS)232.7.2ext2fs232.7.3LVM與RAID242.7.4磁盤(pán)卷組242.7.5設(shè)備相關(guān)文件252.7.6devfs252.8Linux2.6內(nèi)核的新特性262.9小結(jié)262.10參考文獻(xiàn)27第3章服務(wù)器體系結(jié)構(gòu)293.1引言293.2Linux服務(wù)器293.3多處理器與多處理機(jī)制303.3.1服務(wù)器拓?fù)浣Y(jié)構(gòu)303.3.2處理器的混用機(jī)制313.4內(nèi)存323.5I/O333.6Linux企業(yè)級(jí)服務(wù)器343.7Linux集群353.7.1高性能集群353.7.2高可用集群363.8服務(wù)器系統(tǒng)示例363.
17、8.1IBMzSeries大型機(jī)363.8.2刀片服務(wù)器393.8.3NUMA393.9小結(jié)44第部分性能分析工具第4章系統(tǒng)性能監(jiān)控474.1引言474.2Linux與性能分析的背景知識(shí)474.3CPU利用率494.3.1vmstat514.3.2top與gtop工具534.3.3sar544.4內(nèi)存利用率564.4.1/proc/meminfo與/proc/slabinfo564.4.2ps574.4.3vmstat594.5I/O利用率594.5.1iostat614.5.2sar624.6網(wǎng)絡(luò)利用率634.6.1網(wǎng)絡(luò)統(tǒng)計(jì)信息644.6.2接口信息664.6.3TCP/IP協(xié)議統(tǒng)計(jì)數(shù)據(jù)66
18、4.6.4nfsstat674.7小結(jié)674.8參考文獻(xiàn)67第5章系統(tǒng)跟蹤工具695.1引言695.2系統(tǒng)跟蹤機(jī)制的需求695.3top705.4strace725.5OProfile745.5.1opcontrol755.5.2數(shù)據(jù)概況描述工具765.6PerformanceInspector825.6.1AboveIdle835.6.2Per-ThreadTime845.6.3TraceProfiling865.6.4指令跟蹤895.6.5JavaProfiler915.6.6JavaLockMonitor1035.6.7PerformanceInspector的執(zhí)行工具1065.7小結(jié)1
19、075.8參考文獻(xiàn)107第6章工作負(fù)荷的性能基準(zhǔn)測(cè)試1096.1引言1096.2改進(jìn)工作負(fù)荷的基準(zhǔn)測(cè)試方法1106.3基準(zhǔn)測(cè)試的類型1116.4微基準(zhǔn)測(cè)試1116.4.1操作系統(tǒng)基準(zhǔn)測(cè)試1116.4.2磁盤(pán)基準(zhǔn)測(cè)試1246.4.3網(wǎng)絡(luò)基準(zhǔn)測(cè)試1326.4.4應(yīng)用基準(zhǔn)測(cè)試1336.5Web服務(wù)器基準(zhǔn)測(cè)試1376.5.1SPECweb、SPECwebSSL與TPC-W1376.5.2SPECjAppServer與ECPerf1386.5.3其他應(yīng)用基準(zhǔn)測(cè)試1396.6小結(jié)139第部分系統(tǒng)調(diào)優(yōu)第7章系統(tǒng)性能原理和策略:基準(zhǔn)測(cè)試方法的案例分析1437.1引言1437.2性能評(píng)價(jià)方法1437.2.1跟蹤
20、機(jī)制1437.2.2工作負(fù)荷特征描述1447.2.3數(shù)值分析1447.2.4模擬方法1447.3基準(zhǔn)測(cè)試案例分析1447.4分析方法1457.4.1軟硬件配置1457.4.2運(yùn)行規(guī)則1467.4.3設(shè)置目標(biāo)1467.4.4測(cè)量、分析與調(diào)優(yōu)1467.4.5退出策略1477.5基準(zhǔn)測(cè)試程序1487.5.1基準(zhǔn)測(cè)試程序介紹1487.5.2性能結(jié)果1497.6小結(jié)1517.7致謝1527.8參考文獻(xiàn)152第8章調(diào)度器調(diào)優(yōu)1538.1引言1538.2單處理器系統(tǒng)1538.3對(duì)稱多處理1548.4非一致內(nèi)存訪問(wèn)1548.5對(duì)稱多線程1558.6Linux2.6內(nèi)核調(diào)度器1558.7負(fù)載平衡1568.8調(diào)度
21、器的可調(diào)參數(shù)1578.8.1*CHILD_PENALTY1578.8.2*CREDIT_LIMIT1578.8.3*EXIT_WEIGHT1578.8.4*INTERACTIVE_DELTA1578.8.5*MAX_SLEEP_AVG1588.8.6*MAX_TIMESLICE1588.8.7*MIN_TIMESLICE1588.8.8*PARENT_PENALTY1588.8.9*PRIO_BONUS_RATIO1588.8.10*STARVATION_LIMIT1588.9小結(jié)1598.10參考文獻(xiàn)159第9章Linux虛存的性能問(wèn)題1619.1引言1619.2內(nèi)存與地址空間1629.2.
22、1地址空間1629.2.2用戶地址空間1629.2.3VM區(qū)域1639.2.4內(nèi)核地址空間1649.3高端內(nèi)存支持1659.4分頁(yè)與交換機(jī)制1659.4.1替換策略1669.4.2頁(yè)面替換與內(nèi)存平衡1679.5Linux頁(yè)表1679.6Linux2.6內(nèi)核中的新特性1699.6.1rmap與objrmap1699.6.2大型頁(yè)面的支持1699.6.3頁(yè)面分配與替換1709.6.4Slab分配器1719.6.5VM的可調(diào)參數(shù)1719.6.6CPU調(diào)度器1739.7小結(jié)1759.8參考文獻(xiàn)175第10章I/O子系統(tǒng)的性能問(wèn)題17710.1引言17710.2I/O調(diào)度與塊I/O(BIO)層17710
23、.2.1Linux2.6內(nèi)核的I/O調(diào)度器17810.2.2Linux2.4內(nèi)核的I/O調(diào)度器17910.2.3Linux2.6內(nèi)核的最終期限I/O調(diào)度器17910.2.4調(diào)度器的可調(diào)參數(shù)18010.2.5Linux2.6內(nèi)核的AnticipatoryI/O調(diào)度器18110.2.6Linux2.6內(nèi)核的CFQ調(diào)度器18310.2.7Linux2.6內(nèi)核的noopI/O調(diào)度器18310.2.8I/O調(diào)度器的性能含義18310.3批量讀寫(xiě)請(qǐng)求18410.4讀預(yù)測(cè)啟發(fā)算法18410.5影響性能的I/O部件18510.6I/O設(shè)備尋址18610.7小結(jié)18610.8參考文獻(xiàn)186第11章文件系統(tǒng)調(diào)優(yōu)1
24、8911.1引言18911.2文件系統(tǒng)基本知識(shí)18911.2.1文件系統(tǒng)的實(shí)現(xiàn)考慮18911.2.2創(chuàng)建優(yōu)化的文件系統(tǒng)19011.2.3文件系統(tǒng)基本術(shù)語(yǔ)19011.3日志型文件系統(tǒng)19211.3.1文件系統(tǒng)的故障處理機(jī)制19311.3.2事務(wù)機(jī)制19311.3.3選項(xiàng)19411.4影響文件系統(tǒng)性能的磁盤(pán)因素19511.4.1物理磁盤(pán)存儲(chǔ)器的考慮事項(xiàng)19511.4.2磁盤(pán)的性能特征19611.4.3傳輸速率19611.4.4hdparm19711.5文件系統(tǒng)的碎片整理19911.6文件同步19911.6.1確保數(shù)據(jù)或文件完整性20011.6.2使用函數(shù)調(diào)用20011.6.3使用文件描述符2001
25、1.6.4sync/fsync的性能含義20111.7bdflush參數(shù)20111.8異步輸入與輸出20211.8.1使用異步I/O20211.8.2異步I/O函數(shù)20211.9原始磁盤(pán)I/O20311.9.1在Linux上設(shè)置原始I/O20311.9.2示例20311.10Ext2與Ext3文件系統(tǒng)20411.10.1Ext2的組織結(jié)構(gòu)20411.10.2Ext2文件系統(tǒng)中的塊分配方式20611.10.3創(chuàng)建Ext2文件系統(tǒng)20611.10.4Ext2文件系統(tǒng)的Ext3擴(kuò)展機(jī)制20711.10.5Ext3的內(nèi)核配置支持20711.10.6Ext3文件系統(tǒng)調(diào)優(yōu)方法20811.10.7創(chuàng)建Ext
26、3分區(qū)20811.10.8Ext2與Ext3的轉(zhuǎn)換20911.10.9建立外部日志20911.10.10Ext2/Ext3工具20911.11ReiserFS21011.11.1ReiserFS的內(nèi)核配置支持21111.11.2ReiserFS文件系統(tǒng)調(diào)優(yōu)方法21111.11.3創(chuàng)建ReiserFS文件系統(tǒng)21111.11.4建立外部日志21211.11.5掛接ReiserFS文件系統(tǒng)21211.11.6掛接選項(xiàng)21311.11.7調(diào)優(yōu)ReiserFS21311.11.8ReiserFS文件系統(tǒng)實(shí)用工具21411.12日志式文件系統(tǒng)21411.12.1JFS的內(nèi)核配置支持21511.12.2J
27、FS文件系統(tǒng)的調(diào)優(yōu)方法21511.12.3創(chuàng)建JFS文件系統(tǒng)21611.12.4建立外部日志21611.12.5掛接文件系統(tǒng)21611.12.6掛接選項(xiàng)21611.12.7調(diào)優(yōu)JFS21711.12.8JFS文件系統(tǒng)實(shí)用工具21711.13下一代文件系統(tǒng)21711.13.1XFS的內(nèi)核配置支持21811.13.2XFS文件系統(tǒng)的調(diào)優(yōu)方法21811.13.3創(chuàng)建XFS文件系統(tǒng)21911.13.4容量飽和時(shí)的文件系統(tǒng)行為21911.13.5建立外部日志21911.13.6掛接文件系統(tǒng)22011.13.7掛接選項(xiàng)22011.13.8調(diào)優(yōu)XFS22011.13.9XFS文件系統(tǒng)實(shí)用工具22111.14
28、小結(jié)22211.15參考文獻(xiàn)223第12章網(wǎng)絡(luò)調(diào)優(yōu)22512.1引言22512.2網(wǎng)絡(luò)協(xié)議棧22512.3內(nèi)核參數(shù)調(diào)優(yōu)機(jī)制22612.4內(nèi)核自動(dòng)調(diào)優(yōu)機(jī)制22612.5核心內(nèi)核參數(shù)22712.6TCP/IPv4協(xié)議內(nèi)核參數(shù)22812.6.1TCP緩沖區(qū)與內(nèi)存管理22812.6.2TCP選項(xiàng)23012.6.3TCP連接管理23112.6.4TCP連接保持管理23212.6.5IP端口范圍23312.7小結(jié)23312.8參考文獻(xiàn)233第13章進(jìn)程間通信23513.1引言23513.2進(jìn)程間通信的定義23513.3LinuxSysV的IPC資源與ipcs命令23613.3.1ipcs命令23613.3
29、.2IPC標(biāo)識(shí)符及其限制23713.4信號(hào)量參數(shù)23813.4.1semmni23813.4.2semmns23913.4.3semmsl23913.4.4semopm23913.4.5semvmx23913.4.6未用的信號(hào)量參數(shù)23913.5消息隊(duì)列參數(shù)24013.5.1msgmni24013.5.2msgmax24013.5.3msgmnb24113.5.4未用的消息隊(duì)列參數(shù)24113.6共享內(nèi)存段參數(shù)24113.6.1shmmni24213.6.2shmmax24213.6.3shmmin24213.6.4shmall24213.7可配置IPC參數(shù)的動(dòng)態(tài)修改機(jī)制24213.7.1使用/
30、proc24213.7.2使用sysctl24313.8IPC參數(shù)的靜態(tài)配置24313.9管道機(jī)制24313.10小結(jié)244第14章代碼調(diào)優(yōu)24514.1引言24514.2一般原則24514.3應(yīng)用的概要描述工具24614.4編譯器選項(xiàng)調(diào)優(yōu)24614.4.1性能調(diào)優(yōu)的基本步驟24714.4.2編譯器優(yōu)化的問(wèn)題24714.5代碼調(diào)優(yōu)24714.6算法設(shè)計(jì)調(diào)優(yōu)24814.6.1問(wèn)題與解決方案的可能性24814.6.2問(wèn)題描述24814.6.3程序24914.6.4設(shè)計(jì)代碼25114.6.5服務(wù)器25114.6.6計(jì)時(shí)25214.6.7Socket25314.6.8線程25614.6.9同步2591
31、4.6.10文件I/O26214.6.11客戶端26414.6.12代碼討論26614.6.13編譯選項(xiàng)26614.6.14鏈接庫(kù)26714.7小結(jié)268第部分Linux服務(wù)器應(yīng)用的性能特征第15章Web服務(wù)器的性能調(diào)優(yōu)27115.1引言27115.2HTTP請(qǐng)求與響應(yīng)27215.3Web服務(wù)器的網(wǎng)絡(luò)行為27315.4Web服務(wù)器事務(wù)27515.5Web服務(wù)器模型27515.6Web服務(wù)器的調(diào)優(yōu)方法27615.6.1Web服務(wù)器的通用調(diào)優(yōu)機(jī)制27715.6.2Apache服務(wù)器的調(diào)優(yōu)機(jī)制27715.6.3Flash與事件驅(qū)動(dòng)的其他服務(wù)器的調(diào)優(yōu)機(jī)制27815.6.4Tux的調(diào)優(yōu)機(jī)制27815.6
32、.5Web服務(wù)器的性能評(píng)價(jià)工具27815.7小結(jié)27915.8參考文獻(xiàn)279第16章文件與打印服務(wù)器的性能調(diào)優(yōu)28116.1引言28116.2專用網(wǎng)絡(luò)存儲(chǔ)服務(wù)器的類型28216.3網(wǎng)絡(luò)存儲(chǔ)性能的優(yōu)化方法28216.3.1確定遠(yuǎn)程存儲(chǔ)的數(shù)據(jù)28216.3.2SAN與網(wǎng)絡(luò)文件系統(tǒng)/NAS28216.3.3網(wǎng)絡(luò)文件系統(tǒng)協(xié)議28316.3.4客戶與服務(wù)器的實(shí)現(xiàn)選擇28616.3.5Linux客戶端調(diào)優(yōu)的關(guān)鍵概念28716.3.6Linux文件服務(wù)器的調(diào)優(yōu)機(jī)制29016.3.7性能測(cè)量29216.3.8改進(jìn)容量規(guī)劃的負(fù)荷測(cè)量方法29216.3.9打印服務(wù)器的性能因素29316.4參考文獻(xiàn)293第17章數(shù)
33、據(jù)庫(kù)服務(wù)器的性能調(diào)優(yōu)29517.1引言29517.2數(shù)據(jù)庫(kù)體系結(jié)構(gòu)29517.3數(shù)據(jù)庫(kù)的性能調(diào)優(yōu)領(lǐng)域29617.3.1I/O調(diào)優(yōu)29617.3.2隊(duì)列長(zhǎng)度與響應(yīng)時(shí)間29617.3.3負(fù)載平衡29717.3.4全局內(nèi)存29817.3.5日志設(shè)備29917.3.6典型的數(shù)據(jù)庫(kù)工作負(fù)荷30017.4進(jìn)程管理30017.5內(nèi)存管理30117.6I/O管理30217.6.1回彈緩沖區(qū)30217.6.2原始I/O30217.6.3向量I/O30317.6.4異步I/O30317.6.5直接I/O30317.6.6塊I/O30417.6.7I/O請(qǐng)求鎖30417.7小結(jié)304第18章應(yīng)用服務(wù)器的性能調(diào)優(yōu)30
34、518.1引言30518.2應(yīng)用服務(wù)器概念30518.3Java、J2EE與應(yīng)用服務(wù)器30518.4應(yīng)用服務(wù)器的性能特征30718.4.1應(yīng)用服務(wù)器的特征30818.4.2Linux上的應(yīng)用服務(wù)器30818.5性能與高可用性的改進(jìn)31618.5.1SMP擴(kuò)展性31618.5.2集群31718.5.3拓?fù)浣Y(jié)構(gòu)31918.5.4性能調(diào)優(yōu)32218.6小結(jié)32418.7參考文獻(xiàn)325第部分調(diào)優(yōu)案例分析第19章Linux2.6內(nèi)核I/O調(diào)度器調(diào)優(yōu)案例分析32919.1引言32919.2基準(zhǔn)測(cè)試環(huán)境與工作負(fù)荷概況33019.3I/O調(diào)度器與性能33119.4單CPU單磁盤(pán)配置33119.58路RAID-
35、5配置33219.616路RAID-0配置33519.7AS串行讀性能33519.8AS與Deadline的性能33619.9CFQ性能33719.10小結(jié)33919.11參考文獻(xiàn)339第20章文件系統(tǒng)調(diào)優(yōu)實(shí)例分析34120.1引言34120.2文件布局分析34120.2.1Ext2/Ext3文件系統(tǒng)布局34120.2.2日志文件系統(tǒng)(JFS)布局34720.2.3ReiserFS文件系統(tǒng)布局34920.2.4XFS文件系統(tǒng)布局35120.3文件系統(tǒng)的調(diào)優(yōu)機(jī)制35320.3.1Ext3的外部日志調(diào)優(yōu)選項(xiàng)35320.3.2ReiserFS的外部日志調(diào)優(yōu)選項(xiàng)35720.3.3JFS的外部日志調(diào)優(yōu)選
36、項(xiàng)35820.3.4XFS的調(diào)優(yōu)選項(xiàng)35920.4I/O的測(cè)量方法36120.4.1iostat36120.4.2iostat與sar工具36220.5小結(jié)36720.6參考文獻(xiàn)367第21章Linux系統(tǒng)網(wǎng)絡(luò)性能實(shí)例分析36921.1引言36921.2實(shí)例分析中使用的基準(zhǔn)測(cè)試36921.2.1NetBench37021.2.2Netperf337021.2.3VolanoMark37021.2.4SPECWeb9937021.3Linux2.4與2.6內(nèi)核中的增強(qiáng)機(jī)制37121.3.1SendFile37121.3.2TCP分段卸載37321.3.3網(wǎng)絡(luò)負(fù)荷中的進(jìn)程與IRQ親合性37521.
37、3.4NAPI37621.3.5TCP卸載引擎37821.4示例分析37921.4.1NetBench38021.4.2Netperf3(千兆位以太網(wǎng)調(diào)優(yōu)實(shí)例分析)38121.4.3VolanoMark38321.4.4SPECWeb9938421.5小結(jié)38621.6參考文獻(xiàn)387第22章商用負(fù)載調(diào)優(yōu)實(shí)例分析38922.1引言38922.2商用負(fù)載調(diào)優(yōu)概述38922.3J2EE的標(biāo)準(zhǔn)商用負(fù)載模型39022.4商用負(fù)載模型實(shí)例:股票交易39022.4.1系統(tǒng)配置39122.4.2Trade3的詳細(xì)信息39222.4.3性能分析方法39522.5性能分析試驗(yàn)39722.5.1Web服務(wù)器3982
38、2.5.2數(shù)據(jù)庫(kù)后端程序39922.5.3Java虛擬機(jī)40422.5.4應(yīng)用服務(wù)器40622.5.5超線程40822.6小結(jié)40922.7參考文獻(xiàn)410附錄A內(nèi)核參數(shù)調(diào)優(yōu)411A.1引言411A.2sysctl接口411A.3procfs接口412A.4sysfs(只針對(duì)Linux2.6內(nèi)核)413A.5通用內(nèi)核參數(shù)413A.5.1共享內(nèi)存413A.5.2進(jìn)程414A.5.3信號(hào)414A.5.4概要分析/調(diào)試414A.5.5系統(tǒng)414A.6虛存參數(shù)415A.7文件系統(tǒng)參數(shù)416A.8網(wǎng)絡(luò)內(nèi)核參數(shù)417A.8.1網(wǎng)絡(luò)核心參數(shù)418A.8.2ICMP418A.8.3鄰居419A.8.4配置419
39、A.8.5路由420A.8.6TCP420A.8.7IP分段421第2章作者:BadriPulavartiLinux內(nèi)核機(jī)制2.1引言雖然讀者已經(jīng)對(duì)如何在硬件系統(tǒng)上安裝Linux做出了一些重要決策,但還需要了解更多關(guān)于Linux內(nèi)核的知識(shí),這樣才能制定出重要的調(diào)優(yōu)決策。本章將討論Linux的發(fā)展歷程,然后研究其體系結(jié)構(gòu)。還將介紹關(guān)于內(nèi)核組織結(jié)構(gòu)、內(nèi)核職責(zé)以及如何實(shí)施內(nèi)存管理的知識(shí),討論進(jìn)程管理和進(jìn)程間通信的機(jī)制,然后簡(jiǎn)要說(shuō)明Linux對(duì)稱多處理模型。最后分析Linux的文件系統(tǒng)。2.2Linux的發(fā)展歷程Linux是LinusTorvalds于1991年開(kāi)發(fā)的一種個(gè)人計(jì)算機(jī)操作系統(tǒng)。最初,Li
40、nux只支持Intel80 x86處理器。但這些年來(lái),通過(guò)添加大量支持功能,Linux已可以在其他處理器上運(yùn)行。目前,Linux是極少數(shù)能夠在眾多類型的處理器上運(yùn)行的操作系統(tǒng)之一,支持的處理器包括IntelIA-32、IntelIA-64、AMD、DEC、PowerPC、Motorola、SPARC和IBMS/390等。Linux借鑒了UNIX的許多思想,并實(shí)現(xiàn)了UNIX的API函數(shù),因此這兩種操作系統(tǒng)有很多相似之處,但Linux并不是任何特定UNIX版本的直接衍生品。Linux無(wú)疑是當(dāng)今發(fā)展最快的操作系統(tǒng),其應(yīng)用領(lǐng)域從嵌入式設(shè)備直至大型機(jī)。關(guān)于Linux的一個(gè)有趣且最重要的事實(shí)是其開(kāi)源性。L
41、inux內(nèi)核使用的是GNU通用公共許可證(GeneralPublicLicense,GPL),因此用戶可以免費(fèi)獲取其內(nèi)核源碼并根據(jù)實(shí)際需求對(duì)其進(jìn)行修改。下一節(jié)將全面介紹Linux內(nèi)核的體系結(jié)構(gòu)。2.3Linux內(nèi)核體系結(jié)構(gòu)本節(jié)首先討論Linux內(nèi)核的體系結(jié)構(gòu),包括內(nèi)核的職能、內(nèi)核的組織結(jié)構(gòu)和模塊、內(nèi)核提供的服務(wù)以及進(jìn)程管理等。2.3.1內(nèi)核的職能內(nèi)核(也稱為操作系統(tǒng))有如下兩個(gè)主要作用:與系統(tǒng)的硬件設(shè)備進(jìn)行交互并對(duì)其加以控制。為應(yīng)用程序提供運(yùn)行環(huán)境。某些操作系統(tǒng)允許應(yīng)用程序直接訪問(wèn)硬件設(shè)備,但這種能力目前已經(jīng)很少見(jiàn)。類UNIX操作系統(tǒng)向應(yīng)用程序隱藏了所有的低層硬件細(xì)節(jié)。應(yīng)用程序如果希望使用某個(gè)
42、硬件資源,就必須向操作系統(tǒng)發(fā)出請(qǐng)求。操作系統(tǒng)對(duì)該請(qǐng)求進(jìn)行評(píng)估,并在請(qǐng)求有效時(shí)代表應(yīng)用程序與硬件設(shè)備進(jìn)行交互。為了實(shí)施這種機(jī)制,操作系統(tǒng)依賴于硬件設(shè)備禁止與應(yīng)用程序直接交互的能力。2.3.2內(nèi)核組織結(jié)構(gòu)與模塊與其他許多類UNIX操作系統(tǒng)相似,Linux是單內(nèi)核(monolithic)結(jié)構(gòu)。這意味著雖然Linux被劃分成控制系統(tǒng)各種組件(例如內(nèi)存管理和進(jìn)程管理)的多個(gè)子系統(tǒng),但所有的子系統(tǒng)都緊密集成在一起,從而構(gòu)成整個(gè)內(nèi)核。與之相反,微內(nèi)核(microkernel)操作系統(tǒng)提供了最少量的功能集合,而所有其他的操作系統(tǒng)層次都在微內(nèi)核之上以進(jìn)程方式執(zhí)行。由于各個(gè)層次之間存在著消息傳遞,微內(nèi)核操作系統(tǒng)的
43、效率通常較低,但這類操作系統(tǒng)非常便于擴(kuò)展。Linux內(nèi)核可通過(guò)模塊方式進(jìn)行擴(kuò)展。模塊具有既提供了微內(nèi)核的優(yōu)點(diǎn)卻又沒(méi)有額外開(kāi)銷的內(nèi)核特性。模塊是一種可以在系統(tǒng)運(yùn)行時(shí)鏈接到內(nèi)核的對(duì)象。2.3.3內(nèi)核服務(wù)內(nèi)核為在用戶模式中運(yùn)行的應(yīng)用程序提供了一組與系統(tǒng)進(jìn)行交互的接口。這些接口也稱為系統(tǒng)調(diào)用,應(yīng)用程序可以通過(guò)接口訪問(wèn)硬件和其他內(nèi)核資源。系統(tǒng)調(diào)用不僅為應(yīng)用程序提供了抽象化的硬件層次,還確保了系統(tǒng)的安全和穩(wěn)定性。大多數(shù)應(yīng)用程序并不直接使用系統(tǒng)調(diào)用。相反,在編程時(shí)采用了應(yīng)用程序接口(API)。需要注意的是,在API和系統(tǒng)調(diào)用之間不存在關(guān)聯(lián)。API是作為庫(kù)文件的組成部分提供給應(yīng)用程序使用的,這些API一般通過(guò)
44、一個(gè)或多個(gè)系統(tǒng)調(diào)用來(lái)實(shí)現(xiàn)。2.3.4/proc文件系統(tǒng)的外部性能視圖/proc文件系統(tǒng)為用戶提供了關(guān)于內(nèi)核內(nèi)部數(shù)據(jù)結(jié)構(gòu)的視圖。可以利用它查看和修改內(nèi)核的某些內(nèi)部數(shù)據(jù)結(jié)構(gòu),從而改變內(nèi)核(原文錯(cuò)誤:kernal)的行為。/proc文件系統(tǒng)提供了一種通過(guò)微調(diào)系統(tǒng)資源來(lái)改善應(yīng)用程序以及系統(tǒng)整體性能的簡(jiǎn)單方法。/proc文件系統(tǒng)是一種由內(nèi)核以動(dòng)態(tài)創(chuàng)建方式生成數(shù)據(jù)的虛擬文件系統(tǒng)。它被組織成多種目錄形式,其中每個(gè)目錄都對(duì)應(yīng)于特定子系統(tǒng)的可調(diào)選項(xiàng)。附錄A詳細(xì)闡述了使用/proc文件系統(tǒng)對(duì)系統(tǒng)進(jìn)行微調(diào)的方法。Linux的另一個(gè)要素是內(nèi)存管理。下一節(jié)將從5個(gè)方面介紹Linux的內(nèi)存管理。2.3.5內(nèi)存管理Linu
45、x的內(nèi)存管理問(wèn)題包括地址空間、物理內(nèi)存、內(nèi)存映射、分頁(yè)機(jī)制及交換機(jī)制。1.地址空間虛存的優(yōu)點(diǎn)之一是每個(gè)進(jìn)程都認(rèn)為自己擁有所需的全部地址空間。虛存的大小可以是系統(tǒng)中物理內(nèi)存大小的許多倍。系統(tǒng)中的每個(gè)進(jìn)程都有自己的虛址空間,這些虛址空間相互之間完全獨(dú)立。運(yùn)行某個(gè)應(yīng)用程序的進(jìn)程不會(huì)影響到其他進(jìn)程,應(yīng)用程序之間也是相互保護(hù)的。虛址空間由操作系統(tǒng)映射至物理內(nèi)存。從應(yīng)用程序的角度來(lái)說(shuō),這個(gè)地址空間是一個(gè)線性的平面地址空間;但內(nèi)核對(duì)用戶虛址空間的處理則有很大的不同。線性地址空間被劃分為兩部分:用戶地址空間和內(nèi)核地址空間。用戶地址空間不會(huì)在每次發(fā)生上下文切換時(shí)都改變,而內(nèi)核地址空間則始終保持不變。為用戶空間和
46、內(nèi)核空間分配的空間容量主要取決于系統(tǒng)是32位還是64位的體系結(jié)構(gòu)。例如,x86是32位的體系結(jié)構(gòu),它只支持4GB的地址空間,其中3GB為用戶空間保留,1GB分配給內(nèi)核地址空間。具體的劃分大小由內(nèi)核配置變量PAGE_OFFSET決定。2.物理內(nèi)存為了支持多種體系結(jié)構(gòu),Linux使用與體系結(jié)構(gòu)無(wú)關(guān)的方式來(lái)描述物理內(nèi)存。物理內(nèi)存可以組織成內(nèi)存體(bank)的結(jié)構(gòu),每個(gè)內(nèi)存體與處理器的距離都是特定的。隨著越來(lái)越多的機(jī)器采用非一致性內(nèi)存訪問(wèn)(NonuniformMemoryAccess,NUMA)技術(shù),這種類型的內(nèi)存布局已非常普遍。LinuxVM以節(jié)點(diǎn)來(lái)表示這種排列方式。每個(gè)節(jié)點(diǎn)劃分為許多稱為管理區(qū)(z
47、one)的內(nèi)存塊,它們代表了內(nèi)存中的地址范圍。有三種不同的管理區(qū):ZONE_DMA、ZONE_NORMAL和ZONE_HIGHMEM。例如,x86具有以下內(nèi)存管理區(qū):ZONE_DMA內(nèi)存地址的前16MBZONE_NORMAL16MB896MBZONE_HIGHMEM896MB內(nèi)存結(jié)束地址每個(gè)管理區(qū)都有各自的用途。從前的一些ISA設(shè)備對(duì)于可以在哪些地址上執(zhí)行I/O操作具有限制條件,而ZONE_DMA可以消除這些限制。ZONE_NORMAL用于所有的內(nèi)核操作和分配。它對(duì)于系統(tǒng)性能是極為重要的。ZONE_HIGHMEM是系統(tǒng)中其余的內(nèi)存。需要注意的是,ZONE_HIGHMEM無(wú)法用于內(nèi)核的分配和數(shù)據(jù)
48、結(jié)構(gòu),只能用于保存用戶數(shù)據(jù)。3.內(nèi)存映射為了更好地理解內(nèi)核內(nèi)存的映射機(jī)制,下面以x86為例加以說(shuō)明。前文提過(guò),內(nèi)核只有1GB的虛址空間可用,其他3GB保留給用戶空間(原文為kernel,疑是錯(cuò)誤?)。內(nèi)核將ZONE_DMA和ZONE_NORMAL中的物理內(nèi)存直接映射到其地址空間。這意味著系統(tǒng)中最前面的896MB物理內(nèi)存被映射到內(nèi)核虛址空間,從而只剩下128MB的虛址空間。這128MB的虛址空間用于諸如vmalloc和kmap等操作。如果物理內(nèi)存容量較小(少于1GB),這種映射機(jī)制運(yùn)作良好。然而,目前的所有服務(wù)器都支持?jǐn)?shù)十千兆字節(jié)的內(nèi)存。Intel公司在其Pentium處理器中引入了物理地址擴(kuò)展
49、(PhysicalAddressExtension,PAE)機(jī)制,能夠支持最多64GB物理內(nèi)存。前述的內(nèi)存映射機(jī)制使得如何處理高達(dá)數(shù)十千兆字節(jié)的物理內(nèi)存成為x86Linux的一個(gè)主要問(wèn)題來(lái)源。Linux內(nèi)核按照如下方式處理高端內(nèi)存(896MB以上的所有內(nèi)存)原文錯(cuò):about似應(yīng)為above):當(dāng)Linux內(nèi)核需要尋址高端內(nèi)存中的某個(gè)頁(yè)面時(shí),通過(guò)kmap操作將該頁(yè)面映射到一個(gè)小的虛址空間窗口中,在該頁(yè)面上執(zhí)行操作,然后解除對(duì)該頁(yè)面的映射。64位體系結(jié)構(gòu)的地址空間非常巨大,因此這類系統(tǒng)不存在這個(gè)問(wèn)題。4.分頁(yè)機(jī)制虛存可以有多種實(shí)現(xiàn)方式,其中最有效的方式是基于硬件的方案。虛址空間被劃分成固定大小的
50、內(nèi)存塊,稱之為頁(yè)面。虛存訪問(wèn)通過(guò)頁(yè)表被轉(zhuǎn)換成物理內(nèi)存地址。為了支持各種體系結(jié)構(gòu)和頁(yè)面尺寸,Linux采用了三級(jí)分頁(yè)機(jī)制。它提供了如下三種頁(yè)表類型:頁(yè)面全局目錄(PageGlobalDirectory,PGD)頁(yè)面中層目錄(PageMiddleDirectory,PMD)頁(yè)表(PageTable,PTE)地址轉(zhuǎn)換提供了一種將進(jìn)程的虛址空間與物理地址空間分離的方法。每個(gè)虛存頁(yè)面都可以在主內(nèi)存中標(biāo)記為“存在”或“不存在”。如果進(jìn)程訪問(wèn)某個(gè)不存在的虛存地址,硬件就會(huì)產(chǎn)生一個(gè)頁(yè)面錯(cuò)誤,并由內(nèi)核對(duì)其進(jìn)行處理。內(nèi)核處理該錯(cuò)誤時(shí)將該頁(yè)面置于主內(nèi)存中。在這個(gè)過(guò)程中,系統(tǒng)可能需要將現(xiàn)有的某個(gè)頁(yè)面替換掉,以便為新頁(yè)
51、面提供空間。替換策略是分頁(yè)系統(tǒng)最關(guān)鍵的內(nèi)容之一。Linux2.6版本修補(bǔ)了以前Linux版本中關(guān)于各種頁(yè)面選擇和替換的問(wèn)題。5.交換機(jī)制交換是當(dāng)主存容量不足時(shí)將整個(gè)進(jìn)程移入或移出輔助存儲(chǔ)器的過(guò)程。由于上下文切換的開(kāi)銷非常大,許多現(xiàn)代的操作系統(tǒng),包括Linux,都不采用這種方法,而是采用分頁(yè)機(jī)制。在Linux中,交換是在頁(yè)面層次而不是在進(jìn)程層次上執(zhí)行的。交換的主要優(yōu)點(diǎn)是擴(kuò)展了進(jìn)程可用的地址空間。當(dāng)內(nèi)核需要釋放內(nèi)存以便為新頁(yè)面提供空間時(shí),可能需要丟棄一些較少使用的或未用的頁(yè)面。某些頁(yè)面因?yàn)槲幢淮疟P(pán)備份而不容易釋放,需要被復(fù)制到后備存儲(chǔ)器(交換區(qū))中,在必要時(shí)還要從后備存儲(chǔ)器中讀回。交換機(jī)制的主要缺
52、點(diǎn)是速度慢。磁盤(pán)的讀寫(xiě)速度通常都非常緩慢,因此應(yīng)該盡量消除交換操作。2.4進(jìn)程管理本節(jié)討論Linux中的進(jìn)程管理,包括進(jìn)程、任務(wù)、內(nèi)核線程、調(diào)度以及上下文切換。2.4.1進(jìn)程、任務(wù)與內(nèi)核線程任務(wù)只是一種“需要完成的工作的一般性描述”,可以是一個(gè)輕權(quán)的線程,也可以是一個(gè)完整的進(jìn)程。線程是最輕權(quán)的任務(wù)實(shí)例。在內(nèi)核中創(chuàng)建線程的成本可能很高,也可能較低,這取決于線程需要擁有的特征。最簡(jiǎn)單的情形是線程與其父線程共享所有資源,包括代碼、數(shù)據(jù)以及許多內(nèi)部數(shù)據(jù)結(jié)構(gòu),而僅在區(qū)分該線程與其他線程上有一點(diǎn)點(diǎn)差異。Linux中的進(jìn)程是一個(gè)“重權(quán)的”數(shù)據(jù)結(jié)構(gòu)。如果有必要的話,多個(gè)線程可以在單個(gè)進(jìn)程中運(yùn)行(并共享該進(jìn)程的
53、一些資源)。在Linux中,進(jìn)程只是一個(gè)擁有全部重權(quán)特征的線程。線程和進(jìn)程由調(diào)度器以相同方式進(jìn)行調(diào)度。內(nèi)核線程是始終在內(nèi)核模式中運(yùn)行且沒(méi)有用戶上下文的線程。內(nèi)核線程通常針對(duì)某個(gè)特定功能而存在,很容易在內(nèi)核中處理它。內(nèi)核線程經(jīng)常具有所期望的作用:能夠像其他任何進(jìn)程一樣進(jìn)行調(diào)度;當(dāng)其他進(jìn)程需要該功能發(fā)揮作用時(shí),為這些進(jìn)程提供實(shí)現(xiàn)該功能的目標(biāo)線程(通過(guò)發(fā)送信號(hào))。2.4.2調(diào)度與上下文切換進(jìn)程調(diào)度是確保每個(gè)進(jìn)程能公平分享CPU的一門(mén)科學(xué)(有人稱之為藝術(shù))。對(duì)于“公平”的定義,人們總是存在著不同的看法,因?yàn)檎{(diào)度器往往根據(jù)并不明顯的可見(jiàn)的信息來(lái)做出選擇。本書(shū)后面幾章中將更深入地闡述進(jìn)程調(diào)度。需要注意的是
54、,許多Linux用戶都認(rèn)為,一個(gè)在所有時(shí)候大部分正確的調(diào)度器要比一個(gè)在大多數(shù)時(shí)候完全正確的調(diào)度器更為重要,即緩慢運(yùn)行的進(jìn)程要優(yōu)于因過(guò)于精心選擇調(diào)度策略或錯(cuò)誤而停止運(yùn)行的進(jìn)程。Linux當(dāng)前的調(diào)度器程序就遵循了這個(gè)原則。當(dāng)一個(gè)進(jìn)程停止運(yùn)行,被另一個(gè)進(jìn)程替換時(shí),稱為上下文切換。通常,這個(gè)操作的開(kāi)銷是很高的,內(nèi)核程序員和應(yīng)用程序員總是試圖盡量減少系統(tǒng)執(zhí)行上下文切換的數(shù)量。進(jìn)程可以因?yàn)榈却硞€(gè)事件或資源而主動(dòng)停止運(yùn)行,或者因?yàn)橄到y(tǒng)決定應(yīng)將CPU分配給另一個(gè)進(jìn)程而被動(dòng)地放棄運(yùn)行。對(duì)于第一種情況,如果沒(méi)有其他進(jìn)程等待執(zhí)行,CPU實(shí)際上可能進(jìn)入空閑狀態(tài)。在第二種情況下,該進(jìn)程或者被另一個(gè)等待進(jìn)程所替換,或者
55、分配到一個(gè)新的運(yùn)行時(shí)間片或時(shí)間周期繼續(xù)執(zhí)行。即使在某個(gè)進(jìn)程正按照有序的方式調(diào)度和執(zhí)行時(shí),也可以被其他更高優(yōu)先級(jí)的任務(wù)中斷。例如,假若磁盤(pán)為磁盤(pán)讀操作準(zhǔn)備好了數(shù)據(jù)后,就向CPU發(fā)送信號(hào),并期望CPU從磁盤(pán)上獲取數(shù)據(jù)。內(nèi)核必須及時(shí)地處理這個(gè)情況,否則就會(huì)降低磁盤(pán)的傳輸率。信號(hào)、中斷和異常是不同的異步事件,但在許多方面卻類似,并且即使CPU已處于忙狀態(tài),它們也都必須被迅速處理。例如,準(zhǔn)備好了數(shù)據(jù)的磁盤(pán)會(huì)導(dǎo)致一個(gè)中斷。內(nèi)核調(diào)用該特定設(shè)備的中斷處理程序,中斷當(dāng)前運(yùn)行的進(jìn)程并使用其眾多資源。當(dāng)中斷處理程序執(zhí)行結(jié)束后,當(dāng)前運(yùn)行的進(jìn)程恢復(fù)執(zhí)行。這實(shí)際上是侵占當(dāng)前運(yùn)行進(jìn)程的CPU時(shí)間,因?yàn)楫?dāng)前版本的內(nèi)核只測(cè)量自
56、從該進(jìn)程進(jìn)入CPU之后所經(jīng)過(guò)的時(shí)間,卻忽略了中斷會(huì)耗用該進(jìn)程的寶貴時(shí)間這一事實(shí)。中斷處理程序通常是非??焖俸秃?jiǎn)潔的,因而能夠快速處理和清除以便使后續(xù)數(shù)據(jù)能夠進(jìn)入。但有時(shí)一個(gè)中斷可能需要處理的工作比在中斷處理程序中所期望的短時(shí)間內(nèi)完成的工作更多。中斷也需要一個(gè)定義良好的環(huán)境來(lái)完成其工作(要記住,中斷利用了某個(gè)隨機(jī)進(jìn)程的資源)。在這種情況下,要收集足夠信息,將工作延遲提交至bottomhalf處理程序進(jìn)行處理。bottomhalf處理程序會(huì)不時(shí)地被調(diào)度執(zhí)行。盡管在Linux早期版本中普遍使用了bottomhalf機(jī)制,但當(dāng)前的Linux版本中不鼓勵(lì)使用這種機(jī)制。2.5進(jìn)程間通信為了允許進(jìn)程間可以互
57、相進(jìn)行通信,Linux支持許多進(jìn)程間通信(InterProcessCommunication,IPC)機(jī)制。信號(hào)(signal)和管道(pipe)是兩種基本機(jī)制,但Linux也支持系統(tǒng)V的IPC機(jī)制。2.5.1信號(hào)信號(hào)用于將事件通知給一個(gè)或多個(gè)進(jìn)程,是用戶進(jìn)程間一種原始的通信和同步方式。信號(hào)也可用于作業(yè)控制。內(nèi)核能夠產(chǎn)生一組已定義的信號(hào),系統(tǒng)中的其他進(jìn)程如果擁有適當(dāng)?shù)臋?quán)限,也可以產(chǎn)生信號(hào)。進(jìn)程可以忽略所生成的大多數(shù)信號(hào),但有兩個(gè)例外:SIGSTOP和SIGKILL。SIGSTOP信號(hào)導(dǎo)致進(jìn)程終止執(zhí)行,而SIGKILL信號(hào)導(dǎo)致進(jìn)程退出并被忽略掉。除了SIGSTOP和SIGKILL信號(hào)之外,進(jìn)程可
58、以決定如何處理其他各種信號(hào)。例如,進(jìn)程可以阻塞信號(hào),也可以自已處理信號(hào)或允許內(nèi)核處理信號(hào)。如果由內(nèi)核處理信號(hào)的話,那么內(nèi)核執(zhí)行該信號(hào)的默認(rèn)動(dòng)作。Linux保存了關(guān)于每個(gè)進(jìn)程如何處理各種可能信號(hào)的信息。信號(hào)并不是在生成之后就會(huì)立即傳遞給進(jìn)程,而是當(dāng)該進(jìn)程恢復(fù)運(yùn)行時(shí)才被傳遞。每當(dāng)進(jìn)程退出一個(gè)系統(tǒng)調(diào)用時(shí),如果存在著任何未被阻塞的信號(hào),這些信號(hào)都會(huì)被傳遞。Linux與POSIX標(biāo)準(zhǔn)兼容,因此進(jìn)程可以指定當(dāng)調(diào)用特定的信號(hào)處理例程時(shí)需要阻塞哪些信號(hào)。2.5.2管道管道是未結(jié)構(gòu)化的先進(jìn)先出(first-infirst-out,F(xiàn)IFO)單向數(shù)據(jù)流。寫(xiě)入者向管道的一端添加數(shù)據(jù),讀取者從管道的另一端獲取數(shù)據(jù),而
59、已讀取的數(shù)據(jù)會(huì)從管道中刪除。管道提供了簡(jiǎn)單的流控制機(jī)制。例如,以下命令將ls命令(列出目錄中的文件)的輸出結(jié)果通過(guò)管道連至less命令(標(biāo)記文件的頁(yè)碼)的標(biāo)準(zhǔn)輸入中:$ls|lessLinux還支持命名管道(namedpipe)。與管道不同,命名管道不是臨時(shí)對(duì)象,而是文件系統(tǒng)中可以通過(guò)mkfifo命令創(chuàng)建的實(shí)體。2.5.3系統(tǒng)V的IPC機(jī)制Linux支持的3種進(jìn)程間通信機(jī)制,最初出現(xiàn)在UNIX系統(tǒng)V(1983年)中。這3種機(jī)制是消息隊(duì)列、信號(hào)量(semaphore)和共享內(nèi)存。這些機(jī)制都共享通用的認(rèn)證方法。進(jìn)程只需通過(guò)系統(tǒng)調(diào)用將唯一的訪問(wèn)標(biāo)識(shí)符傳遞給內(nèi)核,就可以訪問(wèn)這些資源。對(duì)這些系統(tǒng)VIPC
60、對(duì)象的訪問(wèn)要通過(guò)訪問(wèn)許可檢查,這非常類似檢查文件訪問(wèn)的方式。系統(tǒng)VIPC對(duì)象的訪問(wèn)權(quán)限由該對(duì)象的創(chuàng)建者通過(guò)系統(tǒng)調(diào)用進(jìn)行設(shè)置。1.消息隊(duì)列消息隊(duì)列允許一個(gè)或多個(gè)進(jìn)程向其中寫(xiě)入消息,然后這些消息將由一個(gè)或多個(gè)讀出進(jìn)程讀取。消息隊(duì)列在功能上等同于管道,但與管道相比,消息隊(duì)列更為通用,并有多方面的優(yōu)勢(shì)。消息隊(duì)列通過(guò)消息而不是未格式化的字節(jié)流形式來(lái)傳遞數(shù)據(jù),從而更易于處理數(shù)據(jù);消息可以與類型相關(guān)聯(lián),因此接收者可以在處理非緊急消息之前檢查緊急消息;當(dāng)多個(gè)進(jìn)程共享同一個(gè)消息隊(duì)列時(shí),類型域也可用于指定具體接收者。2.信號(hào)量信號(hào)量是支持原子操作set和test的一些對(duì)象,用于實(shí)現(xiàn)各種同步協(xié)議。信號(hào)量最適于被描述
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代辦公室空間中的綠色植物應(yīng)用
- 現(xiàn)代制造園區(qū)的投資風(fēng)險(xiǎn)評(píng)估與管理
- 現(xiàn)代企業(yè)經(jīng)營(yíng)中的稅務(wù)籌劃與風(fēng)險(xiǎn)管理
- 國(guó)慶節(jié)主題客堂活動(dòng)方案
- 2024年春九年級(jí)化學(xué)下冊(cè) 第10單元 酸和堿 實(shí)驗(yàn)活動(dòng)6 酸、堿的化學(xué)性質(zhì)說(shuō)課稿 (新版)新人教版
- Unit7 第2課時(shí)(說(shuō)課稿)Story time三年級(jí)英語(yǔ)上冊(cè)同步高效課堂系列(譯林版三起·2024秋)
- 2《紅燭》《致云雀》聯(lián)讀說(shuō)課稿 2024-2025學(xué)年統(tǒng)編版高中語(yǔ)文必修上冊(cè)
- 《4 做陽(yáng)光少年》(說(shuō)課稿)-2023-2024學(xué)年五年級(jí)上冊(cè)綜合實(shí)踐活動(dòng)皖教版
- 2025水運(yùn)工程施工監(jiān)理合同(試行)
- 2025企業(yè)聘用臨時(shí)工合同
- 城市隧道工程施工質(zhì)量驗(yàn)收規(guī)范
- 2025年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招高職單招英語(yǔ)2016-2024年參考題庫(kù)含答案解析
- 2025江蘇太倉(cāng)水務(wù)集團(tuán)招聘18人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024-2025學(xué)年人教新版高二(上)英語(yǔ)寒假作業(yè)(五)
- 2025年八省聯(lián)考陜西高考生物試卷真題答案詳解(精校打印)
- 2025脫貧攻堅(jiān)工作計(jì)劃
- 借款人解除合同通知書(shū)(2024年版)
- 《血小板及其功能》課件
- 江蘇省泰州市靖江市2024屆九年級(jí)下學(xué)期中考一模數(shù)學(xué)試卷(含答案)
- 沐足店長(zhǎng)合同范例
- 《旅游資料翻譯》課件
評(píng)論
0/150
提交評(píng)論