My customer want to know dynatrace agent memory overhead of the application server. They use third party tool monitor OS level memory usage with and without dynatrace agent inject and got the conclusion as below, the OS memory usage of application server is 300MB without dynatrace agent; and it is 350MB with dynatrace agent. That caused the application owner concerns regard dynatrace overhead.
I try to use dynatrace memory trend to capture 5 samples. And I used Total Memory Content(show class) dashboard and added the summary of dynatrace related classes to proof how dynatrace overhead of application.
My question is what the right method is to measure dynatrace agent memory overhead.
Solved! Go to Solution.
I'm not aware of a way to determine the memory overhead within App Mon itself, but here is an article on how to reduce memory overhead you may find interesting. In summary usage will vary with the configurations you have in your deployment. So if you have a large number of sensors, many expensive regex, and are capturing lots of message contents and such then memory usage will be greater than if you were running a "default" deployment.
Running some identical tests with and without instrumentation may be one of the better solutions, I'd be interested as well if there is a best one.
Both methods are correct, it just depends on what you want to measure.
What the "with and without the agent test" is showing is the complete overhead of the agent. At least as long as the actions performed are the same and you take into account that the heap has not grown in one of the tests.
What your test is showing is the agent overhead within the JVM. The overhead within the JVM is the most important overhead as it is what can cause an application to run garbage collections more frequently and take a longer time. What your tests are not measuring is the native part of the agent. The native part manages its own memory and is not impacting the application runtime except for in extreme scenarios.