阻止gtk FileChooserDialog调用目录中的所有文件的stat?

时间:2009-04-30 23:22:35

标签: linux performance dialog gtk

打开一个gtk FileChooserDialog对包含许多文件的nfs目录来说非常慢。 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应用程序因此文件选择器问题而瘫痪...

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

GTK文件打开对话框很可能是stat(2)目录中的所有文件。它是目录上ls -l的等价,它应该缓慢运行。 ls | cat的输出(明显更快)可能还不够,因为那个文件无法区分文件。

我建议测量ls | catls -l和GTK文件打开对话框。如果GTK文件打开对话框比ls -l慢很多,那么GTK(而不是NFS)有问题。我通过strace运行GTK应用程序,看看速度慢。如果GTK文件打开对话框的速度与ls -l大致相同,我认为它不会更快 - 可能会调整NFS挂载标志,升级NFS客户端和服务器,或者可以切换更快的基础设施,如Samba。

答案 2 :(得分:-1)

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

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