J'ai lu de nombreux threads sur le caching en mémoire et la réponse standard de "un grand cache est bon, cela ne devrait pas affecter les performances", "le kernel sait mieux".
J'ai récemment mis à niveau de 12.04 à 12.10 et suis passé de VirtualBox à VMware Workstation et les différences de performances sont sévères (je soupçonne que cela soit dû à ce dernier).
Quand je lance ma machine virtuelle, le graphique du moniteur de charge système montre généralement moins de 50% d'utilisation de la mémoire. L'indicateur de charge système me montre que le reste de ma RAM est utilisé en cache tout le temps.
Tout simplement, voici la comparaison :
AVANT
- Le cache était très peu utilisé, quasiment aucune de mes utilisations de mémoire n'était dans le cache
- Le swappiness était de 0 (la mémoire était utilisée en premier, puis le swap seulement si nécessaire)
- Les performances étaient assez bonnes et logiques
- La RAM était utilisée entièrement en premier, le caching était minimal. Je pouvais exécuter suffisamment de logiciels pour utiliser mes 4 Go de RAM sans aucune dégradation des performances
- Ensuite, l'espace de swap était utilisé si nécessaire, ce qui était évidemment plus lent (je suis sur un HDD) mais restait utilisable lorsque le programme en cours était chargé en mémoire
APRÈS
- Le cache est utilisé pour remplir les 4 Go entièrement dès que ma machine virtuelle est lancée
- Le swappiness est de 0 (même comportement qu'avant mais le cache utilise toute la mémoire immédiatement)
- Les performances sont terribles et inutilisables lors de l'exécution de logiciels Ubuntu
- Des choses basiques comme changer de fenêtre prend plus de 2 minutes
- Le changement d'écrans se fait image par image, parfois jusqu'à 5 minutes
- Impossible de faire fonctionner un IDE et une VM comme je pouvais le faire facilement auparavant
Alors, avez-vous des suggestions sur comment retrouver les performances comme elles l'étaient avant tout en conservant ma configuration actuelle ?
Je soupçonne que VMware est le problème, mais comment voir ce qui est lié à l'utilisation du cache ? Il doit sûrement y avoir un moyen de contrôler ce comportement dans un logiciel aussi perfectionné que VMware ?
Merci
ÉDITION : Il pourrait également être important de noter que le comportement diffère selon que VMware est ouvert ou fermé. Si VMware est ouvert, alors la RAM restera à environ 50% avec 50% de cache et entraînera le gel complet mentionné ci-dessus. À l'inverse, si VMware est fermé (après avoir été ouvert), alors la RAM continuera d'augmenter au besoin / le cache restera en mémoire restante complète sans aucune dégradation des performances notable.
ÉDITION2 : J'ai changé mon swappiness à 5 comme suggéré, aucun changement (j'avais également les mêmes problèmes avec un swappiness de 10 et de 60 avant de poser cette question). En y regardant de plus près, il y a quelque chose de vraiment désordonné. Le moniteur système (et confirmé avec les commandes de terminal suggérées - free -m notamment) montre ce qui suit :
ben@ben-HPdv6:~$ free -m
total used free shared buffers cached
Mem: 3945 3827 117 0 42 2770
-/+ buffers/cache: 1014 2931
Swap: 1905 0 1905
Cela indique que seulement ~1 Go de ma RAM est utilisé et ~3 Go sont en cache disque, MAIS ma VM EST en cours d'exécution et a 1,5 Go de RAM allouée. Il n'y a PAS eu d'augmentation de ma RAM utilisée quand j'ai chargé la VM, mais le cache a bondi. Le moniteur système (confirmé avec ps -aux) indique que vmware a correctement alloué 1,8 Go de RAM mais évidemment free -m indique le contraire. Les résultats suggèrent également le contraire car mon système a eu du mal à ouvrir cette page Chrome pour poster la réponse (je n'ai que VMware Workstation et le terminal ouverts). C'est comme si la mémoire n'était pas déclarée correctement comme utilisation de RAM (par opposition au cache) et ensuite le kernel ne répond évidemment pas correctement sur la base de cela ? Comme s'il essayait de libérer la mémoire cache au fur et à mesure comme il est censé le faire mais qu'il ne peut pas car c'est en fait de la mémoire utilisée / non du cache.
Je lance simplement des idées ici maintenant, je cherche vraiment de l'aide pour comprendre ce qui se passe. Avez-vous la moindre idée de comment découvrir ce qui se passe ? Y a-t-il un moyen de confirmer que c'est un problème de VMware et non un problème d'Ubuntu ?