如何从内核模块中直接访问进程的驻留集大小(RSS)?
How to directly access Resident Set Size (RSS) of a process from within kernel module?
我想从内核模块内部直接访问进程的驻留集大小 (RSS)(我想根据 RSS 做出实时决策,所以每次都计算它对我来说是一个糟糕的选择) .
/proc/$PID/status
有一个我可以使用的 VmRSS 字段,但我不知道如何从内核模块中获取该信息。
包括 linux/mm.h
,并调用 get_mm_rss(current->mm)
,其中当前为 task_struct*
以完成所需的任务。
使用LXR查找实际上是用来获取VmRSS的:
hiwater_rss = total_rss = get_mm_rss(mm);
[...]
seq_printf(m,
[...]
"VmRSS:\t%8lu kB\n"
[...]
total_vm << (PAGE_SHIFT-10)
其中 get_mm_rss()
定义在 include/linux/mm.h:
static inline unsigned long get_mm_rss(struct mm_struct *mm)
{
return get_mm_counter(mm, MM_FILEPAGES) +
get_mm_counter(mm, MM_ANONPAGES);
}
我想从内核模块内部直接访问进程的驻留集大小 (RSS)(我想根据 RSS 做出实时决策,所以每次都计算它对我来说是一个糟糕的选择) .
/proc/$PID/status
有一个我可以使用的 VmRSS 字段,但我不知道如何从内核模块中获取该信息。
包括 linux/mm.h
,并调用 get_mm_rss(current->mm)
,其中当前为 task_struct*
以完成所需的任务。
使用LXR查找实际上是用来获取VmRSS的:
hiwater_rss = total_rss = get_mm_rss(mm);
[...]
seq_printf(m,
[...]
"VmRSS:\t%8lu kB\n"
[...]
total_vm << (PAGE_SHIFT-10)
其中 get_mm_rss()
定义在 include/linux/mm.h:
static inline unsigned long get_mm_rss(struct mm_struct *mm)
{
return get_mm_counter(mm, MM_FILEPAGES) +
get_mm_counter(mm, MM_ANONPAGES);
}