在 cifs mount strace 上调试慢速 ls 使其变得更快

oll*_*lle 2 linux cifs strace

我有一台安装了 cifs 共享(Azure 存储文件)的服务器。有时 ls 返回缓慢(20 秒)。经过一番调试后,我到目前为止发现:

  • ls /data/some/symlink/directory20秒内返回
  • 进入 /data/some/symlink/directory 然后执行ls .需要 0.02 秒
  • ls /data/original/location/that/symlinkpoints/to/directory也返回亚秒

ls 的 20 秒返回时间似乎受到目录中文件数量的影响。目录越大,花费的时间就越多。

这让我认为这与 ls 处理符号链接的方式有关。就像它必须为每个文件或其他东西解决它一样。

为了调试这个,我想通过 strace 运行 ls 来看看我是否可以看到不同情况之间的系统调用有什么区别。但是如果我跑

strace ls /data/some/symlink/directory it also returns sub second suddenly.
Run Code Online (Sandbox Code Playgroud)

关于为什么通过 strace 运行它会使其速度更快以及如何进一步调试有什么想法吗?

oll*_*lle 5

原来是 ls /home/someuser/.bashrc 的别名:alias ls='ls --color=auto'

--color=auto 选项导致 ls 在我的终端中返回颜色,但不在 strace 中返回颜色。为了支持颜色,需要统计文件。