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?
la source
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/…Réponses:
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_stat
ou d'utiliser le suivre en direct en utilisantvm_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 2
et 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/vm
a 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 àsleepimage
peu 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.plist
puis 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 sauvegardesudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
(si nécessaire à partir du mode mono-utilisateur)la source