Командная строка: top pmap cat /proc/<pid>/status cat /proc/<pid>/smaps''
ПРИМЕРЫ
cat /proc/<pid>/status: Name: rcomd State: S (sleeping) Tgid: 10577 Ngid: 0 Pid: 10577 PPid: 8259 TracerPid: 0 Uid: 1000 1000 1000 1000 Gid: 100 100 100 100 FDSize: 256 Groups: 5 7 10 14 16 17 20 21 25 33 100 482 VmPeak: 361264 kB VmSize: 361240 kB VmLck: 0 kB VmPin: 0 kB VmHWM: 12208 kB VmRSS: 12188 kB VmData: 312164 kB VmStk: 136 kB VmExe: 1456 kB VmLib: 13812 kB VmPTE: 148 kB VmSwap: 0 kB Threads: 5 SigQ: 0/31464 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000001000 SigIgn: 0000000000001000 SigCgt: 0000000180004002 CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000 CapBnd: 0000003fffffffff Seccomp: 0 Cpus_allowed: f Cpus_allowed_list: 0-3 Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 156306 nonvoluntary_ctxt_switches: 724
Windows GetProcessMemoryInfo() PROCESS_MEMORY_COUNTERS memCounter; bool result = GetProcessMemoryInfo(GetCurrentProcess(), &memCounter, sizeof( memCounter ));
// http://en.wikichip.org/wiki/Resident_set_size#.2Fproc.2Fself.2Fstat -- is it right??? // From https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms684879%28v=vs.85%29.aspx // * The working set is the amount of memory physically mapped to the process context at a given time. // * Memory in the paged pool is system memory that can be transferred to the paging file on disk (paged) when it is not being used. // * Memory in the nonpaged pool is system memory that cannot be paged to disk as long as the corresponding objects are allocated. // * The pagefile usage represents how much memory is set aside for the process in the system paging file. typedef struct _PROCESS_MEMORY_COUNTERS { DWORD cb; DWORD PageFaultCount; SIZE_T PeakWorkingSetSize; SIZE_T WorkingSetSize; SIZE_T QuotaPeakPagedPoolUsage; SIZE_T QuotaPagedPoolUsage; SIZE_T QuotaPeakNonPagedPoolUsage; SIZE_T QuotaNonPagedPoolUsage; SIZE_T PagefileUsage; SIZE_T PeakPagefileUsage; } PROCESS_MEMORY_COUNTERS, *PPROCESS_MEMORY_COUNTERS;
Методом проб найдено следующее соответствие:
http://windows.microsoft.com/ru-ru/windows/what-task-manager-memory-columns-mean#1TC=windows-7
Название в менеджере задач | Описание | Поле структуры PROCESS_MEMORY_COUNTERS |
Память - рабочий набор | Объем памяти в частном рабочем наборе плюс объем памяти, используемой процессом, которую нельзя использовать совместно с другими процессами. | WorkingSetSize |
Память - пик рабочего набора | Максимальный объем памяти рабочего набора, использованный процессом. | PeakWorkingSetSize |
Память - дельта рабочего набора | Изменение объема памяти рабочего набора, используемой процессом. | - |
Память - частный рабочий набор | Частный рабочий набор показывает конкретный объем используемой процессом памяти, который данный процесс не может использовать совместно с другими процессами. | - |
Память - выделенная память | Объем виртуальной памяти, выделенной процессу. | PagefileUsage |
Память - выгружаемый пул | Объем страничной виртуальной памяти ядра, выделенной ядром или драйверами процессу. Страничная виртуальная память - это память, которую можно переписать на другой носитель, например жесткий диск. | QuotaPagedPoolUsage (?) |
Память - невыгружаемый пул | Объем невыгружаемой памяти ядра, выделенной ядром или драйверами процессу. Невыгружаемая память - это память, которую нельзя переписать на другой носитель. | QuotaNonPagedPoolUsage (?) |