Re: [RFC][PATCH 1/2] Show quicklist at meminfo

From: Andrew Morton
Date: Wed Aug 20 2008 - 14:36:44 EST


On Wed, 20 Aug 2008 20:07:06 +0900
KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx> wrote:

> Now, Quicklist can spent several GB memory.
> So, if end user can't hou much spent memory, he misunderstand to memory leak happend.
>
>
> after this patch applied, /proc/meminfo output following.
>
> % cat /proc/meminfo
>
> MemTotal: 7701504 kB
> MemFree: 5159040 kB
> Buffers: 112960 kB
> Cached: 337536 kB
> SwapCached: 0 kB
> Active: 218944 kB
> Inactive: 350848 kB
> Active(anon): 120832 kB
> Inactive(anon): 0 kB
> Active(file): 98112 kB
> Inactive(file): 350848 kB
> Unevictable: 0 kB
> Mlocked: 0 kB
> SwapTotal: 2031488 kB
> SwapFree: 2031488 kB
> Dirty: 320 kB
> Writeback: 0 kB
> AnonPages: 119488 kB
> Mapped: 38528 kB
> Slab: 1595712 kB
> SReclaimable: 23744 kB
> SUnreclaim: 1571968 kB
> PageTables: 14336 kB
> NFS_Unstable: 0 kB
> Bounce: 0 kB
> WritebackTmp: 0 kB
> CommitLimit: 5882240 kB
> Committed_AS: 356672 kB
> VmallocTotal: 17592177655808 kB
> VmallocUsed: 29056 kB
> VmallocChunk: 17592177626304 kB
> Quicklists: 283776 kB
> HugePages_Total: 0
> HugePages_Free: 0
> HugePages_Rsvd: 0
> HugePages_Surp: 0
> Hugepagesize: 262144 kB
>
> ...
>
> K(committed),
> (unsigned long)VMALLOC_TOTAL >> 10,
> vmi.used >> 10,
> - vmi.largest_chunk >> 10
> + vmi.largest_chunk >> 10,
> + K(quicklist_total_size())
> );

quicklist_total_size() is racy against cpu hotplug. That's OK for
/proc/meminfo purposes (occasional transient inaccuracy?), but will it
crash? Not in the current implementation of per_cpu() afaict, but it
might crash if we ever teach cpu hotunplug to free up the percpu
resources.

I see no cpu hotplug handling in the quicklist code. Do we leak all
the hot-unplugged CPU's pages?

--
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/