Использование памяти процессом psutil Windows

Моя цель — просто перечислить 5 основных процессов, потребляющих память, и точно определить, сколько памяти они «используют». Я прочитал документы, и кажется, что process.memory_info().rss - это то, что я хочу, однако это число выходит значительно меньше, чем то, что мне говорит диспетчер задач Windows, находится в «Частном рабочем наборе».

Даже когда я перечисляю все содержимое memory_info, ни одно из значений даже не приближается к значениям диспетчера задач.

Из статей Джампало я понял, что это сложная тема, и я очень мало знаю о системной памяти. Однако простота того, что мне нужно, - это получить число из psutil, которое соответствует диспетчеру задач Windows (мне не нужны все остальные метрики). Как я могу получить/вычислить это?

ПРИМЕР

from pprint import pprint as pp
import psutil

procs = [(proc.info['name'], proc.info['memory_full_info']) for proc in psutil.process_iter(attrs=['name', 'memory_full_info'])]

pp(procs)

Дает мне следующие данные для «AfterFX.exe»:

('AfterFX.exe', pfullmem(rss=4294967295L, vms=4294967295L, num_page_faults=42058243, peak_wset=4294967295L, wset=4294967295L, peak_paged_pool=2791656, paged_pool=2657304, peak_nonpaged_pool=13270384, nonpaged_pool=13147944, pagefile=4294967295L, peak_pagefile=4294967295L, private=4294967295L, uss=376668160L)),

Тем не менее, диспетчер задач дает мне: AfterFX.exe 50 561 764 КБ


person Spencer    schedule 06.04.2018    source источник


Ответы (1)


Я пишу со своего телефона, поэтому я не могу связать вас с конкретным документом, но memory_full_info().uss должен быть тем, что вы ищете.

person Giampaolo Rodolà    schedule 07.04.2018
comment
Спасибо Джампаоло, возможно, это решение, но когда я попробовал, я получил ошибку AccessDenied. Излишне говорить, что у меня нет прав администратора... - person Spencer; 07.04.2018
comment
Хорошо, печать понимания списка с помощью psutil.process_iter(attrs=['memory_full_info']) каким-то образом помогла мне обойти разрешения, но все еще не дает мне точного числа. Для моего верхнего процесса я получаю uss = 376672256, но диспетчер задач дает мне 50 561 776 К. Интересно, что это меньше, чем у других процессов, но диспетчер задач (и логически я знаю), что это мой «самый большой» процесс. - person Spencer; 07.04.2018
comment
В Windows psutil предоставляет различные метрики из структуры PROCESS_MEMORY_COUNTERS_EX. taskmgr.exe должен использовать один из следующих: psutil.readthedocs.io/en /latest/#psutil.Process.memory_info - person Giampaolo Rodolà; 12.04.2018