11 votes

MacOS utilise beaucoup la mémoire virtuelle et le swap.

J'ai un MacBook Pro au travail et je pense qu'il utilise trop de swap au lieu de RAM.

Model Name: MacBook Pro
Model Identifier:   MacBookPro13,1
Processor Name: Intel Core i5
Processor Speed:    2 GHz
Number of Processors:   1
Total Number of Cores:  2
L2 Cache (per Core):    256 KB
L3 Cache:   4 MB
Memory: 16 GB
Boot ROM Version:   MBP131.0205.B22
SMC Version (system):   2.36f97
Serial Number (system): C02TL0KGGVC8
Hardware UUID:  09325653-7FB0-52CC-A599-063539D1010A

J'ai l'habitude de surveiller l'activité des systèmes UNIX en utilisant htop . J'ai remarqué que mon OS X n'utilise jamais plus de la moitié de la RAM, mais utilise plus de swap à la place. Habituellement 7 Go de swap, mais cela peut être plus.

htop report

Ma question est la suivante : mon système d'exploitation ne devrait-il pas utiliser plus de RAM avant la permutation ? J'ai lu comment OS X gère le swap et j'ai l'impression que c'est une perte de puissance de calcul. L'écriture de pages en entrée et en sortie prend beaucoup de temps et n'est pas aussi rapide que l'utilisation de la RAM.

J'essaie de comparer avec ma distribution Ubuntu 16.04 à la maison qui ne swape pas à moins que la mémoire soit pleine. Mais peut-être que les 2 OS ont des comportements différents, bien qu'ils soient tous deux basés sur UNIX.

J'ai également imprimé la sortie de la fonction vm_stat pour vérifier s'il y avait une différence, parce que peut-être htop ne le rapporte pas correctement. J'ai remarqué que htop fait état d'une capacité d'échange maximale variable, de 3 à 16. Pourquoi n'est-ce pas une partition de taille fixe comme dans Ubuntu ?

Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free:                                6743.
Pages active:                           1005803.
Pages inactive:                          903490.
Pages speculative:                          361.
Pages throttled:                              0.
Pages wired down:                        837598.
Pages purgeable:                           9241.
"Translation faults":                6115698117.
Pages copy-on-write:                  107293117.
Pages zero filled:                   2540298644.
Pages reactivated:                   1039487337.
Pages purged:                          52550607.
File-backed pages:                       482299.
Anonymous pages:                        1427355.
Pages stored in compressor:             5968822.
Pages occupied by compressor:           1439832.
Decompressions:                      1456775259.
Compressions:                        1606172332.
Pageins:                             1393246141.
Pageouts:                              25235109.
Swapins:                              562867577.
Swapouts:                             582845342.

10voto

Jose Chavez Points 645

Tout d'abord, oui, le système d'exploitation en général utilise la RAM avant le swap. Il n'y a pas de perte de puissance de calcul dans ce cas.

Vous semblez avoir sauté à la conclusion que MacOS utilise le swap, alors qu'il pourrait aussi bien utiliser la mémoire libre en se basant sur la capture d'écran htop. Vous ne pouvez pas tirer cette conclusion à partir d'un simple échantillon de l'utilisation de la mémoire.

En réalité, il se peut que vous ayez exécuté des programmes qui utilisaient beaucoup de RAM, obligeant MacOS à échanger de la mémoire sur le disque. Puis vous avez quitté certains de ces programmes (ou ils ont désalloué une partie de la RAM). Si vous prenez un échantillon de htop maintenant, vous verrez que l'utilisation de la RAM est faible (beaucoup de RAM libre), mais que vous utilisez également beaucoup de swap.

Mais ce n'est pas un problème - en fait, c'est prévu pour être ainsi ! Il ne serait pas sage pour MacOS de commencer à échanger les pages qui ont été placées sur le disque. Il le fera quand elles seront nécessaires (c'est-à-dire utilisées par les programmes), mais jusqu'à ce que cela se produise, il se pourrait que ces pages ne soient jamais utilisées - et donc que le temps passé à les échanger soit perdu.

Vous écrivez que par rapport à votre PC Ubuntu, vous observez un comportement différent. Sachez que vous pouvez en fait changer ce comportement. Sous Linux, vous pouvez utiliser sysctl pour définir la variable vm.swappiness. Cela modifiera l'agressivité du système d'exploitation en ce qui concerne l'échange de données sur le disque.

Vous demandez également pourquoi votre système MacOS n'utilise pas un swap de taille fixe comme le fait Ubuntu. En fait, Ubuntu prend également en charge l'espace d'échange de taille dynamique à l'aide de la commande "swapspace". Vous pouvez définir des tailles minimales et maximales, et il ajoutera/supprimera dynamiquement de l'espace swap en fonction des besoins.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X