USED​​ 和 VIRT 有什么区别?

USED​​ 和 VIRT 有什么区别?

的联机帮助页top,

USED​​ 和 VIRT 有什么区别? USED​​ 是“RES”+“SWAP”。 “VIRT - USED”是否等于已映射但未使用的页面?

“VIRT”或“USED”是否包括内核空间使用的大小?

“RES”是否包含“CODE”和“DATA”?

什么是“PGMS”?

谢谢。

对于每个这样的进程,每个内存页都被限制在下表中的一个象限内。物理内存和虚拟
内存都可以包括这四种内存中的任何一种,而交换文件仅包括 #1 到 #3。象限 #4 中的内存在修改后将充当其自己的专用交换文件。

                             Private | Shared
                         1           |          2
    Anonymous  . stack               |
               . malloc()            |
               . brk()/sbrk()        | . POSIX shm*
               . mmap(PRIVATE, ANON) | . mmap(SHARED, ANON)
              -----------------------+----------------------
               . mmap(PRIVATE, fd)   | . mmap(SHARED, fd)
  File-backed  . pgms/shared libs    |
                         3           |          4

以下内容可能有助于解释显示为可扩展列的进程级内存值,并在主题“3a”下讨论。
字段的描述。

  %MEM - simply RES divided by total physical memory
  CODE - the `pgms' portion of quadrant 3
  DATA - the entire quadrant 1 portion of VIRT plus all
         explicit mmap file-backed pages of quadrant 3
  RES  - anything occupying physical memory which, beginning with
         Linux-4.5, is the sum of the following three fields:
         RSan - quadrant 1 pages, which include any
                former quadrant 3 pages if modified
         RSfd - quadrant 3 and quadrant 4 pages
         RSsh - quadrant 2 pages
  RSlk - subset of RES which cannot be swapped out (any quadrant)
  SHR  - subset of RES (excludes 1, includes all 2 & 4, some 3)
  SWAP - potentially any quadrant except 4
  USED - simply the sum of RES and SWAP
  VIRT - everything in-use and/or reserved (all quadrants)

....

  1. USED​​ — 使用中的内存 (KiB) 该字段表示任务正在使用的非交换物理内存 (RES) 加上其地址空间的换出部分 (SWAP)。

    有关更多详细信息,请参阅“概述,Linux 内存类型”。

  2. VIRT — 虚拟内存大小 (KiB) 任务使用的虚拟内存总量。它包括所有代码、数据和共享库以及已换出和的页面已映射但未使用的页面

    有关更多详细信息,请参阅“概述,Linux 内存类型”。

答案1

USED​​ 和 VIRT 有什么区别? USED​​ 是“RES”+“SWAP”。 “VIRT - USED”是否等于已映射但未使用的页面?

是的。一般来说,这是程序分配的、它从未触及的空间(很多东西以大块的形式分配,经常过度分配,因为分配空间的计算成本很高)。

“VIRT”或“USED”是否包括内核空间使用的大小?

它们都不占内核空间中代表进程分配的空间。在大多数情况下,这并不重要,因为大多数程序根本不使用内核内存中的太多空间。

“RES”是否包含“CODE”和“DATA”?

是的,但不一定是全部。 CODE 和 DATA 都可能部分驻留在 SWAP 中(它们实际上可以完全驻留在 SWAP 中,但前提是进程当时实际上并未执行任何代码)。

相关内容