trouble getting memory and swap info

Sten Spans sten at blinkenlights.nl
Wed Oct 27 17:20:19 PDT 2004


On Wed, 27 Oct 2004, Glenn Johnson wrote:

I am trying to get gkrellm2 working on DragonFlyBSD.  I got it to
compile and run but it does not report the memory or swap.  Well,
actually, it does report them, its just that the values are 0.  I used
the src/usr.bin/top/machine.c and the xsysinfo dfport as a guide.  I am
not at my DragonFly system at the moment but basically what I did was to
set the vmmeter and vmstats structures as defined in vmmeter.h and used
in top/machine.c, using sysctlbyname to get the information.  Is there
something else I need to do?
On fbsd4 and probably dragonfly a program needs
setgid kmem for certain memory statistics, which is
why top works and gkrellm doesn't.
kvm_open/kvm_getswapinfo have been fixed/changed in fbsd5.

#if FBSD4
	kd = kvm_open(NULL, NULL, NULL, O_RDONLY, "kvm_open");
#else
	kd = kvm_open("/dev/null", "/dev/null", "/dev/null", O_RDONLY, "kvm_open");
#endif
Memory statistics should be available in sysctl,
hw.availpages and vm.stats.vm.v_*, no perms needed.
I wouldn't use a "/proc" filesystems to "fix" this,
they may be great for shell, but C code gets quite messy
dealing with them. The fact that every "/proc" filesystem
in existence has had serious root holes doesn't help
either.
( /proc/meminfo has changed between linux 2.4 and 2.6,
  make sure you support each version :)
--
Sten Spans
"There is a crack in everything, that's how the light gets in."
Leonard Cohen - Anthem




More information about the Kernel mailing list