Windows, що використовує занадто багато оперативної пам'яті, як діагностувати ресурс свиней


73

У мене 16 Гб оперативної пам'яті. При запуску без відкритих додатків, за винятком того, що менеджер завдань Windows використовує близько 3 ГБ оперативної пам’яті. Я переглянув вкладку процесів, але, здається, нічого не буває. Як я можу дізнатися, чому моя Windows використовує стільки оперативної пам’яті.

введіть тут опис зображення

всі процеси від усіх користувачів

введіть тут опис зображення


Читаючи з пулу, здається, що мій драйвер бездротового зв'язку використовує близько 0,4 ГБ оперативної пам’яті. Навіть якщо я його видалюю, він все одно використовує 2,6 Гб при запуску, що все-таки занадто багато.

введіть тут опис зображення


Після перевстановлення драйвера бездротового зв’язку, пов'язаного з витоком пам'яті. У мене є новий скріншот, і я хотів би підтвердити, що це справді витік пам'яті.

введіть тут опис зображення


3
Перш за все, у вас всього 12 Гб. Або одна з ваших чотирьох 4 ГБ паличок погано розміщена, або ж ваша материнська плата не підтримує 16 Гб. По-друге, ви намагалися запустити будь-які програми безпеки, щоб перевірити наявність шкідливих програм? Security Essentials є вбудованим, тому обов'язково оновіть його визначення та запустіть сканування. Спробуйте також декілька анти-руткіт-програм, оскільки руткіти спеціально приховують (хоча вони також зазвичай намагаються тримати невисокий профіль, щоб залишатися непоміченим, а використання декількох гігабайт оперативної пам’яті навряд чи поєднується).
Synetech

Ви можете поглянути на продуктивність -> монітор ресурсів
Journeyman Geek

Спробуйте запустити команду списку завдань, перенаправляючи її вихід у файл, C: \ blah> tasklist> aa, потім відкрийте файл aa, ви побачите підсумки для кожного процесу, наприклад 15,100K, видаліть K після них і підсумовуйте загальну суму з Excel. Подивіться, чи відповідає загальна цифра використаної фігури, яку менеджер завдань дає біля свого графіка для використаного. Для мене загальна кількість із списку завдань - 4 ГБ, а менеджер завдань каже 4,5 ГБ. Я не можу пояснити невідповідність у мене, але вона не величезна. було б цікаво, якщо у вас величезна розбіжність.
барлоп

У мене немає чудового досвіду
Вейдер

1
Теги NDxx - це ndis.sys. Я б здогадався, що BRCM був Broadcom. Це вказувало б на проблему вашого мережевого адаптера.
Девід Маршалл

Відповіді:


82

У вас є витік пам'яті, викликаний водієм. Подивіться на високе значення пам'яті ядра, що не використовується на сторінці. У вашому випадку це більше 3,7 ГБ. Ви можете використовувати poolmon, щоб побачити, який драйвер викликає високе використання.

Встановіть Windows WDK , запустіть poolmon, відсортуйте його за Pтипом пулу, щоб тест, Bякий використовує більшу частину пам’яті , розміщувався вгорі та після байтів без подкачки . Запустіть poolmon, перейшовши до папки, де встановлено WDK, перейдіть до Інструменти (або C: \ Program Files (x86) \ Windows Kits \ 10 \ Tools \ x64) та натисніть poolmon.exe.

Тепер подивіться, який тег пулу використовує найбільше пам'яті, як показано тут:

введіть тут опис зображення

Тепер відкрийте cmd-рядок і запустіть команду findstr. Для цього відкрийте cmd-рядок і введіть "cd C: \ Windows \ System32 \ drivers", без лапок. Потім введіть "findstr / s __ . ", Де __ - тег (найбільше ліве ім'я в басейні). Зробіть це, щоб побачити, який драйвер використовує цей тег:

введіть тут опис зображення

Тепер перейдіть до папки драйверів (C: \ Windows \ System32 \ drivers) і клацніть правою кнопкою миші відповідний драйвер (intmsd.sys у наведеному вище прикладі зображення). Клацніть Властивості, перейдіть на вкладку "Деталі", щоб знайти ім'я продукту. Шукайте оновлення для цього продукту.

Якщо тег пулу показує лише драйвери Windows або вказаний у pooltag.txt ( "C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\triage\pooltag.txt")

у вас є xperf, щоб простежити, що викликає використання . Встановіть WPT з Windows SDK , відкрийте cmd.exe як адміністратор і запустіть це:

xperf -on PROC_THREAD + LOADER + POOL -прогулянка PoolAlloc + PoolFree + PoolAllocSession + PoolFreeSession -BufferSize 2048 -MaxFile 1024 -FileMode Circular && timeout -1 && xperf -d C: \ pool.etl

захоплюють 30 -60-ті рости. Відкрийте ETL за допомогою WPA.exe, додайте графіки пулу до області аналізу.

Поставте стовпчик pooltag на перше місце і додайте стовпчик стека. Тепер завантажте символи всередині WPA.exe і розгорніть стек тегу, який ви бачили в poolmon.

введіть тут опис зображення

Тепер знайдіть інших сторонніх драйверів, яких ви можете бачити в стеці. Тут Threтег (Thread) використовується AVKCl.exe з G-Data. Шукайте оновлення драйверів / програм, щоб виправити це.


1
Ой, вибачте. @Jebediah Kerman Ви виконали команду findstr? З назви це може бути пов'язано з драйвером мережевої карти. Якщо у вас все ще виникають проблеми, запустіть RAMMap, збережіть дані як RMP, стисніть файл RMP та завантажте поштовий індекс.
magicandre1981

це може здатися дурним. Але як мені почати басейну. Раніше я міг шукати "poolmon.exe" і запускати
Vader

@JebediahKerman Я думаю, ви вже це зробили і знайшли теги. Хіба картинка з вашого допису не є вашим басейном?
magicandre1981

Картина моя. чомусь пошуковий індекс був неповним.
Вейдер

@JebediahKerman Ви подивилися, що це за NDFT? Ви також можете використовувати xperf для відстеження використання басейну: channel9.msdn.com/Shows/Defrag-Tools/…
magicandre1981

15

Ну, по-перше, перш ніж перейти до більш детальної відповіді. На першому знімку екрану ваш непідказований пул (тип використання пам'яті ядра) становить 1,3 Гб. Це здається мені незвично високим, особливо лише за 30 хвилин після завантаження. Я здогадуюсь, що я міг бачити NP Pool, який отримує такий високий рівень після тривалого використання або з програмою, що просочується, як сито. На противагу цьому, мій пул NP зазвичай становить від 100 до 200 мегабайт, а мій підключений пул може становити до 400 або 500 (і це після того, як моя система працює без перезавантаження протягом тижнів.)


Ви можете ввімкнути кілька додаткових стовпців у Диспетчері завдань, клацнувши правою кнопкою миші заголовки стовпців та вибравши вибрані стовпці. Слід додати Working Set (private), Working Set (shared), Commit, і NP Pool. Я б переглянув усі ваші процеси від усіх користувачів і побачив, чи є у кого-небудь з пулів NP більше ніж 256 КБ. Якщо ви бачите будь-які, особливо такі, що значно вищі, це може бути джерелом проблеми або хоча б її частиною.

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

Безпардовий пул - це пам'ять, яка не може і ніколи не буде замінена фізичною пам'яттю ... це фактично ваше постійне мінімальне використання фізичної пам'яті. Пам'ять NP Pool часто містить програмний код і критичні розділи, які повинні бути у фізичній пам'яті, щоб правильно чи безпечно поводитись, спеціальні купи тощо. З 60 процесів, якщо всі вони мають 256 КБ пам'яті NP Pool, то ваше абсолютне мінімальне використання фізичної пам'яті складе близько 15 360 КБ. У більшості випадків одна чи дві програми можуть мати NP-пул у розмірі 256 Кб, тоді як у більшості - менше, часто значно менше (або жодне). Це малоймовірно, що система коли-небудь викладе всю сукупність усіх процесів, що працюють, тому не сподівайтесь, що використання пам'яті знизиться.


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

Windows керує пам’яттю для вас і автоматично переносить дані з пам'яті в та з пам'яті до та зі сторінки (своп) файлу для вас. Якщо ви запускаєте процес, який потребує 9 Гб оперативної пам’яті, і ваша система вже використовує 4 Гб (з 12 ГБ), система автоматично визначить, які процеси не потребують негайного доступу до всього їх робочого набору, і він відобразить сторінку чи деякі або всі їхнього базованого підручника, щоб помінятися, щоб звільнити зайві 1 Гб. Якщо вашому великому процесу в кінцевому рахунку потрібно більше пам’яті, Windows додатково зменшить робочий набір інших процесів, поки у нього не буде достатньо вільного місця для виділення щойно запитуваного блоку. Ваш великий процес може врешті-решт споживати всю наявну пам'ять, крім NP Pool, і, можливо, додаткову мінімальну накладні витрати для періодичного виконання процесів, які не дозволяють Windows звільнити більше свого робочого набору (я. е. у них є помилки на відкладеній сторінці, які Windows інакше мінятиметься фізичною пам'яттю, але, оскільки їх вимагають, їх неможливо перемістити.)

Якщо для процесу потрібно більше пам’яті, ніж дозволено (32-бітні процеси зазвичай можуть отримати доступ до 2 Гб, а деякі трохи менше 4 Гбіт із покращеними методами, тоді як 64-бітові процеси, як правило, мають доступ до близько 48 Гб пам'яті, кожен), тоді Windows іноді спробує віртуалізувати його пам’ять за допомогою місця підкачки. Якщо 32-бітний додаток хоче використовувати максимально дозволений 2 Гб простору, але доступно лише 1,2 Гбіт, вікна зарезервують повний 2 Гбіт у файлі сторінки та перемістять власні дані у файл та сторінки зі сторінки, як потрібно, для того, щоб підтримка використання пам'яті програми. Загальне використання "пам'яті" в цьому випадку може виявитись більшим, ніж наявна фізична пам'ять, коли буде здійснено функцію "Повна комісія". Загальна кількість комісій зазвичай перевищує загальний загальний розмір файлу сторінки, який при керуванні системою, як правило, становить 2-3 рази більше фізичної кількості пам'яті. У вашому випадку,


Один заключний пункт. Ви сказали у своїй відповіді, що у вас 16Gb оперативної пам’яті, де як диспетчер завдань бачить лише 12Gb оперативної пам'яті. Тут одна з двох речей. Або у вашій системі дійсно є лише 12 Гб оперативної пам’яті, або одна з ваших паличок не реєструється належним чином. Якщо палиця оперативної пам’яті (я вважаю, що палички 4 ГБ), це може бути погано, можливо, вона не буде влаштована повністю належним чином на вашій материнській платі, або у вашої материнської плати може виникнути проблема виявлення пам'яті.

Щоб перевірити, чи є останнім, слід спочатку оновити BIOS материнської плати до останньої версії. У мене була подібна проблема ... мої шість палиць DDR3 триразового каналу (6x 2Gb) були гарні на основі індивідуального тестування кожного ... але моя материнська плата навмання вирішила не рахувати один-два з них так часто, часто залишаючи мені лише 8 Гб оперативної пам’яті. Оновлення BIOS вирішило проблему, і я маю надійний доступ до всіх 12 Гб моєї пам'яті.


Цікаво ... І я щойно помітив, що його необов’язкова пам'ять дуже велика ... у мене 539 МБ на сторінці, 139 Мб - не підказка. Ви, очевидно, знаєте більше, ніж я про це .. Але ви помиляєтеся в цілому. напишіть "Загальна комісія зазвичай перевищує максимальний загальний розмір файлу сторінки" Моя оперативна пам'ять становить 12 ГБ. Я встановив мій файл сторінки на 4000 МБ (3,8 ГБ?) хв та 1,5-2х пам'яті як макс. / 15 наразі), мій файл сторінки становить приблизно 4 Гб або, можливо, трохи менше схожий на 3,8 ГБ. Макс фіксація більше нагадує розмір файлу сторінки + розмір оперативної пам'яті. Сторінка майже 3,8 Гб або 4 ГБ максимум - 15 ГБ
барлоп

@barlop: Ну, ти дещо неправильно розумієш, що таке вчинення. Технічно кажучи, плата за фіксацію - це загальний "практично адресований простір пам'яті", включаючи простір, підтримуваний розширеними менеджерами пам'яті та великою інформацією про адреси. Макс фіксація не буде файлом сторінки + ОЗУ, скоріше вона описується як загальний системний віртуальний адресний простір, керований системою. Файл сторінки, як правило, повинен охоплювати принаймні загальний розмір фізичної пам'яті та додатково розширювати його понад загальний розмір фізичної пам'яті. У вашому випадку я очікував би, що принаймні 18Gb (1,5x) або 24Gb (2x), однак, що ...
jrista

... це стосується файлу сторінки, керованого системою. Це здається, що ви вручну налаштували налаштування файлу сторінки, і в такому випадку я повинен знати більше про вашу конкретну конфігурацію, щоб сказати вам, чому ваш поточний комісія становить 15 Гбіт (оскільки файл сторінки 3,8 / 4 Гб вказував би на 16 Гбіт, а не на 15 Гб .) Цілком можливо вручну налаштувати жодний файл сторінки або занадто малий файл сторінки, що може призвести до незвичайних проблем з продуктивністю та проблем з розподілом пам'яті. Найкраща рекомендація, якщо у вас не налаштована дуже конкретна настройка сервера (тобто бази даних), - це дозволяти Windows управляти файлом сторінки.
jrista

Одне заключне зауваження. Для досягнення максимальної продуктивності найкраще дозволити Windows достроково виділити максимальний розмір файлу сторінки. Зазвичай це робиться в налаштуваннях сервера, таких як база даних SQL Server, де ви можете попередньо виділити 64 Гбіт або більше (зазвичай 2 рази фізичний розмір оперативної пам’яті, можливо, навіть 128 Гб або 256 Гб) у файл сторінки, який розподіляється рівномірно між декількома фізичними дисками для досягнення максимальної продуктивності . Розподілені файли сторінок, особливо при попередньому розміщенні на максимальний розмір, дозволяють перемежовувати читання / запис на всіх дисках, що беруть участь, тим самим дозволяючи покращити продуктивність підключення під час паралельного вводу / виводу.
jrista

Як приклад великого навантаження на пам’ять, в даний час у моїй системі є: 7,5 / 12 Гбіт фізичне використання пам'яті; 14,7 / 23,3Gb комісія; 49-Мб підказканий басейн; 145 Мб пп басейн. Це для 146 процесів, максимум підключеного пулу 2276k максимум np пул 263k. Найбільший розмір комісії 696 396k, і для того ж процесу WS становить 714,256k (процес вкладки Opera.) (Моя велика кількість процесів пов’язана з веб-браузером ... вони ізолюють вкладки через процес в ці дні, і я гіпертаббер ... десятки відкриваються одразу, тому десятки додаткових процесів.)
jrista

12

Як я можу дізнатися, чому моя Windows використовує стільки оперативної пам’яті.

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

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

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


12
Якщо у моїй системі Windows7 при запуску використовується 3 Гб оперативної пам’яті, при цьому додатки не відкриваються, щось має бути помилятися
Vader

5
@JebediahKerman Чому ти це кажеш? Я доклав певних зусиль, щоб спробувати пояснити вам, чому це не так, і чому Windows призначена для цього. Ви не зрозуміли мого пояснення? Або, якщо ви не згодні з цим, ви могли б пояснити, де ви думаєте, що я помиляюся?
Девід Шварц

11
@DavidSchwartz абсолютно неправильна відповідь. У нього витік пам'яті водієм
magicandre1981

9
@DavidSchwartz: поведінка, яку ви описуєте (RAM-розподіли, які можна повторно використовувати), обов'язково повинні бути зроблені з пам'яті, що зберігається на сторінці. Тривожна цифра - 1,3 ГБ пам'яті, що не використовується на сторінці. Ви не можете просто звільнити це для інших ресурсів, куди піде ці 1,3 Гбайт? Бути "непарним" означає, що власник сказав, що "ці байти є настільки важливими, що ви навіть не можете їх поставити на диск, інакше відкинути їх".
MSalters

25
Чому ця «відповідь» проголосується так високо? Це повністю пропускає суть. Незалежно від конкретних вживаних слів (які були абсолютно зрозумілі для початку) питання не є “Why is Windows using RAM?”, питання полягає в тому, що “Why do the RAM usage numbers not add up; why is one part reporting a higher usage than another part?”ця публікація має бути в найкращому випадку коментарем, оскільки вона не стосується власне питання або навіть спроби відповісти на нього; він лише звучить з невеликими порадами і поганими порадами, оскільки, якби ОР проігнорувала це, як було запропоновано, витік пам'яті не було б виявлено.
Synetech

2

Причина, не згадана вище, - Hyper-V.

Мені вдалося визначити це з чудовою утилітою RamMap :

введіть тут опис зображення

Скріншот - після. До того, як "Драйвер заблокований" пам'ять становила понад 6 ГБ, більше 80% оперативної пам’яті в цій конкретній машині. Мені довелося зайти в диспетчер Hyper-V і відключити "Динамічну пам'ять". Цікаво, що навіть після його повторного ввімкнення пам'ять "Заблокований драйвер" залишилася низькою - я можу лише припустити, що попередні випадки збільшили її, і що Hyper-V не зменшує автоматично виділену пам'ять:

введіть тут опис зображення

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