Bytes particulares VS Conjunto de trabalho no Process Explorer

39

Eu sei que o conjunto de trabalho é a quantidade real de memória que o processo está usando e também que bytes privados é a quantidade reservada, caso precise de mais.

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

Escandalista
fonte

Respostas:

52

Receio que não seja tão simples assim. Em particular, bytes privados não é muito útil 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 em disco" ou "troca"). A segunda é que um processo terá páginas particulares de memória em seu espaço ocupado, 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, atualmente armazenadas na memória principal. Quando uma página da 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, é adicionada novamente.

No entanto, o conjunto de trabalho não se refere exclusivamente à memória que seu processo possui. Os processos usam muitos objetos de memória compartilhada e o tamanho desses objetos é refletido no stat. 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ê adicionar todos os conjuntos de trabalho, o objeto de 1 MB será registrado duas vezes, para que a acumulação de todos os tamanhos de conjunto de trabalho possa em casos extremos, parece exceder o tamanho do carneiro disponível. veja mais aqui: http://cybernetnews.com/cybernotes-windows-memory-usage-explained/

Bytes Privados refere-se à quantidade de espaço no arquivo de Página alocado para o processo (não necessariamente usado) no caso de o espaço ocupado pela memória privada do processo ser completamente paginado para troca. Na maioria das vezes, o processo não é inteiramente (ou de todo) residente no arquivo de página, por isso, os bytes privados parecem ter "espaço" para alocação adicional. No entanto, não é esse o caso.

No entanto, bytes privados referem-se apenas à memória privada dos processos, portanto esse valor pode não refletir os recursos compartilhados (mesmo que o recurso compartilhado seja usado apenas por esse processo no momento).

"Conjunto de trabalho Privado" ("WS Private bytes" ou "Private WS" no Process Explorer, 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 sua memória RAM física e não conta duplamente os objetos compartilhados. objetos compartilhados são computados uma vez (apenas para o processo que os criou), mas isso também significa que, de uma perspectiva de processo único, você não está registrando que seu processo usa objetos compartilhados criados por outro processo, para que seu processo possa usar mais memória RAM em outro máquina ou em uma situação em que foi necessário criar o próprio objeto compartilhado em vez de usar outra instância de processos dele. O Gerenciador de tarefas do Windows usa o conjunto de trabalho privado como métrica de uso de memória.

espero que ajude

Frank Thomas
fonte
1
Então, eu estaria correto ao dizer que "Private Bytes" é quanta memória o processo solicitou e "Working Set" é o Private Bytes, além de um pouco de memória compartilhada extra que outros processos podem usar? E também, "Conjunto de Trabalho Privado" é a quantidade de memória privada atualmente na RAM física, que é a representação mais precisa de quanta memória está realmente usando?
Scandalist
4
sim, praticamente. se você está preocupado com o conjunto de trabalho privado de ram grátis, é o caminho a percorrer. se você estiver preocupado com o arquivo de paginação ou bytes privados de confirmação completa (ram + memória virtual), é uma boa métrica.
Frank Thomas
"Bytes particulares" é o espaço de endereço virtual privado confirmado do processo. Algumas delas podem estar no arquivo de paginação, outras na RAM, outras nos dois locais, algumas delas - possivelmente a maior parte delas - podem não ter armazenamento físico atribuído (ainda). É a contribuição do processo para a "carga de confirmação" geral do sistema. O "conjunto de trabalho privado" é o subconjunto de "bytes particulares" que está na RAM. Nota: você não encontrará "bytes particulares" ou algo parecido nos monitores do RAMmap porque o RAMmap se preocupa apenas com a memória física (RAM), não virtual.
Jamie Hanrahan