vm_compressor = VM_PAGER_DEFAULT in Yosemite verursachte ein Einfrieren, wenn der physische Speicher voll war

11

Die Speicherkomprimierung verursachte häufig Verzögerungen, daher habe ich versucht, sie mithilfe des Befehls auszuschalten

sudo nvram boot-args="vm_compressor=1"

Die Verzögerung war weg, aber ich bekam einen Absturz, als ich einige speicherhungrige Apps öffnete. Während des Einfrierens konnten einige Apps nicht beendet werden. Ich konnte nur den Mauszeiger bewegen. Nach einigen 10 Minuten gab OSX einfach auf und startete sich neu. Es schien, dass OSX nicht mehr genügend Speicher hatte. Stimmt es, dass der Standard-Pager keinen Swap verwendet?

Aktivitätsmonitor-Speicherstatus

Dies ist die Ausgabe von vm_stat 60, als OSX fast abstürzte. Diesmal konnte ich einige Apps beenden.

Mach Virtual Memory Statistics: (page size of 4096 bytes)
    free   active   specul inactive throttle    wired  prgable   faults     copy    0fill reactive   purged file-backed anonymous cmprssed cmprssor  dcomprs   comprs  pageins  pageout  swapins swapouts
    4058    44827     4657    48725  1634771  1994370    18399  131709K  7262284 57729401   556707   234267       96668      1541        0        0        0        0  7562237   114241        0        0 
    9946    34459     3828    37655  1644905  2010562     5380   276137     9087   169197    23038    24071       75166       776        0        0        0        0    66041     2190        0        0 
    4849    19263     1147    20141  1687072  2051233      887   432193    13109   257173    25604    13480       40135       416        0        0        0        0    56827     4094        0        0 
   58504    23530    44743    21988  1585153  1947800     5595   129338     4993    72054     5776       58       86942      3319        0        0        0        0    81298     1083        0        0 
    4002    39171    38322    29484  1625825  1985636     7638   152421     5034    84976        1       24      101932      5045        0        0        0        0    60968        5        0        0 
    3953    41098     2953    39886  1649756  2008776     6047   128151     5709    70047      565     6361       82653      1284        0        0        0        0    60644       94        0        0 
   17900    37639    22066    40355  1619144  1978515     2208   126851     5895    55252    16022     5178       95881      4179        0        0        0        0    71205     1158        0        0 
    3618    46697     4240    51043  1631256  1991014     6082   157833     6794    84127        3       60       90901     11079        0        0        0        0    54852      206        0        0 

Die OSX-Version und Build ist 10.10.2 (14C109)

$ pmset -g
Active Profiles:
Battery Power       -1
AC Power        -1*
Currently in use:
 standbydelay         4200
 standby              0
 womp                 1
 halfdim              1
 hibernatefile        /var/vm/sleepimage
 sms                  1
 networkoversleep     0
 disksleep            10
 sleep                0 (sleep prevented by SubmitDiagInfo)
 hibernatemode        3
 ttyskeepawake        1
 displaysleep         0
 acwake               0
 lidwake              1

$ nvram -p
tbt-options %00
efi-apple-payload0-data %02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%02%1f%03%12%0a%00%00%00%00%00%00%00%04%01*%00%01%00%00%00(%00%00%00%00%00%00%00%00@%06%00%00%00%00%00%1b|%00%00-/%00%00%ea%0e%00%00%8aO%00%00%02%02%04%04H%00\%00E%00F%00I%00\%00A%00P%00P%00L%00E%00\%00F%00I%00R%00M%00W%00A%00R%00E%00\%00P%00o%00r%00t%00M%00i%00c%00r%00o%00.%00b%00i%00n%00%00%00%7f%ff%04%00
efi-boot-device <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>23B4430A-E749-440D-85DC-879D5DFFF3A4</string></dict></dict><key>BLLastBSDName</key><string>disk0s3</string></dict></array>%00
fmm-mobileme-token-FMM  ...
SystemAudioVolumeDB %80
prev-lang:kbd   en:0
EFICapsule_Result   STAR
efi-apple-recovery  <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>00007C1B-2F2D-0000-EA0E-00008A4F0000</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\EFI\APPLE\FIRMWARE\MBP81_0047_27B_LOCKED.scap</string></dict></array>%00
efi-apple-payload1-data %02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%02%1f%03%12%0a%00%00%00%00%00%00%00%04%01*%00%01%00%00%00(%00%00%00%00%00%00%00%00@%06%00%00%00%00%00%1b|%00%00-/%00%00%ea%0e%00%00%8aO%00%00%02%02%04%04T%00\%00E%00F%00I%00\%00A%00P%00P%00L%00E%00\%00F%00I%00R%00M%00W%00A%00R%00E%00\%00H%00P%00M%00-%00e%00m%00-%000%000%000%002%000%000%000%007%00.%00b%00i%00n%00%00%00%7f%ff%04%00
ThorUpdateResult    %00%00%05%0e%01%03%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00
LocationServicesEnabled %01
fmm-computer-name   MacBook Pro
backlight-level 3%01
efi-apple-payload1  <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>00007C1B-2F2D-0000-EA0E-00008A4F0000</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\EFI\APPLE\FIRMWARE\HPM-em-00020007.bin</string></dict></array>%00
SmcFlasherResult    %00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00
bluetoothActiveControllerInfo   %1a%82%ac%05%00%00%000%11%fa(%cf%da%ef%ab%c5
efi-apple-payload0  <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>00007C1B-2F2D-0000-EA0E-00008A4F0000</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\EFI\APPLE\FIRMWARE\PortMicro.bin</string></dict></array>%00
SystemAudioVolume   %80
boot-args   vm_compressor=1
efi-boot-device-data    %02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%02%1f%03%12%0a%00%00%00%00%00%00%00%04%01*%00%03%00%00%00h%8b/%25%00%00%00%00 _%13%00%00%00%00%00%0aC%b4#I%e7%0dD%85%dc%87%9d]%ff%f3%a4%02%02%7f%ff%04%00
boot-gamma  %10%06%00%00%c5%9c%00%00%00%00%00%00%f2%00%00%00%00%00%00%00%13%00%c1%05%85%00C%0c%86%02%04%12%d6%05F%18/%0b%08!B%15%0c30.O<%1f9UUNSZk%ebh%1dv%f3r%a4%91%10%8a%a5%97%0d%92%a8%a3K%9ej%a9%17%a5%ad%b4%e4%b0%ae%b9]%b7%b3%ccG%cd%b7%dc%8b%dc%fd%f5)%f3%0f%00%01%06y%00%03%0d~%02%04%13%bb%05%06%19l%0a%08!%8c%12%8c3%0e)N;E1%1aj*]%1f%7f%c0o%a4%93y%80%a8%a3%f6%8f%ad%b5%c8%a2%b4%d1%1d%c4%ba%ea%bd%e0%fd%f6%fa%ef%14%00%01%06j%00%03%0d9%02%04%13%1d%05F%19r%09%08!v%10L2%00#%0e:]*%9ex%02^%a3%8eVoi%a6%ea%80%ad%b7w%90%f1%c4v%9d%f4%d1%a5%ab%b7%df8%bd%fb%ec%f7%ce}%f6%b6%dd%fe%f9%9a%e4%ff%fc%cf%ec%ff%fd]%f1%ff%fe%df%f7
bluetoothInternalControllerInfo %1a%82%ac%05%000%11%fa(%cf%da%ef%ab%c5

ls -laO /private/var/vm
total 8388608
drwxr-xr-x   3 root  wheel  -        102 Mar 20 23:13 .
drwxr-xr-x  27 root  wheel  -        918 Oct 20 10:34 ..
-rw------T   1 root  wheel  - 4294967296 Mar 20 22:16 sleepimage

Apple weigerte sich, das Problem zu beheben. Dies ist die Antwort von Apple.

Es gibt keine Pläne, dies auf der Grundlage der folgenden Punkte anzugehen:

Diese Konfiguration wird nicht mehr unterstützt.

Wir schließen jetzt diesen Bericht.

Wenn Sie Fragen zur Lösung haben oder dies immer noch ein kritisches Problem für Sie ist, aktualisieren Sie bitte Ihren Fehlerbericht mit diesen Informationen.

Überprüfen Sie regelmäßig neue Apple-Versionen auf Updates, die dieses Problem betreffen könnten.

Da Apple dies nicht unterstützt, frage ich mich, ob es stimmt, dass der Standard-Pager keinen Swap verwendet.

keithyip
quelle
@keithyip Hast du die Antwort hier schon gelesen ?
Klanomath
1
Kommentare sind nicht für eine ausführliche Diskussion gedacht. Dieses Gespräch wurde in den Chat verschoben .
bmike

Antworten:

4

Das Problem ist nicht, dass das Paging tatsächlich deaktiviert ist, sondern dass Modus 1 nicht länger eine Implementierung der Standardspeicherverwaltung ist, sondern ein hässlicher Hack, der die Komprimierung verhindert, indem fast der gesamte aktive Speicher "verkabelt" wird, wodurch die Komprimierung verhindert wird, sondern nebenbei auch ausgetauscht wird .

Tolgraven
quelle
Interessant, aber ich würde gerne Belege sehen, bevor ich abstimme. Vielleicht etwas in Open Source?
Graham Perrin
1
Das macht sehr viel Sinn. Ich habe kein System, das ich auf diese Weise kaputt machen kann - vielleicht versuche ich, wenn ich eine VM ein wenig hochfahre, El Capitan zu "kaputt" und zu sehen, was ich lernen kann. In der Praxis musste ich mich nie mit Apples VM herumschlagen und stattdessen nur die von mir ausgeführten Apps optimieren oder einen anderen Engpass beseitigen, um produktiv zu bleiben.
bmike
@GrahamPerrin noch einfacher, Modus 1 einstellen, Aktivitätsmonitor starten, "Wired Memory" vs. "Memory Used" ansehen. Fall abgeschlossen.
Tolgraven
3

In OSX Mavericks hatte ich auch die VM-Komprimierung (über das vm_compressor=1Boot-Argument und den Neustart) deaktiviert, da dies bei Verwendung eines VMWare Fusion-Gasts mit hohem RAM in einige sehr träge Sitzungen verwickelt zu sein schien. In Mavericks schien alles gut zu funktionieren, keine Komprimierung, aber immer noch das erwartete Paging.

Nach dem Upgrade auf OSX Yosemite (10.10.4) kam es zu Freeze-Crashs, ähnlich wie Sie es beschrieben haben. (Insbesondere nach nur 10 bis 15 Minuten leichtem Surfen im Internet würde die Maus / das Display / die Tastatur einfrieren. Nach etwa einer weiteren Minute würde der Computer spontan neu starten. Der Absturzbericht nach dem Neustart erwähnte in allen vier Fällen ein "Progress Watchdog" -Ereignis Fälle.)

Glücklicherweise habe ich als erstes versucht, die VM-Komprimierung wieder zu aktivieren ( vm_compressor=4). Nach 4 Abstürzen in den ersten ~ 90 Minuten nach der Verwendung von Yosemite gab es in den 4 Tagen seitdem keine Abstürze mehr.

So kann ich bestätigen: Die vm_compressor=1Einstellung, die vor Yosemite funktionierte, scheint jetzt fehlerhaft zu sein. Die Verwendung des Mavericks-and-beyond-Standardwerts für diesen Wert vm_compressor=4('VM_PAGER_COMPRESSOR_WITH_SWAP') scheint behoben zu sein.

gojomo
quelle
1
vm_compressor=1boot-arg & reboot funktioniert unter OS X 10.9 Mavericks und nicht unter OS X 10.10 Yosemite. Ich bin gespannt, ob es unter OS X 10.11 El Capitan funktioniert.
Albert
1
vm_compressor=1war so schlecht, dass ab OS X 10.12 Sierra vm_compressor=1automatisch in vm_compressor=4den Kernel konvertiert wird . Siehe diese Antwort .
Old Pro