Предотвращение вызова gtk FileChooserDialog stat для всех файлов в каталоге? - PullRequest
2 голосов
/ 01 мая 2009

Открытие 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 секунд, по сравнению с примерно 25 мс для 'ls', чтобы отобразить тот же каталог.

Наше приложение eclipse повреждено этой проблемой выбора файлов ...

Ответы [ 3 ]

2 голосов
/ 13 мая 2009

Команда gtk + и gnome имеют отчет bug , относящийся к этой проблеме, по крайней мере с 2005 года. Последние и будущие изменения в основных библиотеках gnome, надеюсь, улучшат производительность. Эта проблема может усугубиться, если у вас есть закладки на сетевые диски в меню выбора файлов.

0 голосов
/ 02 мая 2009

В диалоге открытия файлов GTK, скорее всего, указаны все файлы в каталоге. Это эквивалент ls -l для каталога, и он должен работать медленно. Вывод ls | cat (что значительно быстрее) может оказаться недостаточным, поскольку он не может отличить файлы от каталогов.

Я бы посоветовал измерить ls | cat, ls -l и диалог открытия файла GTK. Если диалог открытия файла GTK намного медленнее, чем ls -l, то с GTK что-то не так (не NFS). Я запускаю приложение GTK через strace и вижу, что медленно. Если диалог открытия файла GTK имеет примерно ту же скорость, что и ls -l, я не думаю, что его можно сделать быстрее - возможно, можно настроить флаги монтирования NFS, обновить клиенты и серверы NFS или можно переключиться на более быстрая инфраструктура, такая как Samba.

0 голосов
/ 01 мая 2009

Смонтирована ли директория noatime? Это может помочь со статистикой, так как atime для каждого файла будет обновляться со статистикой.

Вам потребуется перемонтировать nfs mount с -o noatime, чтобы отключить обновление времени.

...