Private Bytes VS Conjunto de Trabalho no Process Explorer

29

Eu sei que o conjunto de trabalho é a quantidade real de memória que o processo está usando e também que os bytes particulares são a quantidade reservada para o caso de precisar de mais.

Então eu adicionaria os dois para descobrir quanta memória realmente está sendo tirada de outros processos no sistema?

    
por Scandalist 11.07.2013 / 23:48

1 resposta

44

Receio que não seja tão simples assim. Particularmente, bytes particulares não são muito úteis para responder à pergunta que você faz.

A primeira coisa a ter em mente é que uma página de memória pode existir na memória principal ou no armazenamento externo (atualmente, "paginação de disco" ou "troca"). A segunda é que um processo terá páginas privadas de memória em sua área de cobertura, mas também usará objetos em páginas compartilhadas, que outros processos estão usando ao mesmo tempo.

Conjunto de trabalho é o tamanho das páginas pertencentes ao processo, que estão atualmente armazenadas na memória principal. Quando uma página de memória usada por um processo é movida para o arquivo de paginação, ela é removida da métrica do conjunto de trabalho e, quando é chamada de volta à memória principal, é incluída novamente.

O conjunto de trabalho não se refere exclusivamente à memória que o seu processo possui no entanto. os processos usam muitos objetos de memória compartilhada e o tamanho desses objetos é refletido na estatística. infelizmente, quando dois processos compartilham um objeto de 1 MB, ambos os processos mostram uma alocação de 1 MB no conjunto de trabalho, portanto, se você adicionou todos os conjuntos de trabalho, o objeto de 1 MB seria gravado duas vezes, portanto o acúmulo de todos os tamanhos de conjunto de trabalho em casos extremos, parece exceder o tamanho do RAM disponível. veja mais aqui: link

Bytes particulares referem-se à quantidade de espaço no arquivo de página é alocado para o processo (não necessariamente usado) no caso em que a pegada de memória privada do processo é completamente paginada para troca. na maioria das vezes, o processo não é totalmente (ou de todo) arquivo-residente de arquivo, é por isso que bytes particulares parecem ter "espaço" para alocação adicional. Não é, contudo, o caso.

No entanto, os bytes particulares referem-se apenas à memória privada do processo, portanto, esse valor pode não refletir os recursos compartilhados (mesmo que o recurso compartilhado seja usado apenas por este processo atualmente).

"Conjunto de trabalho particular" ("Bytes privados WS" ou "WS privado" no explorador de processos dependendo da versão) é provavelmente a melhor métrica para seu uso. ele não se preocupa com o arquivo de paginação, portanto, você obtém uma representação precisa do impacto dos processos em seu RAM físico e não conta duplamente os objetos compartilhados. os objetos compartilhados são computados uma vez (somente para o processo que os criou), mas isso também significa que, a partir de uma perspectiva de processo único, você não está registrando que seu processo usa objetos compartilhados criados por outro processo, assim seu processo pode usar mais memória ram em outro máquina ou em uma situação em que era necessário criar o próprio objeto compartilhado em vez de usar outra instância de processo dele. O Gerenciador de Tarefas do Windows usa o conjunto de trabalho privado como sua métrica de uso de memória.

espero que ajude

    
por 12.07.2013 / 07:10