Date: Tue, 12 Nov 2002 21:51:28 +0500
From: Andrey Sapozhnikov <sapa@icb.chel.su>
Newsgroups: ftn.ru.cgi.perl
Subject: Определение в Linux сколько процесс реально занимает памяти (без shared)
Еще один вариант. Hечто периодически сканирует файлы /proc/*/status
читая строчки Uid: и VmSize: (это к примеру. А возможно оно умнее
и смотрит еще /proc/*/maps выкидывая из общей Vm readonly
сегменты общеупотребительных библиотек типа libc ибо приписывать
их использование только отдельному индивидууму нечестно). В
таком случае можно посканировать точно так же (простейший
пример суммирующий VM всех процессов со "своим" uid):
my $total = 0;
opendir(PROC, '/proc') or die "$!";
foreach (readdir(PROC)) {
/^d+$/ or next;
open(STATUS, "< /proc/$_/status") or next;
while (<STATUS>) {
last if /^Uid:s+(d+)/ && $1 != $<;
$total += $1, last if /^VmSize:s+(d+)/;
}
close(STATUS);
}
closedir(PROC);
print "$total kB";
но этот вариант, разумеется, будет безбожно завышать
оценку суммируя сегменты разделяемые не только с другими
пользователями, но и между процессами одного и того же
пользователя...
890 Прочтений • [Определение в Linux сколько процесс реально занимает памяти (без shared) (share memory linux proc)] [08.05.2012] [Комментариев: 0]