Ядра i386 Linux могут быть настроены на ограничение виртуального адресного пространства на процесс в 2, 3 или 4 ГиБ, AFAIK. Есть ли что-то, что я могу запросить в / proc или где-нибудь еще, чтобы узнать, как было настроено работающее в данный момент ядро?
Обновить: Спасибо за ответы о том, как запросить 4G. В любом случае я могу запросить 2G против 3G?
На некоторых ядрах (зависит от конфигурации) конфиг экспортируется в / proc, попробуйте следующее:
$ zcat /proc/config.gz | grep -i "CONFIG_HIGHMEM"
Вы можете "grep" получить все, что хотите узнать.
В 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
Большинство дистрибутивов Fedora включают конфигурацию, используемую для создания vmimage ядра, попробуйте что-нибудь вроде этого
$ cat /etc/redhat-release
Fedora release 10 (Cambridge)
$ grep -i "CONFIG_HIGHMEM4G" /boot/config-`uname -r`
CONFIG_HIGHMEM4G=y
Это также может быть верно для дистрибутивов Ubuntu и Debian.
Я нашел полезное резюме обсуждения этого вопроса в списке рассылки ядра на http://www.spack.org/wiki/LinuxRamLimits