2008-12-24 1 views
12

Si je commence à copier une arborescence de fichiers volumineuse d'une position à une autre ou si un autre processus commence à faire beaucoup d'activité, l'application de premier plan (GUI) ralentit descente. Par exemple, prenez un arbre de fichiers de 2 Go avec des fichiers de 100 Ko. Ouvrez une console et faites cp -r bigtree bigtree2. Ensuite, allez sur Firefox et commencez à naviguer. Firefox est presque inutilisable. Même si je place le bon niveau de firefox en très haute priorité (-20), c'est toujours super lent avec d'énormes retards.Comment rendre l'interface graphique Linux "utilisable" lorsque beaucoup d'activité disque se produit

Je me souviens d'il y a quelques années quand je travaillais sur une boîte Solaris, le système se comportait beaucoup mieux dans des circonstances similaires.

Mon HD utilise DMA, pas PIO. C'est SATA. Non monté avec le drapeau atime.

Répondre

7

Essayez ionice en utilisant le processus de copie. Le problème est dû au fait que IO obtient la même priorité que l'interface graphique, ce qui, pour un poste de travail, affecte la réactivité perçue.

Il ya actuellement un Ubuntu brainstorm à ce sujet.

+1

Je vais essayer ça. Mais ce n'est pas exactement ce que je veux. Je veux que toute l'activité du disque de fond s'ionise automatiquement ou quoi que ce soit. Je veux que le système soit assez intelligent pour dire "hé, il y a un humain qui essaie de faire des trucs, arrête de l'énerver." – user126593

+0

Je ne sais pas s'il existe actuellement un moyen de configurer la classe de priorité au niveau global. Cependant, vous pouvez configurer le planificateur d'E/S utilisé pour chaque périphérique de bloc (délai d'écho>/sys/block//queue/scheduler). Lisez http://donami.com/118 pour plus de détails. – codelogic

+1

Le système ne peut pas savoir automatiquement. Vous avez tapé la commande cp, pour tout ce que le système sait que vous attendez anxieusement qu'il finisse. –

16

Linux a longtemps eu un problème avec les programmes qui monopolisent toute la mémoire cache «sale» du système. Qu'est-ce qui se passe, c'est que le processus de copie remplit le cache d'écriture avec les données de fichier qu'il copie et il le fait très rapidement. Ainsi, lorsque Firefox arrive et doit écrire, il doit d'abord attendre un espace tampon sale ou un emplacement d'écriture de file d'attente de disque disponible. En attendant, il est en concurrence avec le processus de copie et le thread pdflush du noyau, qui déplace les données des tampons sales vers la file d'attente d'écriture du disque.

Firefox a encore un autre problème dans ce scénario. Il utilise SQLite pour stocker ses signets, l'histoire et d'autres choses. SQLite est une base de données compatible ACID et utilise un système de transaction avec son disque écrit purgé sur le disque. Donc, non seulement il doit attendre l'espace tampon, il doit attendre que la file d'attente du disque, qui est pleine de fichier copié, soit effacée avant de pouvoir reconnaître une écriture réussie.

Il y a eu un lot de mise au point du système de mise en file d'attente et de mise en mémoire tampon du disque Linux. Il y a des changements dans presque toutes les versions du noyau. Essayez l'une des versions les plus récentes. Vous pouvez également essayer de modifier les valeurs sysctl. Je ressemble à ceci:

vm.dirty_writeback_centisecs = 100 
vm.dirty_expire_centisecs = 9000 
vm.dirty_background_ratio = 4 
vm.dirty_ratio = 80 

Vous pouvez également essayer de régler le nombre d'emplacements dans la file d'attente de disque. Cette valeur est dans /sys/block/sda/queue/nr_requests. Vous devez remplacer sda avec ce que votre lecteur est vraiment. Plus de slots signifie plus de chances de fusionner les requêtes d'E/S et le planificateur d'E/S CFQ peut faire un meilleur travail avec les priorités. Moins d'emplacements signifie généralement une attente plus courte pour être écrit sur le disque pour les E/S synchrones comme les transactions de SQLite. Un nombre inférieur d'emplacements signifie également une attente plus courte pour lire les E/S dans la file d'attente du disque si un processus lourd en écriture insère complètement la file d'attente avec des E/S d'écriture.

+0

+1 pour une réponse très bonne et détaillée. Peut-être qu'il pourrait utiliser un autre navigateur, aussi. Firefox est boiteux et gonflé. –

+0

[Article LWN connexe] (https://lwn.net/Articles/572911/) et [Réponse Unix.SE] (https://unix.stackexchange.com/a/107722/27672). – Ruslan

2

Vous n'êtes pas le premier à remarquer ce problème. Ancien développeur du noyau [Con Kolivas] (http://en.wikipedia.org/wiki/Con_Kolivas) a constaté que beaucoup de sociétés paient améliorer les performances du serveur Linux au détriment des performances de bureau. Con avait un set of patches for making the desktop more responsive impressionnant. Malheureusement, il y avait une sorte de guerre de code et finalement Con dropped out.

Je voudrais savoir comment pétition les développeurs du noyau Linux pour de meilleures performances de bureau. En attendant, si vous souhaitez exécuter le noyau 2.6.22, vous pouvez exécuter avec l'ensemble de correctifs -ck.

0

Assurez-vous que DMA est activé sur tous les lecteurs qui le prennent en charge. Selon votre distribution, il se peut que ce ne soit pas la valeur par défaut. Lire man hdparm, et regarder dans vos systèmes init mécanisme.

Questions connexes