据我所知,i386 Linux 内核可以配置每个进程的虚拟地址空间限制为 2、3 或 4 GiB。我可以在 /proc 或其他地方查询一些东西来了解当前运行的内核是如何配置的吗?
更新:感谢您回答我关于如何查询 4G 的问题。有什么方法可以查询 2G 和 3G 吗?
答案1
在某些内核上(取决于配置),配置被导出到 /proc 中,请尝试以下操作:
$ zcat /proc/config.gz | grep -i "CONFIG_HIGHMEM"
您还可以通过“grep”查找您想知道的任何其他信息。
答案2
在 Ubuntu 9.04 上:
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.04
DISTRIB_CODENAME=jaunty
DISTRIB_DESCRIPTION="Ubuntu 9.04"
$ uname -r
2.6.28-11-generic
$ grep -i "CONFIG_HIGHMEM4G" /boot/config-`uname -r`
CONFIG_HIGHMEM4G=y
答案3
大多数 Fedora 发行版都包含用于创建内核 vmimage 的配置,请尝试以下操作
$ cat /etc/redhat-release
Fedora release 10 (Cambridge)
$ grep -i "CONFIG_HIGHMEM4G" /boot/config-`uname -r`
CONFIG_HIGHMEM4G=y
对于 Ubuntu 和 Debian 发行版来说这可能也是正确的。
答案4
我在内核邮件列表上找到了一个有用的讨论摘要http://www.spack.org/wiki/LinuxRamLimits