gpt4 book ai didi

linux - 进程smaps中 "Referenced"的含义

转载 作者:太空宇宙 更新时间:2023-11-04 09:26:56 28 4
gpt4 key购买 nike

我试图理解进程的 smaps 文件中“引用”的含义。根据内核文档:

"Referenced" indicates the amount of memory currently marked as referenced or accessed."

我理解“访问”的意思,但“引用”是什么意思?如果都是访问内存,那么我期望是“RSS”+“Swap”,但是在下面的例子中,不是这样的。

例子:

7f13e7577000-7f13e75c1000 rw-p 00000000 00:00 0                          [heap]
Size: 296 kB
Rss: 156 kB
Pss: 156 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 4 kB
Private_Dirty: 152 kB
Referenced: 128 kB
Anonymous: 156 kB
AnonHugePages: 0 kB
Swap: 56 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 0 kB

最佳答案

来自Linux kernel source code定义内存页的referenced标志位,

PG_referenced, PG_reclaim are used to reclaim pages for anonymous, file-backed pagecache.

referenced 标志位用于 page_check_references()哪里被进一步记录为,

/*
* All mapped pages start out with page table
* references from the instantiating fault, so we need
* to look twice if a mapped file page is used more
* than once.
*
* Mark it and spare it for another trip around the
* inactive list. Another page table reference will
* lead to its activation.
*
* Note: the mark is set for activated pages as well
* so that recently deactivated but used pages are
* quickly recovered.
*/

还有 mark_page_accessed()是从 Linux 内核中的不同位置调用的函数记录了页面的 referenced 标志位在其生命周期的初始部分的更新:
(即从新分配页面时开始)

* Mark a page as having seen activity.
*
* inactive,unreferenced -> inactive,referenced
* inactive,referenced -> active,unreferenced
* active,unreferenced -> active,referenced
*
* When a newly allocated page is not yet visible, so safe for non-atomic ops,
* __SetPageReferenced(page) may be substituted for mark_page_accessed(page).
*/

i.e. referenced = active page-cache that is NOT going to be reclaimed anytime soon.

关于linux - 进程smaps中 "Referenced"的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35391017/

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