如何在FUSE readdir调用中返回文件stat信息



我已经实现了一个FUSE文件系统,现在我正在努力优化性能,因为包含数千个文件的目录的等待时间长达数秒。

一些日志记录告诉我,在我返回文件名列表后,getattr会为每个文件调用一次(对于我的10000个文件的测试目录,调用10000次),结果是5秒的等待时间会增加到20秒。

我使用的FUSE版本[1]似乎支持返回元组列表(name, stat, offset)和名称列表,所以我尝试返回

(
  '<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'

我发现调用getattr的次数超出了您的控制范围。根据您的实现,您可以通过在getattr中缓存结果来提高性能。

最新更新