[轉載請註明出處] 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...

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 kezeodsnx 的頭像
    kezeodsnx

    心的距離

    kezeodsnx 發表在 痞客邦 留言(1) 人氣()