Superior mostrando o uso de memória virtual de centenas de gigabytes

2

Em uma nova máquina virtual, top mostra que um processo meu consome 100 GB de memória virtual. Eu li que é possível por causa de overcommit , no entanto, é um pouco demais. Eu nunca vi nada assim, especialmente em uma VM com apenas 6 GB de memória real, 2 GB de swap e uma única partição de 40 GB.

O processo engraçado com 101 GB VIRT é o Eclipse IDE (iniciado há alguns minutos) e há outro, o WebKitWebProcess com 98 GB VIRT. Todos os outros processos possuem valores sãos de VIRT de aproximadamente 1-2 GB. Todas as três ferramentas parecem concordar com isso: top , htop e ps .

  • Existe algum bom motivo para os processos solicitarem muita memória virtual?
  • Esse comportamento não é prejudicial ao sistema?
  • Quais são os limites atuais da memória virtual total?

Atualizar

Detalhes:
Linux 4.15.0-38-genérico x86_64 GNU / Linux, Linux Mint 19 Tara
VM de servidor de 64 bits Java HotSpot (TM) (compilação 25.191-b12, modo misto)
Versão: 2018-09 (4.9.0) ID do Projeto: 20180917-1800

O conteúdo de / proc // maps começa com

00400000-00401000 r-xp 00000000 08:01 132092                             /usr/lib/jvm/java-8-oracle/jre/bin/java
00600000-00601000 r--p 00000000 08:01 132092                             /usr/lib/jvm/java-8-oracle/jre/bin/java
00601000-00602000 rw-p 00001000 08:01 132092                             /usr/lib/jvm/java-8-oracle/jre/bin/java
014fc000-02ebe000 rw-p 00000000 00:00 0                                  [heap]
c0000000-d0000000 rw-p 00000000 00:00 0 
d0000000-100000000 ---p 00000000 00:00 0 
100000000-1012c6000 rw-p 00000000 00:00 0 
1012c6000-140000000 ---p 00000000 00:00 0 
7ef800000000-7ef800004000 rw-p 00000000 00:00 0 
7ef800004000-7ef8000ec000 rw-p 00000000 00:00 0 
7ef8000ec000-7ef800100000 rw-p 00000000 00:00 0 
7ef800100000-7f0800000000 rw-p 00000000 00:00 0 
7f0800000000-7f1000000000 ---p 00000000 00:00 0 

As duas últimas linhas de linha mostradas parecem ser as culpadas como 0x7f0800000000 - 0x7ef800100000 ≈ 68.7e9 . Pelo que descobri, é uma região privada não mapeada sem permissões. Isso é tudo que posso dizer ....

    
por maaartinus 04.11.2018 / 02:35

1 resposta

3

O mais provável é que esteja a preparar todos os ficheiros que possa indexar. Eu vi semelhante com Kafka mapeamento de milhares de arquivos, mas geralmente a pegada virtual é muito maior (~ 10x) vezes). Você pode executar:

cat /proc/{PID}/maps

(onde {PID} é seu ID do processo do Eclipse) para ver se esse é o caso. Se realmente for o caso, talvez você precise aumentar vm.max_map_count em sysctl se a sua área de cobertura virtual for muito grande.

    
por 04.11.2018 / 06:06

Tags