@@ -47,58 +47,159 @@ func (c *meminfoCollector) getMemInfo() (map[string]float64, error) {
4747 return nil , fmt .Errorf ("Failed to get memory info: %s" , err )
4848 }
4949
50- return map [string ]float64 {
51- "Active_bytes" : uint64PtrToFloat (meminfo .ActiveBytes ),
52- "Active_anon_bytes" : uint64PtrToFloat (meminfo .ActiveAnonBytes ),
53- "Active_file_bytes" : uint64PtrToFloat (meminfo .ActiveFileBytes ),
54- "AnonHugePages_bytes" : uint64PtrToFloat (meminfo .AnonHugePagesBytes ),
55- "AnonPages_bytes" : uint64PtrToFloat (meminfo .AnonPagesBytes ),
56- "Bounce_bytes" : uint64PtrToFloat (meminfo .BounceBytes ),
57- "Buffers_bytes" : uint64PtrToFloat (meminfo .BuffersBytes ),
58- "Cached_bytes" : uint64PtrToFloat (meminfo .CachedBytes ),
59- "CmaFree_bytes" : uint64PtrToFloat (meminfo .CmaFreeBytes ),
60- "CmaTotal_bytes" : uint64PtrToFloat (meminfo .CmaTotalBytes ),
61- "CommitLimit_bytes" : uint64PtrToFloat (meminfo .CommitLimitBytes ),
62- "Committed_AS_bytes" : uint64PtrToFloat (meminfo .CommittedASBytes ),
63- "DirectMap1G_bytes" : uint64PtrToFloat (meminfo .DirectMap1GBytes ),
64- "DirectMap2M_bytes" : uint64PtrToFloat (meminfo .DirectMap2MBytes ),
65- "DirectMap4k_bytes" : uint64PtrToFloat (meminfo .DirectMap4kBytes ),
66- "Dirty_bytes" : uint64PtrToFloat (meminfo .DirtyBytes ),
67- "HardwareCorrupted_bytes" : uint64PtrToFloat (meminfo .HardwareCorruptedBytes ),
68- "Hugepagesize_bytes" : uint64PtrToFloat (meminfo .HugepagesizeBytes ),
69- "Inactive_bytes" : uint64PtrToFloat (meminfo .InactiveBytes ),
70- "Inactive_anon_bytes" : uint64PtrToFloat (meminfo .InactiveAnonBytes ),
71- "Inactive_file_bytes" : uint64PtrToFloat (meminfo .InactiveFileBytes ),
72- "KernelStack_bytes" : uint64PtrToFloat (meminfo .KernelStackBytes ),
73- "Mapped_bytes" : uint64PtrToFloat (meminfo .MappedBytes ),
74- "MemAvailable_bytes" : uint64PtrToFloat (meminfo .MemAvailableBytes ),
75- "MemFree_bytes" : uint64PtrToFloat (meminfo .MemFreeBytes ),
76- "MemTotal_bytes" : uint64PtrToFloat (meminfo .MemTotalBytes ),
77- "Mlocked_bytes" : uint64PtrToFloat (meminfo .MlockedBytes ),
78- "NFS_Unstable_bytes" : uint64PtrToFloat (meminfo .NFSUnstableBytes ),
79- "PageTables_bytes" : uint64PtrToFloat (meminfo .PageTablesBytes ),
80- "Percpu_bytes" : uint64PtrToFloat (meminfo .PercpuBytes ),
81- "SReclaimable_bytes" : uint64PtrToFloat (meminfo .SReclaimableBytes ),
82- "SUnreclaim_bytes" : uint64PtrToFloat (meminfo .SUnreclaimBytes ),
83- "Shmem_bytes" : uint64PtrToFloat (meminfo .ShmemBytes ),
84- "ShmemHugePages_bytes" : uint64PtrToFloat (meminfo .ShmemHugePagesBytes ),
85- "ShmemPmdMapped_bytes" : uint64PtrToFloat (meminfo .ShmemPmdMappedBytes ),
86- "Slab_bytes" : uint64PtrToFloat (meminfo .SlabBytes ),
87- "SwapCached_bytes" : uint64PtrToFloat (meminfo .SwapCachedBytes ),
88- "SwapFree_bytes" : uint64PtrToFloat (meminfo .SwapFreeBytes ),
89- "SwapTotal_bytes" : uint64PtrToFloat (meminfo .SwapTotalBytes ),
90- "Unevictable_bytes" : uint64PtrToFloat (meminfo .UnevictableBytes ),
91- "VmallocChunk_bytes" : uint64PtrToFloat (meminfo .VmallocChunkBytes ),
92- "VmallocTotal_bytes" : uint64PtrToFloat (meminfo .VmallocTotalBytes ),
93- "VmallocUsed_bytes" : uint64PtrToFloat (meminfo .VmallocUsedBytes ),
94- "Writeback_bytes" : uint64PtrToFloat (meminfo .WritebackBytes ),
95- "WritebackTmp_bytes" : uint64PtrToFloat (meminfo .WritebackTmpBytes ),
96- // These fields are always in bytes and do not have `Bytes`
97- // suffixed counterparts in the procfs.Meminfo struct, nor do
98- // they have `_bytes` suffix on the metric names.
99- "HugePages_Free" : uint64PtrToFloat (meminfo .HugePagesFree ),
100- "HugePages_Rsvd" : uint64PtrToFloat (meminfo .HugePagesRsvd ),
101- "HugePages_Surp" : uint64PtrToFloat (meminfo .HugePagesSurp ),
102- "HugePages_Total" : uint64PtrToFloat (meminfo .HugePagesTotal ),
103- }, nil
50+ metrics := make (map [string ]float64 )
51+
52+ if meminfo .ActiveBytes != nil {
53+ metrics ["Active_bytes" ] = float64 (* meminfo .ActiveBytes )
54+ }
55+ if meminfo .ActiveAnonBytes != nil {
56+ metrics ["Active_anon_bytes" ] = float64 (* meminfo .ActiveAnonBytes )
57+ }
58+ if meminfo .ActiveFileBytes != nil {
59+ metrics ["Active_file_bytes" ] = float64 (* meminfo .ActiveFileBytes )
60+ }
61+ if meminfo .AnonHugePagesBytes != nil {
62+ metrics ["AnonHugePages_bytes" ] = float64 (* meminfo .AnonHugePagesBytes )
63+ }
64+ if meminfo .AnonPagesBytes != nil {
65+ metrics ["AnonPages_bytes" ] = float64 (* meminfo .AnonPagesBytes )
66+ }
67+ if meminfo .BounceBytes != nil {
68+ metrics ["Bounce_bytes" ] = float64 (* meminfo .BounceBytes )
69+ }
70+ if meminfo .BuffersBytes != nil {
71+ metrics ["Buffers_bytes" ] = float64 (* meminfo .BuffersBytes )
72+ }
73+ if meminfo .CachedBytes != nil {
74+ metrics ["Cached_bytes" ] = float64 (* meminfo .CachedBytes )
75+ }
76+ if meminfo .CmaFreeBytes != nil {
77+ metrics ["CmaFree_bytes" ] = float64 (* meminfo .CmaFreeBytes )
78+ }
79+ if meminfo .CmaTotalBytes != nil {
80+ metrics ["CmaTotal_bytes" ] = float64 (* meminfo .CmaTotalBytes )
81+ }
82+ if meminfo .CommitLimitBytes != nil {
83+ metrics ["CommitLimit_bytes" ] = float64 (* meminfo .CommitLimitBytes )
84+ }
85+ if meminfo .CommittedASBytes != nil {
86+ metrics ["Committed_AS_bytes" ] = float64 (* meminfo .CommittedASBytes )
87+ }
88+ if meminfo .DirectMap1GBytes != nil {
89+ metrics ["DirectMap1G_bytes" ] = float64 (* meminfo .DirectMap1GBytes )
90+ }
91+ if meminfo .DirectMap2MBytes != nil {
92+ metrics ["DirectMap2M_bytes" ] = float64 (* meminfo .DirectMap2MBytes )
93+ }
94+ if meminfo .DirectMap4kBytes != nil {
95+ metrics ["DirectMap4k_bytes" ] = float64 (* meminfo .DirectMap4kBytes )
96+ }
97+ if meminfo .DirtyBytes != nil {
98+ metrics ["Dirty_bytes" ] = float64 (* meminfo .DirtyBytes )
99+ }
100+ if meminfo .HardwareCorruptedBytes != nil {
101+ metrics ["HardwareCorrupted_bytes" ] = float64 (* meminfo .HardwareCorruptedBytes )
102+ }
103+ if meminfo .HugepagesizeBytes != nil {
104+ metrics ["Hugepagesize_bytes" ] = float64 (* meminfo .HugepagesizeBytes )
105+ }
106+ if meminfo .InactiveBytes != nil {
107+ metrics ["Inactive_bytes" ] = float64 (* meminfo .InactiveBytes )
108+ }
109+ if meminfo .InactiveAnonBytes != nil {
110+ metrics ["Inactive_anon_bytes" ] = float64 (* meminfo .InactiveAnonBytes )
111+ }
112+ if meminfo .InactiveFileBytes != nil {
113+ metrics ["Inactive_file_bytes" ] = float64 (* meminfo .InactiveFileBytes )
114+ }
115+ if meminfo .KernelStackBytes != nil {
116+ metrics ["KernelStack_bytes" ] = float64 (* meminfo .KernelStackBytes )
117+ }
118+ if meminfo .MappedBytes != nil {
119+ metrics ["Mapped_bytes" ] = float64 (* meminfo .MappedBytes )
120+ }
121+ if meminfo .MemAvailableBytes != nil {
122+ metrics ["MemAvailable_bytes" ] = float64 (* meminfo .MemAvailableBytes )
123+ }
124+ if meminfo .MemFreeBytes != nil {
125+ metrics ["MemFree_bytes" ] = float64 (* meminfo .MemFreeBytes )
126+ }
127+ if meminfo .MemTotalBytes != nil {
128+ metrics ["MemTotal_bytes" ] = float64 (* meminfo .MemTotalBytes )
129+ }
130+ if meminfo .MlockedBytes != nil {
131+ metrics ["Mlocked_bytes" ] = float64 (* meminfo .MlockedBytes )
132+ }
133+ if meminfo .NFSUnstableBytes != nil {
134+ metrics ["NFS_Unstable_bytes" ] = float64 (* meminfo .NFSUnstableBytes )
135+ }
136+ if meminfo .PageTablesBytes != nil {
137+ metrics ["PageTables_bytes" ] = float64 (* meminfo .PageTablesBytes )
138+ }
139+ if meminfo .PercpuBytes != nil {
140+ metrics ["Percpu_bytes" ] = float64 (* meminfo .PercpuBytes )
141+ }
142+ if meminfo .SReclaimableBytes != nil {
143+ metrics ["SReclaimable_bytes" ] = float64 (* meminfo .SReclaimableBytes )
144+ }
145+ if meminfo .SUnreclaimBytes != nil {
146+ metrics ["SUnreclaim_bytes" ] = float64 (* meminfo .SUnreclaimBytes )
147+ }
148+ if meminfo .ShmemBytes != nil {
149+ metrics ["Shmem_bytes" ] = float64 (* meminfo .ShmemBytes )
150+ }
151+ if meminfo .ShmemHugePagesBytes != nil {
152+ metrics ["ShmemHugePages_bytes" ] = float64 (* meminfo .ShmemHugePagesBytes )
153+ }
154+ if meminfo .ShmemPmdMappedBytes != nil {
155+ metrics ["ShmemPmdMapped_bytes" ] = float64 (* meminfo .ShmemPmdMappedBytes )
156+ }
157+ if meminfo .SlabBytes != nil {
158+ metrics ["Slab_bytes" ] = float64 (* meminfo .SlabBytes )
159+ }
160+ if meminfo .SwapCachedBytes != nil {
161+ metrics ["SwapCached_bytes" ] = float64 (* meminfo .SwapCachedBytes )
162+ }
163+ if meminfo .SwapFreeBytes != nil {
164+ metrics ["SwapFree_bytes" ] = float64 (* meminfo .SwapFreeBytes )
165+ }
166+ if meminfo .SwapTotalBytes != nil {
167+ metrics ["SwapTotal_bytes" ] = float64 (* meminfo .SwapTotalBytes )
168+ }
169+ if meminfo .UnevictableBytes != nil {
170+ metrics ["Unevictable_bytes" ] = float64 (* meminfo .UnevictableBytes )
171+ }
172+ if meminfo .VmallocChunkBytes != nil {
173+ metrics ["VmallocChunk_bytes" ] = float64 (* meminfo .VmallocChunkBytes )
174+ }
175+ if meminfo .VmallocTotalBytes != nil {
176+ metrics ["VmallocTotal_bytes" ] = float64 (* meminfo .VmallocTotalBytes )
177+ }
178+ if meminfo .VmallocUsedBytes != nil {
179+ metrics ["VmallocUsed_bytes" ] = float64 (* meminfo .VmallocUsedBytes )
180+ }
181+ if meminfo .WritebackBytes != nil {
182+ metrics ["Writeback_bytes" ] = float64 (* meminfo .WritebackBytes )
183+ }
184+ if meminfo .WritebackTmpBytes != nil {
185+ metrics ["WritebackTmp_bytes" ] = float64 (* meminfo .WritebackTmpBytes )
186+ }
187+
188+ // These fields are always in bytes and do not have `Bytes`
189+ // suffixed counterparts in the procfs.Meminfo struct, nor do
190+ // they have `_bytes` suffix on the metric names.
191+ if meminfo .HugePagesFree != nil {
192+ metrics ["HugePages_Free" ] = float64 (* meminfo .HugePagesFree )
193+ }
194+ if meminfo .HugePagesRsvd != nil {
195+ metrics ["HugePages_Rsvd" ] = float64 (* meminfo .HugePagesRsvd )
196+ }
197+ if meminfo .HugePagesSurp != nil {
198+ metrics ["HugePages_Surp" ] = float64 (* meminfo .HugePagesSurp )
199+ }
200+ if meminfo .HugePagesTotal != nil {
201+ metrics ["HugePages_Total" ] = float64 (* meminfo .HugePagesTotal )
202+ }
203+
204+ return metrics , nil
104205}
0 commit comments