Primeiro, deixe-me dizer que, se for relativamente estável, você não tem vazamento de memória, e essa observação em serverStatus () foi removida do 2.2 devido à frequência de falsos positivos.
Memória virtual não mapeada são as estruturas de dados internas e as pilhas de threads do MongoDB, essencialmente qualquer coisa que não seja suportada por arquivos no disco. Isso geralmente é conduzido, como você mencionou, pela pilha de conexão a 1 MB por conexão. No seu caso, parece que deve ser em torno da marca de 1,1-1,2 GB (a menos que você tenha um pico de conexão e a memória ainda não tenha sido recuperada).
Se você estiver fazendo muitos mapeamentos / reduções in-line, classificações na memória, etc., eles também podem aumentar o uso de memória não mapeada. Se você instalar o MMS (que é gratuito), a memória não mapeada é uma das estatísticas rastreadas ao longo do tempo e você pode correlacionar aumentos no estatística não mapeada com a atividade em seu banco de dados facilmente. No entanto, se você não tiver executado, talvez seja necessário reiniciar o processo para rastrear o uso a partir do zero novamente.
Esse tipo de análise de uso costuma ser mais fácil do que usar o pmap (ou semelhante) para tentar amarrar a memória para peças específicas dentro de um processo
Finalmente, se o uso não-mapeado estiver fora de controle, ocasionalmente pode ser causado por problemas com libc malloc
em 2.0 - isso, entre outras razões, foi o motivo da versão 2.2 enviado com TCMalloc em vez disso. Então, pode valer a pena verificar se isso permanece alto sem uma razão óbvia.