Hi Michal
Thanks for your kindly support.
I got a device, and dump the /proc/meminfo and /proc/vmstat files, they are the Linux standard proc files.
I found that: Cached = 339880 KB, but nr_free_pages=14675*4 = 58700KB and nr_shmem = 508*4=2032KB
nr_shmem is just a little memory, and nr free pages + nr_shmem is largely less than Cached.
So why nr_free_pages is largely less than Cached? Thank you.
$ adb shell cat /proc/meminfo
MemTotal: 1366904 kB
MemFree: 59040 kB
Buffers: 54600 kB
Cached: 339880 kB
$ adb shell cat /proc/vmstat
nr_free_pages 14675
nr_inactive_anon 73520
nr_shmem 508
Thanks
Zhiyuan zhu
-----邮件原件-----
发件人: Michal Hocko [mailto:mhocko@suse.cz]
发送时间: 2014年11月20日 17:58
收件人: Zhiyuan Zhu(朱志遠)
抄送: hannes@cmpxchg.org; Future Zhou(周未來); Rachel Zhang(張瑩); bsingharora@gmail.com; kamezawa.hiroyu@jp.fujitsu.com; cgroups@vger.kernel.org; linux-mm@kvack.org; Greg KH
主题: Re: low memory killer
[Adding Greg to CC as the current maintainer of the staging and dropping majordomo]
I am not Johannes but,
On Thu 20-11-14 09:26:05, zhiyuan_zhu@htc.com wrote:
> hi Johannes
>
> My name is Zhiyuan zhu, an android development engineer in htc.
> We encounter a lowmemorykiller’s problem.
> Coluld you help to kindly support? Thank you.
Please note that lowmemory killer is not part of Memory cgroup resource controller. It is a staging driver which is supposed to be supported by support by Android people. I am not sure about the current state but the implementation and some concepts used to be broken in many ways.
Anyway I think the driver should be dropped from the tree or try to get promoted to the regular tree _after_ it passes a proper review.
> Problem describtion:
> We noticed that gap of dumping cached value from “lowmemorykiller”
> and “/proc/meminfo/” are different apparently. Like example below,
> lowmemorykiller showed cache only has 72460kB while launcher was
> killed, but /proc/meminfo showed cached still has 142448kB. Please
> check why the gap of cache value between lowmemorykill and
> /proc/meminfo are huge.
lowmem_scan prints:
other_file = global_page_state(NR_FILE_PAGES) - global_page_state(NR_SHMEM) - total_swapcache_pages();
as per meminfo_proc_show(), Cached value corresponds to:
cached = global_page_state(NR_FILE_PAGES) - total_swapcache_pages() - i.bufferram;
So those two values are quite different. E.g. lowmem killer ignores shmem pages. This can be considerable amount of memory.
> kernel_e0058_0001_20141107_204711_LC4ABYA00200_htc_a31ul_0.54.999.1.txt at LC4ABYA00200
> 6 161030.084144 2014-11-07 21:44:53.304 lowmemorykiller: Killing 'om.htc.launcher' (4486), adj 294,
> 6 161030.084144 2014-11-07 21:44:53.304 to free 47856kB on behalf of 'kworker/u8:14' (20594) because
> 6 161030.084144 2014-11-07 21:44:53.304 cache 72460kB is below limit 73728kB for oom_score_adj 235
> 6 161030.084144 2014-11-07 21:44:53.304 Free memory is 51304kB above reserved
> 4 161030.084797 2014-11-07 21:44:53.304 MemFree: 55676 kB
> 4 161030.084797 2014-11-07 21:44:53.304 Buffers: 1240 kB
> 4 161030.084797 2014-11-07 21:44:53.304 Cached: 142448 kB
I do not see any code in drivers/staging/android/lowmemorykiller.c that would print such an information in the current tree.
> Lowmemorykiller calculated cache value is 72460kB, but the
> /proc/meminfo’s cached is 142448 kB
>
> After checked the code, I found that:
> Lowmemorykiller’s memory information is comes from /proc/zoneinfo
> file’s nr_file_pages So I want to know how different the
> /proc/zoneinfo file’s nr_file_pages and /proc/meminfo file’s Cached ?
See the above.
--
Michal Hocko
SUSE Labs
| CONFIDENTIALITY NOTE : The information in this e-mail is confidential and privileged; it is intended for use solely by the individual or entity named as the recipient hereof. Disclosure, copying, distribution, or use of the contents of this e-mail by persons other than the intended recipient is strictly prohibited and may violate applicable laws. If you have received this e-mail in error, please delete the original message and notify us by return email or collect call immediately. Thank you. HTC Corporation |