Problém je v tom, že tam máš 32-bitový kernel (pozná se to podle "LowTotal: 387148 kB"). Celý počítač má sice 64GB paměti, ale v 32-bitovém módu je možno namapovat maximálně 4GB, z čehož 3GB jsou použity pro userspace a 1GB pro kernel. Ka každé stránce je potřeba mít alokovanou strukturu page (a někdy i další, např. buffer_head), tyto struktury se alokují z té zbylé 1GB - takže čím víc paměti v tom systému máš, tím větší část té přímo namapované 1GB je obsazena a tím větší je pravděpodobnost, že dojde k OOM. V té dolní paměti ti tam zbylo pouze 387MB, což moc není.
Řešení:
- použít 64-bitový kernel (klidně můžeš nechat existující 32-bit userspace), to ten problém definitivně vyřeší, protože 64-bitový kernel může přímo přistupovat k celé 64GB RAM.
Pokud procesor není 64-bitový, tak
- zvětšit množství paměti pro jádro a zmenšit množství paměti pro userspace - v konfiguraci kernelu v menu "General Setup" zaškrtneš "Configure standard kernel features (expert users)", pak se v menu"Processor type and features" objeví položka "Memory split" a tu nastavíš na 2G/2G. Můžeš tam nastavit i 1G/3G, ale to omezí velikost každého procesu na 1GB, takže je to použitelné pouze, pokud tam máš všechny procesy menší než 1G (zkontrolovat položku VIRT v příkazu top).
- pokud se ti nechce kompilovat kernel, tak je řešení jednoduché - ubrat tomu počítači pamět, dejme tomu na 4 nebo 8GB. Pak by se ta položka LowTotal měla zvětšit a pravděpodobnost vyvolání OOM killeru se tím zmenší.