vm_compressor = VM_PAGER_DEFAULT w Yosemite spowodował zamrożenie, gdy pamięć fizyczna była pełna

11

Kompresja pamięci często powodowała opóźnienia, więc próbowałem ją wyłączyć za pomocą polecenia

sudo nvram boot-args="vm_compressor=1"

Opóźnienie zniknęło, ale zawiesiłem się, gdy otworzyłem niektóre aplikacje wymagające pamięci. Podczas zamrażania nie można było zamknąć niektórych aplikacji. Mogłem tylko poruszać kursorem myszy. Po kilku 10 minutach OSX po prostu poddał się i zrestartował. Wyglądało na to, że OSX nie ma pamięci. Czy to prawda, że ​​domyślny pager nie używa wymiany?

Status pamięci Monitora aktywności

To jest wynik vm_stat 60, gdy OSX prawie się zawiesił. Tym razem udało mi się zamknąć niektóre aplikacje.

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 

Wersja i kompilacja OSX to 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 odmówił naprawy. To jest odpowiedź Apple.

Nie ma planów rozwiązania tego problemu na podstawie:

Ta konfiguracja nie jest już obsługiwana.

Zamykamy teraz ten raport.

Jeśli masz pytania dotyczące rozwiązania problemu lub jeśli nadal jest to dla Ciebie problem krytyczny, zaktualizuj swój raport o błędzie, podając te informacje.

Należy regularnie sprawdzać nowe wydania Apple pod kątem aktualizacji, które mogą wpłynąć na ten problem.

Skoro Apple tego nie obsługuje, zastanawiam się, czy to prawda, że ​​domyślny pager nie korzysta z zamiany?

keithyip
źródło
@keithyip Czy czytałeś już odpowiedź tutaj ?
klanomath
1
Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu .
bmike

Odpowiedzi:

4

Problemem nie jest to, że stronicowanie jest faktycznie wyłączone, ale ten tryb 1 nie jest już implementacją standardowego zarządzania pamięcią, ale brzydkim hackem, który zapobiega kompresji, czyniąc prawie całą aktywną pamięć „okablowaną”, a tym samym zapobiegając kompresji, ale na bok również zamienia .

Tolgraven
źródło
Ciekawe, ale chciałbym zobaczyć dowody potwierdzające przed głosowaniem. Może coś w open source?
Graham Perrin,
1
To ma sens. Nie mam systemu, który mógłbym w ten sposób zepsuć - być może, kiedy trochę rozkręcę trochę VM, spróbuję „złamać” El Capitana i zobaczę, czego mogę się nauczyć. W praktyce nigdy nie musiałem zadzierać z maszyną wirtualną Apple, a zamiast tego po prostu dostrajać uruchamiane aplikacje lub eliminować kolejne wąskie gardło, aby zachować produktywność.
bmike
@GrahamPerrin jeszcze łatwiej, ustaw tryb 1, uruchom Monitor aktywności, spójrz na „Wired Memory” vs. „Memory Used”. Sprawa zamknięta.
tolgraven,
3

W OSX Mavericks wyłączyłem również kompresję VM (poprzez vm_compressor=1boot-arg i restart), ponieważ wydawało się to związane z niektórymi bardzo powolnymi sesjami, gdy korzystałem z gościa VMWare Fusion o dużej pamięci RAM. Wydawało się, że wszystko działa dobrze w Mavericks, bez kompresji, ale nadal oczekiwany stronicowanie.

Po aktualizacji do OSX Yosemite (10.10.4) miałem awarie podobne do opisywanych. (W szczególności, po zaledwie 10-15 minutach lekkiego przeglądania Internetu, mysz / ekran / klawiatura zawiesiłyby się. Po około minucie maszyna spontanicznie się zrestartowała. Raport o awarii po ponownym uruchomieniu wspominał o zdarzeniu „watchdog postępu” we wszystkich czterech skrzynie.)

Na szczęście pierwszą rzeczą, którą próbowałem, było ponowne włączenie kompresji VM ( vm_compressor=4). Po 4 awariach w ciągu pierwszych ~ 90 minut korzystania z Yosemite, od 4 dni nie było żadnych awarii.

Mogę więc potwierdzić: vm_compressor=1ustawienie, które wydawało się funkcjonalne przed Yosemite, teraz wydaje się buggy. vm_compressor=4Wydaje się, że użycie rzeczywistej wartości domyślnej Mavericks dla tej wartości („VM_PAGER_COMPRESSOR_WITH_SWAP”) wydaje się naprawiać.

gojomo
źródło
1
vm_compressor=1boot-arg i reboot działa w OS X 10.9 Mavericks i nie działa w OS X 10.10 Yosemite, jestem ciekawy, czy to zadziała w OS X 10.11 El Capitan?
Albert,
1
vm_compressor=1było tak złe, że począwszy od systemu OS X 10.12 Sierra vm_compressor=1jest automatycznie konwertowane vm_compressor=4na jądro. Zobacz tę odpowiedź .
Old Pro,