Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何查找或计算Linux进程';s页表大小和其他内核记帐?_Linux_Memory_Process_Operating System - Fatal编程技术网

如何查找或计算Linux进程';s页表大小和其他内核记帐?

如何查找或计算Linux进程';s页表大小和其他内核记帐?,linux,memory,process,operating-system,Linux,Memory,Process,Operating System,我如何才能知道Linux进程的页表有多大,以及任何其他可变大小的进程记帐?不确定Linux,但大多数UNIX变体都提供了这一功能。还有命令行实用程序。如果您真的对页面表感兴趣,请执行以下操作 $ cat /proc/meminfo | grep PageTables PageTables: 24496 kB 嗯,回到以前,我们常常调用nlist(3)来获取我们感兴趣的数据的系统地址,然后打开/dev/kmem,查找地址,然后读取数据。不确定这在Linux中是否有效,但可能值得键入“m

我如何才能知道Linux进程的页表有多大,以及任何其他可变大小的进程记帐?

不确定Linux,但大多数UNIX变体都提供了这一功能。还有命令行实用程序。

如果您真的对页面表感兴趣,请执行以下操作

$ cat /proc/meminfo | grep PageTables
PageTables:      24496 kB

嗯,回到以前,我们常常调用nlist(3)来获取我们感兴趣的数据的系统地址,然后打开/dev/kmem,查找地址,然后读取数据。不确定这在Linux中是否有效,但可能值得键入“man 3 nlist”并查看结果。

您应该描述您的问题,而不是询问详细信息。如果分叉过多(特别是对于具有较大地址空间的进程),则会出现各种各样的错误(包括内存不足),达到分页表的最大大小是不现实的问题

Thad说,我也有兴趣阅读Linux中的进程分页表共享


但是,作为一个简单的经验法则,您可以确定每个进程在pagetable中复制一个与其虚拟大小相等的共享,例如每个页面6个字节。因此,例如,如果您有一个Oracle数据库,其中有8GB SGA和500个进程共享它,那么每个进程将使用14MB的pagetable,这将导致7GB pagetables+8GB SGA。(样本号来自)

自Linux 2.6.10以来,单个进程的页表所使用的内存量已通过
/proc//status
的VmPTE字段暴露出来。我不确定是否理解您的问题:页表大小AFAIK并不依赖于同一平台上的进程(好吧,我可能错了,我不是Linux大师……)。顺便说一句,我想知道:你真的是指页面表的大小吗?或者你的意思是页面大小,因为程序员更经常需要它?我的意思是特定进程的页面表消耗的(内核)内存量。这很有用,但我需要找出这个大小是否“太大”。如果这个大小有一个限制,调用fork()就会失败,那么内核有多接近这个限制。理想情况下,我还需要找出特定进程正在使用PageTables大小的哪一部分,这样当fork()尝试复制该进程的表时,就会超出限制。Unix允许您通过sysctl读取pagetablesize(与pagesize相反)?哦,顺便说一句,现在一些具有巨大页面的数字:似乎工作正常,除非我使用mmap分配巨大的页面:报告的大小是一个小常量,无论分配的大小如何(内核4.4.0-77)。字段VmPMD报告的值似乎正常,它随着分配的大小线性增长,即使是巨大的页面。但我认为这并不能解释整个页面表(这个人说的是“二级页面表的大小”)。使用经典页面进行实验时,该值大约比VmPTE低500倍。