gpt4 book ai didi

Linux/proc/pid/smaps 比例交换(类似于 Pss 但用于交换)

转载 作者:IT王子 更新时间:2023-10-29 00:22:12 25 4
gpt4 key购买 nike

似乎(通过查看 Linux 内核 source)Swap: 中的指标 /proc/pid/smaps 是给定可访问的总交换pid.

在涉及共享内存的情况下,这似乎是对实际交换使用情况的过度估计。例如,当将父 pid 与其 fork 子进程的交换使用情况相加时,如果它们在交换中有公共(public)共享内存,那么这部分(交换的共享内存)似乎会被计算多次(每个 pid 一次)。

我的问题是是否有一种方法可以根据共享它的进程数计算出一个公平的交换使用指标(类似于 Pss:)。

最佳答案

您只需将 Swap 值除以共享此虚拟内存区域的进程数即可。

实际上,我没有找到如何获取共享 VMA 的进程数。但是,有时可以通过将 RSS 除以 PSS 来计算它。当然,它仅在 PSS != 0 时有效。

最后,您可以使用此 perl 代码(将 smap 文件作为参数传递):

#!/usr/bin/perl -w
my ($rss, $pss);
my $total = 0;

while(<>) {
$rss = $1 if /Rss: *([0-9]*) kB/;
$pss = $1 if /Pss: *([0-9]*) kB/;
if (/Swap: *([0-9]*) kB/) {
my $swap = $1;
if ($swap != 0) {
if ($pss == 0) {
print "Cannot get number of process using this VMA\n";

} else {
my $swap = $swap * $rss / $pss;
print "P-swap: $swap\n";
}
$total += $swap;
}
}
}
print "Total P-Swap: $total kB\n"

关于Linux/proc/pid/smaps 比例交换(类似于 Pss 但用于交换),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27248065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com