Хіба неактивна пам'ять не є марною витратою ресурсів?


87

Я шукаю пояснення використання пам'яті на моїй машині, особливо з урахуванням прикладу на цьому скріншоті нижче:

Використання пам'яті

Я розумію, що таке Freeі що Activeозначає,
але які значення Wiredі Inactive?

Тим більше inactive, чому він використовує стільки пам'яті для чогось, що ми не використовуємо?

Відповіді:


142

Неактивна пам’ять отримала жахливий реп через шалене ім’я. Це повинно було називатися чимось на кшталт "зробіть ваш Mac дійсно швидким другий, третій та четвертий раз, коли він виконує те саме завдання" пам'яті, за винятком того, що це теж жахливе ім'я.

Apple переписала монітор активності, коли представила кілька нових функцій та додала стиснуту пам'ять, тому частина цього більше не стосується macOS, які не показують "Неактивну пам'ять", але це все ще стосується керування пам'яттю Mac OS X, як це підтверджено документально проти цього версія Монітора активності: https://support.apple.com/en-us/HT201538

Ось як я пояснив речі комусь новому в концепції віртуальної пам'яті в OS X:

  • Провідний : система не може працювати без цієї кількості оперативної пам’яті (ніколи не змінюється)
  • Активні: програми справді використовують цю пам'ять зараз або протягом останніх секунд
  • Неактивні: речі, які програми читали з повільного диска чи деінде, і говорили, що більше ніколи не потрібні. Інженери знають краще, ви повернетесь до Facebook через кілька хвилин або перезапустите Word після виходу з нього. Те саме відбувається знову і знову на комп’ютерах.
  • Безкоштовно: повністю витрачена оперативна пам’ять - для покриття короткострокових запитів на розподіл потрібно лише один або два МБ. Для найбільших асигнувань він просто використовує деяку неактивну оперативну пам’ять, виділяючи її на активну / провідну та видаляючи інформацію про те, що вона використовувала для утримання.

Проблема виникає тоді, коли Free + Inactive становить менше ніж приблизно 1/3 від загальної кількості, і тоді справді може йти повільно.

Неактивна пам'ять - це бонусна швидкість / подвійна оперативна пам'ять. Він служить безкоштовно на мить, але також робить багаторазові завдання набагато, набагато швидше, якщо система правильно вгадала і зберегла щось в оперативній пам’яті, що ви знову зробите. Це швидше, ніж обмінна пам'ять, оскільки вона вже завантажена в оперативну пам'ять і прискорює роботу, коли система віртуальної пам'яті робить хороші здогадки.

Якщо вам цікаво, чи не є оперативна пам'ять, а не дивитися на кожну з 4 категорій (5 якщо ви рахуєте активний своп), ви можете пару W + A як уповільнення нової програми / завдання та F + I як прискорення нова програма / завдання. Чим більше у вас F +, тим більше нових програм ви можете запустити до того, як оперативна пам’ять повинна покластися на заміну, щоб перемкнути виділену пам'ять.

Вам не потрібно знати, як працює своп, оскільки я згадував його вище. В основному, коли програма сидить у режимі очікування і не використовується цілими днями (або годинами), система запише цю оперативну пам'ять на жорсткий диск, а не вбиває програму. Це дозволяє системі перетасовувати та обробляти всілякі речі, пов'язані з управлінням пам'яттю, і не дозволяє кожній програмі спілкуватися між собою, щоб домовитись, хто буде використовувати менше пам'яті, коли система закінчується.

Ось реальний приклад того, як використовується неактивна ОЗУ.

  1. Закрийте всі програми та переконайтесь, що два програми, які ми тестуємо, не встановлені для автоматичного запуску під час входу
  2. Перезавантажте свій Mac
  3. Запустіть монітор активності та переглядайте оперативну пам’ять протягом усього часу
  4. Час, скільки часу потрібно для запуску програми A (MS Word був би хорошим вибором)
  5. Закрити A
  6. Час, скільки часу потрібно запустити Application B (Adobe щось теж буде добре)
  7. Вийти з B
  8. Час, скільки часу займає другий запуск A
  9. Закрити A
  10. Другий запуск Time B.
  11. Час A починається втретє з запуском B.

Ви повинні побачити значні скорочення для другого / третього запуску, коли система вчиться тримати в неактивній оперативній пам’яті те, що ці два додатки потрібно запускати.


У вашому випадку - загальна кількість провідних та активних означає, що певна заміна диска, швидше за все, відбувається, а ваш Mac не такий швидкий, як це міг би бути, оскільки ваша неактивна оперативна пам’ять недостатньо велика, щоб зберігати всі речі, які можуть знадобитися для повторного використання. . Якщо у вас швидкий накопичувач SSD, це розподіл оперативної пам’яті добре, і замість того, щоб починати сповільнювати, як тільки менше 1/2 вашої оперативної пам’яті становить F + I, ви можете скоротити речі ближче до 1/4 загальної оперативної пам’яті для F + Я перед тим, як побачити помітну повільність. Ці вказівки є загальними, і ви хочете переглянути vm_stat 15або якийсь подібний інтервал, щоб забезпечити постійне та середнє змінення гучності, що не робить ваш Mac повільним.


9
Вау дуже повна відповідь для новачків, як я. Дякую дуже, дуже вдячний :)
GusDeCooL

6
Так - я можу відповісти всім - раз і назавжди люди можуть редагувати це, щоб зробити це краще, і ви отримаєте свою відповідь. Досить класна ідея для веб-сайту, куди люди можуть приходити і задавати цікаві запитання. :-)
bmike

3
Оце Так! Прекрасна відповідь!
duci9y

3
Я б хотів, щоб вони пояснили це так у моєму класі ОС.
стайф

2
чистка @cvsguimaraes не моментальна; chat.stackexchange.com/transcript/message/12107920#12107920
Грем Перрін

6

Число, яке є найважливішим у визначенні того, чи ваш ПК отримує пам'ять «підкреслено», - це цифра «Сторінки виходу». У "Моніторі активності" в Mavericks це більше не відображається, вони тепер відображають інформацію в розділі "Поміняється:".

Page outs означає, що ОС встановила, що недостатньо доступної оперативної пам’яті для запуску всіх застосованих програм та процесів. Потім це "сторінки" на дискових частинах пам'яті, які він визначає, активно не використовуються. Це означає, що оперативна пам'ять (швидка) змінюється на пам'ять жорсткого диска (повільно). Якщо це відбувається багато, тому що працює багато додатків, і користувач переходить між додатками, тоді буде багато вихідних сторінок і сторінок.

Якщо ви бачите, що кількість сторінок збільшується, то слід вжити заходів.


4

Проблема на моєму Mac полягає в тому, що "неактивна" пам'ять ніколи не очищається, якщо я не виконую ручну чистку у вікні команд. Він накопичується та нарощується, доки я не з’явиться спливаюче вікно, яке говорить мені про те, щоб знищувати програми. Навіть після вбивства всіх моїх додатків у мене все ще є занадто неактивна пам'ять, щоб щось запустити. Отже, на моєму Mac, що працює з останньою версією Mountain Lion, НЕ правда, що неактивна пам’ять відновлюється, коли вільна пам'ять зменшується. Або десь є додаток, який заблокував шматок неактивної пам’яті, яка ніколи не звільняється, або в iOS є помилка. (У мене є 8 Гб фізичної пам'яті ... цього повинно вистачити!)


2
Я з вами, Ерні ... в Mac OS 10.6 і 10.7 на MacBook Pro і Mac Pro, неактивна пам'ять заповзе, і ОС почне мінятися (відповідно до "Page Ins" і "Page Outs") і система повзає до зупинки. Здається, неактивна пам'ять ніколи не повертається. Мені доводиться використовувати "чистку", щоб повернути неактивну пам'ять і знову активувати свою систему.
Ерік

2
Звідки береться це спливаюче вікно? Яка ситуація з пам'яттю повідомляється, vm_statколи це відбувається? Що робить вас настільки впевненими, що може бути "занадто багато" неактивної пам'яті ", щоб запустити що-небудь"? Що стосується мене, то це все з чужих даних, яке не має резервної копії коду, який ви знаєте, насправді працює в ядрі.
Kuba Ober

2
Чи виглядає ваш розподіл пам’яті чимось подібним до того, що подав Гус? Тут ми говоримо про провідний гігабайт і активний гігабайт і півтора. Неактивний / безкоштовний раціон мені добре виглядає в цій ситуації. Можливо, ви б задали друге запитання, в якому детально описуєте ситуацію у вас, коли все ламається?
bmike

2

Дякую всім афішам та коментаторам, це була для мене повчальною та корисною темою. Мій недавній досвід комусь може бути корисним. Я використовую свій Mac Mini з ОС X10.8.1 і 16G оперативної пам’яті повністю для створення прототипів програмного забезпечення, яке буде запущено в іншому місці. Я можу запевнити вас, що я не "повернуся до Facebook через кілька хвилин або перезапустити Word після того, як вийдете з нього" - це роблю на своєму macbook.

Моє завдання полягало в з’єднанні великої купи даних, введення / виведення забирає багато часу, тому поняття полягає в тому, щоб прочитати якомога більше шматок даних, щоб протаранити їх одним махом, обробити їх там, а потім записати назад на диск , потім повторіть процес до готовності, що займе кілька годин. Що я бачу, це те, що кожного разу, коли я читаю в новому фрагменті даних, неактивна пам'ять підскакує - я вважаю, що система AI припускає, що я можу знову використовувати старий фрагмент, який я ні - і вільний краплі пам’яті.

Після декількох ітерацій цього процесу вільна пам'ять знизиться до всього декількох МБ, неактивна пам'ять звільнить ще декілька МБ, а згодом, через кілька хвилин перемикання між вільною та неактивною пам'яттю, неактивна пам'ять звільниться до декількох ГБ одразу. Все так, як описується @bmike, і vm_stat 15 і Монітор активності показують 0 вихідних сторінок.

За винятком, можливо, не зовсім. Кілька разів справи рухаються плавно, я прямую попити каву або вечерю і не стежу за процесом, і що не повинно статися, і процес раптом скидає вантаж із завантаження сторінок і сповільнює шлях. Сформулюйте, що це, мабуть, мій хитрий код, що викликає проблему, але я б хотів, щоб я міг вимкнути неактивну пам'ять просто для усунення цього джерела змінності. Це зламано? Я б не сказав цього взагалі, але я б сказав, що я думаю, що управління пам'яттю не оптимізоване для мого випадку використання.


0

Неактивна пам'ять, що використовується нещодавно активними та закритими програмами. OS X зберігає його зарезервованим, якщо користувач захоче знову відкрити програму. У цьому випадку OS X не потребує переміщення пам'яті, що прискорює швидкість роботи. Якщо ви не повторно відкриєте програму, через деякий час пам’ять неактивних буде звільнена або перенесена. (C)

Ця функція класна, коли у вас багато оперативної пам’яті, але коли це не дуже дратує. Насправді все йде про яблучні речі. Якщо у вас є потужний гаджет або Mac, все круто, але коли ви старієте, усі функції уповільнюють його.

Тож вам доведеться використовувати спеціальні хитрощі для управління ним.

Для неактивної пам'яті існує команда purgeзвільнити її.


-3

В основному це зламано. Неактивну оперативну пам’ять слід «очищати» автоматично, коли вільна оперативна пам’ять низька. Який сенс утримувати ОЗУ для раніше відкритих програм, сподіваючись, що користувач знову відкриє його? Той факт, що вільної оперативної пам’яті низький, вказує на те, що в існуючих АКТИВНИХ програмах може бути недостатньо оперативної пам’яті, і вона замінюється ЗАРАЗ. Зберігання ГБ оперативної пам’яті для закритих програм просто німе. Згідно з власним описом Apple, неактивну оперативну пам’ять слід очищати або запозичувати автоматично, коли вільна оперативна пам’ять низька. Це явно не так.


3
Системи віртуальної пам'яті втрачають велику кількість вільної оперативної пам'яті. Коли програма запитує про розподіл пам'яті, ядро ​​створює більше віртуальної пам'яті і передає її як цукерки. Тільки коли програма заповнює цю пам'ять фактичними даними, системі потрібно звільнити місце в оперативній пам'яті для цієї операції. Це "звільнення кімнати" витягує з вільної, а потім неактивної пам'яті - і затримка звільнення неактивної пам'яті незмірно мала. Чистка, яку ви описуєте, відбувається саме таким чином - саме те, що ви маєте на увазі, що система повинна виконувати роботу очищення вперед, коли система лінива, і працює лише за потреби.
bmike

@bmike Але хіба це не означатиме, що коли не залишиться вільної оперативної пам’яті, і я запускаю нову програму, що неактивна частина оперативної пам’яті зменшиться, а активна зросте? Це, очевидно, не так, і з мого досвіду система стає надзвичайно повільною, коли не залишається більше вільного оперативної пам’яті, незважаючи на те, що там є гігабайти неактивного тарана. Схоже, що система віддає перевагу мінянню диска, перш ніж розглянути можливість повторного використання неактивного оперативної пам'яті.
codingFriend1

4
@ codingFriend1 Давайте будемо точні - скільки вільних сторінок vm_statви вважаєте "більше немає вільної оперативної пам'яті"? Коли Mac працює "повільно", для чого зараховується сторінка та кількість сторінок vm_stat 1? Кожен раз, коли я дивлюся це на проблемній системі, мені подобається vm_stat 15працювати в термінальному вікні (або входити в файлову систему), щоб я міг точно знати, що таке діяльність під час підключення під час вирішення питання про те, коли / коли я буду налаштовувати такі речі, як пейджер. У цьому прикладі є 100 Мб вільної оперативної пам’яті, тому це, мабуть, навіть під тиском підкачки.
bmike

-4

По суті, неактивна пам'ять швидше відкриває раніше закриті процеси. Якщо ви виявите, що Mac OS займає занадто багато пам’яті, вам насправді не потрібно, як з десятків вкладок, які ви відкрили на Safari або Chrome, просто скористайтеся командою «очищення» в Терміналі. У OS X Mavericks просто використовуйте «sudo purge» (вам потрібно буде ввести пароль). Це позбавиться дорогоцінних секунд, коли вам потрібно знову щось відкрити, але якщо ви хочете грати в інтенсивну гру оперативної пам’яті або відкрити програму, голодну ОЗУ, я обов'язково пропоную скористатися командою очищення.


2
Чим це відрізняється від інших відповідей?
користувач151019
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.