Принудительная очистка Standby - оперативной памяти по расписанию посредством утилиты RamMap и скрипта Autoit.

28.09.16

База данных - Инструменты администратора БД

Для большинства пользователей операционная система – это «черный ящик», и что происходит внутри него – это таинство. Но иногда хочется «пнуть» этот ящик, что бы он работал так, как надо… Конечно, принудительная очистка standby памяти напоминает "танец с бубном" (вроде система должна делать это сама), но в некоторых случаях она помогает...

Скачать файлы

Наименование Файл Версия Размер
RunRamMap.zip
.zip 824,03Kb
77
.zip 824,03Kb 77 Скачать

 «Памяти мало не бывает» -  Народное правило апгрейда компьютера.

Внимание!!! Все описанное ниже относится к Windows Vista и выше…

Каждый, кто хоть раз заглядывал (кто из любопытства, кто по долгу службы)  в «Монитор ресурсов» на закладку «Память» видел подобную картинку:

Рис 1.

Причем, через некоторое время, она существенно меняется (в зависимости от используемого ПО и настройки системы):

Рис. 2

Мы видим, что память из списка «Ожидание» (Standby) – растет, свободная память – уменьшается…

В данном случае свободной памяти почти не осталось:

Рис. 3

А в Standby памяти находятся большие файлы архивов вечернего бэкапа:

Рис. 4

И самое главное, есть 100% уверенность, что нахождение их в Standby памяти не целесообразно – бэкап уже закончился.

Теоретически, Standby память содержит кэшированные данные, которые возможно, когда-нибудь будут использоваться в дальнейшем… При этом, когда системе потребуется дополнительные ресурсы, системный менеджер памяти может освободить из списка Standby необходимую память.

 На практике, иногда случаются ситуации, подобные этой

 «В тестовом режиме гоняем сервер (8x2CPU AMD 64G RAM) баз данных на MS W2008R2 KR c MSSQL 2008. Под SQL выделено 50 G. Почти месяц машина отработала нормально, но последнии несколько дней вся свободная память из free перешла в Standby и производительность снизилась ... причем система говорит что используется всего 52-53 G. После рестарта система съедает полженные 52-53 Gи начинает привращение Free to Standby. По завершению сего процесса снова начинаются "дикие тормаза". 

p.s. сервер mssql+1cv81 4 базы: 2 торговли не типовых 65G каждая, 1 ЗУП 1,5G 1 бухгалтерия 14G  Подскажите как standby превратить в free «

Конечно не факт, что «тормоза» в данном конкретном случае возникли только по этой причине, но как говорят: «осадок остался».

Я так же замечал, что при работе некоторых приложений (особенно написанных для предыдущих ОС) количество свободной памяти иногда резко уменьшается и субъективно, система начинает «подтормаживать» а некоторые приложения, например 1С 7.7 Предприятие даже «вываливались» без всяких сообщений.  Чаще всего в подобных случаях спасает перезагрузка системы.

Так как Standby память – страницы физической памяти, которые активно не используются, и могут быть при необходимости выделены менеджером памяти другим задачам, значит, не будет ничего плохого, если мы освободим их без участия системы, но, конечно, корректно.

Есть прекрасная утилита фирмы Sysinternals (www.sysinternals.com) RamMap. Одна из опций данной программы, как раз, и отвечает за очистку Standby памяти.

 Рис. 5

Результат выполнения очистки (красым отмечена свободная память):

Рис. 6

 И в мониторе ресурсов свободной памяти значительно прибавилось:

 Рис. 7

Эта утилита, написанная легендарным Марком Руссиновичем в соавторстве с Дэвидом Саломоном, она прекрасно справляется с данной задачей. Ее авторы – признанные специалисты по Windows-системам (это к корректности реализации). К слову, весь пакет программ – это «швейцарский нож» для каждого системного администратора.

Единственный недостаток, то, что выбор и запуск данной опции в программе происходит в интерактивном режиме. Автоматизировать нажатия кнопок и выбор меню нам поможет простой скрипт на AutoIT:

;----------------------------------------------------------------------------

#RequireAdmin

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****

#AutoIt3Wrapper_UseX64=y

#AutoIt3Wrapper_Res_Language=1049

#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker

#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

;----------------------------------------------------------------------------

;           SAM -- 20/11/2013

;----------------------------------------------------------------------------

;  RunRamMap -- оболочка для запуска утилиты Sysinternals RamMap

;  - после запуска программы выполняется очистка Standby памяти

;  - после 10-15 секунд работы программа закрывается...

;

Оригинальная утилита должна находиться в каталоге: C:\UTIL\RAMMap\RAMMap.exe

;----------------------------------------------------------------------------

; RamMap -- работает только для Windows Vista и выше ...

;----------------------------------------------------------------------------

Local $hWnd                         ; идентификатор окна программы

Local $ret                               ; идентификатор программы

; Если программа еще не запущена - запускаем RamMAP

If Not WinExists("[CLASS:RamMapClass]") Then

            $ret = ShellExecute('C:\UTIL\RAMMap\RAMMap.exe')

            If @error Then

                        MsgBox(4096, 'Сообщение', 'Ошибка запуска RamMap.exe.', 30)

                        Exit 1

            EndIf

EndIf

; Ожидаем появление окна программы RamMap

$hWnd = WinWait("[CLASS:RamMapClass]", "", 10)

If Not $hWnd Then

            MsgBox(4096, 'Сообщение', 'Окно RamMap не найдено, завершаем работу')

            Exit 2

Else

            WinActivate("[CLASS:RamMapClass]", "")            ; наше окно - активное

EndIf

; Выбираем пункт "Empty Standby List" в меню "Empty" программы

WinMenuSelectItem($hWnd, '', '&Empty', 'Empty S&tandby List')

; ждем выполнение очистки 5 сек... (ориентировочно...)

Sleep(5000)

; обновляем экран

Send("{F5}")

; Ждем 5 секунд, чтобы увидеть результат и выйти...

Sleep(5000)

; Закрываем программу.

WinClose($hWnd)

;----------------------------------------------------------------------------

Скрипт компилируем в исполняемый файл. После чего, в Планировщике заданий можно создать системное задание по расписанию, которое, например, перед началом рабочего дня, очищает память, тем самым освобождая так необходимые пользователю ресурсы.

Еще раз повторюсь – эта утилита (RamMap) работает на Windows Vista и выше…

В архивном файле находится исходный текст скрипта и скомпилированные модули для запуска в 32 и 64 разрядных системах. Свежую версию утилиты RamMap лучше загрузить с сайта автора: http://live.sysinternals.com/rammap.exe

PS: Для тех, кто  любит разбираться в деталях – ссылка на статью по организации управления памяти в Windows: Here be dragons: Управление памятью в Windows как оно есть 

Мир Вашему дому!

AutoIT

См. также

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

12000 руб.

06.12.2023    2976    13    1    

34

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3531    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177744    1073    0    

849

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    27378    79    146    

59

Система хранения присоединенных файлов в томах на диске

Инструменты администратора БД Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием Платные (руб)

Конфигурация Комплексная автоматизация 1.1 (и УПП 1.3 тоже) хранит файлы и изображения в справочнике Хранилище дополнительной информации в реквизите Хранилище типа ХранилищеЗначений. Та же история с ВложениямиЭлектроннойПочты. Но при этом присоединенные файлы в Электронном документообороте хранит в томах на диске. Эта доработка позволяет использовать стандартный механизм хранения файлов, изображений и вложений электронных писем в томах на диске. При этом можно разделить тома хранения по объектам конфигурации.

4200 руб.

10.11.2015    61317    88    59    

73

"Менеджер потоков 2.1": УПП: "Восстановление партий"

Инструменты администратора БД Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бухгалтерский учет Управленческий учет Платные (руб)

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    11746    5    9    

7

Брандмауэр для сервера 1С Предприятие 8 - внешнее управление сеансами

Инструменты администратора БД Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Управление возможностью начала и возобновления сеансов пользователей по различным условиям, ограничение общего числа возможных сеансов для работы с информационной базой, резервирование возможности работы с информационной базой определенных польззователей, запрет запуска нескольких сеансов для пользователя, журнализация событий начала (возобновления) и завершения (гибернации) сеансов, ведение списка активных сеансов для информационных баз кластера серверов

3600 руб.

06.02.2017    31110    31    18    

47

Хранилище файлов на SQL

Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Управленческий учет Платные (руб)

Привязка файлов / сканов к объектам 1С с сохранением их на SQL-сервере

12000 руб.

09.10.2019    10984    5    8    

9
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Alex1Cnic 148 25.11.13 08:19 Сейчас в теме
Интересно, а как бы такую штуку rammap для win XP сделать или существуует подобная утилита??
2. LexSeIch 210 25.11.13 10:43 Сейчас в теме
К сожалению RamMap, только начиная с Vista - в XP видимо - другая модель управления памятью.
3. AlexBugs 27.11.13 08:23 Сейчас в теме
А для сервера с MS W2008R2 64 bit эта утилитка подойдет? кайф от ее использования будет?
5. LexSeIch 210 28.11.13 04:06 Сейчас в теме
(3) AlexBugs,
Да, подойдет - скриншоты в примере, как раз сняты в такой системе. RamMap - очень полезная утилита, подробнее с ней можно ознакомиться в книге Руссиновича, Маргозиса: "Утилиты Sysinternals. Справочник администратора". А на счет кайфа - все зависит зависит от ПО, которое у Вас запущено. По крайней мере хуже не будет.
19. gabriel20 31.08.16 07:21 Сейчас в теме
(3) AlexBugs, на сервере 2012R2 работает на ура
4. DAnry 8 27.11.13 19:26 Сейчас в теме
Спасибо. Интересная статья.
6. dkonakov 10 21.04.14 10:54 Сейчас в теме
Очень полезная статья! Решила многие мои проблемы на сервере терминалов.
7. LexSeIch 210 21.04.14 18:27 Сейчас в теме
(6) dkonakov,
Если можно, немного подробнее о проблемах. В моей практике, например, наблюдалось некоторое замедление работы программ, после запуска некоторых приложений в течении дня (поэтому утром, перед началом рабочего, дня принудительно очищаю память). А какие проблемы были у Вас?
16. dkonakov 10 17.01.16 16:15 Сейчас в теме
(7) у меня проблемы начинались, когда свободная память приходила к нулю. А на текущем этапе, когда перешли на управляемые формы, приходится делать раза 2-3 в день, 32 Гигобайта на 2008 сервере не хватает.
17. LexSeIch 210 20.01.16 06:09 Сейчас в теме
(16) dkonakov,
Не пробовали, при недостатке памяти, утилитой RamMap проверить на каких процессах, файлах "уходит" память.
8. Divisi0n_by_zer0 11.05.15 15:16 Сейчас в теме
супер скрипт! на сервере 16 гигов памяти, после ночного бэкапа вся standby была загажена кусками файловых бэкапов... а теперь всё хорошо )
9. пользователь 09.07.15 22:44
Сообщение было скрыто модератором.
...
10. mas76 13.07.15 17:24 Сейчас в теме
скомпилировал скрипт, но не работает сброс стенбая и закрытие программы
11. mas76 13.07.15 17:46 Сейчас в теме
все отбой все получилось, спасибо
32. user973548 11.05.18 11:53 Сейчас в теме
(11) У меня не получилось, подскажите как сделали?
12. Vic_V 11.08.15 07:59 Сейчас в теме
Статья полезная. Ручное использование утилиты помогает., но полностью Standby память не очищается, из 1600 осталось около 700 К занято.
Сам скомпилировать скрипт не могу, а специально зарабатывать $m не буду.
13. capitan 2466 11.08.15 11:37 Сейчас в теме
На самом деле, существует определенное количество специализированных менеджеров памяти - пример Cacheman.
По моим ощущениям на порядок возрастает дисковая активность.
И к тому же, у меня есть подозрение - windows сам разруливает как standby превратить в free.
В любом случае автору респект за интересную статью.
14. bogdan_sukonnov 57 15.10.15 18:05 Сейчас в теме
В заголовке ошибка - утилита называется RAMMAP. А вообще, только она и помогла, тоже сервер через некоторое время выедал free память и начинал тормозить. Перезагрузка, конечно помогала, и во многих отношениях она лучше. Но если перезагрузить никак, а память освободить нужно - эта утилита просто спасение!
LexSeIch; +1 Ответить
15. KSV53 11.12.15 21:45 Сейчас в теме
каждый раз не поперезагружаешь, а выкидывать каждый раз пользователей не вариант
18. nick_e 2 12.05.16 09:43 Сейчас в теме
Полезная статья. Хотел запускать RAMMap.exe без указания пути, не работает при запуске из планировщика задач.
Чтобы каждый раз скрипт не перекомпилировать когда папку хранения программы меняешь, сделал так:
$ret = ShellExecute(@ScriptDir &'\RAMMap.exe')
gabriel20; LexSeIch; +2 Ответить
20. almot77 07.10.16 17:50 Сейчас в теме
Есть утилита CLI называется EmptyStandbyList.exe
markers; soci0pat; Nikita890; pridecom; SashaSashaSashka; +5 Ответить
24. SashaSashaSashka 30.06.17 11:47 Сейчас в теме
(20) Действительно. Самый простой вариант. Качаем прямо по первой Гугл-ссылке, кидаем в планировщик и всё!
pridecom; +1 Ответить
21. cj_nik 27.12.16 17:50 Сейчас в теме
Написали для этого дела скрипт.
Код на C#, обертка на PowerShell: https://gallery.technet.microsoft.com/c-PowerShell-wrapper-6465e028
22. LexSeIch 210 28.12.16 09:27 Сейчас в теме
(21) Отлично. Больше решений - меньше проблем у пользователя...
23. Djagernaut 45 01.04.17 15:12 Сейчас в теме
Смею сделать замечание, что подобный механизм не работает в связке с Hyper-V, даже после освобождения всей доступной для очистки памяти гипервизор считает ее занятой, и помогает только REBOOT.
LexSeIch; +1 Ответить
25. Nikita890 05.09.17 07:01 Сейчас в теме
Большое спасибо,то ли после настройки бэкапа, то ли оттого, что увеличилось количество пользователей 1с стала накапливаться Standby память на сервере, и свободной памяти стало не хватать. Пока что просто очистил standby неглядя, потом буду смотреть детально, откуда что берется, как я понимаю программа позволяет это сделать.
26. LexSeIch 210 07.09.17 10:32 Сейчас в теме
Да, программа просто отличная, и можно посмотреть: куда уходят ресурсы. Я ее применяю не только на сервере но и на рабочих станциях под Windows 7 (там то же память после некоторых задач не освобождается). Я заметил, что такое иногда происходит даже при операциях простого копирования очень больших файлов (десятки Гб). На сайте самой программы (которая, кстати иногда обновляется последнее обновление 02.02.2016 г.) есть еще очень много полезных утилит, которые заслуживают внимания для мониторинга автозагрузки, запущенных задач и т.д.. Утилиты документированы и выпущена книга на русском языке, описывающая пакет утилит "Утилиты Sysinternals. Справочник администратора".
27. Nikita890 21.09.17 12:34 Сейчас в теме
Вот бы кто скриптом поделился, сам не справился с созданием(
28. пользователь 02.10.17 04:49
Сообщение было скрыто модератором.
...
29. Nikita890 06.10.17 06:32 Сейчас в теме
Скачал EmptyStandbyList.exe добавил в планировщик заданий от имени администратора (важно!) и проблема решена.
30. lustin 01.12.17 12:43 Сейчас в теме
для тех кто придет из интернета сюда оставлю следующее

в 2011 году я заколебался периодически проверять GUI RamMap на 1С серваках и тыкать Empty мышкой
напомню что в 1С у нас проблема не с StandBy а с MappedFile

в 2011 году на форуме SysInternals автор wj32 опубликовал утилиту https://forum.sysinternals.com/rammap-empty-standby-list_topic27297_post132769.html#132769

на текущий момент автор wj32 опубликовал консольную утилиту у себя сна сайте https://wj32.org/wp/software/empty-standby-list/
она и назначается на планировщик как верно заметил (29)
Gvenor; Alias; Moskovkin; MariusUrsus; Nikita890; +5 Ответить
31. user891709 10.01.18 08:40 Сейчас в теме
а с какой периодичностью стоит запускать данный скрипт?
33. пользователь 07.06.19 18:29
Сообщение было скрыто модератором.
...
34. autoFOX 26.08.21 16:07 Сейчас в теме
https://wj32.org/wp/software/empty-standby-list/ - тоже самое из коммандной строки
https://www.henrypp.org/product/memreduct - графическая утилита с кучей настроек
35. user1900586 26.01.23 15:35 Сейчас в теме
Спасибо автору за знакомство с AutoIT!
Подобные скрипты иногда очень нужны.
С запуском "Empty Standby List" проблем не возникло, а вот запустить "Empty Working Sets" никак не удалось.
Может автор подскажет в чем хитрость?
Буду весьма ПРИЗНАТЕЛЕН!!!
36. user723189 14.04.23 07:40 Сейчас в теме
(35) Тоже инетресует этот вопрос, и ни как не могу понять где в AutoIT ставится символ &, в описании указано что ставится он там где в меню какая либо буква подчеркнута, но в пункте (Empty Standby List) нет подчеркнутых букв, а исмвол ставится и без него не работает... чертовщина какая то... то же хочу настроить запуск команды "Empty Working Sets" но не получается...
Оставьте свое сообщение