Date: Wed, 26 Jan 2022 00:56:01 +0300 From: Yuri <yuri@aetern.org> To: questions@freebsd.org Subject: Re: snmp oid for memory usage, vmstat -i and others Message-ID: <32b08d62-9ecc-37e9-738c-39e5ad1a1c1c@aetern.org> In-Reply-To: <5e9eb718-0472-fba1-0880-06f539e04790@otcnet.ru> References: <bd565507-019d-6fe9-6589-49413e5e1bb6@otcnet.ru> <0c8e1634-d4e2-2ecb-0af4-9f4eceab9124@aetern.org> <bf5d8bcb-45f7-6829-98f0-10b09e6f6048@aetern.org> <5e9eb718-0472-fba1-0880-06f539e04790@otcnet.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
Victor Gamov wrote: > Hi Yuri > > Thanks for your reply! > > So, I can find total memory via HOST-RESOURCES-MIB::hrMemorySize.0 > > But how to calculate used memory? I guess I need to find all > HOST-RESOURCES-MIB::hrStorageType = HOST-RESOURCES-TYPES::hrStorageRam > and then multiply corresponding hrStorageAllocationUnits * hrStorageSize > and sum all of them. > > Is it correct? If no one has any better ideas, here's a quick "fix" for bsnmpd to report physical memory instead (same as net-snmp does): https://github.com/yuripv/freebsd-src/commit/1aff8b31cfe7648667328dc3444d17eff58486e6 > On 25.01.2022 08:32, Yuri wrote: >> Yuri wrote: >>> Victor Gamov wrote: >>>> Hi All >>>> >>>> Some questions about bsnmpd. >>>> >>>> Is it possible to get memory usage via bsnmpd? When I tried to get >>>> something like "snmpget hrStorageDescr.1 hrStorageAllocationUnits.1 >>>> hrStorageSize.1 hrStorageUsed.1" then I've got this values: >>>> >>>> ===== >>>> HOST-RESOURCES-MIB::hrStorageDescr.1 = STRING: Real Memory Metrics >>>> HOST-RESOURCES-MIB::hrStorageAllocationUnits.1 = INTEGER: 4096 Bytes >>>> HOST-RESOURCES-MIB::hrStorageSize.1 = INTEGER: 391488 >>>> HOST-RESOURCES-MIB::hrStorageUsed.1 = INTEGER: 391252 >>>> ===== >>>> >>>> How I must process it to calculate actual memory usage for machine with >>>> 4GB RAM and without swap? >>>> >>>> ===== >>>> $ sysctl hw | egrep 'hw.(phys|user|real)' >>>> hw.physmem: 4243894272 >>>> hw.usermem: 3580182528 >>>> hw.realmem: 4294967296 >>>> ===== >>> >>> Values returned by bsnmpd look weird to me as well, so I looked into it >>> a bit. Excerpt from the snmp_hostres (as a standalone test case): >>> ---- >>> #include <sys/types.h> >>> #include <sys/sysctl.h> >>> #include <sys/vmmeter.h> >>> >>> #include <vm/vm_param.h> >>> >>> #include <err.h> >>> #include <stdio.h> >>> >>> static struct vmtotal mem_stats; >>> >>> int >>> main(void) >>> { >>> int mib[2] = { CTL_VM, VM_TOTAL }; >>> size_t len = sizeof(mem_stats); >>> >>> if (sysctl(mib, 2, &mem_stats, &len, NULL, 0) != 0) >>> err(1, "sysctl"); >>> >>> printf("real=%lu\n", mem_stats.t_rm); >>> >>> return (0); >>> } >>> ---- >>> output: >>> real=31632 >>> ---- >>> >>> Now the sysctl output: >>> ---- >>> $ sysctl vm.vmtotal >>> vm.vmtotal: >>> System wide totals computed every five seconds: (values in kilobytes) >>> =============================================== >>> Processes: (RUNQ: 1 Disk Wait: 0 Page Wait: 0 Sleep: 28) >>> Virtual Memory: (Total: 547240K Active: 542480K) >>> Real Memory: (Total: 126572K Active: 125600K) >>> Shared Virtual Memory: (Total: 4612K Active: 0K) >>> Shared Real Memory: (Total: 924K Active: 0K) >>> Free Memory: 3608396K >>> --- >>> I can't map the output to anything on the system (16G RAM, 16G swap) >>> except for the "Free Memory", it matches. >>> >>> 31632 ("real") * 4096 ("pagesize") matches the "Real Memory" in sysctl >>> output. Though to get anything resembling 16G, "real" needs to be >>> multiplied by 512 (K?). >>> >>> As a wild guess, it seems that the units used are wrong here, or I >>> simply don't understand the meaning of these values. >> >> Looking at sys/vmmeter.h, my assumptions above are wrong: >> >> uint64_t t_rm; /* total real memory in use */ >> >> But that does not include the "wired" (and other) pages, so I'm not sure >> about this metric usefulness. >> >> In any case, you have the following: >> >> HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 16734232 KBytes >> >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?32b08d62-9ecc-37e9-738c-39e5ad1a1c1c>