我已经实现了FUSE文件系统,现在我正在尝试优化性能,因为包含成千上万个文件的目录的等待时间为数秒。

一些日志记录表明,在我返回文件名列表之后,每个文件都会调用一次getattr(对于10,000个文件的测试目录,该文件将被调用10,000次),结果是5秒的等待时间变成了4倍。等待时间为20秒。

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

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


每个文件,但getattr仍被每个文件调用一次。

谁知道我在导致操作系统仍然调用statgetattr中缺少什么,或者我无能为力改变这种行为吗?

[1]


  版权所有(c)2008 Giorgos Verigakis
  
  __version__ ='1.1'

最佳答案

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

关于python - 如何在FUSE readdir调用中返回文件统计信息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25938832/

10-12 00:43
查看更多