linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: KOSAKI Motohiro <kosaki.motohiro@gmail.com>
To: Anton Vorontsov <anton.vorontsov@linaro.org>
Cc: KOSAKI Motohiro <kosaki.motohiro@gmail.com>,
	Pekka Enberg <penberg@kernel.org>,
	Minchan Kim <minchan@kernel.org>,
	Leonid Moiseichuk <leonid.moiseichuk@nokia.com>,
	John Stultz <john.stultz@linaro.org>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	linaro-kernel@lists.linaro.org, patches@linaro.org,
	kernel-team@android.com
Subject: Re: [PATCH 3/3] vmevent: Implement special low-memory attribute
Date: Mon, 07 May 2012 15:19:50 -0400	[thread overview]
Message-ID: <4FA82056.2070706@gmail.com> (raw)
In-Reply-To: <20120507121527.GA19526@lizard>

(5/7/12 8:15 AM), Anton Vorontsov wrote:
> On Mon, May 07, 2012 at 04:26:00AM -0400, KOSAKI Motohiro wrote:
>>>> If we'll give up on "1." (Pekka, ping), then we need to solve "2."
>>>> in a sane way: we'll have to add a 'NR_FILE_PAGES - NR_SHMEM -
>>>> <todo-locked-file-pages>' attribute, and give it a name.
>>>
>>> Well, no, we can't give up on (1) completely. That'd mean that
>>> eventually we'd need to change the ABI and break userspace. The
>>> difference between exposing internal details and reasonable
>>> abstractions is by no means black and white.
>>>
>>> AFAICT, RECLAIMABLE_CACHE_PAGES is a reasonable thing to support. Can
>>> anyone come up with a reason why we couldn't do that in the future?
>>
>> It can. but the problem is, that is completely useless.
>
> Surely it is useful. Could be not ideal, but you can't say that
> it is completely useless.

Why? It doesn't work.



>> Because of, 1) dirty pages writing-out is sometimes very slow and
>
> I don't see it as a unresolvable problem: we can exclude dirty pages,
> that's a nice idea actually.
>
> Easily reclaimable cache pages = file_pages - shmem - locked pages
> - dirty pages.
>
> The amount of dirty pages is configurable, which is also great.

You don't understand the issue. The point is NOT a formula. The problem
is, dirty and non-dirty pages aren't isolated in our kernel. Then, kernel
start to get stuck  far before non-dirty pages become empty. Lie notification
always useless.


> Even more, we may introduce two attributes:
>
> RECLAIMABLE_CACHE_PAGES and
> RECLAIMABLE_CACHE_PAGES_NOIO (which excludes dirty pages).
>
> This makes ABI detached from the mm internals and still keeps a
> defined meaning of the attributes.

Collection of craps are also crap. If you want to improve userland
notification, you should join VM improvement activity. You shouldn't
think nobody except you haven't think userland notification feature.

The problem is, Any current kernel vm statistics were not created for
such purpose and don't fit.

Even though, some inaccurate and incorrect statistics fit _your_ usecase,
they definitely don't fit other. And their people think it is bug.


>> 2) libc and some important library's pages are critical important
>> for running a system even though it is clean and reclaimable. In other
>> word, kernel don't have an info then can't expose it.
>
> First off, I guess LRU would try to keep important/most used pages in
> the cache, as we try to never fully drain page cache to the zero mark.

Yes, what do you want say?


> Secondly, if we're really low on memory (which low memory notifications
> help to prevent) and kernel decided to throw libc's pages out of the
> cache, you'll get cache miss and kernel will have to read it back. Well,
> sometimes cache misses do happen, that's life. And if somebody really
> don't want this for the essential parts of the system, one have to
> mlock it (which eliminates your "kernel don't have an info" argument).

First off, "low memory" is very poor definition and we must not use it.
It is multiple meanings. 1) System free memory is low. Some embedded have userland
oom killer and they want to know _system_ status. 2) available memory is low.
This is different from (1) when using NUMA, memcg or cpusets. And in nowadays,
almost all x86 box have numa. This is userful for swap avoidance activity if
we can implement correctly.

Secondly, we can't assume someone mlock to libc. Because of, Linux is generic
purpose kernel. As far as you continue to talk about only user usecase, we can't
agree you. "Users may have a workaround" don't make excuse to accept broken patch.




> Btw, if you have any better strategy on helping userspace to define
> 'low memory' conditions, I'll readily try to implement it.




  reply	other threads:[~2012-05-07 19:19 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-01 13:24 [PATCH 0/3] vmevent: Implement 'low memory' attribute Anton Vorontsov
2012-05-01 13:25 ` [PATCH 1/3] vmevent: Implement equal-to attribute state Anton Vorontsov
2012-05-01 13:25 ` [PATCH 2/3] vmevent: Pass attr argument to sampling functions Anton Vorontsov
2012-05-01 13:26 ` [PATCH 3/3] vmevent: Implement special low-memory attribute Anton Vorontsov
2012-05-03 10:33   ` Pekka Enberg
2012-05-04  4:26   ` Minchan Kim
2012-05-04  7:38     ` Anton Vorontsov
2012-05-07  7:14       ` Pekka Enberg
2012-05-07  8:26         ` KOSAKI Motohiro
2012-05-07 12:15           ` Anton Vorontsov
2012-05-07 19:19             ` KOSAKI Motohiro [this message]
2012-05-08  0:31               ` Anton Vorontsov
2012-05-08  5:20               ` Pekka Enberg
2012-05-08  5:42                 ` KOSAKI Motohiro
2012-05-08  5:53                   ` Pekka Enberg
2012-05-08  7:11                     ` KOSAKI Motohiro
2012-05-08  7:36                       ` Pekka Enberg
2012-05-08  7:50                         ` KOSAKI Motohiro
2012-05-08  8:03                           ` Pekka Enberg
2012-05-08  9:15                             ` leonid.moiseichuk
2012-05-08  9:19                               ` Pekka Enberg
2012-05-08 10:38                                 ` leonid.moiseichuk
2012-06-01 12:21                         ` [PATCH 0/5] Some vmevent fixes Anton Vorontsov
2012-06-01 12:24                           ` [PATCH 1/5] vmstat: Implement refresh_vm_stats() Anton Vorontsov
2012-06-05 14:30                             ` Christoph Lameter
2012-06-08  3:17                             ` KOSAKI Motohiro
2012-06-01 12:24                           ` [PATCH 2/5] vmevent: Convert from deferred timer to deferred work Anton Vorontsov
2012-06-08  3:25                             ` KOSAKI Motohiro
2012-06-08  6:58                               ` Anton Vorontsov
2012-06-08  7:03                                 ` Pekka Enberg
2012-06-08  8:07                                   ` Anton Vorontsov
2012-06-08  7:05                                 ` leonid.moiseichuk
2012-06-08  7:10                                   ` KOSAKI Motohiro
2012-06-08  7:18                                     ` leonid.moiseichuk
2012-06-08  7:23                                       ` KOSAKI Motohiro
2012-06-08  7:28                                         ` leonid.moiseichuk
2012-06-08  7:33                                           ` KOSAKI Motohiro
2012-06-08  7:49                                             ` leonid.moiseichuk
2012-06-08  7:58                                   ` Anton Vorontsov
2012-06-08  8:16                                     ` leonid.moiseichuk
2012-06-08  8:41                                       ` Anton Vorontsov
2012-06-08  8:57                                         ` leonid.moiseichuk
2012-06-08 10:35                                           ` Anton Vorontsov
2012-06-08 11:03                                             ` leonid.moiseichuk
2012-06-08 12:13                                               ` Anton Vorontsov
2012-06-08 12:25                                                 ` leonid.moiseichuk
2012-06-01 12:24                           ` [PATCH 3/5] vmevent: Refresh vmstats before sampling Anton Vorontsov
2012-06-05 14:36                             ` Christoph Lameter
2012-06-01 12:24                           ` [PATCH 4/5] vmevent: Hide meaningful names from the user-visible header Anton Vorontsov
2012-06-01 12:24                           ` [PATCH 5/5] vmevent: Rename one-shot mode to edge trigger mode Anton Vorontsov
2012-06-03 18:26                           ` [PATCH 0/5] Some vmevent fixes Pekka Enberg
2012-06-04  8:45                             ` Minchan Kim
2012-06-04  9:20                               ` Pekka Enberg
2012-06-04 12:23                                 ` Minchan Kim
2012-06-04 11:38                               ` Anton Vorontsov
2012-06-04 12:17                                 ` Minchan Kim
2012-06-04 13:35                                   ` Anton Vorontsov
2012-06-05  7:53                                     ` Pekka Enberg
2012-06-05  8:00                                       ` Minchan Kim
2012-06-05  8:01                                         ` Pekka Enberg
2012-06-05  8:16                                           ` leonid.moiseichuk
2012-06-05  8:27                                             ` Minchan Kim
2012-06-08  3:35                                             ` KOSAKI Motohiro
2012-06-04 20:05                                 ` KOSAKI Motohiro
2012-06-04 22:39                                   ` Anton Vorontsov
2012-06-08  3:45                                     ` KOSAKI Motohiro
2012-06-08  6:57                                       ` Pekka Enberg
2012-06-05  7:47                                   ` Pekka Enberg
2012-06-05  8:39                                     ` Anton Vorontsov
2012-06-07  2:41                                       ` Minchan Kim
2012-06-08  7:49                                         ` Anton Vorontsov
2012-06-08  8:43                                           ` Minchan Kim
2012-06-08  8:48                                             ` Pekka Enberg
2012-06-08  9:12                                               ` leonid.moiseichuk
2012-06-08  9:45                                                 ` Anton Vorontsov
2012-06-08 10:42                                                   ` Minchan Kim
2012-06-08 11:14                                                     ` Anton Vorontsov
2012-06-11  4:50                                                       ` Minchan Kim
2012-06-05  7:52                                   ` Pekka Enberg
2012-06-08  3:55                                     ` KOSAKI Motohiro
2012-06-08  6:54                                       ` Pekka Enberg
2012-06-08  6:57                                         ` KOSAKI Motohiro
2012-06-08  6:59                                           ` Pekka Enberg
2012-06-04 19:50                               ` KOSAKI Motohiro
2012-05-08  8:32                       ` [PATCH 3/3] vmevent: Implement special low-memory attribute Minchan Kim
2012-05-08  9:27                         ` Pekka Enberg
2012-06-05 14:40                       ` Christoph Lameter
2012-05-08  6:58                   ` Anton Vorontsov
2012-05-08  7:16                     ` KOSAKI Motohiro
2012-05-08  8:13                       ` Anton Vorontsov
2012-05-08  8:21                         ` Anton Vorontsov
2012-05-03  8:10 ` [PATCH 0/3] vmevent: Implement 'low memory' attribute Pekka Enberg
2012-05-03  9:44   ` Anton Vorontsov
2012-05-03 10:54 ` Pekka Enberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4FA82056.2070706@gmail.com \
    --to=kosaki.motohiro@gmail.com \
    --cc=anton.vorontsov@linaro.org \
    --cc=john.stultz@linaro.org \
    --cc=kernel-team@android.com \
    --cc=leonid.moiseichuk@nokia.com \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=minchan@kernel.org \
    --cc=patches@linaro.org \
    --cc=penberg@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).