Linux系統效能優化

2021-06-18 09:56:29 字數 2481 閱讀 7208

由於各種的i/o負載情形各異,linux系統中檔案系統的預設配置一般來說都比較中庸,強調普遍適用性。然而在特定應用下,這種配置往往在i/o效能方面不能達到最優。因此,如果應用對i/o效能要求較高,除了採用效能更高的硬體(如磁碟、hba卡、cpu、mem等)外,我們還可以通過對檔案系統進行效能調優,來獲得更高的i/o效能提公升。總的來說,主要可以從三個方面來做工作:

1、disk相關引數調優

2、檔案系統本身引數調優

3、檔案系統掛載(mount)引數調優

當然,負載情況不同,需要結合理論分析與充分的測試和實驗來得到合理的引數。下面以sas(serial attached scsi)磁碟上的ext3檔案系統為例,給出linux檔案系統效能優化的一般方法。請根據自身情況作適合調整,不要生搬硬套。

1、disk相關引數

1.1 cache mode:啟用wce=1(write cache enable), rcd=0(read cache disable)模式

sdparm -s wce=1, rcd=0 -s /dev/sdb

1.2 linux i/o scheduler演算法

經過實驗,在重負載情形下,deadline排程方式對squidi/o負載具有更好的效能表現。其他三種為noop(fifo), as, cfq,noop多用於san/raid儲存系統,as多用於大檔案順序讀寫,

cfq適於桌面應用。

echo deadline > /sys/block/sdb/queue/scheduler

1.3 deadline排程引數

對於redhat linux建議 read_expire = 1/2 write_expire,對於大量頻繁的小檔案i/o負載,應當這兩者取較小值。更合適的值,需要通過實驗測試得到。

echo 500 > /sys/block/sdb/queue/iosched/read_expire

echo 1000 > /sys/block/sdb/queue/iosched/write_expire

1.4 readahead 預讀扇區數

預讀是提高磁碟效能的有效手段,目前對順序讀比較有效,主要利用資料的區域性性特點。比如在我的系統上,通過實驗設定通讀256塊扇區效能較優。

blockdev --setra 256 /dev/sdb

2、ext3檔案系統引數

2.1 block size = 4096 (4kb)

mkfs.ext3 -b指定,大的資料塊會浪費一定空間,但會提公升i/o效能。ext3檔案系統塊大小可以為1kb、2kb、4kb。

2.2 inode size

這是乙個邏輯概念,即乙個inode所對應的檔案相應占用多大物理空間。mkfs.ext3 -i指定,可用檔案系統檔案大小平均值來設定,可減少磁碟定址和元資料操作時間。

2.3 reserved block

mkfs.ext3 -m指定,預設為5%,可調小該值以增大部分可用儲存空間。

2.4 disable journal

對資料安全要求不高的應用(如web cache),可以關閉日誌功能,以提高i/o效能。

tune2fs -o^has_journal /dev/sdb

3、mount引數

3.1 noatime, nodirtime

訪問檔案目錄,不修改訪問檔案元資訊,對於頻繁的小檔案負載,可以有效提高效能。

3.2 async

非同步i/o方式,提高寫效能。

3.3 data=writeback (if journal)

日誌模式下,啟用寫回機制,可提高寫效能。資料寫入順序不再保護,可能會造成檔案系統資料不一致性,重要資料應用慎用。

3.4 barrier=0 (if journal)

barrier=1,可以保證檔案系統在日誌資料寫入磁碟之後才寫commit記錄,但影響效能。重要資料應用慎用,有可能造成資料損壞。

4、小結

以/dev/sdb為例,優化操作方法如下,引數請自行調整。

sdparm -s wce=1, rcd=0 -s /dev/sdb

echo deadline > /sys/block/sdb/queue/scheduler

echo 500 > /sys/block/sdb/queue/iosched/read_expire

echo 1000 > /sys/block/sdb/queue/iosched/write_expire

blockdev --setra 256 /dev/sdb

mkfs.ext3 -b 4096 -i 16384 -m 2 /dev/sdb1

tune2fs -o^has_journal /dev/sdb1

mount /dev/sdb1 /cache1 -o defaults,noatime,nodirtime,async,data=writeback,barrier=0 (if with journal)

mount /dev/sdb1 /cache1 -o defaults,noatime,nodirtime,async (if without journal)

優化系統效能

程式框架 hibernate3 struts2 spring2 資料庫 sqlserver2008 伺服器 tomcat6 優化方法 1 配置連線池 採用的c3p0連線池 2 在程式中獲取列表時,用iterator代替list 3 在查詢之後可以使用session.clear 方法釋放快取 4 用資...

Linux檔案系統效能優化

由於各種的i o負載情形各異,linux系統中檔案系統的預設配置一般來說都比較中庸,強調普遍適用性。然而在特定應用下,這種配置往往在i o效能方面不能達到最優。因此,如果應用對i o效能要求較高,除了採用效能更高的硬體 如磁碟 hba卡 cpu mem等 外,我們還可以通過對檔案系統進行效能調優,來...

Android 系統效能優化

android作為一種移動裝置的作業系統,無法像pc機一樣具有強大的記憶體和cpu,這就意味著,我們的android應用程式無法無節制的使用記憶體和cpu資源。很多時候我們過多的使用這些資源時,會導致系統的卡頓或者程式anr。常見的記憶體使用異常主要包括兩種 記憶體溢位和記憶體洩露。記憶體溢位 指的...