Memória física usada espaço por processo em taskmagare

0

Eu soma o valor da memória de espaço usado por cada processo (todos eles) que está sendo exibido no TaskManager e entendo que a soma deles não é realmente 68% do meu cartão de memória que é mostrado no abaixo!

EntãoeuinstaloProcessExplorerevejoqueháduascolunas!Private-ByteseWorking-Set,eoqueémostradonobotomdoTaskManager,éasomadePrivateBytes,nãoWorking-Bytes:

Q1: Eu quero saber o que são esses Bytes privados? Qual é a diferença com o Working Bytes?

Q2: quando eu mudo a prioridade de um processo, o que muda? Eu mudo a prioridade de um processo de LOW para RealTime, mas ambos os PrivateBytes e WorkingBytes não mudaram

Atenciosamente

    
por TheGoodUser 19.08.2014 / 09:25

1 resposta

1

Resposta 1

Private Bytes referem-se à quantidade de memória que o executável do processo solicitou - não necessariamente a quantidade que está realmente usando . Eles são "privados" porque (geralmente) excluem arquivos mapeados na memória (por exemplo, DLLs compartilhadas). Mas - aqui está a captura - eles não necessariamente excluem a memória alocada por esses arquivos . Não há como saber se uma alteração nos bytes particulares ocorreu devido ao próprio executável ou devido a uma biblioteca vinculada. Bytes privados também não são não exclusivos da memória física; eles podem ser paginados para o disco ou na lista de páginas em espera (ou seja, não estão mais em uso, mas também não são paginados).

Conjunto de trabalho refere-se à memória total ( física ) usada pelo processo. No entanto, ao contrário dos bytes privados, isso também inclui arquivos mapeados na memória e vários outros recursos, portanto, é uma medida ainda menos precisa do que os bytes particulares. Este é o mesmo valor que é relatado no "Mem Usage" do Gerenciador de Tarefas e tem sido a fonte de inúmeras confusões nos últimos anos. A memória no conjunto de trabalho é "física" no sentido de que pode ser endereçada sem uma falha de página; no entanto, a lista de páginas em espera também está fisicamente na memória, mas não é relatada no Conjunto de Trabalho, e é por isso que você pode ver o "Uso de Mem" cair de repente ao minimizar um aplicativo.

Virtual Bytes são o total espaço de endereço virtual ocupado por todo o processo. Isso é como o conjunto de trabalho, no sentido de incluir arquivos mapeados na memória (DLLs compartilhadas), mas também inclui dados na lista de espera e dados que já foram paginados e estão em um arquivo de paginação em algum lugar no disco. O total de bytes virtuais usados por cada processo em um sistema sob carga pesada adicionará significativamente mais memória do que a máquina realmente possui.

Portanto, os relacionamentos são:

  • Bytes particulares são o que seu aplicativo realmente alocou, mas incluem o uso do arquivo de paginação;
  • Conjunto de trabalho é o Bytes privados não paginados mais arquivos mapeados na memória;
  • Bytes virtuais são o conjunto de trabalhos mais bytes privados paginados e a lista de espera.

Resposta 2

A prioridade de um processo não tem nada a ver com o uso da memória. A prioridade de um processo está relacionada a quanto tempo esse processo tem acesso à CPU. Quando você define um processo para realtime, recebe a prioridade mais alta. Isso pode parecer bom, mas geralmente é uma coisa ruim, pois será capaz de bloquear outros processos. Se você tem um programa que, às vezes, usa toda a energia da sua CPU e causa problemas com outros aplicativos, então diminuir isso pode ajudar. Realmente não há necessidade de você aumentar isso a menos que seja para um aplicativo que você criou. Por padrão, a maioria dos aplicativos que precisam disso são criados durante a instalação.

BTW, se você tiver um sistema multicore, a prioridade é muito menos importante, pois o sistema também distribuirá a carga pelos núcleos. Se você tiver um sistema multicore, você terá muito mais sorte jogando com a afinidade de um aplicativo que ajusta o núcleo preferido que ele usa. A maioria dos seus aplicativos usará apenas o primeiro núcleo. Se você quer uma melhor capacidade de resposta de um determinado aplicativo, basta colocá-lo em outro núcleo que não está sendo usado tanto. Além disso, se você tem hyperthreading, então você vai querer ter em mente que os núcleos pares são falsos e devem ser considerados apenas como um pequeno bônus para o núcleo anterior. Ele fica ainda mais complicado se você estiver usando overclocking dinâmico e tiver configurado para velocidades de clock assimétricas, porque nesse caso todo o seu core, exceto o primeiro, será tipicamente subclado até você começar a fazer algo exigente. Se esse for o caso, você não vai querer mexer com afinidade a menos que tenha certeza de que todos os seus núcleos estão operando a toda velocidade.

    
por 19.08.2014 / 09:41