2009-11-23 68 views
4

我有一個學校項目,我必須找出在多重處理器機器上重載和輕負載下文件系統有多少高速緩存未命中。在和我的教授討論這個之後,我想出了一個基本的執行計劃:確定各種文件系統的高速緩存未命中

  1. 創建一個程序,它會讓文件系統停滯並填充緩衝區緩存。
  2. 使用系統基準測試工具記錄緩存未命中次數。
  3. 沖洗並重新使用新的條件。

但是作爲操作系統設計的新手,我不確定如何繼續。所以這裏有一些我需要的地方help

  1. 理想的程序會執行什麼操作來填充緩衝區緩存?目前,我寫的程序讀取和寫入幾個不同的文件,次數。
  2. 有哪些工具可以記錄緩存未命中的數量?我已經看過oprofile,但我不認爲它會監視文件系統的緩衝區緩存。但我發現這個看起來很有前途的list
  3. 其他正在運行的進程是否會影響這些基準?

感謝您的幫助!

+0

你在使用什麼操作系統?不同的操作系統將使用不同的工具。 – 2009-11-23 15:52:19

+0

我使用Ubuntu 9.10(ext4)開始,但我也想測試ext2,ext3和zfs。 Ext2和ext3,我會在舊版本的Ubuntu上進行測試,我將使用OpenSolaris for ZFS。 – vrish88 2009-11-23 16:37:14

回答

2

1)如果您試圖測試您的文件系統性能,請引入多個線程來處理大量的文件元數據以及您的I/O線程。另外,在幾個並行線程中執行I/O時,混合執行大尺寸傳輸的線程和執行小尺寸傳輸的線程。許多文件系統會將小I/O操作合併爲更大的請求,物理驅動器可以以更省時的方式處理,並且混合各種大小的I/O可以更快地填滿緩存(因爲它必須緩存合併的I/O)。

2)請注意這些工具列表,其中很多看起來像是設計爲在原始設備上運行,而不是通過文件系統層運行(因此您得到的結果可能並不代表您認爲他們在做什麼)。如果您正在尋找一種工具來對特定的文件系統進行基準測試,那麼最好的辦法可能是與開發團隊覈對該文件系統。即使它是內部開發的定製工具,它們也可能很有可能指向他們在開發過程中對其FS進行基準測試的工具。

3)是的,任何正在運行並可能訪問被測文件系統的文件都可能會影響您的結果。您可能希望創建一個單獨的文件系統以僅用於此測試,並關閉可能在您運行測試時嘗試訪問它的任何後臺掃描。

0

這是一個有趣的問題。可能我可以給你一個部分答案。

你應該知道,Linux已經對文件可能有不同的工具

  • inode緩存
  • 目錄項緩存
  • 塊高速緩存

一種方法是系統相關的多個緩存計算(猜?)您的操作應該生成多少塊級別的流量,然後使用blktrace測量實際塊操作(讀取,寫入,查找)。

我不知道有任何方法來讀取inode和dentry緩存的緩存未命中狀態。我真的很想被告知我在這裏是錯的。

困難的方法是使用自己的計數器對inode緩存和dentry緩存進行註釋,但這些緩存是非常難的內核代碼。

相關問題