vm_compressor = VM_PAGER_DEFAULT di Yosemite menyebabkan pembekuan ketika memori fisik penuh

11

Kompresi memori sering menyebabkan lag jadi saya mencoba mematikannya dengan menggunakan perintah

sudo nvram boot-args="vm_compressor=1"

Kelambatan itu hilang tetapi saya terhenti ketika saya membuka beberapa aplikasi yang haus akan memori. Selama pembekuan, tidak mungkin untuk keluar dari beberapa aplikasi. Saya hanya bisa menggerakkan kursor mouse. Setelah beberapa 10 menit, OSX menyerah dan memulai kembali dengan sendirinya. Tampaknya OSX kehabisan memori. Benarkah pager default tidak menggunakan swap?

Monitor Aktivitas Status Memori

Ini adalah output dari vm_stat 60 ketika OSX hampir crash. Saya berhasil keluar dari beberapa aplikasi saat ini.

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 

Versi dan versi OSX adalah 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 menolak untuk memperbaikinya. Ini balasan dari Apple.

Tidak ada rencana untuk mengatasi ini berdasarkan hal berikut:

Konfigurasi ini tidak lagi didukung.

Kami sekarang menutup laporan ini.

Jika Anda memiliki pertanyaan tentang resolusi, atau jika ini masih merupakan masalah penting bagi Anda, silakan perbarui laporan bug Anda dengan informasi itu.

Pastikan untuk secara teratur memeriksa rilis Apple baru untuk setiap pembaruan yang mungkin memengaruhi masalah ini.

Jadi, karena Apple tidak mendukung ini, saya bertanya-tanya apakah Apakah benar pager default tidak menggunakan swap?

keithyip
sumber
@keithyip Sudahkah Anda membaca jawabannya di sini ?
klanomath
1
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
bmike

Jawaban:

4

Masalahnya bukan bahwa paging benar-benar dimatikan tetapi mode 1 tidak lagi merupakan implementasi dari manajemen memori standar tetapi sebaliknya sebuah hack jelek yang mencegah kompresi dengan membuat hampir semua memori aktif "kabel", sehingga mencegah kompresi tetapi selain itu juga bertukar .

Tolgraven
sumber
Menarik, tetapi saya ingin melihat bukti pendukung sebelum memilih. Sesuatu dalam open source, mungkin?
Graham Perrin
1
Ini sangat masuk akal. Saya tidak memiliki sistem yang dapat saya hancurkan dengan cara ini - mungkin ketika saya sedikit memutar VM, saya akan mencoba "memecahkan" El Capitan dan melihat apa yang bisa saya pelajari. Dalam praktiknya, saya tidak pernah perlu mengacaukan VM Apple dan sebagai gantinya hanya menyetel aplikasi yang saya jalankan atau menghilangkan hambatan lain untuk tetap produktif.
bmike
@GrahamPerrin lebih mudah lagi, atur mode 1, aktifkan Activity Monitor, lihat "Memori Berkabel" vs. "Memori Digunakan". Kasus ditutup.
tolgraven
3

Di OSX Mavericks, saya juga mematikan kompresi VM (melalui vm_compressor=1boot-arg & reboot), karena sepertinya terlibat dalam beberapa sesi yang sangat lamban saat menggunakan tamu VMWare Fusion berk RAM tinggi. Semuanya tampak bekerja dengan baik di Mavericks, tidak ada kompresi tetapi masih halaman yang diharapkan.

Setelah memutakhirkan ke OSX Yosemite (10.10.4), saya mendapatkan crash-crash yang mirip dengan apa yang Anda gambarkan. (Khususnya, setelah hanya 10-15 menit browsing web yang ringan, mouse / display / keyboard akan membeku. Setelah sekitar satu menit lagi, mesin akan secara spontan reboot. Laporan kerusakan setelah reboot menyebutkan peristiwa "progress watchdog" event di keempat kasus.)

Untungnya, hal pertama yang saya coba adalah mengaktifkan kembali kompresi VM ( vm_compressor=4). Setelah 4 crash di pertama ~ 90 menit menggunakan Yosemite, tidak ada crash dalam 4 hari sejak itu.

Jadi saya bisa mengonfirmasi: vm_compressor=1pengaturan yang tampak fungsional sebelum Yosemite sekarang tampak macet. Menggunakan Mavericks-dan-melampaui standar aktual untuk nilai ini, vm_compressor=4('VM_PAGER_COMPRESSOR_WITH_SWAP'), tampaknya untuk memperbaiki.

gojomo
sumber
1
vm_compressor=1boot-arg & reboot bekerja di OS X 10.9 Mavericks, dan tidak bekerja di OS X 10.10 Yosemite, saya penasaran, apakah ini akan bekerja di OS X 10.11 El Capitan?
Albert
1
vm_compressor=1sangat buruk sehingga dimulai dengan OS X 10.12 Sierra, vm_compressor=1secara otomatis dikonversi ke vm_compressor=4dalam kernel. Lihat jawaban ini .
Old Pro