Lorsque je copie des fichiers vers et depuis des périphériques USB (appareil photo, disque dur, carte mémoire), mon système devient très lent. Par exemple, si je veux fermer une fenêtre, je déplace la souris mais cela prend environ 2 secondes ou plus avant que le curseur de la souris ne se déplace. Lorsque je place enfin le curseur sur le x et que je clique dessus, rien ne se passe pendant plus de 10 secondes. J'ai essayé cela avec tous les effets de bureau désactivés, mais le problème persiste.
Logiciel: Linux Mint 9 KDE Matériel:
- Carte mère Asus SLI
- NVidia 6600 GPU
- 2 Go de RAM
- Échange de 2 Go
- AMD Athlox X2 @ 3800+
Pour moi, ce matériel ne devrait pas avoir de problèmes lors de l'exécution de ce logiciel et ce n'est pas le cas jusqu'à ce que je copie des fichiers via USB. Où dois-je commencer à chercher celui-ci? Je pense en quelque sorte que le pilote graphique peut être une partie du problème, mais je ne sais pas avec certitude.
la source
Réponses:
Il semble y avoir un problème avec les pages énormes dans la gestion de la mémoire Linux . Cela se produit rarement, mais on dirait que vous l'avez observé.
Cause
Ceci est mon compte grossièrement simplifié de ce qui, selon l'article, se produit.
En cas de malchance, un processus se bloque au moment où il délivre un accès à la mémoire. En effet, lorsque des pages volumineuses transparentes sont activées, un accès à la mémoire peut déclencher un compactage synchrone (défragmentation de la mémoire principale), synchrone, ce qui signifie que l'accès à la mémoire ne se termine pas avant le compactage. Ce n'est pas en soi une mauvaise chose. Mais si l'écriture différée (par exemple des données mises en mémoire tampon sur USB) se produit en même temps, le compactage à son tour risque de s'arrêter, en attendant que l'écriture différée se termine.
Ainsi, tout processus pourrait finir par attendre qu'un périphérique lent termine l'écriture des données en mémoire tampon.
Guérir
La mise à niveau de la mémoire principale, comme l'a fait l'OP, peut aider à retarder le problème. Mais pour ceux qui ne considèrent pas cela comme une option, il existe deux solutions de contournement évidentes. Les deux impliquent la recompilation du noyau:
la source
Cela ressemble à ma question ici (où une réponse m'a dirigé vers cette question):
/programming/10105203/how-can-i-limit-the-cache-used-by-copying-so-there-is-still-memory-available-for
Mais la théorie est complètement différente, et la solution que j'ai utilisée n'est pas liée à la vôtre, mais fonctionne parfaitement.
J'utilisais rsync, donc tout ce que j'avais à faire était d'utiliser l'option --drop-cache. (ce qui rend la copie un peu plus lente comme effet secondaire)
la source
La seule astuce que j'ai trouvée qui fonctionne vraiment: Gnome, la copie de fichiers nautilus sur USB s'arrête à 100% ou près
Si vous souhaitez essayer quelques astuces pour les utilisateurs expérimentés, vous pouvez réduire la taille du tampon utilisé par Linux en définissant / proc / sys / vm / dirty_bytes à quelque chose comme 15728640 (15 Mo). Cela signifie que l'application ne peut pas obtenir plus de 15 Mo avant sa progression réelle.
Un effet secondaire est que votre ordinateur peut avoir un débit d'écriture de données inférieur avec ce paramètre, mais dans l'ensemble, je trouve utile de voir qu'un programme s'exécute longtemps alors qu'il écrit beaucoup de données contre la confusion d'avoir un Le programme semble avoir terminé son travail, mais le système est à la traîne car le noyau fait le travail réel. La définition de dirty_bytes sur une valeur raisonnablement petite peut également aider à empêcher votre système de ne plus répondre lorsque vous manquez de mémoire et exécutez un programme qui écrit soudainement beaucoup de données.
Mais ne le mettez pas trop petit! J'utilise 15 Mo comme estimation approximative du fait que le noyau peut vider le tampon sur un disque dur normal en 1/4 de seconde ou moins. Cela empêche mon système de se sentir "lent".
la source