rammap process private что значит
Программа RAMMap представляет собой утилиту, которая позволяет увидеть как Windows действительно распределяет оперативную память. Благодаря программе на оперативную память компьютера можно взглянуть как не на абстрактную сущность, а действительно составить представление о том, для чего и какими файлами она используется. Работает в версиях от Windows Vista и позднее.
Наиболее интересными для рядового пользователя, наверное, окажутся лишь некоторые из вкладок. Это Use Counts и File Details. Однако для полноты понимания как программа работает, от пользователя требуется понимание работы RAM в принципе.
Теоретические абзацы
Все процессы пользовательского режима и большинство процессов от имени ядра получают доступ к данным через адреса виртуальной памяти. Эти данные и исполняемый код могут находиться как в ячейках физической памяти планок RAM, так и в файле подкачки жёсткого диска, но все они объединены одним условием — в момент запуска система приклеивает их к рабочему набору конкретного процесса, который в данный момент чем-то занимается (то есть читает, записывает и выполняет). И утилита RAMMap подходит к памяти как к общесистемному источнику памяти, который распределяется между запущенными в Windows процессами.
Интерфейс RAMMap
Окно программы представляет из себя интерфейс, напоминающий чем-то Диспетчер задач Windows NT, и включает в себя вкладки (во время работы обновляем состояние позиций клавишей F5):
Посмотрим на каждую из вкладок RAMMap внимательнее.
Use counts
Посмотрим на столбцы вкладки Use Counts
Processes
Вкладка содержит анализ страниц физической памяти, которые ассоциируются с конкретным процессом. Здесь мы можем увидеть номер сессии процесса в текущем сеансе (Session), присвоенный процессу номер (PID). Остальные столбцы вдоль каждого процесса показывают какую часть RAM, выделяемого для этого процесса, занимают страницы пользователя или/и системы: по показаниям в этой вкладке можно судить о том, от чьего имени процесс запущен, не «кривит» ли память. Столбец Page Table показывает общее количество памяти, выделяемой ядром этому процессу. Total суммирует показания по столбцам с Private по Page Table (именно показатель Total и отображается в Windows-ском Диспетчере задач). Однако Диспетчер в окне по умолчанию суммирует всё, что запущено от имени одной службы/программы. Надо лишь развернуть характерный столбец:
Priority Summary
Вкладка отображает объёмы памяти, выделяемые/выделяемых на процессы по присвоенному системой приоритету с момента включения компьютера. Самая интересная здесь вкладка — Repurposed. Она показывает, сколько памяти было отозвано у других задач для удовлетворения нужд более приоритетных процессов с момента запуска Windows. Идеальный вариант с эффективно работающей системой — этот столбец по «нолям». Этого достичь, однако, почти нереально. Более того, высокие числа в этом столбце с процессами в высоком приоритете (с 5-го и выше) говорят о том, что ресурсов системе либо не хватало, либо не хватает до сих пор: впору задуматься о приобретении дополнительной планки:
установленного объёма RAM явно недостаточно для выполнения некоторых задач
Physical Ranges
Следующая вкладка (чисто информационная) отображает эффективные диапазоны адресов физической памяти. Разрывы в диапазонах отображают физические адреса, закреплённые за определёнными устройствами.
File Summary
В этой вкладке отображается полный путь к файлам, отнесённым системой в память. Столбцов несколько: Total — общая сумма, Active — на данный момент, Standby — готовая примкнуть и т.д. Сюда попадает всё: от файлов загрузчика до драйверов для мыши и клавиатуры. Можно взглянуть пристальнее, проранжировав столбцы по имени, месту запуска и т.п.
File Details
Одна из самых информативных. Именно здесь можно увидеть информацию из предыдущих вкладок, но для каждого отнесённого в память системой файла. Здесь и диапазон адресов, и рабочий набор страниц и назначенный приоритет. Стоит лишь развернуть крестик слева от имени файла:
Помимо информативной части вкладок, по которым можно судить о том, как Windows справляется с запускаемыми процессами, разнося задачи по страницам памяти, и выискивая пропажу гигабайт оперативки, в шапке RAMMap имеется кнопка действий, позволяющая принудительно «изымать» страницы памяти. Как вы понимаете, этот процесс ничего общего с принудительной остановкой какого-то процесса через Диспетчер задач не имеет. Так, нажав по кнопке Empty (Очистить) программы:
взору откроются пять основных команд очистки страниц памяти RAM, работа с которыми сейчас конкретными процессами не ведётся, и которым после очистки может быть присвоен иной статус, что, в свою очередь, позволит им включиться в работу уже в составе приложения, которому, быть может, как раз сейчас памяти и не хватает. Далее по списку вниз:
Помните, что выполнение задач по очистке потребует загрузки процессора и переорганизации памяти, что может занять некоторое время. Обновлённые данные по результатам оптимизации можно наблюдать во всех вкладках по нажатию, напомню, клавиши F5.
RAMMap — анализ и сохранение результатов
Для работы с системой не обязательно работать с окном непосредственно до эксперимента и после. Разработчики предлагают поместить исполнительный файл программы в папку с другими системными утилитами Windows/System32 и запускайте через cmd от имени администратора:
RAMMap фоном проверит состояние памяти и сохранит данные в файл 1.rmp в той же директории. Чтобы открыть сохранённый вами или присланный на анализ файл, можно запустить cmd с таким скриптом:
или для владельцев Windows 64-x, помогающим 32-х битным соратникам (а вот из 32-х битной версии файлы с 64-х-«битки» уже не прочитать):
Впрочем, команды чтения и записи в файл доступны из окна самой команды.
Mapped file занимает всю память
Очень важно без перезагрузки сервера суметь освободить оперативную память, особенно когда ее не много
Вот, как это можно сделать:
Перейду сразу к решению проблемы:
Из сайта Microsoft скачиваете утилитку RAMMap:
При запуске она покажет все процесы, даже системние, которих не увидите в диспетчере задач:
Если какой-то софт не освобождает память после себя, чтобы не перегружать из-за этого сервер, в RAMMap нужно по очереди выбрать следуюющие функции:
И нажать F5 чтобы увидить разницу.
Вот, что получиться после этого:
Видим, что системние ресурси (Metafile, Mapped File), которие использовались системой освободили память. На скриншоте из диспетчером задач видно, что освободилось больше, чем полтора ГБ на сервере, которий и так нре был загружен под завязку.
Собственно, что и было нужно!
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
Программа RAMMap представляет собой утилиту, которая позволяет увидеть как Windows действительно распределяет оперативную память. Благодаря программе на оперативную память компьютера можно взглянуть как не на абстрактную сущность, а действительно составить представление о том, для чего и какими файлами она используется. Работает в версиях от Windows Vista и позднее.
Наиболее интересными для рядового пользователя, наверное, окажутся лишь некоторые из вкладок. Это Use Counts и File Details. Однако для полноты понимания как программа работает, от пользователя требуется понимание работы RAM в принципе.
Теоретические абзацы
Все процессы пользовательского режима и большинство процессов от имени ядра получают доступ к данным через адреса виртуальной памяти. Эти данные и исполняемый код могут находиться как в ячейках физической памяти планок RAM, так и в файле подкачки жёсткого диска, но все они объединены одним условием – в момент запуска система приклеивает их к рабочему набору конкретного процесса, который в данный момент чем-то занимается (то есть читает, записывает и выполняет). И утилита RAMMap подходит к памяти как к общесистемному источнику памяти, который распределяется между запущенными в Windows процессами.
Интерфейс RAMMap
Окно программы представляет из себя интерфейс, напоминающий чем-то Диспетчер задач Windows NT, и включает в себя вкладки (во время работы обновляем состояние позиций клавишей F5):
Посмотрим на каждую из вкладок RAMMap внимательнее.
Use counts
Посмотрим на столбцы вкладки Use Counts
Processes
Вкладка содержит анализ страниц физической памяти, которые ассоциируются с конкретным процессом. Здесь мы можем увидеть номер сессии процесса в текущем сеансе (Session), присвоенный процессу номер (PID). Остальные столбцы вдоль каждого процесса показывают какую часть RAM, выделяемого для этого процесса, занимают страницы пользователя или/и системы: по показаниям в этой вкладке можно судить о том, от чьего имени процесс запущен, не “кривит” ли память. Столбец Page Table показывает общее количество памяти, выделяемой ядром этому процессу. Total суммирует показания по столбцам с Private по Page Table (именно показатель Total и отображается в Windows-ском Диспетчере задач). Однако Диспетчер в окне по умолчанию суммирует всё, что запущено от имени одной службы/программы. Надо лишь развернуть характерный столбец:
Priority Summary
Вкладка отображает объёмы памяти, выделяемые/выделяемых на процессы по присвоенному системой приоритету с момента включения компьютера. Самая интересная здесь вкладка – Repurposed. Она показывает, сколько памяти было отозвано у других задач для удовлетворения нужд более приоритетных процессов с момента запуска Windows. Идеальный вариант с эффективно работающей системой – этот столбец по “нолям”. Этого достичь, однако, почти нереально. Более того, высокие числа в этом столбце с процессами в высоком приоритете (с 5-го и выше) говорят о том, что ресурсов системе либо не хватало, либо не хватает до сих пор: впору задуматься о приобретении дополнительной планки:
установленного объёма RAM явно недостаточно для выполнения некоторых задач
Physical Ranges
Следующая вкладка (чисто информационная) отображает эффективные диапазоны адресов физической памяти. Разрывы в диапазонах отображают физические адреса, закреплённые за определёнными устройствами.
File Summary
В этой вкладке отображается полный путь к файлам, отнесённым системой в память. Столбцов несколько: Total – общая сумма, Active – на данный момент, Standby – готовая примкнуть и т.д. Сюда попадает всё: от файлов загрузчика до драйверов для мыши и клавиатуры. Можно взглянуть пристальнее, проранжировав столбцы по имени, месту запуска и т.п.
File Details
Одна из самых информативных. Именно здесь можно увидеть информацию из предыдущих вкладок, но для каждого отнесённого в память системой файла. Здесь и диапазон адресов, и рабочий набор страниц и назначенный приоритет. Стоит лишь развернуть крестик слева от имени файла:
Помимо информативной части вкладок, по которым можно судить о том, как Windows справляется с запускаемыми процессами, разнося задачи по страницам памяти, и выискивая пропажу гигабайт оперативки, в шапке RAMMap имеется кнопка действий, позволяющая принудительно “изымать” страницы памяти. Как вы понимаете, этот процесс ничего общего с принудительной остановкой какого-то процесса через Диспетчер задач не имеет. Так, нажав по кнопке Empty (Очистить) программы:
взору откроются пять основных команд очистки страниц памяти RAM, работа с которыми сейчас конкретными процессами не ведётся, и которым после очистки может быть присвоен иной статус, что, в свою очередь, позволит им включиться в работу уже в составе приложения, которому, быть может, как раз сейчас памяти и не хватает. Далее по списку вниз:
Помните, что выполнение задач по очистке потребует загрузки процессора и переорганизации памяти, что может занять некоторое время. Обновлённые данные по результатам оптимизации можно наблюдать во всех вкладках по нажатию, напомню, клавиши F5.
RAMMap – анализ и сохранение результатов
Для работы с системой не обязательно работать с окном непосредственно до эксперимента и после. Разработчики предлагают поместить исполнительный файл программы в папку с другими системными утилитами Windows/System32 и запускайте через cmd от имени администратора:
RAMMap фоном проверит состояние памяти и сохранит данные в файл 1.rmp в той же директории. Чтобы открыть сохранённый вами или присланный на анализ файл, можно запустить cmd с таким скриптом:
или для владельцев Windows 64-x, помогающим 32-х битным соратникам (а вот из 32-х битной версии файлы с 64-х-“битки” уже не прочитать):
Впрочем, команды чтения и записи в файл доступны из окна самой команды.
Есть два типа отображенных в память файлов: There are two types of memory-mapped files:
Постоянные отображенные в память файлы. Persisted memory-mapped files
В контексте отображения в память постоянными называются файлы, сопоставленные с исходным файлом на диске. Persisted files are memory-mapped files that are associated with a source file on a disk. Когда последний процесс завершит работу с таким файлом, все данные сохраняются в исходный файл на диске. When the last process has finished working with the file, the data is saved to the source file on the disk. Такие отображенные в память файлы удобны для работы с очень большими исходными файлами. These memory-mapped files are suitable for working with extremely large source files.
Непостоянные отображенные в память файлы. Non-persisted memory-mapped files
Непостоянными называются отображенные в память файлы, которые не сопоставлены с файлом на диске. Non-persisted files are memory-mapped files that are not associated with a file on a disk. Когда последний процесс закончит работу с таким файлом, данные не сохраняются, а файл удаляется при сборке мусора. When the last process has finished working with the file, the data is lost and the file is reclaimed by garbage collection. Такие файлы позволяют создать общую область памяти для межпроцессного взаимодействия (IPC). These files are suitable for creating shared memory for inter-process communications (IPC).
Процессы, представления и управление памятью Processes, Views, and Managing Memory
Отображенные в память файлы можно сделать общими для нескольких процессов. Memory-mapped files can be shared across multiple processes. Процессы могут обращаться к одному отображенному в память файлу по единому имени, которое назначается процессом, создающим этот файл. Processes can map to the same memory-mapped file by using a common name that is assigned by the process that created the file.
Для работы с отображенным в память файлом следует создать представление всего файла или его части. To work with a memory-mapped file, you must create a view of the entire memory-mapped file or a part of it. Также вы можете создать несколько представлений для одной части отображенного в память файла, фактически применяя одновременно используемую память. You can also create multiple views to the same part of the memory-mapped file, thereby creating concurrent memory. Чтобы два представления оставались согласованными, их нужно создавать из одного отображенного в память файла. For two views to remain concurrent, they have to be created from the same memory-mapped file.
Несколько представлений потребуются еще и в том случае, если размер файла превышает размер пространства логической памяти, доступной приложению для отображения в память (например, 2 ГБ на 32-разрядном компьютере). Multiple views may also be necessary if the file is greater than the size of the application’s logical memory space available for memory mapping (2 GB on a 32-bit computer).
Есть два типа представлений: представление потокового доступа и представление произвольного доступа. There are two types of views: stream access view and random access view. Представления потокового доступа удобны для последовательного доступа к файлу (чаще всего это непостоянные файлы и IPC). Use stream access views for sequential access to a file; this is recommended for non-persisted files and IPC. Представления произвольного доступа предпочтительны для работы с постоянными файлами. Random access views are preferred for working with persisted files.
Доступ к отображенным в память файлам осуществляется через диспетчер памяти операционной системы, который автоматически разделяет файл на несколько страниц и предоставляет их по мере необходимости. Memory-mapped files are accessed through the operating system’s memory manager, so the file is automatically partitioned into a number of pages and accessed as needed. Вам не придется самостоятельно осуществлять управление памятью. You do not have to handle the memory management yourself.
На следующем изображении показано, как несколько процессов могут одновременно использовать несколько перекрывающихся представлений для одного отображенного в память файла: The following illustration shows how multiple processes can have multiple and overlapping views to the same memory-mapped file at the same time.
На следующем рисунке показано несколько перекрывающихся представлений для отображенного в память файла: The following image shows multiple and overlapped views to a memory-mapped file:
Программирование с использованием отображенных в память файлов Programming with Memory-Mapped Files
В следующей таблице содержатся инструкции по использованию объектов и элементов для отображенных в память файлов. The following table provides a guide for using memory-mapped file objects and their members.
Задача Task | Применимые методы или свойства Methods or properties to use |
---|---|
Получение объекта MemoryMappedFile, который представляет постоянный файл, отображенный в память из файла на диске. To obtain a MemoryMappedFile object that represents a persisted memory-mapped file from a file on disk. | Метод MemoryMappedFile.CreateFromFile. MemoryMappedFile.CreateFromFile method. |
Получение объекта MemoryMappedFile, который представляет непостоянный файл, отображенный в память из файла на диске. To obtain a MemoryMappedFile object that represents a non-persisted memory-mapped file (not associated with a file on disk). | Метод MemoryMappedFile.CreateNew. MemoryMappedFile.CreateNew method. |
Метод MemoryMappedFile.CreateOrOpen. MemoryMappedFile.CreateOrOpen method.
Свойство MemoryMappedViewStream.SafeMemoryMappedViewHandle. MemoryMappedViewStream.SafeMemoryMappedViewHandle property.
(Чтобы определить текущий размер системной страницы, используйте свойство Environment.SystemPageSize.) (To determine the current system page size, use the Environment.SystemPageSize property.)
Методы CreateOrOpen, которые принимают в качестве параметра перечисление MemoryMappedFileOptions. CreateOrOpen methods that have a MemoryMappedFileOptions enumeration as a parameter.
Безопасность Security
При создании отображенного в память файла вы можете применить к нему права доступа. Для этого используйте следующие методы, которые принимают в качестве параметра перечисление MemoryMappedFileAccess: You can apply access rights when you create a memory-mapped file, by using the following methods that take a MemoryMappedFileAccess enumeration as a parameter:
Вы можете указать права доступа для открытия существующего отображенного в память файла, используя методы OpenExisting, которые принимают MemoryMappedFileRights в качестве параметра. You can specify access rights for opening an existing memory-mapped file by using the OpenExisting methods that take an MemoryMappedFileRights as a parameter.
Кроме того, можно включить объект MemoryMappedFileSecurity с предварительно определенными правилами доступа. In addition, you can include a MemoryMappedFileSecurity object that contains predefined access rules.
Чтобы применить к отображенному в память файлу новые или измененные правила доступа, используйте метод SetAccessControl. To apply new or changed access rules to a memory-mapped file, use the SetAccessControl method. Чтобы получить доступ или проверить правила для существующего файла, используйте метод GetAccessControl. To retrieve access or audit rules from an existing file, use the GetAccessControl method.
Примеры Examples
Постоянные отображенные в память файлы Persisted Memory-Mapped Files
Метод CreateFromFile позволяет создать отображенный в память файл из существующего файла на диске. The CreateFromFile methods create a memory-mapped file from an existing file on disk.
В следующем примере создается отображенное в память представление для части очень большого файла, с которым выполняются определенные действия: The following example creates a memory-mapped view of a part of an extremely large file and manipulates a portion of it.
В следующем примере тот же отображенный в память файл открывается для другого процесса: The following example opens the same memory-mapped file for another process.
Непостоянные отображенные в память файлы Non-Persisted Memory-Mapped Files
Методы CreateNew и CreateOrOpen позволяют создать отображенный в память файл, который не сопоставлен ни с каким файлом на диске. The CreateNew and CreateOrOpen methods create a memory-mapped file that is not mapped to an existing file on disk.
Приведенный ниже пример состоит из трех отдельных процессов (консольных приложений), при которых логические значения записываются в отображенный в память файл. The following example consists of three separate processes (console applications) that write Boolean values to a memory-mapped file. Последовательность действий следующая: The following sequence of actions occur:
Process A — создается отображенный в память файл и в него записывается значение. Process A creates the memory-mapped file and writes a value to it.
Process B — открывается отображенный в память файл и в него записывается значение. Process B opens the memory-mapped file and writes a value to it.
Process C — открывается отображенный в память файл и в него записывается значение. Process C opens the memory-mapped file and writes a value to it.
Process A — из отображенного в память файла считываются значения, затем значения отображаются. Process A reads and displays the values from the memory-mapped file.
Когда в Process A завершается работа с отображенным в память файлом, он немедленно уничтожается при сборке мусора. After Process A is finished with the memory-mapped file, the file is immediately reclaimed by garbage collection.
Чтобы выполнить этот пример, сделайте следующее: To run this example, do the following:
Скомпилируйте приложение и откройте три окна командной строки. Compile the applications and open three Command Prompt windows.
Вернитесь к Process A и нажмите клавишу ВВОД. Return to Process A and press ENTER.
Вернитесь к Process A и нажмите клавишу ВВОД. Return to Process A and press ENTER.
Выходные данные Process A выглядят следующим образом: The output of Process A is as follows:
Process A Process A
Process B Process B
Process C Process C