Domanda

L'apertura di un FileChooserDialog gtk è dolorosamente lento per le directory nfs che contengono molti file. strace mostra molto tempo chiamando " stat " ;. Circa 5 chiamate per ciascuno dei file nella directory. Come possiamo disattivare le chiamate a "stat" e mostrare un elenco di nomi di file senza il tempo di modifica?

Stiamo usando Redhat enterprise 4, x86_64, Linux 2.6.9-42.0.8.ELsmp e FileChooser proviene da: /usr/lib64/libgtk-x11-2.0.so.0.400.13. Un programma di test apre un FileChooserDialog e richiede 10 secondi per comparire, rispetto a circa 25 ms per "ls" per elencare la stessa directory.

La nostra applicazione eclipse è paralizzata da questo problema del selettore di file ...

È stato utile?

Soluzione

Il team di gtk + e gnome ha un bug relativo a questo problema , almeno dal 2005. Cambiamenti recenti e futuri nelle librerie core di gnome potrebbero migliorare le prestazioni. Questo problema può essere aggravato se si hanno segnalibri su unità di rete nel menu Filechooser.

Altri suggerimenti

La finestra di dialogo aperta del file GTK sta probabilmente stat (2) ting tutti i file nella directory. È un equivalente di ls -l nella directory e dovrebbe funzionare lentamente. L'output di ls | cat (che è significativamente più veloce) potrebbe non essere sufficiente, perché non è possibile distinguere i file dalle directory.

Suggerirei di misurare ls | cat , ls -l e la finestra di dialogo aperta del file GTK. Se la finestra di dialogo aperta del file GTK è molto più lenta di ls -l , allora c'è qualcosa che non va in GTK (non NFS). Avrei eseguito l'applicazione GTK tramite strace e avrei visto cosa è lento. Se la finestra di dialogo aperta del file GTK ha circa la stessa velocità di ls -l , non credo che possa essere resa più veloce - forse i flag di montaggio NFS possono essere modificati, i client e i server NFS aggiornati, o è possibile passare a un'infrastruttura più veloce come Samba.

La directory è montata noatime? Ciò può aiutare con le statistiche poiché l'atime per ogni file verrà aggiornato con le statistiche.

Dovrai rimontare il mount di nfs con -o noatime per disattivare l'aggiornamento atime.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top