Чому Windows 7 використовує файл сторінки, коли є безкоштовна фізична оперативна пам’ять?


43

Я використовую Windows 7 64 біт з операційним процесором 8G. Після деякого використання я відчуваю, що Windows стає млявим. Привід молотить. Переглядаючи монітор ресурсів та активність диска, я бачу кілька випадків використання файлу сторінки (c: \ pagefile.sys). Я перевіряю фізичну пам'ять і бачу приблизно 2.3G доступної пам’яті та 700M безкоштовної пам’яті.

Чому Windows не використовує більше вільної пам'яті та менше файлу сторінки? Чи потрібно залишити якусь кількість безкоштовного барана, скільки це буде? Це відсоток фізичного барана?

Мій план - отримати більше оперативної пам’яті та SSD для основного диска. Тим часом я страждаю від повільної роботи.


1
Тільки тому, що він пише / читає у файл сторінки, це не означає, що ми його використовуємо, воно може просто оновити його, щоб воно швидше скидало пам'ять, якщо є раптова потреба. Я рекомендую запустити монітор продуктивності або зробити глибоку діагностику і побачити, що викликає млявість.
Скотт Чемберлен

Маючи більше 8 ГБ оперативної пам’яті, це не підвищить продуктивність у 99. (9)% випадків. Чи наповнили ви мобо повним дешевим низькочастотним / високим затримкою оперативної пам'яті? Замінити їх було б кращою ідеєю, ніж додавати більше.
kotekzot

3
@kotekzot Це залежить. Як правило, в більшості вузьких місць затримка оперативної пам’яті дещо незначна. Якщо у нього достатньо пам’яті, що йому не доведеться чекати запуску програм, коли він перебирає вкладки через усі, то наступне найбільше вузьке місце на кілька порядків майже завжди є жорстким диском, і SSD виправить це право вгору
Darth Android

@ Якщо у мене більше оперативної пам’яті, я можу помістити файл сторінки в рамний диск, який набагато швидший, ніж доступ до HD. Це рівень робочої станції ноутбука Dell, тому я впевнений, що компоненти недешеві. Я усвідомлюю, що ноутбуки мають повільніші жорсткі диски та підсистеми введення-виведення, ніж настільні.
Tony_Henrich

1
Будь ласка, не ставте файл сторінки на RAMdisk. Це лише зробить систему більшою кількістю помилок на сторінці. Так, якщо вони перейдуть на сторінку file-on-RAMdisk, вони будуть вирішені швидше, ніж якби вони перейшли на реальний диск, але відсутність їх взагалі все ще набагато швидше; Крім того, багато збільшених помилок сторінки стосуватимуться картографічних файлів, і RAMdisk їм зовсім не допоможе.
Джеймі Ханрахан

Відповіді:


33

По-перше, не розміщуйте файл сторінки на SSD. У той час як SSD стають кращими щодо вирівнювання зносу, файл сторінки записується часто, і він погіршить ваш SSD набагато швидше, ніж загальне використання.

Що багато людей не розуміють, це те, що Windows ніколи насправді не має вільної пам'яті. Є декілька Мб, які зберігаються вільними для швидких вимог, але в іншому випадку різниця між активною пам'яттю додатків, що використовуються, і загальною пам'яттю, як правило, споживається тим, що відомо як "резервна" пам'ять.

Пам'ять системи

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

Мета Windows - зберегти дані, які, швидше за все, будуть використовуватися в цьому кеш-режимі очікування, виходячи з моделей використання. Для використання надуманого прикладу порівняємо відносне значення приватної пам’яті такої програми, як Windows Update (зазвичай налаштована для роботи раз на тиждень), з кешуванням вмісту робочого столу в цій пам'яті очікування:

Більшу частину часу Windows Update спить. Він утримує пам'ять і здебільшого не робить з цим абсолютно нічого корисного, поки чекає розкладу. З іншого боку, вміст вашої робочої папки може постійно запитуватися, особливо якщо ви хочете зберегти файли в ній.

У цьому випадку Windows зробить розбиття пам’яті, виділеної для оновлення Windows (навіть якщо пам'ять не «повна», і використовувати простір, доступний в оперативній пам’яті, для кешування вмісту робочого столу. Це призводить до кращої продуктивності для ви.

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


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

(Насправді, залежно від застосувань, системи можуть часто виділяти більше пам'яті, ніж є насправді, очікуючи, що більша частина її завершиться вичерпаною. Якщо ви дивитесь на детальне розбиття пам’яті, плата "Звернути" або "Здійснити" це кількість пам'яті, яку Windows виділила на різні програми. Файл сторінки використовується для забезпечення гарантій цієї пам'яті, навіть якщо у неї недостатньо фізичної оперативної пам’яті для її покриття.)


Я щойно помітив, що ви зробили різницю між доступною та вільною пам’яттю у своєму запитанні; Мої вибачення, якщо ви відчуваєте лекції і вже знали різницю. В ідеалі вільна пам'ять завжди 0. Однак, поки пам'ять у режимі очікування - це пам'ять, яка може бути звільнена, не завжди пам'ять може бути швидко звільнена. Якщо я спробую записати файл на 1 Гб на диск, Windows збирається вставити його в кеш диска, якщо це можливо, а потім повільно записувати його на жорсткий диск у фоновому режимі. Якщо програмі потрібно запитати 50 Мб додаткової пам'яті, але вона не доступна, оскільки цей величезний дисковий кеш все ще вимивається, програма буде зависати, поки вона не стане доступною. Тримаючи в руках невеликий буфер, система дозволяє вирішити цю проблему з мінімальним відставанням від точки зору користувача.


6
@FrankComputer Дивіться скріншот, який я опублікував для своєї 8 Гб робочої системи: використовується 6300 МБ, диск / кеш в режимі очікування 1700 МБ, безкоштовно 42 МБ. Дивлячись на мою домашню систему (32 ГБ пам’яті), ви насправді правильні, але просто невірний поріг: 9,2 ГБ, що використовується, 14,5 ГБ дискового кеша, 8,6 ГБ вільного. У вас буде вільна пам'ять, якщо в Windows просто не вистачає речей для кешування, але цей поріг досить високий. Windows не постійно змінюється, оскільки кеш диска не є місцями для обміну - він пасивно кешований, коли потрібні файли, а не в кеші. Ви не помічаєте часу, коли воно витягується з кеша, і немає жодної активності на жорсткому диску.
Darth Android

8
@FrankComputer: Якщо ваша система працює добре, це не через вільну пам'ять. Вільна пам'ять - це пам'ять, яку система не використовує, і вона не може мати більше ефекту від продуктивності, ніж пам'ять, що сидить на вашому столі. Єдиний спосіб покращити продуктивність за допомогою пам’яті - це використовувати її, тому якщо вона безкоштовна, її не використовують для підвищення продуктивності. Зробити більше вільної пам’яті - означає використовувати менше, погіршити продуктивність.
Девід Шварц

1
@Tony_Henrich Вимкнення файлу сторінки погано. Дуже погано. (Переміщення файлу сторінки на ramdisk фактично те саме, що його відключити. Windows не може негайно перемістити дані, які йому не потрібні, з пам'яті). Багато програм вимагають пам'яті, яка їм не потрібна відразу, але може знадобитися в майбутньому. Зазвичай Windows виділяє цю пам'ять на файл сторінки, і вона нічого не робить. Наприклад. MSSQL-сервер виділяє 8 ГБ оперативної пам’яті при його запуску. Навіть для 0 баз даних. Лише тому що. Якщо ви розмістите свій файл сторінки на ramdisk, ви витратите значну кількість оперативної пам’яті, яка в іншому випадку може бути використана для кешу
Darth Android

1
@Tony_Henrich На даний момент Windows оптимально керує вашим файлом сторінки та оперативною пам’яттю з огляду на те, як ви використовуєте вашу систему. Єдині вдосконалення, які ви можете досягти, такі: додайте більше пам’яті або перемістіть ОС на SSD. Плутатися з вашим файлом сторінок в кращому випадку погіршить вашу загальну продуктивність системи або погіршить стабільність системи.
Дарт Android

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

4

Це називається плануванням наперед.

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

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


З 16G + та легкими програмами час, коли програма вимагає більше пам’яті, ніж безкоштовна, набагато менше, ніж часто використання файлу сторінки. Тому для цих випадків краще використовувати частину вільної пам'яті та менше файлу сторінки. Немає жодного рішення, яке підходило б для всіх випадків.
Tony_Henrich

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

1
Але, намагаючись планувати заздалегідь, чи не може Windows потенційно заповнювати кеш-пам’ять HDD / SDD на кеш-пам'яті - робить одночасні операції запису / завантаження файлів повільнішими? Ця попередня заміна оперативної пам’яті здається гарною ідеєю, але здається, що вона випадково сприймає навантаження на систему в погані часи.
бінкі

1
@binki: Так, це заважає часом читання / запису диска, але якщо я пригадую, вони використовують нижчий пріоритет, тому інші записи для читання-записів повинні починатись спочатку.
Mooing Duck


2

У мене було вимкнено файл сторінки протягом останніх 7 років. Насправді це перше, що я роблю після встановлення. Ніколи з цим не виникало жодних проблем. (Насправді у мене була одна - гра під назвою «титановий квест» під час запуску дуже глупа перевірка, тому я створив файл сторінки 4 Мб лише для того, щоб зробити це щасливим і пізніше відхилив PF). Що стосується оригінального питання. Windows використовує нашу оперативну пам’ять для кешу вводу / виводу диска. Чомусь він вважає, що кеш диска однаково важливий для коду та даних активних програм. І немає можливості обмежити розмір кеш-диска. Це там за дизайном, і ми нічого не можемо з цим зробити ... О, зачекайте! Ми можемо! Просто вимкніть файл сторінки. Запускаєте додатки, які важкі для оперативної пам'яті? Купіть більше оперативної пам’яті або закрийте один додаток перед запуском іншого. Ви можете скористатися Провідником процесів, щоб побачити, скільки пам'яті використовується в будь-який момент.


1
Позбавлення файлу сторінки не вимкне кешування диска.
Джеймі Ханрахан

1
Ви писали: "[Кешування диска] існує за дизайном, і ми нічого не можемо з цим зробити. О зачекайте! Ми можемо! Просто вимкніть файл сторінки." Що ж, вимкнення файлу сторінок нічого не стосується кешування керування диском, так що ви говорите? Це все-таки дурна ідея, оскільки вона змушує ОС зберігати всі приватні зобов'язання в оперативній пам’яті назавжди, коли її торкаються. Це робить менше місця для відображеної віртуальної пам’яті (наприклад, коду), тому для матеріалів потрібно більше підписувати. Проактивний кеш-диск диска (superfetch) використовує те, що залишилося після всього вищесказаного, тому він не збільшує підказка жодного з них.
Джеймі Ханрахан

1
Я ніколи не казав (і не думав), що відключення файлу сторінки було вашою ідеєю, тому я нічого не говорив про "вашу ідею". О, хоча я тут: "Чомусь [Windows] вважає, що кеш диска однаково важливий для коду активних програм, а дані" абсолютно невірно. Superfetch використовує лише сторінки, які знаходяться в списку очікування, а значить, вже є частиною " доступна "ОЗУ; вона не займає сторінки з коду та даних програм. І ці сторінки залишаються доступними, тобто негайно доступні для коду та даних програм, навіть після того, як вони містять кешовані дані з файлів.
Джеймі Ханрахан,

1
Я нічого такого не кажу. (Де ви це отримуєте?) Хоча я кажу, що Windows ніколи нічого не видає на сторінку, щоб звільнити місце для кеш-диска. Навпаки, кеш використовує сторінки, які наразі не є частинами процесів, і, отже, в іншому випадку вони будуть марними. Такі залишки RAM негайно доступні для коду та даних , які необхідні це для пейджингового речі в , так що це не «витрачені» кеші, просто «запозичили». Таким чином, кеш-пам'ять не зменшує кількість коду та даних, які можуть бути підключені на сторінку або збережені в оперативній пам'яті. Ref: Windows Internals від Соломона, Русиновича та Іонеску.
Джеймі Ханрахан

1
Я вже відповів у відповідь DA. Але те, що ти щойно сказав, - це не те, що він сказав. Він сказав, що Windows розкриває тривалість неактивних процесів (правда). А також він сказав, що кеш диска може використовувати звільнені тим самим сторінки (також правда). Але це не означає, що кеш диска обов'язково має перевагу. Дисковий кеш використовує ці сторінки лише тоді, коли нічого іншого більш високого пріоритету їм не потрібно. Величезна кількість тестування продемонструвала, що це хороший компроміс.
Джеймі Ханрахан

1

Аргументи ( тут і тут ) для збереження та використання файлу сторінки, навіть якщо достатньо оперативної пам’яті, є:

  • Навіть якщо зараз є вільна пам'ять, у машини може пізніше вичерпатися. Краще заздалегідь скинути на диск мало використані частини пам'яті.
  • Також є "резервна" пам'ять, яка видається безкоштовною, але фактично використовується для кешування диска. Це важливо і для продуктивності, краще їх мати.
  • Якщо у вас залишилось оперативної пам’яті з відключеним файлом сторінки, це важкий збій.
  • Хоча 2, 4, 16 або будь-яка інша кількість Gb оперативної пам’яті може виглядати як «багато», це може бути не таким правдивим, як ви вважаєте. Вам потрібно профілювати.

За допомогою монітора ресурсів Windows можна побачити, скільки оперативної пам’яті використовується для кешування (показано як «Режим очікування»).

Якщо ви бачите, що ваша оперативна пам’ять фактично використовується або в режимі очікування, файл сторінки корисний для вас. Якщо поєднання ваших завдань і доступної оперативної пам’яті таке, що значна частина пам’яті виявляється невикористаною («вільною»), я думаю, що немає необхідності шліфувати жорсткий диск тільки з поваги до того, хто «знає краще і сказав це тут ".


-2

Усі ці коментарі та правильна відповідь відсутні. Вимкніть файл сторінки. Вона не потрібна з 8 Гб оперативної пам’яті, і якщо вам потрібно більше оперативної пам’яті, придбайте її. досить просто насправді.


4
Windows досить розумний у визначенні того, що (не) розміщувати у файлі сторінки. За винятком деяких майже чисто теоретичних сценаріїв, його вимкнення зашкодить продуктивності навіть при 8 ГБ оперативної пам’яті. Навіть якщо правильна відповідь відсутня, це, звичайно, не це.
Маркс Томас

4
Чи є які-небудь докази для підтвердження вашої претензії щодо "шкідливості"? Я представляю статтю MS support.microsoft.com/kb/889654
a2552308

6
Простіше кажучи: файли сторінок можуть тільки збільшити активність диска ... і Windows недостатньо розумний, щоб не використовувати його взагалі, якщо у нього багато оперативної пам'яті. У системі SSD це може не надто помітно, на шпиндельній системі це може сильно вплинути на продуктивність програми. Посилайтеся на оригінальний плакат.
a2552308

2
Відповідний розділ статті MS: "Однак, оскільки в комп'ютер додається більше оперативної пам’яті, потреба у файлі сторінки зменшується. Якщо у вас на комп'ютері встановлено достатню кількість оперативної пам’яті, вам може не знадобитися файл сторінки, якщо не потрібен один. за допомогою конкретної програми ". Я не зміг знайти відповідні розділи з багатьох статей, з якими ви пов’язані.
a2552308

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