Existe-t-il un moyen pour qu'OSX utilise plus de RAM et moins de swap?


12

Le problème que je rencontre est sur un serveur (et d'autres boîtiers OSX également), nous avons 4 Go de RAM, mais nous constatons que OSX n'utilise que 40 à 60% de la RAM disponible tout en ayant un échange de 6 à 7 Go. Le serveur exécute Apache et MySQL tandis que les autres machines sont des ordinateurs de bureau.

J'ai comparé son utilisation à des boîtiers Linux similaires (matériel et logiciel) et découvert que Linux utilise généralement 80 à 90% de la RAM et a un fichier d'échange beaucoup plus petit (2-3 Go). Les serveurs Linux fonctionnent également généralement beaucoup plus rapidement.

Existe-t-il un moyen de forcer OSX à utiliser plus ou la majeure partie de la RAM avant d'utiliser un fichier d'échange de disque?

Sous Windows, vous pouvez réellement désactiver le swap. Y a-t-il quelque chose de similaire pour OSX?


Pour clarification: 1. Le goulot d'étranglement est-il le système VM? Comme lorsque vous voyez les étoiles de la mémoire, il y a une grande quantité de pages qui se produisent. 2. Où obtenez-vous vos informations de taille Free et VM? Par exemple, la taille de la machine virtuelle indiquée dans le moniteur d'activité n'est pas la même que la taille du fichier d'échange.
Chealion

Je n'ai pas de preuve que le système VM (VM ou swap) est le problème, mais je sais que sur mon bureau j'ai 6 Go de RAM, dont 2-3 Go sont généralement gratuits. Quand je change de programme, on pourrait penser que ce serait très rapide car tout est en RAM, mais à la place, il faut 2 à 15 secondes pour revenir à quelque chose comme Illustrator. Je pense que des choses similaires se produisent sur le serveur - quelque chose comme la mise en cache pour MySQL ou des tables temporaires. J'utilise top pour déterminer l'utilisation de la VM, de la RAM et du swap. Des idées?
Darryl Hein

3
Pour déterminer l'utilisation réelle de VM, le plus simple est d'exécuter du -sh /var/vm- cela dit, il peut être artificiellement élevé s'il y a une image de veille (le plus souvent vue sur les ordinateurs portables). Il existe plusieurs outils disponibles qui peuvent vous aider à déterminer si c'est la mémoire qui est à l'origine des ralentissements: vm_stat- en particulier, vous êtes intéressé par la valeur des pages imprimées - si elle augmente un peu, vous savez que vous échangez beaucoup. Pour plus d'informations sur la façon dont Apple gère sa mémoire: developer.apple.com/documentation/Performance/Conceptual/…
Chealion

Réponses:


17

La réponse la plus basique? Non. Le système d'exploitation gère la gestion de la mémoire de l'utilisateur - donnant à un processus autant de mémoire qu'il en a besoin et ne fournit pas grand-chose en termes de possibilité de modifier les performances du système. Cela n'aide pas beaucoup à essayer de comprendre si l'utilisation de la mémoire fait partie de l'équation pour expliquer pourquoi les serveurs Linux surpassent les serveurs Mac.

En raison du manque de "piratage" dans le système de mémoire virtuelle, vos meilleures options sont d'évaluer les performances de la mémoire virtuelle pour voir si c'est vraiment la raison pour laquelle vous rencontrez des problèmes de performances - le plus simple est d'utiliser vm_statou d'utiliser le suivre en direct en utilisant vm_stat [number of seconds]pour voir le nombre de pages qui se produisent. Le déplacement des pages inutilisées de la RAM vers le disque dur a un coût bien inférieur à celui de récupérer les pages du disque dur vers votre RAM. Une page en termes OS X fait référence à 4 Ko de données.

De plus, les processus 32 bits (par exemple Illustrator) ne peuvent pas accéder à plus de 4 Go, il est donc théoriquement possible d'avoir 2 Go d'espace libre et un processus à court de mémoire si vous avez installé 6 Go.

Sur votre bureau et sur les serveurs, je voudrais exécuter vm_stat 2et vérifier la dernière colonne - en particulier lorsque vous rencontrez le délai de plusieurs secondes lorsque vous passez à dire Illustrator.

Pour savoir quelle est la taille réelle du swap, vous pouvez soit vérifier la taille du swap dans Activity Monitor, soit exécuter du -shc /var/vm/swap* | tail -n 1.

L'utilisation du -sh /var/vma une mise en garde: sur les ordinateurs portables qui ont le mode de mise en veille prolongée (quoi que ce soit pour les 4 dernières années ou plus récent), il peut y avoir à sleepimagepeu près la taille de la quantité de mémoire que vous avez installée.


Jargon de la mémoire Mac OS X:

Filaire : cela fait référence au code du noyau et autres. Mémoire qui ne doit jamais être retirée de la RAM. Aussi connu comme mémoire résidente.

Partagé : mémoire partagée entre deux processus ou plus. Les deux processus afficheraient cette quantité de mémoire, il peut donc être un peu trompeur quant à la quantité de mémoire réellement utilisée.

Réel : il s'agit de l'utilisation de la mémoire "réelle" pour une application, telle que rapportée par task_info () - un décompte approximatif du nombre de pages physiques du processus en cours. (RSIZE)

Privé : il s'agit de la mémoire qu'un processus utilise uniquement de son propre chef et qui est utilisée dans la mémoire résidente. (RPRVT)

Virtuel : la quantité totale d'espace d'adressage dans le processus qui est mappée à quoi que ce soit - qu'il s'agisse d'un espace arbitrairement grand pour les variables ou quoi que ce soit - cela n'équivaut pas à l'utilisation réelle de la machine virtuelle. (VSIZE)

Actif : la mémoire actuellement étiquetée comme active et utilisée comme RAM.

Inactif : "La mémoire inactive n'est plus utilisée et a été mise en cache sur le disque. Elle restera en RAM jusqu'à ce qu'une autre application ait besoin d'espace. Laisser ces informations en RAM est à votre avantage si vous (ou un client de votre ordinateur) revenez plus tard. " - Aide Mac OS X

Gratuit : la quantité de RAM réellement disponible sans aucune donnée.


La meilleure documentation que je connaisse (et que j'ai pu trouver dans la recherche de suivi) est le propre article d' Apple sur la gestion de la mémoire sur leur site Web de développeur.

Autres sources utiles: liste de diffusion Darwin-dev: [ 1 ], [ 2 ] et un ancien article sur MacOSXHints . De plus, Mike Ash a publié une introduction de bon profane sur son blog


Il peut être possible (je ne l'ai pas essayé) de désactiver le système de mémoire virtuelle en exécutant sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plistpuis en redémarrant afin que dynamic_pager (le programme qui effectue l'allocation de mémoire virtuelle) ne démarre pas. Cependant, parce que le système d'exploitation suppose qu'il dispose de mémoire virtuelle, vous pouvez vous retrouver très rapidement avec des problèmes. Pour le charger, exécutez la sauvegarde sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist(si nécessaire à partir du mode mono-utilisateur)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.