vm_compressor = VM_PAGER_DEFAULT в Йосеміті спричинив замерзання, коли фізична пам'ять була заповнена


11

Стиснення пам'яті викликало часто відставання, тому я спробував вимкнути її за допомогою команди

sudo nvram boot-args="vm_compressor=1"

Затримки вже не було, але я завис, коли я відкрив кілька додатків, голодних пам'яті. Під час заморожування не вдалося вийти з деяких програм. Я міг рухати курсор миші. Через декілька 10 хвилин OSX просто здався і перезапустив себе. Здавалося, OSX залишився в пам'яті. Чи правда, що пейджер за замовчуванням не використовує своп?

Статус Монітор стану пам'яті

Це вихід vm_stat 60, коли OSX ледь не вийшов з ладу. Цього разу мені вдалося вийти з деяких програм.

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 

Версія та версія OSX - 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 відмовилася виправити це. Це відповідь від Apple.

Не планується вирішувати це на підставі наступного:

Ця конфігурація більше не підтримується.

Зараз ми закриваємо цей звіт.

Якщо у вас є питання щодо вирішення проблеми, або якщо це все ще є для вас критичним питанням, то будь ласка, оновіть свій звіт про помилку з цією інформацією.

Будь ласка, не забудьте регулярно перевіряти нові версії Apple на наявність оновлень, які можуть вплинути на цю проблему.

Отже, оскільки Apple це не підтримує, мені цікаво, чи правда, що пейджер за замовчуванням не використовує своп?


@keithyip Ви вже прочитали відповідь тут ?
кланомат


1
Коментарі не для розширеного обговорення; ця розмова була переміщена до чату .
bmike

Відповіді:


4

Проблема полягає не в тому, що пейджинг насправді вимкнено, але в тому, що режим 1 - це вже не реалізація стандартного управління пам’яттю, а натомість некрасивий хак, який запобігає стисненню, роблячи майже всю активну пам’ять «провідним», отже, запобігаючи стисненню, але як бік також міняється .


Цікаво, але я хотів би побачити підтверджуючі докази перед голосуванням. Щось у відкритому коді, можливо?
Грем Перрін

1
Це має багато сенсу. У мене немає системи, яку я можу зламати таким чином - можливо, коли я трохи закручую VM, я спробую "зламати" El Capitan і побачити, що я можу навчитися. На практиці мені ніколи не доводилося возитися з VM Apple, а замість цього просто налаштовувати програми, які я запускаю, або ліквідувати ще одне вузьке місце, щоб залишатися продуктивними.
bmike

@GrahamPerrin ще простіше, встановіть режим 1, запустіть Монітор активності, подивіться на "Провідну пам'ять" проти "Пам'ять використовується". Справа закрита.
tolgraven

3

В OSX Mavericks я також відключив стиснення VM (через vm_compressor=1boot-arg & reboot), тому що, здається, це пов'язане з деякими дуже млявими сесіями при використанні високошвидкої оперативної пам'яті VMWare Fusion гість. У Мавериках все здавалося, що це працює нормально, ніякого стиснення, але все ж очікуваного підкачки.

Після оновлення до OSX Yosemite (10.10.4) я отримував заморозки, схожі на те, що ви описуєте. (Зокрема, лише через 10-15 хвилин легкого перегляду веб-сторінок миша / дисплей / клавіатура замерзнуть. Приблизно ще через одну хвилину машина спонтанно перезавантажиться. Звіт про аварійне завершення роботи після перезавантаження згадав про події "сторожового прогресу" у всіх чотирьох справ.)

На щастя, першим, що я спробував, було відновлення стиснення VM ( vm_compressor=4). Після 4 збоїв у перші ~ 90 хвилин використання Yosemite, за останні 4 дні жодних збоїв не було.

Тож я можу підтвердити: vm_compressor=1налаштування, яке здавалося функціональним перед Yosemite зараз, здається, крах-баггі. Використання фактичного за замовчуванням Mavericks і за його межами vm_compressor=4("VM_PAGER_COMPRESSOR_WITH_SWAP"), схоже, виправляється.


1
vm_compressor=1boot-arg & reboot працює в OS X 10.9 Mavericks і не працює в OS X 10.10 Yosemite, мені цікаво, чи буде це працювати в OS X 10.11 El Capitan?
Альберт

1
vm_compressor=1було настільки погано, що, починаючи з OS X 10.12 Sierra, vm_compressor=1автоматично перетворюється на vm_compressor=4всередині ядра. Дивіться цю відповідь .
Старий Про
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.