-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Metricbeat perfmon allocates more memory than necessary #5035
Labels
Comments
andrewkroh
added a commit
to andrewkroh/beats
that referenced
this issue
Aug 28, 2017
In `PdhGetFormattedCounterArray` the code was allocating memory for `bufferSize` x `sizeof(PdhCounterValueItem)`, but it only needed to allocated `bufferSize`. The buffer size is provided by Windows and already accounts for the sizeof PdhCounterValueItem. Made an improvement to create regexp objects once at startup instead of on every use. Moved config validation to startup for non-wildcard counter paths. This allows the check to only be performed one time and for any errors to be returned during the config test. Fixes elastic#5035
This was referenced Aug 28, 2017
Closed
ruflin
pushed a commit
that referenced
this issue
Aug 29, 2017
In `PdhGetFormattedCounterArray` the code was allocating memory for `bufferSize` x `sizeof(PdhCounterValueItem)`, but it only needed to allocated `bufferSize`. The buffer size is provided by Windows and already accounts for the sizeof PdhCounterValueItem. Made an improvement to create regexp objects once at startup instead of on every use. Moved config validation to startup for non-wildcard counter paths. This allows the check to only be performed one time and for any errors to be returned during the config test. Fixes #5035
andrewkroh
added a commit
to andrewkroh/beats
that referenced
this issue
Aug 29, 2017
In `PdhGetFormattedCounterArray` the code was allocating memory for `bufferSize` x `sizeof(PdhCounterValueItem)`, but it only needed to allocated `bufferSize`. The buffer size is provided by Windows and already accounts for the sizeof PdhCounterValueItem. Made an improvement to create regexp objects once at startup instead of on every use. Moved config validation to startup for non-wildcard counter paths. This allows the check to only be performed one time and for any errors to be returned during the config test. Fixes elastic#5035 (cherry picked from commit 0fc4dea)
tsg
pushed a commit
that referenced
this issue
Aug 29, 2017
In `PdhGetFormattedCounterArray` the code was allocating memory for `bufferSize` x `sizeof(PdhCounterValueItem)`, but it only needed to allocated `bufferSize`. The buffer size is provided by Windows and already accounts for the sizeof PdhCounterValueItem. Made an improvement to create regexp objects once at startup instead of on every use. Moved config validation to startup for non-wildcard counter paths. This allows the check to only be performed one time and for any errors to be returned during the config test. Fixes #5035 (cherry picked from commit 0fc4dea)
leweafan
pushed a commit
to leweafan/beats
that referenced
this issue
Apr 28, 2023
In `PdhGetFormattedCounterArray` the code was allocating memory for `bufferSize` x `sizeof(PdhCounterValueItem)`, but it only needed to allocated `bufferSize`. The buffer size is provided by Windows and already accounts for the sizeof PdhCounterValueItem. Made an improvement to create regexp objects once at startup instead of on every use. Moved config validation to startup for non-wildcard counter paths. This allows the check to only be performed one time and for any errors to be returned during the config test. Fixes elastic#5035 (cherry picked from commit 3931015)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
While doing heap profiling and code review of the Metricbeat windows-perfmon metricset I observed that more memory was being allocated than was necessary to receive the performance counter values from Windows.
In
PdhGetFormattedCounterArray
the code was allocating memory forbufferSize
xsizeof(PdhCounterValueItem)
, but it only needed to allocatedbufferSize
. The buffer size is provided by Windows and already accounts for the sizeof PdhCounterValueItem.For example if
bufferSize=2048
it would end up allocating ~100 kB instead of 2 kB. This would then be cleaned up by GC later.For confirmed bugs, please report:
The text was updated successfully, but these errors were encountered: