Essayez d'ioniser ou d'améliorer le processus de copie. Le problème est dû au fait que les E/S ont la même priorité que l'interface graphique, ce qui, pour un ordinateur de bureau, affecte la réactivité perçue.
Il y a actuellement un remue-méninges Ubuntu à ce sujet.
Linux a longtemps eu un problème avec les programmes qui monopolisent toute la mémoire cache "sale" du système. 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 de l'espace tampon sale ou un emplacement d'écriture disponible dans la file d'attente du disque. 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, son historique et d'autres choses. SQLite est une base de données conforme à ACID et utilise un système de transaction avec ses écritures de disque vidées sur le disque . Ainsi, non seulement il doit attendre de l'espace tampon, mais il doit attendre que la file d'attente du disque, qui est pleine de fichiers copiés, soit effacée avant de pouvoir accuser réception d'une écriture réussie.
Il y a eu beaucoup des ajustements apportés au 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. J'aime plutôt ceux-ci :
vm.dirty_writeback_centisecs = 100
vm.dirty_expire_centisecs = 9000
vm.dirty_background_ratio = 4
vm.dirty_ratio = 80
Vous pouvez également essayer de modifier le nombre d'emplacements dans la file d'attente du disque. Cette valeur est en /sys/block/sda/queue/nr_requests
. Vous devez remplacer sda
quel que soit votre lecteur est vraiment. Plus d'emplacements signifie plus de chances de fusionner les demandes 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. Moins d'emplacements signifie également une attente plus courte pour obtenir des E/S de lecture dans la file d'attente du disque si un processus lourd en écriture remplit complètement la file d'attente avec des E/S d'écriture.