lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 29 Jul 2015 13:56:35 +0200
From:	Jerome Marchand <jmarchan@...hat.com>
To:	Minchan Kim <minchan@...nel.org>
CC:	Andrew Morton <akpm@...ux-foundation.org>, linux-mm@...ck.org,
	linux-kernel@...r.kernel.org, Hugh Dickins <hughd@...gle.com>,
	Bongkyu Kim <bongkyu.kim@....com>,
	Sergey Senozhatsky <sergey.senozhatsky.work@...il.com>,
	Jonathan Corbet <corbet@....net>
Subject: Re: [PATCH v2] mm: show proportional swap share of the mapping

On 07/29/2015 12:30 PM, Minchan Kim wrote:
> Hi Jerome,
> 
> On Wed, Jul 29, 2015 at 10:33:53AM +0200, Jerome Marchand wrote:
>> On 06/15/2015 03:06 PM, Minchan Kim wrote:
>>> We want to know per-process workingset size for smart memory management
>>> on userland and we use swap(ex, zram) heavily to maximize memory efficiency
>>> so workingset includes swap as well as RSS.
>>>
>>> On such system, if there are lots of shared anonymous pages, it's
>>> really hard to figure out exactly how many each process consumes
>>> memory(ie, rss + wap) if the system has lots of shared anonymous
>>> memory(e.g, android).
>>>
>>> This patch introduces SwapPss field on /proc/<pid>/smaps so we can get
>>> more exact workingset size per process.
>>>
>>> Bongkyu tested it. Result is below.
>>>
>>> 1. 50M used swap
>>> SwapTotal: 461976 kB
>>> SwapFree: 411192 kB
>>>
>>> $ adb shell cat /proc/*/smaps | grep "SwapPss:" | awk '{sum += $2} END {print sum}';
>>> 48236
>>> $ adb shell cat /proc/*/smaps | grep "Swap:" | awk '{sum += $2} END {print sum}';
>>> 141184
>>
>> Hi Minchan,
>>
>> I just found out about this patch. What kind of shared memory is that?
>> Since it's android, I'm inclined to think something specific like
>> ashmem. I'm asking because this patch won't help for more common type of
>> shared memory. See my comment below.
> 
> It's normal heap of parent(IOW, MAP_ANON|MAP_PRIVATE memory which is share
>  by child processes).

Ok. I didn't imagine CoW pages would represent such a big share of
swapped out pages.

> 
>>
>>>
>>> 2. 240M used swap
>>> SwapTotal: 461976 kB
>>> SwapFree: 216808 kB
>>>
>>> $ adb shell cat /proc/*/smaps | grep "SwapPss:" | awk '{sum += $2} END {print sum}';
>>> 230315
>>> $ adb shell cat /proc/*/smaps | grep "Swap:" | awk '{sum += $2} END {print sum}';
>>> 1387744
>>>
>> snip
>>> diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
>>> index 6dee68d013ff..d537899f4b25 100644
>>> --- a/fs/proc/task_mmu.c
>>> +++ b/fs/proc/task_mmu.c
>>> @@ -446,6 +446,7 @@ struct mem_size_stats {
>>>  	unsigned long anonymous_thp;
>>>  	unsigned long swap;
>>>  	u64 pss;
>>> +	u64 swap_pss;
>>>  };
>>>  
>>>  static void smaps_account(struct mem_size_stats *mss, struct page *page,
>>> @@ -492,9 +493,20 @@ static void smaps_pte_entry(pte_t *pte, unsigned long addr,
>>>  	} else if (is_swap_pte(*pte)) {
>>
>> This won't work for sysV shm, tmpfs and MAP_SHARED | MAP_ANONYMOUS
>> mapping pages which are pte_none when paged out. They're currently not
>> accounted at all when in swap.
> 
> This patch doesn't handle those pages because we don't have supported
> thoses pages. IMHO, if someone need it, it should be another patch and
> he can contribute it in future.

Sure.

> 
> Thanks.
> 



Download attachment "signature.asc" of type "application/pgp-signature" (474 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ