Página 1 de 1

Curiosidade: uso de memória e multithread

Enviado: 25 Mai 2015 12:10
por JoséQuintas
É só um fato curioso.
memoria.png
O discreto Skype é o programa que mais usa recursos: 134MB de memória, e 72 threads (72 processos rodando simultaneamente).

Meu aplicativo atual em Harbour: começa em 9MB e 7 threads, mas não chega a subir 50% num uso abusado.

Windows 7 64 bits, e Harbour 32 bits.

Curiosidade: uso de memória e multithread

Enviado: 05 Jun 2015 00:05
por Maligno
O discreto Skype é o programa que mais usa recursos: 134MB de memória
Não podemos atribuir diretamente ao programa a culpa pelo consumo de memória que se vê no gerenciador de tarefas. Normalmente esse número é culpa do Windows, em função de uma estratégia própria de pré-alocação de memória, conforme o nível de prioridade que a aplicação tem. Inclusive pode-se ver "Memória (Conjunto de trabalho particular)" no gerenciador de tarefas. No Windows 7 aparece esse texto. Isso é o chamado "working set" (o termo em inglês é mais fácil de pesquisar); reconfigurável, se o programador quiser interferir no nível de "agressividade" dessa pré-alocação. Existe um serviço da API especificamente para isso. Apesar de que a maioria dos programadores não mexe nisso, e muitos sequer sabem da existência do "working set".

Existem mais alguns detalhes interessantes a esse respeito. Só não quis aumentar excessivamente o texto do post. :)

Curiosidade: uso de memória e multithread

Enviado: 05 Jun 2015 01:05
por JoséQuintas
E acho que isso também tem a ver com uma mudança no Windows, que talvez poucas pessoas tenham percebido:
O Windows aloca TODA memória pra cache.
Por isso o programa precisa pedir memória livre pra trabalhar.
De vez em quando aqui dá erro no GITHUB por falta de memória, aparentemente por algo desse tipo. Reiniciando a máquina volta ao normal.

Pesquisando o erro, encontrei o artigo que menciona que os programas deveriam ser ajustados para uma nova API pra solicitar memória.

Também percebi que tudo que é acessado vai ficando em cache, até o limite da memória.
Pra ilustrar, faz algum tempo que não reinicio meu computador, e acabei de gerar o Harbour.
memoria.png
Depois vou aproveitar, reiniciar, e colocar de novo a informação.

Curiosidade: uso de memória e multithread

Enviado: 05 Jun 2015 01:14
por JoséQuintas
Após reiniciar
memoria.png
memoria.png (10.97 KiB) Exibido 551 vezes
O uso do cache reduziu, e tem mais memória livre.

Aonde esse cache vai ao máximo é após fazer meu backup, porque copia todo HD.
Mas aí já dá pra perceber uma grande diferença.
Aumentou quase 5GB na memória livre, apesar de ter aumentado apenas 1GB na memória disponível.
É porque a memória de cache, está em uso, mas o Windows libera, se necessário.