自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux系統(tǒng)性能調(diào)優(yōu)需了解的三大策略

系統(tǒng)
近年來,世界上許多大軟件公司紛紛推出各種Linux服務(wù)器系統(tǒng)及Linux下的應(yīng)用軟件。目前,Linux已可以與各種傳統(tǒng)的商業(yè)操作系統(tǒng)分庭抗禮,在服務(wù)器市場(chǎng),占據(jù)了相當(dāng)大的份額。本文分別從磁盤調(diào)優(yōu),文件系統(tǒng),內(nèi)存管理以及編譯優(yōu)化等方面來論述Linux系統(tǒng)的優(yōu)化調(diào)優(yōu)策略。

1. 引言

實(shí)踐證明Linux是高性能、穩(wěn)定可靠而又相當(dāng)靈活的操作系統(tǒng),近年來,世界上許多大軟件公司紛紛推出各種Linux服務(wù)器系統(tǒng)及Linux下的應(yīng)用軟件。目前,Linux已可以與各種傳統(tǒng)的商業(yè)操作系統(tǒng)分庭抗禮,在服務(wù)器市場(chǎng),占據(jù)了相當(dāng)大的份額。Linux的服務(wù)器系統(tǒng)多種多樣,可用作web服務(wù)器,郵件服務(wù)器,ftp服務(wù)器,文件服務(wù)器以及數(shù)據(jù)庫(kù)服務(wù)器等等。針對(duì)不同的系統(tǒng)以及具體的應(yīng)用環(huán)境,可以對(duì)Linux的性能進(jìn)行相應(yīng)的調(diào)優(yōu)。下面分別從磁盤調(diào)優(yōu),文件系統(tǒng),內(nèi)存管理以及編譯優(yōu)化等方面來論述Linux系統(tǒng)的優(yōu)化調(diào)優(yōu)策略。

2.磁盤調(diào)優(yōu)

2.1 優(yōu)化的分區(qū)

在安裝Linux系統(tǒng)之初,就應(yīng)該考慮怎樣使Linux系統(tǒng)得到最好的性能。在Linux系統(tǒng)中,我們可以自由地組織磁盤分區(qū)。一個(gè)優(yōu)化的分區(qū)策略,可以很好地改進(jìn)Linux系統(tǒng)的性能,減少磁盤碎片,提高磁盤I/O能力。

根據(jù)磁盤的特點(diǎn),我們知道越是靠磁盤外部的柱面,旋轉(zhuǎn)越快,而且每次旋轉(zhuǎn)時(shí),磁盤讀寫頭可以覆蓋較多的區(qū)域,也就意味著靠外部的柱面可以得到較好的性能。所以在分區(qū)時(shí),我們應(yīng)該考慮將訪問頻率高的,對(duì)系統(tǒng)性能影響相對(duì)較大的分區(qū)置于磁盤的靠外部分。同時(shí),為了減少磁盤碎片,應(yīng)將內(nèi)容經(jīng)常改變的目錄放在單獨(dú)的分區(qū)。從方便備份數(shù)據(jù)的角度考慮,因?yàn)楹芏鄠浞莨ぞ邔?duì)整個(gè)分區(qū)進(jìn)行備份的效率要高,所以我們應(yīng)將Linux系統(tǒng)的幾個(gè)主要的目錄作為單獨(dú)的文件系統(tǒng),為它們各自分配一個(gè)區(qū)。推薦的分區(qū)策略如圖一: 

在上圖中,磁盤還有一部分未分區(qū)的空間,為什么不在安裝系統(tǒng)時(shí),將整個(gè)磁盤分區(qū)呢?現(xiàn)在的硬盤空間比較大,而在安裝系統(tǒng)時(shí),也許你所安裝的文件加上以后增長(zhǎng)所需要的空間用不到整個(gè)磁盤存儲(chǔ)空間。保留一部分未分區(qū)空間,當(dāng)以后有新的需要時(shí),就可以用fdisk重新將之分區(qū)。在分區(qū)時(shí),需要注意的是,根據(jù)系統(tǒng)將來運(yùn)行的需要或過去的經(jīng)驗(yàn)來估計(jì)各個(gè)分區(qū)的大小,以免將來空間不夠。

如果你的系統(tǒng)有多塊硬盤,可以考慮使用多個(gè)交換分區(qū)。每個(gè)磁盤上劃分一個(gè)交換分區(qū)。通過在/etc/fstab文件中設(shè)置pri 選項(xiàng),可使多個(gè)交換分區(qū)具有同樣的優(yōu)先級(jí)。Linux系統(tǒng)即可并行地使用它們。這樣即可提高交換分區(qū)的性能。

/dev/hda5 swap swap defaults,pri=5 0 0
/dev/hdc5 swap swap defaults,pri=5 0 0 

當(dāng)然,如果你的系統(tǒng)內(nèi)存足夠大,而你的系統(tǒng)又遠(yuǎn)遠(yuǎn)用不了那么多的內(nèi)存,那也就用不到什么虛存了。分區(qū)時(shí)你就可以考慮去掉交換分區(qū)。不過作為一個(gè)Linux服務(wù)器,即使你的內(nèi)存足夠大,還是應(yīng)該設(shè)置交換分區(qū)。

2.2 使用hdparm改善Linux系統(tǒng)性能

如果你的Linux系統(tǒng)運(yùn)行于IDE硬盤,可以使用hdparm工具來提高磁盤I/O的性能。不過使用hdparm要小心,因?yàn)榭赡芷茐挠脖P上的數(shù)據(jù)。所以在使用hdparm之前,仔細(xì)閱讀你的硬盤手冊(cè)。根據(jù)你具體的硬盤規(guī)格來使用相應(yīng)的hdparm開關(guān)參數(shù)。對(duì)一塊UltraATA/66 EIDE 硬盤,其控制芯片支持多 PIO 模式和DMA,我們使用以下命令來調(diào)優(yōu)磁盤性能:

# /sbin/hdparm -x66 -d1 -u1 -m16 -c3 /dev/hda

選項(xiàng)說明:

  • c3 :就是把硬盤的16位格式轉(zhuǎn)換為32位模式(32-bit mode w/sync)??刂茢?shù)據(jù)如何從pci總線傳遞到控制器。
  • m16 :改變硬盤的多路扇區(qū)的讀功能,-m16可以使得硬盤在一次i/o中斷中讀入16個(gè)扇區(qū)的數(shù)據(jù)(據(jù)具體硬盤而定)。
  • d1:打開DMA模式。
  • x66 :在支持UDMA-capable的硬盤中,這個(gè)參數(shù)可以支持雙DMA通道的數(shù)據(jù)傳輸模式。
  • u1 :Linux在處理磁盤中斷時(shí),可以u(píng)nmask其他的中斷或者響應(yīng)其他中斷相關(guān)的任務(wù)。

查看以上的更改情況可以使用命令:

# /sbin/hdparm /dev/hda

測(cè)試磁盤I/O性能可以使用命令:

# /sbin/hdparm -tT /dev/hda

如果磁盤的性能有改進(jìn)的話,可以使用以下命令來保存設(shè)置:

# /sbin/hdparm -k1 /dev/hda

2.3 Linux下使用軟RAID

RAID(磁盤冗余陣列)是通過將數(shù)據(jù)分布在多個(gè)磁盤上來增強(qiáng)磁盤性能和可靠性的技術(shù)。如果你的系統(tǒng)沒有硬件RAID控制器的話,在Linux下可以通過軟件來實(shí)現(xiàn)RAID。RAID的有很多的級(jí)別,不同的級(jí)別對(duì)硬件有不同的要求,相應(yīng)也會(huì)得到不同的性能和可靠性。RAID0為數(shù)據(jù)分割,數(shù)據(jù)塊被交替寫到磁盤,可以得到最好的讀寫性能,但是不提供數(shù)據(jù)冗余。RAID1為磁盤鏡像,寫到磁盤1中的一切也寫到磁盤2中,從任何一個(gè)磁盤都可以讀取。RAID3除了數(shù)據(jù)分割之外,還指定一個(gè)磁盤驅(qū)動(dòng)器來存儲(chǔ)奇偶信息。

在Linux下通過軟件來實(shí)現(xiàn)RAID, 需要Linux的內(nèi)核支持,可以通過編譯新內(nèi)核來添加對(duì)RAID的支持。然后還需編譯并安裝 raidtools 軟件包。raidtools 是可以初始化、啟動(dòng)、停止及控制 RAID 陣列的用戶級(jí)工具。下面是我們用兩塊IDE硬盤在Linux內(nèi)核2.4上實(shí)現(xiàn)RAID0的方法。

設(shè)置分區(qū) 使用RAID0至少需要兩個(gè)分區(qū),它們位于不同的磁盤。最好做RAID0的兩個(gè)分區(qū)有相同的大小。創(chuàng)建分區(qū)時(shí),將分區(qū)類型指定為 "FD"。以使 Linux 內(nèi)核能將它們識(shí)別為 RAID 分區(qū),這樣,這些分區(qū)就可在每次引導(dǎo)時(shí)自動(dòng)被檢測(cè)并啟動(dòng)。如果您沒有以這種方式標(biāo)記 RAID 分區(qū),則在每次引導(dǎo)之后,必須首先輸入 "raidstart --all" 才能掛載 RAID 陣列。我們做成RAID0的兩個(gè)分區(qū)為hda5和hdc5。

編輯/etc/raidtab文件 創(chuàng)建/etc/raidtab文件以描述RAID陣列的配置信息。Linux 內(nèi)核使用這些信息在引導(dǎo)時(shí)自動(dòng)檢測(cè)并啟動(dòng) RAID 陣列,因此必須對(duì)創(chuàng)建的每個(gè) RAID 陣列進(jìn)行這種配置。將分區(qū)hda5和hdc5組成md0 RAID0陣列的配置文件如下:

 raiddev /dev/md0
        raid-level		0
        nr-raid-disks		2
        persistent-superblock   1
        chunk-size		32
        device			/dev/hda5
        raid-disk		0
        device			/dev/hdc5
        raid-disk		1

在raidtab文件中,"raiddev" 條目指明要?jiǎng)?chuàng)建的 RAID 陣列;"nr-raid-disks" 指定陣列中的磁盤數(shù)目;"persistent-superblock" 設(shè)置為 1,告訴 raid 工具何時(shí)創(chuàng)建該卷;"chunk-size" 以K字節(jié)指定 RAID0 使用的塊大??;最后,要指定的是組成該陣列的設(shè)備即分區(qū)。

mkraid 和創(chuàng)建文件系統(tǒng) 使用命令"# mkraid /dev/md0" 命令初始化/dev/md0分區(qū),同時(shí)將啟動(dòng)md0 RAID0陣列。接下來,即可在md0上創(chuàng)建你想要得文件系統(tǒng)。我們?cè)贚inux服務(wù)器上使用的是Reiserfs日志文件系統(tǒng),創(chuàng)建的命令為"# mkreiserfs /dev/md0"。

這樣,就可以像其它文件系統(tǒng)那樣來加載新創(chuàng)建的基于RAID0的文件系統(tǒng)了。

2.4 使用elvtune調(diào)諧磁盤I/O

在Linux內(nèi)核2.4以后的版本中,可以通過磁盤I/O的調(diào)度操作,來控制磁盤I/O的響應(yīng)時(shí)間和吞吐量。通過調(diào)整I/O請(qǐng)求在隊(duì)列中的最大等待時(shí)間,可以在響應(yīng)時(shí)間和吞吐量之間調(diào)優(yōu)。如果要求較少的響應(yīng)時(shí)間,那么吞吐量將降低,反之,較長(zhǎng)的響應(yīng)時(shí)間則可以得到較大的吞吐量??梢允褂霉ぞ?quot;/sbin/elvtune"來改變最大的響應(yīng)時(shí)間值。使用方法如下:

查看當(dāng)前的設(shè)置

# /sbin/elvtune /dev/hda1

修改當(dāng)前的配置

# /sbin/elvtune -r 2000 -w 4000 /dev/hda

其中-r參數(shù)針對(duì)讀操作,-w參數(shù)針對(duì)寫操作.

可以通過命令"iostat -d -x /dev/hda1"得到的平均信息(包括平均請(qǐng)求大小和平均隊(duì)列長(zhǎng)度)來監(jiān)視以上I/O配置的效果,并調(diào)整配置,以得到最佳的性能。一般來講,對(duì)于讀寫頻繁,但操作的數(shù)據(jù)量較少的Linux服務(wù)器,且對(duì)實(shí)時(shí)性要求較高,那么可以將參數(shù)調(diào)小。反之如果對(duì)于讀寫不頻繁,但要求具有較大的吞吐量的Linux服務(wù)器,可以將參數(shù)調(diào)大,以獲得較大的吞吐量。#p#

3. 文件及文件系統(tǒng)調(diào)優(yōu)

3.1 塊大小

創(chuàng)建文件系統(tǒng)時(shí),可以指定塊的大小。如果將來在你的文件系統(tǒng)中是一些比較大的文件的話,使用較大的塊大小將得到較好的性能。將ext2文件系統(tǒng)的塊大小調(diào)整為4096byte而不是缺省的1024byte,可以減少文件碎片,加快fsck掃描的速度和文件刪除以及讀操作的速度。另外,在ext2的文件系統(tǒng)中,為根目錄保留了5%的空間,對(duì)一個(gè)大的文件系統(tǒng),除非用作日志文件,5%的比例有些過多。可以使用命令"# mke2fs -b 4096 -m 1 /dev/hda6"將它改為1%并以塊大小4096byte創(chuàng)建文件系統(tǒng)。

使用多大的塊大小,需要根據(jù)你的系統(tǒng)綜合考慮,如果系統(tǒng)用作郵件或者新聞服務(wù)器,使用較大的塊大小,雖然性能有所提高,但會(huì)造成磁盤空間較大的浪費(fèi)。比如文件系統(tǒng)中的文件平均大小為2145byte,如果使用4096byte的塊大小,平均每一個(gè)文件就會(huì)浪費(fèi)1951byte空間。如果使用1024byte的塊大小,平均每一個(gè)文件會(huì)浪費(fèi)927byte空間。在性能和磁盤的代價(jià)上如何平衡,要看具體應(yīng)用的需要。

3.2 不使用atime屬性

當(dāng)文件被創(chuàng)建,修改和訪問時(shí),Linux系統(tǒng)會(huì)記錄這些時(shí)間信息。記錄文件最近一次被讀取的時(shí)間信息,當(dāng)系統(tǒng)的讀文件操作頻繁時(shí),將是一筆不少的開銷。所以,為了提高系統(tǒng)的性能,我們可以在讀取文件時(shí)不修改文件的atime屬性??梢酝ㄟ^在加載文件系統(tǒng)時(shí)使用notime選項(xiàng)來做到這一點(diǎn)。當(dāng)以noatime選項(xiàng)加載(mount)文件系統(tǒng)時(shí),對(duì)文件的讀取不會(huì)更新文件屬性中的atime信息。設(shè)置noatime的重要性是消除了文件系統(tǒng)對(duì)文件的寫操作,文件只是簡(jiǎn)單地被系統(tǒng)讀取。由于寫操作相對(duì)讀來說要更消耗系統(tǒng)資源,所以這樣設(shè)置可以明顯提高服務(wù)器的性能。注意wtime信息仍然有效,任何時(shí)候文件被寫,該信息仍被更新。

比如在你的系統(tǒng)中,要為/home文件系統(tǒng)設(shè)置notime選項(xiàng),可以修改/etc/fstab文件相應(yīng)的行如下:

LABEL=/home /home ext2 noatime 1 2

要使該設(shè)置立即生效,可運(yùn)行命令"#mount -oremount /home"。這樣以后系統(tǒng)讀取/home下的文件時(shí)將不會(huì)再修改atime屬性。

3.3 調(diào)整緩沖區(qū)刷新參數(shù)

Linux內(nèi)核中,包含了一些對(duì)于系統(tǒng)運(yùn)行態(tài)的可設(shè)置參數(shù)。緩沖刷新的參數(shù)可以通過調(diào)整 /proc/sys/vm/bdflush文件來完成,這個(gè)文件的格式是這樣的:

# cat /proc/sys/vm/bdflush
30 64 64 256 500 3000 60 0 0

每一欄是一個(gè)參數(shù),其中最重要的是前面幾個(gè)參數(shù)。第一個(gè)數(shù)字是在"dirty"緩沖區(qū)達(dá)到多少的時(shí)候強(qiáng)制喚醒bdflush進(jìn)程刷新硬盤,第二個(gè)數(shù)字是每次讓bdflush進(jìn)程刷新多少個(gè)dirty塊。所謂dirty塊是必須寫到磁盤中的緩存塊。接下來的參數(shù)是每次允許bd flush將多少個(gè)內(nèi)存塊排入空閑的緩沖塊列表。 以上值為RedHat Linux 7.1中的缺省值。如何修改它們呢?對(duì)不同的系統(tǒng)有以下兩種方法

(1)# echo "100 128 128 512 5000 3000 60 0 0">/proc/sys/vm/bdflush 并將這條命令加到/etc/rc.d/rc.local文件中去。
(2)在/etc/sysctl.conf 文件中加入如下行: vm.bdflush = 100 128 128 512 5000 3000 60 0 0

以上的設(shè)置加大了緩沖區(qū)大小,降低了bdflush被啟動(dòng)的頻度,同時(shí)也增加了萬一系統(tǒng)崩潰丟失數(shù)據(jù)的危險(xiǎn)性。VFS的緩沖刷新是Linux文件系統(tǒng)高效的重要原因之一,如果性能對(duì)你真的很重要,應(yīng)該考慮調(diào)整這個(gè)參數(shù)。

3.4 調(diào)整文件句柄數(shù)和i-節(jié)點(diǎn)數(shù)

在一個(gè)大型的網(wǎng)站服務(wù)器其中,可能Linux默認(rèn)的同時(shí)可打開最大文件數(shù)不能滿足系統(tǒng)需要,我們可以通過調(diào)整文件句柄數(shù)和i-節(jié)點(diǎn)數(shù)來增加系統(tǒng)的缺省的限制。不同的Linux內(nèi)核版本有不同的調(diào)整方法。

在Linux內(nèi)核2.2.x中可以用如下命令修改:

# echo '8192' > /proc/sys/fs/file-max
# echo '32768' > /proc/sys/fs/inode-max

并將以上命令加到/etc/rc.c/rc.local文件中,以使系統(tǒng)每次重新啟動(dòng)時(shí)配置以上值。

在Linux內(nèi)核2.4.x中需要修改源代碼,然后重新編譯內(nèi)核才生效。編輯Linux內(nèi)核源代碼中的 include/Linux/fs.h文件,將 NR_FILE 由8192改為 65536,將NR_RESERVED_FILES 由10 改為 128。編輯fs/inode.c 文件將 MAX_INODE 由16384改為262144。

一般情況下,最大打開文件數(shù)比較合理的設(shè)置為每4M物理內(nèi)存256,比如256M內(nèi)存可以設(shè)為16384,而最大的使用的i節(jié)點(diǎn)的數(shù)目應(yīng)該是最大打開文件數(shù)目的3倍到4倍。

3.5 使用內(nèi)存文件系統(tǒng)

在Linux中可以將一部分內(nèi)存當(dāng)作分區(qū)來使用,我們稱之為RamDisk。對(duì)于一些經(jīng)常被訪問的文件,而它們又不會(huì)被更改,可以將它們通過RamDisk放在內(nèi)存中,即可明顯地提高系統(tǒng)的性能。當(dāng)然你的內(nèi)存可要足夠大了。RamDisk有兩種,一種可以格式化,加載,在Linux內(nèi)核2.0/2.2就已經(jīng)支持,其不足之處是大小固定。另一種是內(nèi)核2.4才支持的,通過Ramfs或者tmpfs來實(shí)現(xiàn),它們不能被格式化,但是用起來靈活,其大小隨所需要的空間而增加或減少。這里主要介紹一下Ramfs和Tmpfs。

Ramfs顧名思義是內(nèi)存文件系統(tǒng),它工作于虛擬文件系統(tǒng)(VFS)層。不能格式化,可以創(chuàng)建多個(gè),在創(chuàng)建時(shí)可以指定其最大能使用的內(nèi)存大小。如果你的Linux已經(jīng)將Ramfs編譯進(jìn)內(nèi)核,你就可以很容易地使用Ramfs了。創(chuàng)建一個(gè)目錄,加載Ramfs到該目錄即可。

# mkdir -p /RAM1
# mount -t ramfs none /RAM1

缺省情況下,Ramfs被限制最多可使用內(nèi)存大小的一半??梢酝ㄟ^maxsize(以kbyte為單位)選項(xiàng)來改變。

# mkdir -p /RAM1
# mount -t ramfs none /RAM1 -o maxsize=10000

以上即創(chuàng)建了一個(gè)限定了最大使用內(nèi)存大小為10M的ramdisk。

Tmpfs是一個(gè)虛擬內(nèi)存文件系統(tǒng),它不同于傳統(tǒng)的用塊設(shè)備形式來實(shí)現(xiàn)的ramdisk,也不同于針對(duì)物理內(nèi)存的Ramfs。Tmpfs可以使用物理內(nèi)存,也可以使用交換分區(qū)。在Linux內(nèi)核中,虛擬內(nèi)存資源由物理內(nèi)存(RAM)和交換分區(qū)組成,這些資源是由內(nèi)核中的虛擬內(nèi)存子系統(tǒng)來負(fù)責(zé)分配和管理。Tmpfs就是和虛擬內(nèi)存子系統(tǒng)來"打交道"的,它向虛擬內(nèi)存子系統(tǒng)請(qǐng)求頁來存儲(chǔ)文件,它同Linux的其它請(qǐng)求頁的部分一樣,不知道分配給自己的頁是在內(nèi)存中還是在交換分區(qū)中。Tmpfs同Ramfs一樣,其大小也不是固定的,而是隨著所需要的空間而動(dòng)態(tài)的增減。使用tmpfs,首先你編譯內(nèi)核時(shí)得選擇"虛擬內(nèi)存文件系統(tǒng)支持(Virtual memory filesystem support)" ,然后就可以加載tmpfs文件系統(tǒng)了。

# mkdir -p /mnt/tmpfs
# mount tmpfs /mnt/tmpfs -t tmpfs

為了防止tmpfs使用過多的內(nèi)存資源而造成系統(tǒng)的性能下降或死機(jī),可以在加載時(shí)指定tmpfs文件系統(tǒng)大小的最大限制。

# mount tmpfs /mnt/tmpfs -t tmpfs -o size=32m

以上創(chuàng)建的tmpfs文件系統(tǒng)就規(guī)定了其最大的大小為32M。不管是使用ramfs還是tmpfs,必須明白的是,一旦系統(tǒng)重啟,它們中的內(nèi)容將會(huì)丟失。所以那些東西可以放在內(nèi)存文件系統(tǒng)中得根據(jù)系統(tǒng)的具體情況而定。

3.6 使用日志文件系統(tǒng)

如果Linux系統(tǒng)由于意外情況而沒有正常關(guān)機(jī),則可能引起文件系統(tǒng)中某些文件的元數(shù)據(jù)(meta-data即和文件有關(guān)的信息,例如:權(quán)限、所有者以及創(chuàng)建和訪問時(shí)間)遭到破壞。文件系統(tǒng)需要維護(hù)文件的元數(shù)據(jù)來保證文件的可組織和可存取,如果元數(shù)據(jù)處于不合理或不一致的狀態(tài),那么就不能訪問和存取文件。當(dāng)系統(tǒng)重新啟動(dòng)時(shí),fsck將掃描/etc/fstab文件中所列出的所有文件系統(tǒng),確保它們的元數(shù)據(jù)處于可用的狀態(tài)。如果發(fā)現(xiàn)元數(shù)據(jù)不一致,fsck將掃描和檢測(cè)元數(shù)據(jù),并糾正錯(cuò)誤。如果文件系統(tǒng)很大,這個(gè)過程將需要很長(zhǎng)的時(shí)間。為解決這個(gè)問題,可以使用日志文件系統(tǒng)。日志文件系統(tǒng)用獨(dú)立的日志文件跟蹤磁盤內(nèi)容的變化,在寫入文件內(nèi)容的同時(shí)寫入文件的元數(shù)據(jù)。每次修改文件的元數(shù)據(jù)時(shí),都要先向稱為"日志"的數(shù)據(jù)結(jié)構(gòu)登記相應(yīng)的條目。這樣,日志文件系統(tǒng)就維護(hù)了最近更改的元數(shù)據(jù)的記錄。當(dāng)加載日志文件系統(tǒng)時(shí),如果發(fā)現(xiàn)了錯(cuò)誤,不會(huì)掃描整個(gè)文件系統(tǒng)的元數(shù)據(jù),而是根據(jù)日志檢查最近被更改的元數(shù)據(jù)。所以相對(duì)于傳統(tǒng)的文件系統(tǒng)(如ext2),日志文件系統(tǒng)大大地加快了掃描和檢測(cè)的時(shí)間。

Linux下可用的日志文件系統(tǒng)很多,如XFS,JFS,Reiserfs,ext3等等。日志文件系統(tǒng)主要被設(shè)計(jì)為服務(wù)器環(huán)境提供出色性能和高可用性。當(dāng)然, Linux 工作站和家用機(jī)器也可從具有高性能的可靠日志文件系統(tǒng)中獲益。安裝日志文件系統(tǒng),一般需要下載相應(yīng)的壓縮包、為內(nèi)核打補(bǔ)丁、重新配置和重新編譯內(nèi)核。 詳細(xì)的安裝過程可訪問相應(yīng)文件系統(tǒng)的官方網(wǎng)站。#p#

4.其它方面的調(diào)優(yōu)

4.1 調(diào)優(yōu)buffermem

文件buffermen和內(nèi)核虛擬內(nèi)存子系統(tǒng)密切相關(guān)。文件/proc/sys/vm/buffermem控制多大內(nèi)存被用于緩沖區(qū)(百分?jǐn)?shù)表示)。內(nèi)核2.4的缺省值為:: "2 10 60"??梢园慈缦路椒ㄐ薷模?/p>

# echo "70 10 60" >/proc/sys/vm/buffermem

并將之加到腳本文件/etc/rc.d/rc.local 中?;蛘咴?etc/sysctl.conf文件中加入

vm.buffermem = 70 10 60

第一個(gè)參數(shù) 70意味著至少分配70%的內(nèi)存用作緩沖區(qū)。后兩個(gè)參數(shù)保持系統(tǒng)的默認(rèn)值。第一個(gè)參數(shù)設(shè)置為多大合適,依賴于系統(tǒng)的內(nèi)存大小和系統(tǒng)高負(fù)載時(shí)內(nèi)存的使用情況(可用free監(jiān)視)。

4.2 進(jìn)程限制

Linux對(duì)于每個(gè)用戶,系統(tǒng)限制其最大進(jìn)程數(shù)。為提高性能,可以設(shè)置超級(jí)用戶root的最大進(jìn)程數(shù)為無限。編輯.bashrc文件(vi /root/.bashrc)增加行"ulimit -u unlimited"即可消除超級(jí)用戶的進(jìn)程限制。

核心和系統(tǒng)對(duì)用戶進(jìn)程其它的一些限制也可以通過ulimit命令來查看和更改。"ulimit -a" 用來顯示當(dāng)前的各種用戶進(jìn)程限制。一些更改用戶限制的例子如下:

  • ulimit -n 4096 將每個(gè)進(jìn)程可以打開的文件數(shù)目加大到4096,缺省為1024
  • ulimit -m 4096 限制每個(gè)進(jìn)程使用的內(nèi)存數(shù)。

4.3 優(yōu)化gcc編譯

將優(yōu)化標(biāo)志放在/etc/profile文件中。在pentium III級(jí)的處理器上使用以下優(yōu)化標(biāo)志將得到最優(yōu)的應(yīng)用程序:

CFLAGS=-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro
-march=pentiumpro -fomit-frame-pointer -fno-exceptions

再將如下行加到/etc/profile 更靠后的位置:

export PATH PS1 HOSTNAME HISTSIZE HISTFILESIZE USER LOGNAME MAIL
INPUTRC CFLAGS LANG LESSCHARSET

使用以上的優(yōu)化,gcc或者egcs編譯的程序?qū)⒌玫阶罴训男阅堋?/p>

4.4 編譯內(nèi)核優(yōu)化

編輯/usr/src/Linux/Makefile文件,可以根據(jù)具體的cpu優(yōu)化內(nèi)核編譯。以下的參數(shù)設(shè)置將得到優(yōu)化的內(nèi)核性能。

① vi +18 /usr/src/Linux/Makefile ,將HOSTCC =gcc改為 HOSTCC =egcs.

② vi +25 /usr/src/Linux/Makefile 
將CC =$(CROSS_COMPILE)gcc D__KERNEL__ -I$(HPATH) 
改為 CC =$(CROSS_COMPILE)egcs D__KERNEL__ -I$(HPATH).

③ vi +90 /usr/src/Linux/Makefile 
將CFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer 
改為CFLAGS = -Wall -Wstrict-prototypes -O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions

④ vi +19 /usr/src/Linux/Makefile 
將HOSTCFLAGS =-Wall -Wstrict-prototypes -O2 -fomit-frame-pointer 
改為HOSTCFLAGS =-Wall -Wstrict-prototypes -O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions

根據(jù)以上修改后的makefile文件重新編譯內(nèi)核將得到較優(yōu)的性能。

5. 結(jié)束語

Linux是一個(gè)靈活而又開放的系統(tǒng)。用戶可以針對(duì)具體的應(yīng)用環(huán)境,從系統(tǒng)的外圍到系統(tǒng)的 內(nèi)核進(jìn)行調(diào)優(yōu)。系統(tǒng)的外圍的調(diào)優(yōu)包括系統(tǒng)硬件的配置到系統(tǒng)安裝和系統(tǒng)服務(wù)的優(yōu)化等。系統(tǒng)內(nèi)核的調(diào)優(yōu)包括參數(shù)的修改和改進(jìn)系統(tǒng)的源代碼。我們?cè)卺槍?duì)用作db2數(shù)據(jù)庫(kù)服務(wù)器的Linux系統(tǒng)的調(diào)優(yōu)中,針對(duì)db2數(shù)據(jù)庫(kù)的特點(diǎn),按照本文的各個(gè)調(diào)優(yōu)方面,另外還包括網(wǎng)絡(luò)的調(diào)優(yōu),對(duì)系統(tǒng)性能進(jìn)行了綜合調(diào)優(yōu)。在對(duì)調(diào)優(yōu)后的系統(tǒng)的綜合測(cè)試來看,系統(tǒng)的性能有很大的改進(jìn)。

關(guān)于作者

鄧延軍,男,湖南永州人,西安電子科技大學(xué)軟件工程研究所碩士研究生,主要研究方向多播協(xié)議,系統(tǒng)調(diào)優(yōu)。您可以通過電子郵件deng.yanjun@163.com和他聯(lián)系。 

責(zé)任編輯:黃丹 來源: linuxde.net
相關(guān)推薦

2020-08-03 07:00:00

Snowflake數(shù)據(jù)庫(kù)性能調(diào)優(yōu)

2011-03-10 14:40:54

LAMPMysql

2013-03-20 17:18:07

Linux系統(tǒng)性能調(diào)優(yōu)

2013-03-12 17:33:17

Linux系統(tǒng)性能調(diào)優(yōu)

2013-03-18 15:35:30

2017-07-04 13:02:02

Linux系統(tǒng)性能調(diào)優(yōu)工具

2011-03-10 14:40:52

2013-02-28 13:37:59

系統(tǒng)性能調(diào)優(yōu)技術(shù)實(shí)戰(zhàn)

2011-03-18 11:21:48

2011-05-27 10:35:05

PerfLinux系統(tǒng)性能

2011-03-18 11:13:07

LAMP度量性能

2011-03-21 09:35:38

LAMP調(diào)優(yōu)網(wǎng)絡(luò)文件

2021-07-15 08:00:47

系統(tǒng)性能調(diào)優(yōu)cpunuma架構(gòu)

2011-03-10 14:40:50

2011-03-21 09:17:35

LAMP調(diào)優(yōu)磁盤

2011-03-18 11:00:48

LAMPLAMP 架構(gòu)

2011-07-01 10:09:50

ASP.NET

2023-06-05 09:17:50

SQLAlchemy關(guān)系型數(shù)據(jù)庫(kù)

2024-04-01 08:04:05

JProfilerJVM工具

2019-12-02 09:45:45

Linux IO系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)