Bom dia pessoal, fiz questão de voltar aqui pra poder concluir o diagnóstico com vocês. Espero que isso ajude outras pessoas.
Vamos lá, conforme comentei no dia Jun 11, 2026 auditei o código de Malloc que a Totvs fornece, e conclui que aquele código testa mais poder de processamento single thread do que qualquer outra coisa.
Esse código fornecido pela Totvs não faz testes confiáveis de alocação de memória nem leitura/escrita em disco, como teste fio faz.
Nosso servidor com Raid 10 SSD, controladora com cache e memória ram sobrando, sempre retornou resultados ruins mesmo com windows server instalado em baremetal no servidor, esse resultado do malloc sempre foi ruim, porém o Protheus performava.
Após a mudança de baremetal para virtualização promox (usando VMs Oracle Linux) o teste de malloc começou apresentar resultados péssimos (antes era ruim), e realmente o Protheus não estava performando depois de mudar de baremetal para proxmox + vm oracle linux.
A diferença é que antes o SO rodava em baremetal, e o promox, querendo ou não, criou uma camada de abstração entre o SO do Protheus (VM) e o Hardware.
Nosso servidor tinha 2 CPU Intel Xeon Silver 4114 de 2.2GHz, na documentação atual da Totvs eles dizem que o clock base mínimo é de 2.3GHz, bem, com isso em mãos, compramos outros processadores e colocamos 2 CPU Intel Xeon Gold 5215 de 2.50GHz, ou seja, 0.200GHz a mais que o mínimo recomendado pela Totvs e 0.300GHz a mais do que tínhamos.
Após a troca do processador o sistema já começou a performar. Abaixo coloquei os resultados do teste malloc após a troca do processador, os resultados saltaram de péssimos para ótimos conforme evidenciado.
Para ajudar o pessoal mais um pouco com esse tipo de analise, eu tinha feito o seguinte teste antes de comprar/trocar o processador. Habilitei o log do postgresql para salvar todas as querys executadas no banco, entrei no sistema na rotina de cadastro de produtos, sistema demorava 18 segundos totais para abrir a tela, ao analisar o log do banco, vi que todas as querys gastavam um total de 4 segundos para serem executadas, ou seja, os outros 14 segundos eram gastos pelo Appserver+DbAccess. Com isso, identificamos que o banco estava performando corretamente, não havia mais nada de tunning para fazer no banco.
Trocamos o processador e o tempo gasto pelo Protheus começou a ser de 4 segundos. Ou seja o banco manteve 4 segundos de retorno mais 4 segundos do Protheus, somando total de 8 segundos. Foi uma queda de 18 segundos para 8 segundos totais em uma abertura de tela.
Uma observação importante é que mesmo que seu processador não esteja mostrando picos de processamento, ele ainda pode ser o culpado, nos meus testes o processador batia 15% de processamento nos momentos de pico, ou seja, aos olhos não tinha nada errado com processador quando se analisava somente o pico de processamento.
A conclusão final é que o Protheus (Appserver/Dbacces) para performar precisa de clock base alto em single thread, não adianta só configurar proxmox deixando processador como host, dar memória ram ou usar cache de writeback. Se o clock base do processador não for alto o sistema não vai performar e os testes do malloc nunca darão resultados bons.
Resultados do malloc após a troca do processador com clock mais alto
Bash:
./mallocio-linux-1.2.0-x86_64
Path - ./ | File - output.json
__ __ _ _ _ ___ ____ ___ ___
| \/ | / \ | | | | / _ \ / ___| |_ _/ _ \
| |\/| | / _ \ | | | | | | | | | _____| | | | |
| | | |/ ___ \| |___| |__| |_| | |__|_____| | |_| |
|_| |_/_/ \_\_____|_____\___/ \____| |___\___/
1.2.0 x86_64
TESTE 1
ALOCANDO BLOCO DE MEMORIA
TEMPO LEVADO PARA ALOCAR MEMORIA: 4.000000 segundos
RESULTADO DO TESTE: Otimo -> RECOMENDADO PARA O PROTHEUS
TESTE 2
ESCRITA EM DISCO
TEMPO LEVADO PARA REALIZAR A ESCRITA EM DISCO: 1.000000 segundos
TESTE 3
LEITURA EM DISCO
TEMPO LEVADO PARA REALIZAR A LEITURA EM DISCO: 6.000000 segundos
RESULTADO DO TESTE: Otimo -> RECOMENDADO PARA O PROTHEUS
***********************************************************************
TABELA DE REFERENCIA - ALOCAR BLOCO DE MEMORIA
Otimo - ate 10.000000 segundos (RECOMENDADO PARA O PROTHEUS)
Bom - ate 15.000000 segundos (NAO recomendado para o Protheus)
Ruim - ate 25.000000 segundos (NAO recomendado para o Protheus)
Pessimo - + 25.000000 segundos (NAO recomendado para o Protheus)
TABELA DE REFERENCIA - LEITURA EM DISCO
Otimo - ate 10.000000 segundos (RECOMENDADO PARA O PROTHEUS)
Bom - ate 25.000000 segundos (NAO recomendado para o Protheus)
Ruim - ate 26.000000 segundos (NAO recomendado para o Protheus)
Pessimo - + 26.000000 segundos (NAO recomendado para o Protheus)
Atenciosamente.
Súlivan Simões

























