Avatar ·

Como determinar o consumo de CPU e memória de dentro do processo em C++?

Olá a todos! Escrevo em C++ há cerca de um ano e me deparei com uma tarefa que me deixou perplexo. Preciso que meu programa (um servidor para processamento de imagens) monitore em tempo real quanto de memória e CPU ele está consumindo. O problema é que não entendo como obter esses dados de dentro do próprio processo. Por exemplo, quero registrar algo como: "Pico de consumo de memória: 150 MB, uso de CPU: 45%". Tentei usar variáveis simples como `sizeof()` para objetos, mas isso não dá uma visão real — pois a memória é alocada no heap, além de haver custos adicionais de stack e recursos do sistema. Com a CPU é ainda mais complicado: posso medir o tempo de execução de um trecho de código com `clock()`, mas esse tempo é apenas da minha thread, não de todo o programa, e não considera o tempo de espera de I/O. Por favor, me digam: existe uma maneira padrão ou bibliotecas que permitam obter essas métricas de dentro do processo? De preferência multiplataforma, mas pelo menos para Linux e Windows.