繁体   English   中英

计算进程的内存使用率

[英]Calculating a Process's Memory Usage

我有一个指向正在运行的进程的指针。 我想知道该进程占用了全部物理内存。

我尝试了这个,但我得到0作为返回值。

unsigned long mem_usage(struct task_struct *process)
{   
    return process->mm->total_vm/2048 * 100000; // this is wrong vm means virtual memory.
}

process->mm->total_vm返回字节对吗? 有没有更简单的方法来计算?

根据mm_types.h

unsigned long total_vm; /* Total pages mapped */

页面的大小。

这意味着,如果要以字节为单位的大小,则必须将页面转换为字节

total_vm << PAGE_SHIFT

更新:

将字节转换为页面的相反方法是

pages = bytes >> PAGE_SHIFT;

但这仅适用于整页。 如果bytes是一些页面加上一些剩余的字节,则必须增加页面数或

pages = (bytes + PAGE_SIZE - 1) >> PAGE_SHIFT;

对于仅2 GiB,这将是

pages_2gb = (2 * 1024 * 1024 * 1024) >> PAGE_SHIFT;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM