Re: [PATCH 3.2.0-rc1 0/3] Used Memory Meter pseudo-device andrelated changes in MM
From: Greg KH
Date: Wed Jan 04 2012 - 14:56:31 EST
On Wed, Jan 04, 2012 at 07:21:53PM +0200, Leonid Moiseichuk wrote:
> The main idea of Used Memory Meter (UMM) is to provide low-cost interface
> for user-space to notify about memory consumption using similar approach /proc/meminfo
> does but focusing only on "modified" pages which cannot be fogotten.
>
> The calculation formula in terms of meminfo looks the following:
> UsedMemory = (MemTotal - MemFree - Buffers - Cached - SwapCached) +
> (SwapTotal - SwapFree)
> It reflects well amount of system memory used in applications in heaps and shared pages.
>
> Previously (n770..n900) we had lowmem.c [1] which used LSM and did a lot other things,
> n9 implementation based on memcg [2] which has own problems, so the proposed variant
> I hope is the best one for n9:
> - Keeps connections from user space
> - When amount of modified pages reaches crossed pointed value for particular connection
> makes POLLIN and allow user-space app to read it and react
> - Economic as much as possible, so currently its operates if allocation higher than 487
> pages or last check happened 250 ms before
> Of course if no allocation happened then no activities performed, use-time
> must be not affected.
>
> Testing results:
> - Checkpatch produced 0 warning
> - Sparse does not produce warnings
> - One check costs ~20 us or less (could be checked with probe=1 insmod)
> - One connection costs 20 bytes in kernel-space (see observer structure) for 32-bit variant
> - For 10K connections poll update in requested in ~10ms, but for practically device expected
> to will have about 10 connections (like n9 has now).
>
> Known weak points which I do not know how to fix but will if you have a brillian idea:
> - Having hook in MM is nasty but MM/shrinker cannot be used there and LSM even worse idea
> - If I made
> $cat /dev/used_memory
> it is produced lines in non-stop mode. Adding position check in umm_read seems doesn not help,
> so "head -1 /dev/used_memory" should be used if you need to quick check
> - Format of output is USED_PAGES:AVAILABLE_PAGES, primitive but enough for tasks module does
>
> Tested on ARM, x86-32 and x86-64 with and without CONFIG_SWAP. Seems works in all combinations.
> Sorry for wide distributions but list of names were produced by scripts/get_maintainer.pl
How does this compare with the lowmemorykiller.c driver from the android
developers that is currently in the linux-next tree?
thanks,
greg k-h
--
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/