A resposta é encontrada no código fonte do Linux, especificamente, /usr/src/linux/mm/shmem.c
, começando em torno da linha 70 em meu sistema (Gentoo 2.6.31-ish):
/*
* The maximum size of a shmem/tmpfs file is limited by the maximum size of
* its triple-indirect swap vector - see illustration at shmem_swp_entry().
*
* With 4kB page size, maximum file size is just over 2TB on a 32-bit kernel,
* but one eighth of that on a 64-bit kernel. With 8kB page size, maximum
* file size is just over 4TB on a 64-bit kernel, but 16TB on a 32-bit kernel,
* MAX_LFS_FILESIZE being then more restrictive than swap vector layout.
Um oitavo de 2 TB é exatamente 256 GB. Tamanhos maiores são possíveis com um kernel de 32 bits, como você descobriu com seu sistema de teste FC6 de 32 bits.
Parece que alterar o tamanho da página pode estar relacionado a permitir Suporte para o sistema de arquivos BigTLB no kernel. No entanto, eu não sei o suficiente sobre as entranhas do kernel para dizer como ou por que, ou quais etapas você precisa tomar para tirar vantagem disso, ou quais outras implicações podem ter. Para ativá-lo, execute make menuconfig
, navegue para Sistemas de arquivos e, em seguida, Pseudo filesystems . A opção em questão é suporte ao sistema de arquivos HugeTLB . A ajuda on-line para isso diz:
CONFIG_HUGETLBFS:
hugetlbfs is a filesystem backing for HugeTLB pages, based on
ramfs. For architectures that support it, say Y here and read
<file:Documentation/vm/hugetlbpage.txt> for details.
If unsure, say N.
Pode valer a pena executá-lo também pelo StackOverflow. Espero que isso ajude.