Memory plugin: use 'available' instead of 'actual_'

Closes #214
This commit is contained in:
Cameron Sparr 2015-09-21 14:25:19 -07:00
parent 10d411c4f7
commit 1cd2db9f8c
3 changed files with 16 additions and 18 deletions

View File

@ -7,17 +7,18 @@ explanation of the difference between `used` and `actual_used` RAM, see
[Linux ate my ram](http://www.linuxatemyram.com/). [Linux ate my ram](http://www.linuxatemyram.com/).
- **total**: total physical memory available - **total**: total physical memory available
- **actual_free**: the actual amount of available memory that can be given instantly - **available**: the actual amount of available memory that can be given instantly
to processes that request more memory in bytes; this is calculated by summing to processes that request more memory in bytes; In linux kernel 3.14+, this
different memory values depending on the platform (e.g. free + buffers + cached on Linux) is available natively in /proc/meminfo. In other platforms, this is calculated by
and it is supposed to be used to monitor actual memory usage in a cross platform fashion. summing different memory values depending on the platform
- **actual_used**: inverse of actual_free, see above (e.g. free + buffers + cached on Linux).
- **actual_used_percent**: the percentage usage calculated as (total - actual_used) / total * 100 It is supposed to be used to monitor actual memory usage in a cross platform fashion.
- **available_percent**: Percent of memory available, `available / total * 100`
- **used**: memory used, calculated differently depending on the platform and - **used**: memory used, calculated differently depending on the platform and
designed for informational purposes only. designed for informational purposes only.
- **free**: memory not being used at all (zeroed) that is readily available; note - **free**: memory not being used at all (zeroed) that is readily available; note
that this doesn't reflect the actual memory available (use 'available' instead). that this doesn't reflect the actual memory available (use 'available' instead).
- **used_percent**: the percentage usage calculated as (total - used) / total * 100 - **used_percent**: the percentage usage calculated as `(total - used) / total * 100`
## Measurements: ## Measurements:
#### Raw Memory measurements: #### Raw Memory measurements:
@ -28,8 +29,7 @@ Meta:
Measurement names: Measurement names:
- mem_total - mem_total
- mem_actual_free - mem_available
- mem_actual_used
- mem_used - mem_used
- mem_free - mem_free
@ -41,4 +41,4 @@ Meta:
Measurement names: Measurement names:
- mem_used_percent - mem_used_percent
- mem_actual_used_percent - mem_available_percent

View File

@ -25,13 +25,12 @@ func (s *MemStats) Gather(acc plugins.Accumulator) error {
vmtags := map[string]string(nil) vmtags := map[string]string(nil)
acc.Add("total", vm.Total, vmtags) acc.Add("total", vm.Total, vmtags)
acc.Add("actual_free", vm.Available, vmtags) acc.Add("available", vm.Available, vmtags)
acc.Add("actual_used", vm.Total-vm.Available, vmtags)
acc.Add("used", vm.Used, vmtags) acc.Add("used", vm.Used, vmtags)
acc.Add("free", vm.Free, vmtags) acc.Add("free", vm.Free, vmtags)
acc.Add("used_percent", 100*float64(vm.Used)/float64(vm.Total), vmtags) acc.Add("used_percent", 100*float64(vm.Used)/float64(vm.Total), vmtags)
acc.Add("actual_used_percent", acc.Add("available_percent",
100*float64(vm.Total-vm.Available)/float64(vm.Total), 100*float64(vm.Available)/float64(vm.Total),
vmtags) vmtags)
return nil return nil

View File

@ -230,11 +230,10 @@ func TestSystemStats_GenerateStats(t *testing.T) {
vmtags := map[string]string(nil) vmtags := map[string]string(nil)
assert.True(t, acc.CheckTaggedValue("total", uint64(12400), vmtags)) assert.True(t, acc.CheckTaggedValue("total", uint64(12400), vmtags))
assert.True(t, acc.CheckTaggedValue("actual_free", uint64(7600), vmtags)) assert.True(t, acc.CheckTaggedValue("available", uint64(7600), vmtags))
assert.True(t, acc.CheckTaggedValue("actual_used", uint64(12400-7600), vmtags))
assert.True(t, acc.CheckTaggedValue("used", uint64(5000), vmtags)) assert.True(t, acc.CheckTaggedValue("used", uint64(5000), vmtags))
assert.True(t, acc.CheckTaggedValue("actual_used_percent", assert.True(t, acc.CheckTaggedValue("available_percent",
float64(12400-7600)/float64(12400)*100, float64(7600)/float64(12400)*100,
vmtags)) vmtags))
assert.True(t, acc.CheckTaggedValue("used_percent", assert.True(t, acc.CheckTaggedValue("used_percent",
float64(5000)/float64(12400)*100, float64(5000)/float64(12400)*100,