Resposta curta
É provavelmente apenas o kernel que usa memória. Em vez de reportar o uso da memória do kernel, o Ubuntu subtrai o total disponível. Isso é simplesmente para informar que a memória do kernel não pode ser liberada na maioria dos casos. Essa memória está sendo usada para coisas que são absolutamente necessárias e, portanto, nunca estarão disponíveis.
Comandos de diagnóstico
Eu não espero que você execute todos estes, mas eu os incluí aqui para referência e integridade. Os mais relevantes são os comandos 3 e 4. Observe também que todos os tamanhos estarão na base 2 (por exemplo, GiB
) e não na base 10 (por exemplo, GB
), apesar das abreviaturas das unidades.
-
Você pode verificar o tamanho dos seus sticks de memória RAM:
sudo dmidecode | grep Size | grep MB
-
Você pode verificar quanta RAM está disponível para uso geral com (procure
Mem
etotal
):free -h
-
Você pode estimar a quantidade de memória que o kernel está usando:
cat /proc/meminfo | grep Slab
-
Você pode verificar a memória da placa gráfica "roubada" com:
dmesg | grep stolen
-
Você pode procurar por memória reservada de hardware específica olhando:
dmesg | grep e820
-
Você pode testar para ter certeza de que toda a sua memória funciona executando o memtest
Explicação
A explicação mais provável é simplesmente que o espaço extra está sendo usado pela sua placa gráfica ou pelo próprio kernel. Se você não estiver familiarizado, o kernel é a parte de nível mais baixo do sistema operacional, e qualquer memória que esteja usando não estará disponível para você e, portanto, não será reportada como livre. A memória pode ser usada por vários motivos, como as tabelas de memória virtual, E / S mapeadas na memória, processos do kernel, determinados caches, memória gráfica compartilhada, etc.
Exemplo: olhando para o meu laptop
É muito provável que a adição da saída do comando 3 ao seu 15.3GiB
resulte em quase exatamente 16GiB
. Este foi o caso no meu sistema:
- RAM instalada:
6GiB
- Relatado nas configurações do sistema > Detalhes:
5.6GiB
- Saída de
cat /proc/meminfo | grep Slab
:316652 kB
- Convertido para
GiB
:316652/2^20 = 0.3GiB
- Saída de
dmesg | grep stolen
:32768K
- Convertido para
GiB
:32768/2^20 = 0.03GiB
- Adicionando-os juntos:
5.6 + 0.3 + 0.03 = 5.93GiB
Como a Slab
de memória não é abrangente, podemos supor que o kernel está usando os 0.07GiB
restantes em locais que não podemos ver, e esse é um resultado muito satisfatório.