Correct buffer_bytes > INT_MAX on BSD/amd64. (#712)
* Correct buffer_bytes > INT_MAX on BSD/amd64. The sysctl vfs.bufspace returns either an int or a long, depending on the value. Large values of vfs.bufspace will result in error messages like: couldn't get meminfo: cannot allocate memory This will detect the returned data type, and cast appropriately. * Added explicit length checks per feedback. * Flatten Value() to make it easier to read. * Simplify per feedback. * Fix style. * Doc updates.
This commit is contained in:
parent
715ebd1ced
commit
0eecaa9547
2 changed files with 73 additions and 38 deletions
|
|
@ -39,7 +39,7 @@ func (c *meminfoCollector) getMemInfo() (map[string]float64, error) {
|
|||
{name: "inactive_bytes", mib: "vm.stats.vm.v_inactive_count", conversion: fromPage},
|
||||
{name: "wired_bytes", mib: "vm.stats.vm.v_wire_count", conversion: fromPage},
|
||||
{name: "cache_bytes", mib: "vm.stats.vm.v_cache_count", conversion: fromPage},
|
||||
{name: "buffer_bytes", mib: "vfs.bufspace"},
|
||||
{name: "buffer_bytes", mib: "vfs.bufspace", dataType: bsdSysctlTypeCLong},
|
||||
{name: "free_bytes", mib: "vm.stats.vm.v_free_count", conversion: fromPage},
|
||||
{name: "size_bytes", mib: "vm.stats.vm.v_page_count", conversion: fromPage},
|
||||
{name: "swap_in_bytes_total", mib: "vm.stats.vm.v_swappgsin", conversion: fromPage},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue