




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Linux 性能調優(yōu)目錄1. “ /etc/profile”文件2. “ bdflush ”參數(shù)3. “ ip_local_port_range”參數(shù)4. “ /etc/nsswitch.conf”文件5. “ /proc”文件系統(tǒng)6. “ ulimit ”參數(shù)7. 增加系統(tǒng)打開的文件數(shù)目8. 文件“ atime ”屬性9. 文件的“ noatime ”屬性10. 特定的 TCP/IP棧11. 交換分區(qū)12. 調整 IDE 硬盤性能概述優(yōu)化網絡性能在很大程度上與網絡上使用的軟硬件相關。 如何優(yōu)化網絡是很難用一本書 說得清楚的。在網絡真正運行起來之前是很難知道網絡的瓶頸所在。性能優(yōu)化并不是很 簡
2、單和直觀的,必須當作一個很復雜的任務。而且,不僅受到很多約束還需要很高的精 確度。 除非進行專門的測試以診斷系統(tǒng)中的瓶頸, 否則對一些現(xiàn)象很難做出解釋。 有時, 性能優(yōu)化會變成一項讓人十分失望并且乏味的工作, 尤其是在經過大量的分析之后所得 到的結果仍然不可確定的時候。但是,對系統(tǒng)性能的優(yōu)化是一項很有回報的工作,并且 會給整個系統(tǒng)帶來長期的益處。1. “ /etc/profile”文件“ etc/profile”文件含有系統(tǒng)大量的環(huán)境和啟動程序的配置信息。你在該文件中進行的配置, 可以通過申請全局環(huán)境變量來實現(xiàn)。 因此, 在該文件中設置優(yōu)化標志, 是一種明智的選擇。要 想使 x86程序獲得最佳
3、性能, 可以在編譯時, 使用最佳的優(yōu)化選項 -O9 。 許多程序的 “ Makefile ” 文件中已經含有 -O2選項,而 -O9使編譯器采用最高級別的優(yōu)化。盡管它將增加最終程序的大 小,但這樣可以獲得更高的運行速度。編譯時,使用“ -fomit-frame-pointer ”選項,程序運行 時,訪問變量時將使用堆棧。但是,使用這一選項,生產的代碼將無法調試。使用“ -mcpu=cpu_type” 和 “ -march=cpu_type” 選項, Gcc 將針對這種型號 CPU 進行專門的優(yōu)化, 但生成的代碼只能在所指定的 CPU 或更高系列的 CPU 上運行。對于 CPU i686或 Pe
4、ntiumPro 、 Pentium II、 Pentium III在“ /etc/profile”文件中 , 加入一行:CFLAGS= -O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions對于 CPU i586或 Pentium在“ etc/profile”文件中 , 加入一行:CFLAGS= -O3 -march=pentium -mcpu=pentium -ffast-math -funroll-loops
5、-fomit-frame-pointer -fforce-mem -fforce-addr -malign-double -fno-exceptions對于 CPU i486在“ etc/profile”文件中 , 加入一行:CFLAGS= -O3 -funroll-all-loops -malign-double -mcpu=i486 -march=i486 -fomit-frame-pointer -fno-exceptions 在進行完以上設置之后, 緊接者著把 “ CFLAGS LANG LESSCHARSET” 加入到 “ etc/profile” 文件中的“ export ”行中:
6、export PATH PS1 HOSTNAME HISTSIZE HISTFILESIZE USER LOGNAME MAIL INPUTRC CFLAGS LANG LESSCHARSET然后, 重新登錄, 這時, 環(huán)境變量 CFLAGS 已經被賦值, 編譯器和其它配置工具可以使用它。 對 Pentium (Pro/II/III的優(yōu)化必須使用 egcs 或 pgcc 編譯器。 Linux 的缺省安裝中,已經裝上 了 egcs ,所以無需擔心?;鶞蕼y試結果(按體系結構分類 :由于 CPU 的體系結構和使用的 gcc/egcs的版本不同,優(yōu)化選項也會不同。下面的圖表可以幫 助你根據(jù)自己的 CP
7、U 和編譯器,選擇最佳的編譯選項。為了確認編譯器的版本,使用如下命令:rootdeep# egcs -version?,F(xiàn)舉例說明:CFLAGS= -O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptionsCFLAGS= -O3 -march=pentium -mcpu=pentium -ffast-math -funroll-loops -fomit-frame-pointer -fforce-mem -fforce-a
8、ddr -malign-double -fno-exceptionsCFLAGS= -O3 -funroll-all-loops -malign-double -mcpu=i486 -march=i486 -fomit-frame-pointer -fno-exceptions -funroll-loops 選項對“ loop unrolling”進行優(yōu)化,只對在編譯或運行時循環(huán)次數(shù)能確定的循環(huán)語句有效。 -funroll-all-loops對“ loop unrolling”進行優(yōu)化,對所有的循環(huán)語句有效,擔通常使程序運行變慢。-ffast-math該選項使 GCC 可以不遵從 ANSI 或
9、 IEEE 的規(guī)則,以獲得運行更快的優(yōu)化代碼。例如:它允 許編譯器假設 sqrt(函數(shù)的輸入?yún)?shù)非負以及所有的浮點數(shù)的值都是 NaNs 。-malign-doubleGCC 把 double, long double, and long long類型變量定界在雙字還是單字邊界上,由該選項控 制。 double 類型變量定界于雙字邊界時,產生的代碼在 Pentium 機器上可以運行得更快一些, 但是會占用更多的內存。-mcpu=cpu_type設定在生成指令時缺省的機器和 CPU 類型, 設定好某一特定的 CPU 類型后, 編譯器將針對這 種芯片產生相應的指令,如果不使用“ -march=cpu
10、_type”選項,編譯器不會產生任何不能在 i386上運行的代碼。 “ i586”等價于“ pentium ” , “ i686”等價于“ pentiumpro ” , “ k6”指明是使 用 AMD 的芯片而非 Intel 系列。-march=cpu_type為指定類型的機器和 CPU 產生指令。這里的 CPU 類型與“ -mcpu ”中列出的相同。而且,使 用本選項已經隱含了“ -mcpu=cpu_type”選項。-fforce-mem對于涉及內存操作的運算 , 強制把操作數(shù)拷貝到寄存器中。這是通過把所有的內存引用轉換成 潛在的普通子表達式, 以獲得優(yōu)化代碼。 如果, 這些內存引用不是普通
11、子表達式, 可以通過指令的組合,消除單獨的寄存器裝載。-fforce-addr運算前把內存地址常數(shù)拷貝到寄存器中。所產生的優(yōu)化代碼與選項“ -fforce-mem ”類似。 -fomit-frame-pointer對于不必要的框架指針(frame pointer ,不在寄存器中保存。這就避免了相應的用于保存、設 置和恢復框架指針所需的指令; 這樣, 許多函數(shù)中可以使用額外的寄存器。 但是, 這一選項使 得在大多數(shù)機器上無法進行調試。注意:本書將要討論的所有優(yōu)化,缺省都是針對 Pentium II/III 系列 CPU 。因此,如有必要, 對于某些專門的 CPU 需要調整編譯參數(shù)。2. “ bd
12、flush ”參數(shù)下文討論目錄“ /proc/sys/vm”下的系統(tǒng)控制文件,且只在 Linux 內核版本 2.2下有效??刂圃?目錄下的文件, 可以調整 Linux 內核子系統(tǒng)-虛擬內存 (VM 的行為, 其中 bdflush 文件對 于硬盤使用有一定影響。該文件控制了 bdflush 內核守護進程的行為。我們通常使用以下命令 來提高文件系統(tǒng)的性能:echo "100 1200 128 512 15 5000 500 1884 2">/proc/sys/vm/bdflush修改某些值, 可以使系統(tǒng)響應更快, 例如:可以使系統(tǒng)在寫入硬盤之前等待更長時間, 從而避 免了
13、一些硬盤訪問的沖突。把該命令加入文件“ etc/rc.d/rc.local”之中,每次重新啟動機器時,就不必再次手工敲入這條 命令了。如果需要進一步理解如何改進有關虛擬內存、硬盤緩沖和交換空間(swap 的內核參數(shù),可 以參照“ /usr/src/linux/Documentation/sysctl/vm.txt” 。3. “ ip_local_port_range”參數(shù)下文討論目錄“ /proc/sys/net/ipv4/ip_local_port_range”下的系統(tǒng)控制文件,且只在 Linux 內核 版本 2.2下有效?!?ip_local_port_range”文件中有兩個參數(shù)分別定義
14、了用作 TCP 和 UDP 本地端口的端口范圍。 第一個參數(shù)是第一個端口號。 第二個參數(shù)是最后一個本地端口號。 對于使用率很高的系統(tǒng), 可 以修改為:32768到 61000。echo *32768 61000* > /proc/sys/net/ipv4/ip_local_port_range把該命令加入文件“ /etc/rc.d/rc.local”之中,每次重新啟動機器時,就不必再次手工敲入這條 命令了。4. “ /etc/nsswitch.conf”文件“ etc/nsswitch.conf”文件定義了系統(tǒng)使用哪些服務來解析主機名、獲得口令文件和組文件 (group file 。我們
15、的系統(tǒng)中由于沒有使用 NIS 服務,因此口令文件和組文件我們沒有使用。 這里,我們只討論該文件中的 hosts 這一行。編輯“ nsswitch.conf ”文件(vi /etc/nsswitch.conf ,把 host 一行改為:"hosts: dns files"含義:當請求解析地址時, 首先訪問 DNS 服務器, 如果 DNS 服務器沒有響應, 則使用 “ /etc/hosts” 文件。我建議把該文件中每一行中的 NIS 都刪掉。當然,如果你一定要使用 NIS ,就不能刪掉 NIS 。 最后,這個文件會是這樣:passwd: filesshadow: filesgr
16、oup: fileshosts: dns filesbootparams: filesethers: filesnetmasks: filesnetworks: filesprotocols: filesrpc: filesservices: filesautomount: filesaliases: files5. “ /proc”文件系統(tǒng)下文討論目錄 “ proc/sys/fs” 下的系統(tǒng)控制文件, 且只在 Linux 內核版本 2.2下有效。 該目錄下 的文件可以用來調整和監(jiān)測 Linux 內核的一些行為。 對這些文件的誤操作可能攪亂系統(tǒng), 因此 在實際調整系統(tǒng)之前,最好把文檔和源代碼都
17、讀一下。適當?shù)脑黾印?/proc/sys/fs/file-max”的值:每 4M 內存對應 256,例如:內存為 128M 的機器, 該值可以設為 8192(128/4=32 32*256=8192。同理,可以增加“ /proc/sys/fs/inode-max”的值, 使其值為打開文件數(shù)目的 3到 4倍 (8192*4=32768。這是因為:i 節(jié)點的數(shù)目至少等于打開的 文件數(shù),一般而言,對于大文件, i 節(jié)點數(shù)遠大于打開的文件數(shù)目。用于改變 /proc目錄及其子目錄下的任意參數(shù)的常用命令是(必須以 root 登錄 : echo “新的 參數(shù)值” > “ /proc/所需更改的文件”
18、,對于上面所涉及的修改,其命令為:echo "8192" >/proc/sys/fs/file-maxecho "32768" >/proc/sys/fs/inode-max上文所討論的方法修改了內核源代碼的常數(shù)。 但是, 在新的內核源代碼樹中并不能起作用, 因 此還不能算是最好的方法。最好的一種方法是把上述命令加入文件“ etc/rc.d/rc.local”之中。 在該文件的最后加入以下兩行(假設系統(tǒng)有 128M 內存 :echo "8192" >/proc/sys/fs/file-maxecho "32
19、768" >/proc/sys/fs/inode-max其中的數(shù)值因系統(tǒng)不同, 差異很大, 應該根據(jù)各自系統(tǒng), 按照上述的公式計算。 一臺文件服務 器或 WEB 服務器需要打開的文件數(shù)目就很大,而用于數(shù)值的服務器該數(shù)值就較小。對于內存非常多的系統(tǒng),特別是 512M 或更多內存的系統(tǒng),打開的文件數(shù)和 i 節(jié)點數(shù)最好不要 超過 50,000和 150,000?!?file-max ”參數(shù)是指 Linux 內核可以分配的文件句柄的最大數(shù)目。當系統(tǒng)經常報錯:文件句 柄不夠時,就需要適當增大該參數(shù)的值。系統(tǒng)缺省值為:4096?!?inode-max ” 參數(shù)是指系統(tǒng) i 節(jié)點句柄的最大數(shù)
20、目。 其值應該是 file-max 值的 3到 4倍。 因為 標準輸入輸出文件和網絡套接字都要使用 i 節(jié)點來進行處理。如果系統(tǒng)經常性的出現(xiàn) i 節(jié)點被 耗盡的情況,就需要增大其值。6. “ ulimit ”參數(shù)Linux 本身對每個用戶擁有的最大進程數(shù)有限制??梢栽谟脩舾夸浵碌摹?.bashrc ”文件或者 實際使用與“ .bashrc ”功能相當?shù)?shell 的腳本中加入這種限制。編輯“ .bashrc ”文件(例如: vi /root/.bashrc并加入下面一行:ulimit -u unlimited然后退出,重新登錄。為了驗證,可以以 root 身份登錄,然后鍵入:“ ulimi
21、t a ” ,在最大 用戶進程數(shù)一項中應該顯示“ unlimited ” ,例如:rootdeep# ulimit -acore file size (blocks 1000000data seg size (kbytes unlimitedfile size (blocks unlimitedmax memory size (kbytes unlimitedstack size (kbytes 8192cpu time (seconds unlimitedmax user processes unlimited * this line.pipe size (512 bytes 8open f
22、iles 1024virtual memory (kbytes 2105343注意:你可能更傾向于在命令行鍵入 “ unlimit u ” 而不是把它加入到文件 “ /root/.bashrc” 中。 但為保險起見,建議還是把它加入文件“ /root/.bashrc”中。7. 增加系統(tǒng)打開的文件數(shù)目編輯“ .bashrc ”文件(例如:vi /root/.bashrc并加入下面一行:ulimit -n 90000然后退出,重新登錄。為了驗證,可以以 root 身份登錄,然后鍵入“ ulimit a ” ,在打開文件 數(shù)一項中應該顯示“ 90000” ,例如:rootdeep# ulimit -
23、acore file size (blocks 1000000data seg size (kbytes unlimitedfile size (blocks unlimitedmax memory size (kbytes unlimitedstack size (kbytes 8192cpu time (seconds unlimitedmax user processes unlimitedpipe size (512 bytes 8open files 90000 * this line.virtual memory (kbytes 2105343注意:在早于 2.2版內核的系統(tǒng)中,即
24、使進行了上述修改,每個進程所能打開的文件數(shù)目仍然 限制為 1024。8. 文件“ atime ”屬性Linux 除了記錄文件的創(chuàng)建和修改時間外,還記錄文件最近的訪問時間。該信息作用不大,但 為保留它, 系統(tǒng)需要消耗相應的資源。 ext2文件系統(tǒng)允許超級用戶對單個文件進行標記, 以忽 略對這條信息的記錄。這種優(yōu)化調整, 對于文件查找操作, 系統(tǒng)性能提高顯著, 另外, 對于需要經常訪問的文件 (如: /var/spool/news也是很有用的。設置該屬性的命令為:rootdeep# chattr +A filename若需要對某個目錄下的所有文件進行這種設置,可以使用:rootdeep /root
25、# chattr -R +A /var/spool/rootdeep /root# chattr -R +A /cache/rootdeep /root# chattr -R +A /home/httpd/ona/9. 文件的“ noatime ”屬性Linux 在 mount 文件系統(tǒng)時,可以使用“ noatime ”選項。并可以在文件“ /etc/fstab”的 mount 選項區(qū)域中加入。當含有該選項的文件系統(tǒng)被掛入(mount 系統(tǒng)時,對該文件系統(tǒng)中的文件的讀訪問,不再更新文件的 atime 信息。一般情況下, atime 信息沒有用,所以不更新該域并無大礙。這一選項的重要性在于:當只
26、對文件進行讀操作時, 不再需要向文件系統(tǒng)中該文件的相應區(qū)域寫入信息。 因為寫入操作 的開銷某種意義下是昂貴的,因此該選項可以獲得明顯的性能的改善。該選項對于文件的 wtime 屬性沒有影響,每次文件寫操作時,都會更新文件的 wtime 信息。編輯“ fstab ”文件(vi /etc/fstab并且加入如下一行(舉例說明 :E.I: /dev/sda7 /chroot ext2 defaults,noatime 1 2重新啟動系統(tǒng) , 然后用以下命令測試結果: rootdeep # reboot rootdeep # cat /proc/mounts10. 特定的 TCP/IP棧RedHat Linux , 一般情況下,并不優(yōu)化 TCP/IP 窗口大小。這能使系統(tǒng)性能的差別很大。如需 更多的信息, 參閱:RFC 1106 - High Latency WAN links - Section 4.1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 模糊神經網絡在船舶狀態(tài)智能監(jiān)測中的應用研究
- 景區(qū)行政執(zhí)法管理辦法
- 核酸混合試劑管理辦法
- 電力大數(shù)據(jù)助力金融智能化風控
- 供熱設備檢修管理辦法
- 公共衛(wèi)生中心管理辦法
- 物流行業(yè)的集聚效應、技術創(chuàng)新與高質量發(fā)展路徑
- 培訓機構審批管理辦法
- 普貨運輸安全生產管理制度
- 教師培訓方案:有效處理幼兒告狀行為的策略探討
- 中醫(yī)執(zhí)業(yè)醫(yī)師歷年真題及解答
- MT/T 1222-2024液壓支架再制造工程設計指南
- 2025年7月浙江省普通高中學業(yè)水平考試歷史仿真模擬卷01(含答案)
- 2024-2025學年人教版PEP六年級下學期期末試卷(含答案含聽力原文無音頻)
- 2025-2030年中國聚脲涂料行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 一級建造師考試安全管理試題及答案
- 鍍鋅板知識課件
- 2025-2030偏光成像相機行業(yè)市場現(xiàn)狀供需分析及重點企業(yè)投資評估規(guī)劃分析研究報告
- 豬場退股協(xié)議書范本
- 2025海南保亭農水投資有限公司招聘22人筆試參考題庫附帶答案詳解
- 靜密封管理制度
評論
0/150
提交評論