vmstat -s 命令字段的含义,特别是“页面调入”与“页面换入”

Pie*_*lli 5 memory virtual-memory

大多数字段都是可以理解的,但有人可以向我解释“页面调入”和“页面换入”之间的区别吗?。我很确定交换是将整个过程移入硬盘驱动器上的交换空间,而分页是将某些页面移入交换空间。那么这是否意味着“页面调入”是属于移入主内存的进程部分的页面,而“换入页面”是属于整个进程移入主内存的页面?有人可以在这里说明一下吗?如果您有关于其他领域的其他信息,那也会很棒。我已阅读手册,但没有找到有关此特定选项的命令的有用信息。命令输出示例:

vmstat -s
       131072 K total memory
       125700 K used memory
        59836 K active memory
        49268 K inactive memory
         5372 K free memory
            0 K buffer memory
       101984 K swap cache
            0 K total swap
            0 K used swap
            0 K free swap
        18594 non-nice user cpu ticks
            0 nice user cpu ticks
        17990 system cpu ticks
    108464145 idle cpu ticks
         1121 IO-wait cpu ticks
            0 IRQ cpu ticks
            0 softirq cpu ticks
            0 stolen cpu ticks
       123672 pages paged in
       486324 pages paged out
            0 pages swapped in
            0 pages swapped out
            0 interrupts
      7439516 CPU context switches
   1457280256 boot time
       131927 forks
Run Code Online (Sandbox Code Playgroud)

这是一个相关文件的输出,可以帮助对比值并更好地理解它,它与上一个同时拍摄:

cat /proc/meminfo
MemTotal:         131072 kB
MemFree:            5404 kB
Cached:           101984 kB
Buffers:               0 kB
Active:            59820 kB
Inactive:          49268 kB
Active(anon):      11532 kB
Inactive(anon):    16920 kB
Active(file):      48288 kB
Inactive(file):    32348 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         28452 kB
Shmem:             21348 kB
Slab:              16544 kB
SReclaimable:      10580 kB
SUnreclaim:         5964 kB
Run Code Online (Sandbox Code Playgroud)

Mel*_*lan 5

考虑您的程序需要加载到内存中才能运行。您有一定数量的可用地址空间,您的程序需要更多。将此地址空间划分为多个页面。这些被称为虚拟页面。尝试将这些虚拟页面映射到物理内存,并假设您没有足够的物理内存来加载所有页面。您将加载立即需要的页面,而将您现在不需要的页面留在外面。但是当时机成熟时,您将卸载未使用的页面以加载程序运行所需的页面。这就是分页算法所做的,您会看到“页面调入”和“页面调出”。

另一方面,换入或换出处理运行程序所需的整个内存空间。假设您的进程处于等待某些资源可用的状态。没有必要让它一直加载到内存中,直到条件得到满足。同时还有其他进程在等待内存运行。你的整个过程被换出,然后在时机成熟时换回。

考虑到具有大量物理内存的现代系统,对于大多数系统而言,交换已成为过去。

当然,这两种算法(分页和/或交换)都不是那么简单。这只是一万英尺的概览。您可以在网络的其他地方阅读有关这些的更多详细信息。