Curiosidade: uso de memória e multithread

Aqui é o lugar para bater papo e trocar idéias sobre os mais variados assuntos

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Curiosidade: uso de memória e multithread

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Curiosidade: uso de memória e multithread

Mensagem 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. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Curiosidade: uso de memória e multithread

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Curiosidade: uso de memória e multithread

Mensagem por JoséQuintas »

Após reiniciar
memoria.png
memoria.png (10.97 KiB) Exibido 547 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder