Re: si_swapinfo export

From: George Shuklin
Date: Fri Sep 02 2011 - 20:51:47 EST


Well, in my personal case it is some 'memory pressure service' for virtual machines in xen environment.

It check about 1-2 times per second memory state and report it to management software outside VM. Right now this is userspace program, which reads /proc/meminfo and sends it via xenstore (interdomain communication system) to management domain. It works fine, but we need to do double int-str conversion (/proc/meminfo do itoa, our daemon sens this to control domain, daemon in control domain do atoi and math to get right memory value). This is very inefficient, especially when we talks about bunch of VM per host.

kernel module can do math internally with ints, not with strings (no conversion at all) - this will save pretty much time (my calculation is about one-two of CPU time per day for every virtualization host with about 50-100 active VMs.

The information I needs is amount of 'really free' memory. We calculate it as (roughly) as MemFree+Buffers+Cached+(SwapTotal-SwapFree), and our management system trying to keep this value within expected values (f.e. within interval 128-256Mb). This allows us to prevent VM's swapping and allow VM to push to swap really rare used pages (and their place actually used for caching).


On 02.09.2011 23:53, Valdis.Kletnieks@xxxxxx wrote:
On Fri, 02 Sep 2011 19:41:29 +0400, George Shuklin said:
Good day.

Why si_swapinfo (from include/linux/swap.h) is not marked as
EXPORT_SYMBOL_GPL? It's kinda hard to gain information about memory in
module.
Use case? What information exactly are you trying to get in the module, and
equally important, why? More likely, what you *actually* want isn't the
information, it's a new API (or using an existing one you didn't even know was
there) :)

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/