2011-09-01 133 views
0

我在用戶空間設計一個文件系統,需要測試它。我不想使用現有的基準測試工具,因爲我的要求不同。所以要測試我希望模擬文件訪問操作的文件系統。爲此,我首先使用ftw()函數遍歷現有的文件系統(實驗),並列出文件中的所有文件和目錄。模擬文件系統訪問

然後我調用一個模擬器來模擬許多進程的文件訪問。因此,模擬器會隨​​機啓動一個進程,即它會分配一個線程,從而完成真正的進程。線程隨機選擇文件操作(讀取,寫入,重命名等)從列表中選擇參數(由ftw()生成)。線程執行一些這樣的文件操作,然後退出標記進程的結束。模擬器繼續產生線程;線程執行可以像實際進程一樣重疊。現在,由於線程執行操作,所以文件被插入,刪除,重命名並且在文件列表中更新。

我還沒有開始編碼。計劃看起來是否理智?我也不知道如何編寫模擬器......它將如何在一段時間內產生線程。我應該使用一些隨機延遲來做到這一點。

謝謝

+0

你想達到什麼目的?我會堅持飛釣 - 帽子更好。 –

回答

0

是的,這對我來說似乎相當合理。我會考慮嘗試對您的文件操作進行統計分佈(並訪問特定文件),這些分佈與您的預期工作負載相匹配。您可能能夠找到有關典型文件系統工作負載的一些統計信息作爲起點。

+0

@ Gian ..謝謝。我在類似的線路h but,但不知道我知道如何做到這一點..是否有一些參考我會讀 –

+1

http://www.debian-administration.org/articles/388似乎談論他們過去的工作量比較文件系統。像複製和複製文件樹這樣的東西看起來像是一個很好的測試,就像他們在那裏建議的那樣。 – Gian

0

這聽起來是正確的一個體面的測試案例,以確保它的工作。您可以使用sleep()在產卵線程之間等待,或者只是一次產生它們,然後讓它們執行一個操作,然後等待一段時間,然後執行另一個操作等等......如果您碰到很多請求,它的工作,那麼你的文件系統可能會很好。以PostMark爲例,它所做的所有事情都會瘋狂地追加到不同的文件和其他基準上,以便在不同位置進行隨機讀取/寫入,以確保頁面必須從磁盤讀取。

+0

謝謝..我的要求是誘導進程間文件共享 –

+0

實際上,帶有文件的IPC應該由操作系統和共享內存頁面完成。如果你的意思是一次打開和編輯多個進程的文件,那麼你可能無法得到正確的操作系統(除非你重寫了一些東西)可以並將重新排列塊I/O矢量併合並它們,這將產生不正確的輸出。 –

+0

我已經編寫了代碼來照顧分享......這就是我想要檢查的內容 –