我在几个地方发现Linux使用页面和分页机制,但我没有找到这个文件的位置或如何配置它。
我找到的所有信息都是关于Linux交换文件/分区的。分页和交换是有区别的:
分页将页面(包含一段数据的小框架,通常为4KB,但在不同的操作系统之间可能会有所不同)从主内存移动到后弯存储,这始终是操作系统的正常功能。交换将整个进程移动到存储中,当系统内存紧张时,或者在Windows8上,当新的应用程序处于休眠状态时,就会发生交换。
Linux是否在这两种情况下都使用它的交换文件/分区?如果是这样,我如何才能看到当前有多少页被调出?此信息在vmstat、free或swapon命令中不存在(或者我看不到它)。
或者是否有另一个文件用于分页?如果是这样,我如何配置它(并观察它的使用情况)?
或者也许Linux根本不使用分页,我被误导了?
如果答案是针对红帽企业Linux版本6和7的,我将不胜感激,但同时也是关于所有Linux的一般答案将是好的。
提前谢谢。
发布于 2016-01-29 00:59:15
虽然Linux保留了“交换分区”这一术语作为历史遗迹,但它实际上执行分页。因此,您的期望得到了证实;您只是被古老的术语抛弃了。
发布于 2016-01-28 15:06:35
在Linux上,交换分区用于分页。
Linux不会通过换出整个进程来应对内存压力。虚拟内存系统确实需要逐页分页。在极端的内存压力下,一个或多个进程将被OOM杀手杀死。(在man malloc的第一个注释中有一些有用的文档链接)
top头中有一行显示交换分区的使用情况,但如果这就是您需要的全部信息,请使用
swapon -sman swapon获取更多信息。
交换分区使用情况与未映射页面的数量不同。可以使用mmap调用将页面内存映射到文件;由于该页面在文件中有备份存储,因此不需要将其也写入交换分区,系统也不会为此使用交换空间。但是交换分区的使用情况是一个很好的指标。
还要注意,Linux (与Windows不同)在分配页时不会为页分配交换空间。相反,它会将新页面添加到虚拟内存映射中,而不需要任何后备存储。并在需要换出页面时分配交换空间。其结果(如前面提到的malloc手册页中所述)是malloc调用可能会成功分配虚拟内存,但随后尝试使用该虚拟内存可能会失败。
https://stackoverflow.com/questions/35054783
复制相似问题