Faz parte da higiene do sistema e um pouco de legado. Os controles cgroup são relativamente novos no Linux (2.6.24 e posterior), onde shmmax / shmall estavam presentes no kernel desde a série 1.2.x:
ipc/shm.c
{
struct shminfo shminfo;
if (!buf)
return -EFAULT;
shminfo.shmmni = SHMMNI;
shminfo.shmmax = SHMMAX;
shminfo.shmmin = SHMMIN;
shminfo.shmall = SHMALL;
shminfo.shmseg = SHMSEG;
err = verify_area (VERIFY_WRITE, buf, sizeof (struct shminfo));
if (err)
return err;
memcpy_tofs (buf, &shminfo, sizeof(struct shminfo));
return max_shmid;
}
A filosofia limitante do Linux evoluiu nos últimos 21 anos. Naquela época, o padrão de design dos limites globais era dominante. Você não queria usar toda a sua memória RAM para IPC, então você precisava definir uma marca d'água para garantir que houvesse espaço suficiente para todo o resto. Isso pode funcionar com os cgroups modernos também; limites individuais para seus processos, com um limite global para garantir que o swap seja evitado e todo o sistema ainda funcione bem.