Linux文件預讀對系統的影響(2)

發表于:2014-01-20來源:IT博客大學習作者:Yu Feng點擊數: 標簽:linux
test 1025 1084 1024 cp 3 36 18 ... #第二次拷貝test,我們可以看到 用戶要1025個頁面,預讀決定讀284,但是實際IO讀了0,很合理,因為所有的頁面在pagecache里面都已經

  test 1025 1084 1024

  cp 3 36 18

  ...

  #第二次拷貝test,我們可以看到 用戶要1025個頁面,預讀決定讀284,但是實際IO讀了0,很合理,因為所有的頁面在pagecache里面都已經存在

  Tue May 31 05:50:46 2011, TOTAL: 1038, SKIP: 804, REQ: 1039, TO_RD: 328, NR_RD: 0

  FILENAME REQ TO_RD NR_RD

  test 1025 284 0

  cp 3 4 0

  ...

  Linux系統不僅為文件的讀取提供自動預讀,還提供了readahead這樣的系統調用和工具,幫助用戶主動預加載數據,我們演示下:

  $ readahead junk

  Preloaded 0 files (0 KB) in 5 ms

  另外一個窗口說:

  Tue May 31 05:57:45 2011, TOTAL: 1044, SKIP: 805, REQ: 1045, TO_RD: 348, NR_RD: 0

  FILENAME REQ TO_RD NR_RD

  junk 1026 284 0

  readahead 3 4 0

  Linux還支持對每個設備設定預讀的默認大小,不同的大小可以用來控制預讀的力度,用戶可以自行改變:

  $ pwd

  /sys/block/sda/queue

  $ cat read_ahead_kb

  128

  $ echo 256 |sudo tee read_ahead_kb

  256

  后續我會用這個工具分析leveldb數據庫的行為,歡迎關注!

  總結: 如果actual讀比用戶req的要多很多, 那么我們的很多預讀就浪費了,可以考慮減少預讀的大小。

原文轉自:http://blogread.cn/it/article/3670

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97