Je pensais que j'ai compris comment Macosx gère la mémoire, mais récemment, je suis devenu déconcerté par sa performance. Voici la situation: p>
Quelqu'un peut-il me donner une idée de la raison pour laquelle MacOSX ne libère pas la mémoire inactive des processus qui en ont besoin, au lieu de recourir à la pagination? Aussi, y a-t-il un moyen adéquat d'influencer la gestion de la mémoire par le système? P>
La seule chose qui me vient à l'esprit est que le noyau 32 bits pourrait être le facteur limitant, même si je ne sais pas pourquoi. Je sais que vous pouvez démarrer MacOSX avec un noyau de 64 bits, mais je ne pourrai donc pas charger un certain nombre d'applications 32 bits, ce n'est donc pas une option pour moi. P>
4 Réponses :
Eh bien, apparemment, la solution de contournement requise consiste à utiliser le purge code>
commande sur macosx. Cela effacera les caches marquant la majeure partie de la mémoire inactive comme gratuite. Il semble que le système d'exploitation conserve le plus de mémoire inactif possible afin d'améliorer la réactivité de l'interface graphique, qui a malheureusement une incidence sur la performance de certains outils à forte intensité de mémoire. P>
Il y a un fil avec quelques informations supplémentaires sur un SISTER SITE . P>
Je me demande si MacOSX Server peut être réglé pour publier davantage la mémoire inactive des processus non-GUI ... P>
Il existe des problèmes évidents dans la gestion de la mémoire dans le système d'exploitation X ... P>
S'il vous plaît, jetez un coup d'œil à mon message: Problème de performance du lion Mac OS X - Gestion de la mémoire brisée A > En outre, j'ai enregistré une vidéo d'écran, où le système commence à accrocher lorsque toute la mémoire libre est partie et que la mémoire inactive est de 4-5 Go! Problème de performance de Lion Mac OS X - Vidéo d'écran P>
Qu'est-ce que j'ai fait ... J'exécute la commande TAR + BZIP, qui est des trucs de base UNIX, sur la grande quantité de fichiers image, dans mes images / dossiers. Juste avant le début, je gère la commande "purge" pour supprimer des données de programme inactifs / mis en cache. P>
Vous pouvez voir sur la vidéo que la mémoire libre commence à tomber très rapide et inactive est en augmentation constante. Si vous consultez la commande "BSDtar", il ne prend qu'un fragment de RAM. Le problème n'est donc pas dans ce processus. Vous ne pouvez pas dire que c'est une fuite de mémoire de programme, car le problème ne serait pas dans la RAM inactive, plutôt en actif / câblé. P>
Lorsque la mémoire libre est tombée en dessous de 100 Mo, j'ai démarré des applications, telles que Safari, iPhoto et MS Word, et vous pouvez voir dans la vidéo, qu'il faut une minute (!) pour démarrer une application, quand normalement (quand il y a est une RAM gratuite), il faudrait environ 3-5 secondes à charger. P>
J'ai eu un problème très similaire: la mémoire inactive n'a jamais été libérée. Le disque dur était donc constamment une pagination. Mise à niveau vers Macosx Mountain Lion finalement corrigée. P>
Dans Mac OS X, la mémoire inactive constitue tous ces processus qui n'utilisent pas de cycles de processeur actuellement I.E Usage de la CPU est de 0%. La mémoire active d'autre part est composée de tous les processus utilisant la CPU pour l'exécution. Lorsqu'un nouveau processus / programme est lancé, il fait partie de la mémoire active avec tous les autres processus en cours d'exécution (ce qui signifie avoir une utilisation de la CPU). Si la mémoire libre suffit pour ajuster le nouveau processus dans, tout fonctionne comme il devrait sans pagination ni échange impliqué. Si ce n'est pas le cas, le système d'exploitation X commence à faire appel à des processus inactifs sur le disque. Maintenant, le morceau de mémoire libéré qui était une fois marqué comme inactif, est maintenant disponible en mémoire libre.Sait qu'il n'y a pas de mémoire libre disponible (en plus du nouveau morceau gratuit), il y a 2 choses qui peuvent arriver à cette mémoire gratuite nouvellement créée. tronçon. Soit quelques-uns des processus qui étaient plus actifs plus actifs mais non plus (ils sont maintenant des processus inactifs car ils ont abandonné la CPU), occupent ce morceau gratuit de sorte que cela devienne à nouveau une partie de la mémoire inactive, soit ce morceau gratuit qui est alloué à certains des processus actifs de sorte qu'il fait maintenant partie de la mémoire active. La morale de l'histoire n'est pas si compliquée. Quel que soit le programme actif exécuté fonctionnera bien, même avec presque aucune mémoire libre disponible. Si vous devez lancer un nouveau programme, le délai initial va être là en raison d'une durée de charge accrue, car le système d'exploitation X devrait la mettre en mémoire en déplaçant les pages de moins récemment utilisées (de processus inactifs) sur le disque lent. La vraie douleur vient lorsque vous voulez recharger quelque chose en mémoire, quel OS X a été mis en place sur le disque. C'est là que les E / S rapides deviennent une nécessité qui ne peut généralement pas être faite sans. p>
La dernière phrase de votre question n'est pas entièrement vraie. Vous pouvez toujours exécuter des applications 32 bits sur un noyau de 64 bits. La chose seule i> que vous ne pouvez pas exécuter sont des extensions de noyau 32 bits. Il semble que peu probable que vous n'ayez un de ceux que vous ne pouvez tout simplement pas vivre sans.
Merci Cody, je ne savais pas que, alors je suppose que je pourrais donner au noyau 64 bits un essai. Dans ce contexte, comment vérifier quels Kexts sont 32 bits?
Notez que je ne suggère pas nécessairement que cela corrige votre mémoire "problème". Je n'ai jamais fait de profilage de mémoire sur OS X, alors je ne sais rien à ce sujet. Vous pouvez déterminer quels KEXT sont 32 bits à l'aide de l'onglet logiciel du profileur système ou du moniteur d'activité.