15 votes

Mac OS X ne crée pas de fichier d'échange (swap)

J'ai récemment commencé à rencontrer de nombreux problèmes de mémoire sur mon mac fonctionnant sous High Sierra. Plutôt que de faire apparaître la fenêtre de sortie forcée, mon système se figeait complètement et la seule façon de le récupérer était de forcer un redémarrage.

Après quelques recherches, j'ai découvert que mon système ne crée pas de fichiers d'échange même lorsque la pression mémoire est critique. Il n'y a rien dans le /private/var/vm/ répertoire.

J'ai déjà essayé sudo launchctl load -wF /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist .

Existe-t-il un autre moyen d'activer le swapping ? Ou d'effectuer des diagnostics ?

Détails supplémentaires :

Je démarre depuis un SSD Thunderbolt externe (je ne sais pas si c'est la cause).

Voici le résultat de vm_stat . Si je fais quelque chose d'intensif en mémoire à ce stade, mon système se fige.

Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free:                                4116.
Pages active:                            854231.
Pages inactive:                          825841.
Pages speculative:                        27754.
Pages throttled:                              0.
Pages wired down:                        606483.
Pages purgeable:                          22070.
“Translation faults”:                  75731290.
Pages copy-on-write:                     401121.
Pages zero filled:                     49766457.
Pages reactivated:                     17690835.
Pages purged:                           1577284.
File-backed pages:                       503400.
Anonymous pages:                        1204426.
Pages stored in compressor:             6563399.
Pages occupied by compressor:           1875311.
Decompressions:                        21012443.
Compressions:                          32102441.
Pageins:                                2172708.
Pageouts:                                 35123.
Swapins:                                      0.
Swapouts:                                     0.

Editar:

Quelques détails supplémentaires :

C'est la sortie de diskutil ap list

APFS Container (1 found)
|
+-- Container disk4 6BE5FDB5-A68F-4CBF-A404-68AE73E61C10
    ====================================================
    APFS Container Reference:     disk4
    Capacity Ceiling (Size):      499898105856 B (499.9 GB)
    Capacity In Use By Volumes:   452259872768 B (452.3 GB) (90.5% used)
    Capacity Available:           47638233088 B (47.6 GB) (9.5% free)
    |
    +-< Physical Store disk3s2 39853349-6B62-4961-99DE-811BA56465EC
    |   -----------------------------------------------------------
    |   APFS Physical Store Disk:   disk3s2
    |   Size:                       499898105856 B (499.9 GB)
    |
    +-> Volume disk4s1 99688E85-E9EF-3688-A324-913D00FF6A0E
    |   ---------------------------------------------------
    |   APFS Volume Disk (Role):   disk4s1 (No specific role)
    |   Name:                      System (Case-insensitive)
    |   Mount Point:               /
    |   Capacity Consumed:         449420767232 B (449.4 GB)
    |   FileVault:                 No
    |
    +-> Volume disk4s2 729366E4-48AA-45A3-95DA-8871B8A29778
    |   ---------------------------------------------------
    |   APFS Volume Disk (Role):   disk4s2 (Preboot)
    |   Name:                      Preboot (Case-insensitive)
    |   Mount Point:               Not Mounted
    |   Capacity Consumed:         20357120 B (20.4 MB)
    |   FileVault:                 No
    |
    +-> Volume disk4s3 431C0191-2B1F-480C-94D0-AF4748E6D213
    |   ---------------------------------------------------
    |   APFS Volume Disk (Role):   disk4s3 (Recovery)
    |   Name:                      Recovery (Case-insensitive)
    |   Mount Point:               Not Mounted
    |   Capacity Consumed:         509820928 B (509.8 MB)
    |   FileVault:                 No
    |
    +-> Volume disk4s4 5DE0EA6B-CA57-4226-B038-2E256FCC5B98
        ---------------------------------------------------
        APFS Volume Disk (Role):   disk4s4 (VM)
        Name:                      VM (Case-insensitive)
        Mount Point:               Not Mounted
        Capacity Consumed:         2147504128 B (2.1 GB)
        FileVault:                 No

Et la sortie de mount :

/dev/disk4s1 on / (apfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
/dev/disk2 on /Volumes/Storage (hfs, local, journaled)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)

Solution (mise à jour) : Un certain nombre de bonnes solutions ont été suggérées. Après avoir réexaminé la question, je recommande la solution de lint ci-dessous. C'est la solution la plus générale qui tient compte des changements de noms de volumes.

0voto

butterflywings Points 1

Merci pour cette question et ses réponses ! J'ai cherché une solution à ce problème pendant des mois jusqu'à ce que je tombe sur cette page.

J'utilise un iMac démarré sur un SSD thunderbolt externe. Cela a donné une nouvelle vie à la machine et je ne veux pas enlever l'écran du panneau avant pour changer le disque dur. Ce qui est génial avec Thunderbolt, c'est que l'ordinateur traite un disque externe comme s'il était connecté en interne.

Cette réponse est modifiée à partir de la réponse de Lint. Le crédit lui revient pour le travail. Le site ne m'a pas laissé ajouter un commentaire à sa réponse, alors je le poste ici.

J'ai apporté quelques modifications à son script :

  1. J'ai un clone de sauvegarde de mon disque d'OS qui possède également un volume VM. Le script de Lint retournait deux résultats VM pour moi. Cette modification vous permet d'entrer le nom de votre disque dur OS et le volume VM correct sera retourné et monté.

  2. Le script de Lint recherche une image de sommeil. Pour deux ordinateurs auxquels j'applique ce correctif, le script trouvait l'image de sommeil même si la VM n'était pas montée. Le résultat était que le script n'a pas monté la VM.

  3. Je me suis débarrassé de l'instruction if pour vérifier si un volume est monté et j'ai simplement essayé de monter le volume 5 fois, quoi qu'il arrive. Si le volume est déjà monté, il n'y a pas de problème et vous recevez un message indiquant que le volume est monté. J'ai fait cela parce que j'avais aussi des problèmes avec le montage en utilisant le démon launchd.

  4. J'ai écrit des déclarations d'écho dans un fichier journal pour pouvoir voir la sortie du script lors des tests pendant un redémarrage.

  5. Si vous exécutez le script pour le tester, vous devez sudo sh mountvm.sh.

  6. le volume VM se démonte dès qu'un utilisateur, voire tous les utilisateurs, se déconnectent. J'ai ajouté le démon de lancement à /Library/LaunchDaemons pour qu'il soit exécuté en tant que Root. Tant que vous ne vous déconnectez pas de votre utilisateur, la VM reste montée. Si vous redémarrez l'ordinateur, le script devrait remonter la VM.

Merci Lint ! Et à tous ceux qui ont aidé à répondre à cette question ! J'ai maintenant un Mac qui ne plante pas parce que la mémoire se remplit !

Remplacez la variable OS_BOOT_NAME par le nom du disque dur sur lequel vous démarrez.

#!/bin/bash
# Mount the APFS VM volume if it isn't already mounted
OS_BOOT_NAME="X"
echo $(date) > /Library/Logs/mountvm.log
VM_VOLUME=$(/usr/sbin/diskutil list | grep -A5 "APFS Volume $OS_BOOT_NAME " | grep "VM" | 

awk '{ print $7 }') 
echo "VM Volume is $VM_VOLUME"
echo "VM Volume is $VM_VOLUME" >> /Library/Logs/mountvm.log

for i in {1..5}
    do
        /usr/sbin/diskutil mount -mountPoint /private/var/vm/ $VM_VOLUME >> /Library/Logs/mountvm.log
                sleep 60
                echo "Mount Attempts: $i"
        echo "Mount Attempts: $i" >> /Library/Logs/mountvm.log
    done

exit 0

-1voto

Mac OSX High Sierra est une sorte de dérivé de linux, et de nombreux systèmes d'exploitation linux recommandent de désactiver la partition d'échange lors de l'installation sur un SSD, car le type de stockage utilisé dans une partition d'échange impose une charge élevée sur le support magnétique du ssd d'une manière potentiellement destructive. Donc, je suppose que High Sierra désactive l'espace d'échange sur les ssd en standard. Mon option préférée est d'installer l'espace d'échange sur un disque traditionnel séparé.

https://askubuntu.com/questions/652337/why-no-swap-partitions-on-ssd-drives

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