O que é “Memory Usage” e “Virtual memory size” no taskmgr?

2

Eu li: O que a memória do Gerenciador de Tarefas colunas significam? . Mas eu ainda não entendo o que eles dizem.

  • O Working Set (Mem) é exatamente um tamanho de memória de processo na memória RAM?
  • O Pool Paginado (VirtMem) é exatamente um tamanho de memória de processo no arquivo de permuta?
  • A memória total do processo (uso do espaço de endereço) é igual à soma de Mem e VirtMem?

Algumas informações estão disponíveis na página Gerenciador de Tarefas do Windows da Wikipédia.

Parece que o Gerenciador de Tarefas é uma ferramenta certa para obter informações sobre a quantidade de páginas RAM pertencentes ao processo (por exemplo, descartar páginas de kernel e driver) e quantas páginas são trocadas em disco. Mas não entendo qual coluna pode mostrar esses valores.

    
por gavenkoa 30.08.2011 / 17:25

2 respostas

3

Não está claro o que você está perguntando. Você pergunta sobre "memória de processo total" como se fosse um termo bem definido. Na verdade não é. Os tipos de medições de memória que parecem naturais para pessoas que não têm um entendimento profundo do gerenciamento de memória basicamente não existem nos sistemas modernos.

Uma maneira mais útil de fazer isso é para você nos dizer o que está tentando descobrir. Nós podemos te dizer como fazer isso. As pessoas tendem a dizer coisas como "Preciso saber quanta memória um processo está usando", mas isso não faz sentido. É como perguntar quanto espaço uma pessoa está usando. Bem, eles compartilham os banheiros, isso deveria contar? E eles têm algumas coisas armazenadas na garagem, mas só porque ninguém está usando e poderiam jogar essas coisas fora se alguém precisasse do espaço, isso deveria contar?

Não há realmente nenhum substituto para estudar com algum nível de detalhe como os sistemas operacionais modernos gerenciam a memória, a distinção entre memória física e virtual, páginas limpas versus páginas sujas e assim por diante. Dessa forma, você pode entender os números que o sistema realmente pode fornecer a você.

    
por 30.08.2011 / 19:15
2

Is Working Set (Mem) exactly a size of process memory on RAM?

Não. É o subconjunto do espaço de endereço virtual do processo que é "residente" ou "presente" nos termos do formato da tabela de páginas Intel, o que significa que pode ser acessado sem incorrer em uma falha de página.

É um número um pouco enganador por uma variedade de razões, principalmente que a) inclui alguma RAM que é compartilhada com outros processos - principalmente aqueles que estão usando algum do mesmo código, como o código de bibliotecas comuns, e estes as páginas compartilhadas são contadas no "conjunto de trabalho" de todos os processos nos quais são residentes. Portanto, se você somar todos os tamanhos de "conjunto de trabalho", obterá um número maior do que a quantidade real usada. b) Além disso, alguma RAM que foi perdida recentemente do conjunto de trabalho do processo devido à substituição da página provavelmente ainda estará na lista da página de espera do sistema e, se for, acessá-la incorrerá em uma falha de página, mas não em uma falha de página rígida. Então essa é a RAM que contém informações do processo que o processo pode usar novamente - mas não é contado no conjunto de trabalho.

O contador Memória (conjunto de trabalho particular) é um subconjunto do (conjunto de trabalho). É a parte do conjunto de trabalho que é privada para o processo, ou seja, não compartilhável.

Is Paged Pool (VirtMem) exactly a size of process memory on swap file?

Não. O pool paginado é um tipo específico de heap de memória do espaço do kernel. A coluna "Conjunto Paginado" nos processos exibidos no Gerenciador de Tarefas é uma indicação de quanto pool paginável foi alocado para oferecer suporte à atividade do processo.

O total de todos os contadores "Paginados" para processos não será igual ao total de blocos paginados em uso, porque o sistema operacional usa o pool paginado para muitas coisas que não são "cobradas" para processos específicos.

Is total process memory (address space usage) equal to sum of Mem and VirtMem?

Eu acho que por "Mem" você quer dizer "Conjunto de trabalho (mem)". De qualquer forma, não, não é. Isso é memória física (RAM), enquanto VirtMem é virtual. Você não pode adicionar tamanhos de memória física e virtual e criar algo sensato. A memória física usada por um processo é, em vez disso, um subconjunto de seu espaço de endereço virtual.

O Windows confundiu esse problema por meio de terminologia confusa, inconsistente e em constante mudança. No limite de tela que você forneceu, por exemplo, os primeiros quatro "Memory -", contadores são físicos (RAM), "Commit size" e "paged pool" são virtuais, e "pool não paginado", como pool paginado. , um heap do kernel, mas nunca é paginado) é ambos o tamanho virtual e físico da alocação.

E uma pergunta que você não fez:

Why is memory management so complicated?

Porque ele funciona muito melhor dessa maneira do que os sistemas mais simples no passado. Me desculpe por isso.

    
por 24.02.2016 / 22:47