Essa é uma confusão muito comum. Existem várias noções que são apenas vagamente relacionadas.
- Uso de memória física
- Uso da área de troca
- Reserva de memória virtual
- Alocação de memória virtual
Quando um processo aloca memória (malloc ou similar), o que ele faz é realmente reservar memória. Por padrão, o Linux supercomprime a memória virtual, por isso não se preocupa muito com a reserva e geralmente retorna com sucesso.
Quando você acessa a memória reservada pela primeira vez, essa memória precisa ser armazenada por páginas localizadas na RAM ou no disco.
Se não houver RAM suficiente para armazenar toda a memória virtual acessada na RAM, o sistema começará a paginar (o que normalmente é chamado de troca) e a performance parará.
Se os processos reservarem mais memória do que a soma da área de troca e (parte da) RAM, e seu sistema estiver configurado para não comprometer a memória, a alocação falhará. Isso pode acontecer mesmo quando você tiver bastante RAM livre e não estiver usando nenhuma página na área de troca. Esse é o preço a pagar para ter um sistema que não mate aplicativos aleatoriamente.
No seu caso, você tem memória virtual livre suficiente, mas uma parte dela é reservada, portanto, exija que a área de swap esteja presente, o que significa que você não pode remover a última.