Запретить gtk FileChooserDialog вызывать stat для всех файлов в каталоге?

StackOverflow https://stackoverflow.com/questions/809560

  •  03-07-2019
  •  | 
  •  

Вопрос

Открытие 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 повреждено из-за этой проблемы с селектором файлов...

Это было полезно?

Решение

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

Другие советы

Диалоговое окно открытия файла 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?Это может помочь со статистикой, поскольку время для каждого файла будет обновлено с учетом статистики.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top