Para os meros mortais como nós, o limite é o tamanho do disco.
Já o limite prático para atividades de computação pessoal passa a depender das atividades usadas, hibernação e tamanho em disco. Eu recomendo o dobro da RAM limitado a 8GB. Afinal armazenamento custa dinheiro e ter esse espaço com a swap deixa de ser aproveitável para arquivos pessoais. Além do mais em um computador pessoal não é prático que fique-se usando o swap durante o uso, pois afeta a responsividade do sistema.
É bom lembrar que a maioria dos supercomputadores usam o kernel linux, então é possivel que haja alguns casos com swap de centenas de terabytes. Essas empresas e entidades que tem esses supercomputadores também tem gente altamente capacitada que podem, inclusive, aumentar esses limites e compilar kernel personalizados para elas. Essa é a vantagem de ter um sistema livre.
Fazendo esse caminho de código livre, pesquisei por swap no código fonte do kernel. Vi no arquivo include/linux/swap.h
que o cabeçalho do swap tem espaço reservado para um inteiro de 32 bits para o tamanho do swap, número esse que define qual é a última página de dados. Cada página costumeiramente contém 4096 bytes, então o limite teórico é 2^32 * 4096 = 16TB.
Um bom programador poderia alterar o cabeçalho do swap para permitir swaps ainda maiores, bem como em conjunto com outras alterações, e ter o swap do tamanho que bem entender.
Mas pelo que vi no código fotne, a resposta do thomasrutter no link do AskUbunto passado pelo @rapoelho parece ser de alguém que entende mais do que eu! Eu fico com aquela como a resposta definitiva para o kernel padrão. Vou traduzi-la aqui para facilitar:
Texto original em inglês
You can have up to 32 swap areas (files or partitions) with up to ~4 billion (2^32) pages each, where a “page” is 4kB on a traditional (eg x86 or x86_64) system but can be larger on other architectures or if you have configured large pages specially.
This gives a theoretical maximum of 16TB per swap area, and up to 32 swap areas. There may be other limitations that apply before you reach this but this is as big a swap area that mkswap can create for you.
As to how much you want, any swap area beyond the maximum you actually utilize contributes nothing to system performance or stability. The trick is to estimate the maximum amount of utilization that will ever occur in a normal or even abnormal situation, and use that as your swap file size and no more.
At time of writing, swap space beyond (size of RAM + 4GB) is fairly unlikely to be utilized, unless your system is not typical.
Você pode ter até 32 áreas de swap (arquivos ou partições) com até ~4 bilhões (2^32) de páginas cada, onde uma “página” tem 4kB em um sistema tradicional (como x86 ou x86_64), mas pode ser maior em outras arquiteturas ou se você configurou páginas grandes especificamente.
Isso fornece um máximo teórico de 16TB por área de swap, e até 32 áreas de swap. Podem existir outras limitações que se apliquem antes de você alcançar isso, mas este é o maior tamanho de área de swap que o mkswap pode criar para você.
Quanto ao tamanho que você deseja, qualquer área de swap além do máximo que você realmente utilizar não contribui em nada para o desempenho ou estabilidade do sistema. O segredo é estimar a quantidade máxima de utilização que ocorrerá em uma situação normal ou mesmo anormal, e usar isso como o tamanho do seu arquivo de swap, e nada além.
No momento em que este texto foi escrito, espaço de swap além do (tamanho da RAM + 4GB) é bastante improvável de ser utilizado, a menos que seu sistema não seja típico.