Toutes les distributions GNU / Linux que j'ai testées jusqu'à présent ont le problème que chaque fois que le ram est rempli et que le système commence à changer, l'interface utilisateur graphique et de bureau entière ne répond plus comme un enfer au point que parfois je dois attendre environ 5 à 10 secondes après avoir déplacé la souris physique jusqu'à ce que le pointeur de la souris se déplace réellement.
C'est une sorte de comportement gênant, en particulier sur les systèmes à faible ram.
Existe-t-il un moyen de donner à certaines applications / tâches, comme l'environnement de bureau, etc., une priorité plus élevée de rester dans la mémoire RAM que d'autres applications, de sorte que l'application monopolisant toute la mémoire soit permutée avant l'environnement de bureau, etc.?
EDIT: Je parle du cas où toute la RAM est utilisée, donc elle commencera toujours à s'échanger si elle n'est pas désactivée (je ne veux pas que les processus soient tués de manière aléatoire). J'ai eu ce problème non seulement dans les environnements à faible RAM, mais aussi avec 8 Go de RAM sur ma machine de bureau, en partie à cause de nombreuses machines virtuelles, en partie à cause d'une fuite de mémoire. ZRAM n'est pas non plus une solution car il ne fait que retarder le problème. La seule solution à laquelle je peux penser pour ce problème est un utilitaire d'espace utilisateur ou une API de noyau qui permet d'empêcher que certains travaux soient échangés ou du moins le rendent très improbable. Quelqu'un connaît-il une autre solution ou sait-il qu'un tel outil ou une telle API existe ou est prévu?
2e EDIT: ulatencyd ne semble pas fonctionner avec les nouvelles versions de systemd, selon https://aur.archlinux.org/packages/ulatencyd-git/ et https://wiki.archlinux.org/index.php/Ulatencyd . Cela peut être dû au fait que systemd a pris le contrôle total des cgroups du point de vue de l'espace utilisateur si je comprends bien.
cgroup_enable=memory swapaccount=1
sur la ligne de commande du noyau; notez que cela a un coût de performance mineur). Exemple d'implémentation: ulatencyd .Réponses:
Pour autant que je sache, ce n'est pas un problème spécifique à Linux, c'est la façon dont SWAP (ou la mémoire virtuelle) fonctionne. Si le système d'exploitation doit rechercher des données sur le disque dur par opposition à la RAM, il ralentira. Rien de ce que vous pouvez faire à ce sujet, l'accès au disque est beaucoup plus lent que l'accès à la RAM.
Vous ne pourrez pas définir la priorité avec laquelle les processus sont échangés, qui est déterminée par le noyau qui tentera de maximiser l'efficacité, vous ne pourrez pas le faire mieux. Ce que vous pouvez faire est de définir la priorité CPU d'un processus et cela pourrait vous aider. Votre système est abaissé en raison du temps qu'il faut pour lire à partir de / vers SWAP, cela signifie que le CPU devra attendre que les données pertinentes soient récupérées par le processus qui le demande avant de pouvoir continuer. Si vous définissez votre DE pour avoir une priorité plus élevée pour l'accès au processeur, cela devrait pousser ses opérations vers le haut et accélérer les choses un peu.
Ainsi, la priorité du processeur est définie avec les commandes
nice
etrenice
:Les priorités vont de -20 (priorité la plus élevée) à 20 (priorité la plus faible). Pour modifier la priorité d'un processus en cours, vous pouvez faire:
où
$PID
est le PID du processus dont vous souhaitez augmenter la priorité. Vous pouvez utiliserpgrep
pour savoir qui est qui. Par exemple:L'autre option serait de définir le «swappiness» du système qui détermine quand il commencera le swap. Une valeur de permutation de 1 signifie qu'elle ne sera permutée que pour éviter les erreurs de mémoire insuffisante. Des valeurs plus élevées signifient qu'il commencera à échanger même s'il y a encore de la mémoire physique disponible. Vous pouvez définir cette valeur sur une valeur relativement faible pour que votre système permute le moins possible. Ajoutez cette ligne à
/etc/sysctl.conf
:ATTENTION: Ce n'est pas une bonne idée si vous n'avez pas beaucoup de RAM, le swap est une bonne chose en général, vous devrez jouer un peu avec les valeurs pour trouver le bon équilibre pour votre système.
la source