Як контролювати RAM / swap


18

Чи існує спосіб (додаток) контролювати політику використання оперативної пам’яті / swap на рівні програми.

У мене є кілька додатків, якими я користуюся весь час, і я хочу, щоб вони постійно залишалися в оперативній пам’яті, і є також додатки, які я використовую досить рідко, і вони можуть бути кинуті на обмін на вимогу. Я знаю, що налаштовані за замовчуванням вікна повинні давати найкращі показники, але я хочу перевірити, чи можу я отримати більше :).

Я використовую Windows 7.


2
+1. Мене цікавить метод, який працює для XP.
Xavierjazz

Відповіді:


9

Так , є: запропонуйте програмі викликати функцію VirtualLock :

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

Я вважаю, що функція SetProcessWorkingSetSize також може бути корисною.


Для тих, хто думає, що я єретик, навіть припускаючи, що це може бути корисно:

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


Оновлення: Погляньте на меню меню " Process Hacker " Reduce Working Set.


Можливо, цитуючи цей фрагмент із статті, він поставить це в контекст: "Блокування сторінок у пам'яті може погіршити продуктивність системи, зменшивши доступну оперативну пам'ять і змусивши систему замінювати інші критичні сторінки на файл підкачки. Кожна версія Windows має обмеження на максимальну кількість сторінок, які процес може заблокувати. Це обмеження навмисно невелике, щоб уникнути серйозної деградації продуктивності ". (Мій наголос)

1
@Randolph: Я ніколи цього не рекомендував , я лише зазначив, що, на відміну від того, що більшість інших людей, здається, це можливо . Я особисто ненавиджу говорити ОП "Давайте вб'ємо вашу ідею" - Я думаю, що ОП зрозумів, що той факт, що він не повинен цього робити, але якщо він все-таки хоче, я думаю, він має право знати, як це зробити. (Є причина, що вони створили ці функції, і я не є людиною, яка судитиме, чи повинна ОП використовувати їх чи ні.)
Мехрдад

У Windows багато коду, який залишився для зворотної сумісності. Якщо є причина у її наявності, то це було б. Можна порівняти його з функцією Зменшення в SQL Server, яка не повинна використовуватися ні за яких обставин, але була залишена з міркувань сумісності. Windows 7 - це сучасна ОС з належним управлінням пам'яттю, а файл сторінки не слід видаляти, а також програми не повинні намагатися залишатися в пам'яті поза "правилами". Це дуже погана практика і може призвести до нестабільної та / або непридатної системи.

1
@Randolph: (Я бачу, ти відмовився від аналогії.:]) Склади крихітну програму (не повинна бути більше ~ 10 рядків), щоб відкрити інший процес і зателефонувати SetProcessWorkingSetSize. Це один спосіб. Якщо, звичайно, якщо ви не знаєте, що це означає, тому що ви не розробник, очевидно, що ви не можете зробити. Але це все ще можливо, і сказати, що це неможливо, все-таки невірно, це просто вимагає більше знань, ніж це може мати ОП.
Мехрдад

1
@Randolph, ви можете завантажувати різні безкоштовні програми, які змушують запущені додатки переходити до файлу сторінки (зателефонувавши SetProcessWorkingSetSize у кожному процесі).
Кріс О

5

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

Мій досвід: У мене була ця проблема з фортепіанним програмним забезпеченням (використання 1 ГБ оперативної пам’яті), яке було б перекинуто на своп після деякого використання. Через кілька годин відтворення клавіші на фортепіано призведе до безладної каші, оскільки своп не буде перезавантажений досить швидко, щоб звук відтворювався. (Я б тоді поклав всю руку на кожну клавішу, щоб примусити перезавантажити!)

Якщо оперативна пам’ять викликає занепокоєння, пропоную придбати більше (наприклад, 8-12 ГБ із Windows 7 x64). Для оперативно усвідомленої оперативної пам’яті володіння спонтанно ОЗУ - це знахідка.

Але перед цим слід подумати про придбання SSD-накопичувача та замінування на ньому. Це значно прискорить відновлення свопів, а також надасть багато інших переваг системи. Оперативна пам’ять не надає переваг, коли не використовується.


3
До. Ні. Видалити. The. Сторінка. Файл. Колись.

7
Я маю. Було Використання. Win7. З. Ні. Сторінка сторінки. Для. Місяці. Без. А. Хітч.
mtone

1
Я також постійно користуюся програмою Win7 без файлу сторінки, проте мені здається, що для моєї поточної роботи це може бути недостатньо :(
Darqer

3
@Randolph: MS знає, про що вони говорять, тому що вони знають, що їхні клієнти не завжди є комп’ютерними профі. Але для тих людей, які насправді точно знають, що робить і чи не робить файл сторінки, немає причин змушувати їх застосовувати практику, яка їм не потрібна.
Мехрдад

2
@Randolph: Якщо ви їдете за обмеження швидкості без ременя безпеки, ви можете померти, а також вбити інших людей, не кажучи вже про збільшення витрат на страхування для інших. Найгірше, що може статися, якщо на вашому комп'ютері сторінки з пам'яті, це те, що ви просто втратите трохи часу, залежно від ситуації. Ви не бачите, що щось мало (читайте: багато) не так з аналогією тут? Також, чи використовували ви Linux / Unix? Ви коли-небудь помічали, як вони дають вам більш ніж достатньо мотузки, щоб повіситися, на відміну від Windows? Люди все ще ними користуються - це як їхати під впливом чи щось таке?
Мехрдад

2

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

Якщо у вас є 4 Гб оперативної пам’яті, і скажімо, близько 3 ГБ вона доступна завдяки відеокартам та іншим ресурсам, які блокують частини 4 ГБ, і ви використовуєте лише кілька програм, які не займають багато пам’яті, теоретично ви ніколи не знадобиться файл swap. Однак Windows Vista і 7, як відомо, є агресивними у зміні програм на диск.

У мене раніше було налаштування, яке зменшило свобідність Windows 7 (swappiness - це термін Linux, але воно так само добре застосовується і до Windows. Оскільки існує налаштування реєстру, щоб приручити агресивність обміну Windows, схоже, Microsoft погоджується з повагою, хоч і добре приховану манеру), але я, здається, більше не можу його знайти. Шукаю це, як я опинився тут. Найкраща альтернатива цьому налаштуванню, яке я знайшов, - це переконатися, що ви використовуєте файл свопу фіксованого розміру (я працюю на 4096-4096 на 32-бітних ОС і 12 ГБ на 64-бітних ОС, оскільки у мене 6 ГБ оперативної пам'яті) на виділеній перегородці. Маючи запасний накопичувач на 200 Гб в 200 Гб, я розміщую на цьому диску всі мої розділи для обміну (Windows XP, 7, 7, 64-бітні та різні Linux). Здається, це працює для мене, але YMMV.


1

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

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