2014-09-19 71 views
1

我已經實現了一個FUSE文件系統,現在我正試圖優化性能,因爲具有數千個文件的目錄的等待時間會在幾秒鐘內運行。如何在FUSE readdir調用中返回文件統計信息?

一些日誌記錄顯示,在我返回文件名列表後,getattr然後每個文件被調用一次(對於10,000個文件,我的測試目錄爲10,000次),結果是5秒的等待時間增加了四倍進入20秒等待時間。

我使用[1]似乎支持返回元組(name, stat, offset)以及名稱的列表列表FUSE的版本,所以我試圖返回

(
    '<file_name>', 
    <stat with st_atime, st_mtime, st_mode, st_uid, st_gid, st_size>, 
    0, 
) 

爲每個文件,但getattr是每個文件仍然被調用一次。

有人知道我在stat中丟失了什麼導致O/S仍然調用getattr,或者我沒有辦法改變這種行爲嗎?

[1]

版權所有(C)2008 Giorgos Verigakis

__version__ = '1.1'

回答

0

我發現的時候GETATTR撥打的號碼是無法控制的。根據您的實現,您可以通過在getattr中緩存結果來提高性能。

相關問題