[轉載請註明出處] http://kezeodsnx.pixnet.net/blog
作者: kezeodsnx
Tune performance是一件很煩的事,看起來好像只是調調參數,其實不然。沒有對整個系統有一定的了解,根本不知從何調起,該調多少,在哪裡調。基本上,tune這件事應該是算advanced skill。下面是有試過的參數:
Reference:Linux performance tuning guide
1. /sys/block/sda/queue/nr_requests: Linux 2.6後的I/O scheduler實作了增加或減少發給disk subsystem的request數量。這個值不會是一體適用的,不同的disk subsystem,不同的worklaod,不同的I/O模式都有影響。即便是相同的disk subsystem,其block/secor size不同也造成影響。修改方式:
echo 64 > /sys/block/sda/queue/nr_requests
2./sys/block/sda/queue/read_ahead_kb (KB): 這個值定義了每一個read operation最多可以讀多少。通常在streaming的情況下會比較有用。在一般使用下,因為是random I/O,設大一些並沒有什麼顯著的改善。修改方式:
echo 512 > /sys/block/<disk_subsystem>/queue/read_ahead_kb
在kernel部分,是在/kernel/block/blk-settings.c裡設定
void blk_queue_make_request(struct request_queue *q, make_request_fn *mfn)
{
/*
* set defaults
*/
q->nr_requests = BLKDEV_MAX_RQ;
blk_queue_max_phys_segments(q, MAX_PHYS_SEGMENTS);
blk_queue_max_hw_segments(q, MAX_HW_SEGMENTS);
q->make_request_fn = mfn;
q->backing_dev_info.ra_pages =
(VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
對SD的設定為: nr_requests=64, read_ahead_kb=512。
3. /proc/sys/vm: 此目錄下是檔案是用來調整virtual memory和寫dirty page到disk的參數
swappiness: 這是讓kernel使用swap的傾向,愈高表示用愈多swap。例如:0表示儘量使用memory,100則表示用力的操swap。
drop_caches: kernel根據這個值來drop clean cache,dentries和inodes,free掉memory
To free pagecache:
- echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:
- echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:
- echo 3 > /proc/sys/vm/drop_caches
To be Continued...
留言列表