mirror of
				https://github.com/prometheus/node_exporter.git
				synced 2025-08-20 18:33:52 -07:00 
			
		
		
		
	Merge pull request #2015 from ston1th/openbsd_mem_cache_fix
Fix wrong value for OpenBSD memory buffer cache
This commit is contained in:
		
						commit
						40766fd3cc
					
				| 
						 | 
				
			
			@ -20,18 +20,54 @@ import (
 | 
			
		|||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	CTL_VFS        = 10
 | 
			
		||||
	VFS_GENERIC    = 0
 | 
			
		||||
	VFS_BCACHESTAT = 3
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type bcachestats struct {
 | 
			
		||||
	Numbufs        int64
 | 
			
		||||
	Numbufpages    int64
 | 
			
		||||
	Numdirtypages  int64
 | 
			
		||||
	Numcleanpages  int64
 | 
			
		||||
	Pendingwrites  int64
 | 
			
		||||
	Pendingreads   int64
 | 
			
		||||
	Numwrites      int64
 | 
			
		||||
	Numreads       int64
 | 
			
		||||
	Cachehits      int64
 | 
			
		||||
	Busymapped     int64
 | 
			
		||||
	Dmapages       int64
 | 
			
		||||
	Highpages      int64
 | 
			
		||||
	Delwribufs     int64
 | 
			
		||||
	Kvaslots       int64
 | 
			
		||||
	Kvaslots_avail int64
 | 
			
		||||
	Highflips      int64
 | 
			
		||||
	Highflops      int64
 | 
			
		||||
	Dmaflips       int64
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *meminfoCollector) getMemInfo() (map[string]float64, error) {
 | 
			
		||||
	uvmexpb, err := unix.SysctlRaw("vm.uvmexp")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	mib := [3]_C_int{CTL_VFS, VFS_GENERIC, VFS_BCACHESTAT}
 | 
			
		||||
	bcstatsb, err := sysctl(mib[:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	uvmexp := *(*unix.Uvmexp)(unsafe.Pointer(&uvmexpb[0]))
 | 
			
		||||
	ps := float64(uvmexp.Pagesize)
 | 
			
		||||
 | 
			
		||||
	bcstats := *(*bcachestats)(unsafe.Pointer(&bcstatsb[0]))
 | 
			
		||||
 | 
			
		||||
	// see uvm(9)
 | 
			
		||||
	return map[string]float64{
 | 
			
		||||
		"active_bytes":                  ps * float64(uvmexp.Active),
 | 
			
		||||
		"cache_bytes":                   ps * float64(uvmexp.Vnodepages),
 | 
			
		||||
		"cache_bytes":                   ps * float64(bcstats.Numbufpages),
 | 
			
		||||
		"free_bytes":                    ps * float64(uvmexp.Free),
 | 
			
		||||
		"inactive_bytes":                ps * float64(uvmexp.Inactive),
 | 
			
		||||
		"size_bytes":                    ps * float64(uvmexp.Npages),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue