对于包含许多文件的 nfs 目录,打开 gtk FileChooserDialog 的速度非常慢。strace 显示了很多时间调用“stat”。目录中的每个文件大约有 5 次调用。我们如何关闭对“stat”的调用并只显示文件名列表而不显示修改时间?

我们使用的是Redhat enterprise 4,x86_64,Linux 2.6.9-42.0.8.ELsmp,FileChooser来自:/usr/lib64/libgtk-x11-2.0.so.0.400.13 。测试程序打开 FileChooserDialog 并需要 10 秒才能出现,而“ls”列出同一目录大约需要 25 毫秒。

我们的 Eclipse 应用程序因这个文件选择器问题而瘫痪......

有帮助吗?

解决方案

gtk +和gnome团队有一个与此问题相关的错误报告至少自2005年以来.Gnome核心库的最新和未来变化将有望改善性能。 如果您在filechooser菜单中有任何网络驱动器的书签,则可能会加剧此问题。

其他提示

GTK 文件打开对话框很可能正在统计 (2) 目录中的所有文件。它相当于 ls -l 在目录上,它应该缓慢地运行。的输出 ls | cat (速度明显更快)可能还不够,因为它无法区分文件和目录。

我建议测量 ls | cat, ls -l 和 GTK 文件打开对话框。如果 GTK 文件打开对话框比 ls -l, ,那么 GTK(不是 NFS)有问题。我会通过以下方式运行 GTK 应用程序 strace, ,看看什么是慢的。如果 GTK 文件打开对话框的速度与 ls -l, ,我不认为它可以变得更快——也许可以调整 NFS 安装标志,升级 NFS 客户端和服务器,或者可以切换到更快的基础设施,例如 Samba。

目录是否已安装noatime?这可能有助于统计,因为每个文件的atime将使用stat更新。

您需要使用-o noatime重新装入nfs mount才能关闭atime更新。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top