From: KOSAKI Motohiro <kosaki.motohiro@gmail.com>
To: Anton Vorontsov <cbouatmailru@gmail.com>
Cc: Minchan Kim <minchan@kernel.org>,
Pekka Enberg <penberg@kernel.org>,
KOSAKI Motohiro <kosaki.motohiro@gmail.com>,
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 0/5] Some vmevent fixes...
Date: Mon, 04 Jun 2012 16:05:05 -0400 [thread overview]
Message-ID: <4FCD14F1.1030105@gmail.com> (raw)
In-Reply-To: <20120604113811.GA4291@lizard>
>> Anton, I expect you already investigated android low memory killer so maybe you know pros and cons of each solution.
>> Could you convince us "why we need vmevent" and "why can't android LMK do it?"
>
> Note that 1) and 2) are not problems per se, it's just implementation
> details, easy stuff. Vmevent is basically an ABI/API, and I didn't
> hear anybody who would object to vmevent ABI idea itself. More than
> this, nobody stop us from implementing in-kernel vmevent API, and
> make Android Lowmemory killer use it, if we want to.
I never agree "it's mere ABI" discussion. Until the implementation is ugly,
I never agree the ABI even if syscall interface is very clean.
> The real problem is not with vmevent. Today there are two real problems:
>
> a) Gathering proper statistics from the kernel. Both cgroups and vmstat
> have issues. Android lowmemory killer has the same problems w/ the
> statistics as vmevent, it uses vmstat, so by no means Android
> low memory killer is better or easier in this regard.
> (And cgroups has issues w/ slab accounting, plus some folks don't
> want memcg at all, since it has runtime and memory-wise costs.)
Right. android lowmemory killer is also buggy.
> b) Interpreting this statistics. We can't provide one, universal
> "low memory" definition that would work for everybody.
> (Btw, your "levels" based low memory grading actually sounds
> the same as mine RECLAIMABLE_CACHE_PAGES and
> RECLAIMABLE_CACHE_PAGES_NOIO idea, i.e.
> http://lkml.indiana.edu/hypermail/linux/kernel/1205.0/02751.html
> so personally I like the idea of level-based approach, based
> on available memory *cost*.)
>
> So, you see, all these issues are valid for vmevent, cgroups and
> android low memory killer.
>
>> KOSAKI, AFAIRC, you are a person who hates android low memory killer.
>> Why do you hate it? If it solve problems I mentioned, do you have a concern, still?
>> If so, please, list up.
>>
>> Android low memory killer is proved solution for a long time, at least embedded area(So many android phone already have used it) so I think improving it makes sense to me rather than inventing new wheel.
>
> Yes, nobody throws Android lowmemory killer away. And recently I fixed
> a bunch of issues in its tasks traversing and killing code. Now it's
> just time to "fix" statistics gathering and interpretation issues,
> and I see vmevent as a good way to do just that, and then we
> can either turn Android lowmemory killer driver to use the vmevent
> in-kernel API (so it will become just a "glue" between notifications
> and killing functions), or use userland daemon.
Huh? No? android lowmem killer is a "killer". it doesn't make any notification,
it only kill memory hogging process. I don't think we can merge them.
> Note that memcg has notifications as well, so it's another proof that
> there is a demand for this stuff outside of embedded world, and going
> with ad-hoc, custom "low memory killer" is simple and tempting approach,
> but it doesn't solve any real problems.
Wrong.
memcg notification notify the event to _another_ mem cgroup's process. Then, it can
avoid a notified process can't work well by swap thrashing. Its feature only share a
weakness of vmevent api.
>> Frankly speaking, I don't know vmevent's other use cases except low memory notification
>
> I won't speak for realistic use-cases, but that is what comes to
> mind:
>
> - DB can grow its caches/in-memory indexes infinitely, and start dropping
> them on demand (based on internal LRU list, for example). No more
> guessed/static configuration for DB daemons?
They uses direct-io for fine grained cache control.
> - Assuming VPS hosting w/ dynamic resources management, notifications
> would be useful to readjust resources?
How do they readjust? Now kvm/xen use balloon driver for dynamic resource
adjustment. AND it work more fine than vmevent because it doesn't route
userspace.
> - On desktops, apps can drop their caches on demand if they want to
> and can avoid swap activity?
In this case, fallocate(VOLATILE) is work more better.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: KOSAKI Motohiro <kosaki.motohiro@gmail.com>
To: Anton Vorontsov <cbouatmailru@gmail.com>
Cc: Minchan Kim <minchan@kernel.org>,
Pekka Enberg <penberg@kernel.org>,
KOSAKI Motohiro <kosaki.motohiro@gmail.com>,
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 0/5] Some vmevent fixes...
Date: Mon, 04 Jun 2012 16:05:05 -0400 [thread overview]
Message-ID: <4FCD14F1.1030105@gmail.com> (raw)
In-Reply-To: <20120604113811.GA4291@lizard>
>> Anton, I expect you already investigated android low memory killer so maybe you know pros and cons of each solution.
>> Could you convince us "why we need vmevent" and "why can't android LMK do it?"
>
> Note that 1) and 2) are not problems per se, it's just implementation
> details, easy stuff. Vmevent is basically an ABI/API, and I didn't
> hear anybody who would object to vmevent ABI idea itself. More than
> this, nobody stop us from implementing in-kernel vmevent API, and
> make Android Lowmemory killer use it, if we want to.
I never agree "it's mere ABI" discussion. Until the implementation is ugly,
I never agree the ABI even if syscall interface is very clean.
> The real problem is not with vmevent. Today there are two real problems:
>
> a) Gathering proper statistics from the kernel. Both cgroups and vmstat
> have issues. Android lowmemory killer has the same problems w/ the
> statistics as vmevent, it uses vmstat, so by no means Android
> low memory killer is better or easier in this regard.
> (And cgroups has issues w/ slab accounting, plus some folks don't
> want memcg at all, since it has runtime and memory-wise costs.)
Right. android lowmemory killer is also buggy.
> b) Interpreting this statistics. We can't provide one, universal
> "low memory" definition that would work for everybody.
> (Btw, your "levels" based low memory grading actually sounds
> the same as mine RECLAIMABLE_CACHE_PAGES and
> RECLAIMABLE_CACHE_PAGES_NOIO idea, i.e.
> http://lkml.indiana.edu/hypermail/linux/kernel/1205.0/02751.html
> so personally I like the idea of level-based approach, based
> on available memory *cost*.)
>
> So, you see, all these issues are valid for vmevent, cgroups and
> android low memory killer.
>
>> KOSAKI, AFAIRC, you are a person who hates android low memory killer.
>> Why do you hate it? If it solve problems I mentioned, do you have a concern, still?
>> If so, please, list up.
>>
>> Android low memory killer is proved solution for a long time, at least embedded area(So many android phone already have used it) so I think improving it makes sense to me rather than inventing new wheel.
>
> Yes, nobody throws Android lowmemory killer away. And recently I fixed
> a bunch of issues in its tasks traversing and killing code. Now it's
> just time to "fix" statistics gathering and interpretation issues,
> and I see vmevent as a good way to do just that, and then we
> can either turn Android lowmemory killer driver to use the vmevent
> in-kernel API (so it will become just a "glue" between notifications
> and killing functions), or use userland daemon.
Huh? No? android lowmem killer is a "killer". it doesn't make any notification,
it only kill memory hogging process. I don't think we can merge them.
> Note that memcg has notifications as well, so it's another proof that
> there is a demand for this stuff outside of embedded world, and going
> with ad-hoc, custom "low memory killer" is simple and tempting approach,
> but it doesn't solve any real problems.
Wrong.
memcg notification notify the event to _another_ mem cgroup's process. Then, it can
avoid a notified process can't work well by swap thrashing. Its feature only share a
weakness of vmevent api.
>> Frankly speaking, I don't know vmevent's other use cases except low memory notification
>
> I won't speak for realistic use-cases, but that is what comes to
> mind:
>
> - DB can grow its caches/in-memory indexes infinitely, and start dropping
> them on demand (based on internal LRU list, for example). No more
> guessed/static configuration for DB daemons?
They uses direct-io for fine grained cache control.
> - Assuming VPS hosting w/ dynamic resources management, notifications
> would be useful to readjust resources?
How do they readjust? Now kvm/xen use balloon driver for dynamic resource
adjustment. AND it work more fine than vmevent because it doesn't route
userspace.
> - On desktops, apps can drop their caches on demand if they want to
> and can avoid swap activity?
In this case, fallocate(VOLATILE) is work more better.
next prev parent reply other threads:[~2012-06-04 20:05 UTC|newest]
Thread overview: 188+ 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:24 ` Anton Vorontsov
2012-05-01 13:25 ` [PATCH 1/3] vmevent: Implement equal-to attribute state Anton Vorontsov
2012-05-01 13:25 ` Anton Vorontsov
2012-05-01 13:25 ` [PATCH 2/3] vmevent: Pass attr argument to sampling functions Anton Vorontsov
2012-05-01 13:25 ` Anton Vorontsov
2012-05-01 13:26 ` [PATCH 3/3] vmevent: Implement special low-memory attribute Anton Vorontsov
2012-05-01 13:26 ` Anton Vorontsov
2012-05-03 10:33 ` Pekka Enberg
2012-05-03 10:33 ` Pekka Enberg
2012-05-04 4:26 ` Minchan Kim
2012-05-04 4:26 ` Minchan Kim
2012-05-04 7:38 ` Anton Vorontsov
2012-05-04 7:38 ` Anton Vorontsov
2012-05-07 7:14 ` Pekka Enberg
2012-05-07 7:14 ` Pekka Enberg
2012-05-07 8:26 ` KOSAKI Motohiro
2012-05-07 8:26 ` KOSAKI Motohiro
2012-05-07 12:15 ` Anton Vorontsov
2012-05-07 12:15 ` Anton Vorontsov
2012-05-07 19:19 ` KOSAKI Motohiro
2012-05-07 19:19 ` KOSAKI Motohiro
2012-05-08 0:31 ` Anton Vorontsov
2012-05-08 0:31 ` Anton Vorontsov
2012-05-08 5:20 ` Pekka Enberg
2012-05-08 5:20 ` Pekka Enberg
2012-05-08 5:42 ` KOSAKI Motohiro
2012-05-08 5:42 ` KOSAKI Motohiro
2012-05-08 5:53 ` Pekka Enberg
2012-05-08 5:53 ` Pekka Enberg
2012-05-08 7:11 ` KOSAKI Motohiro
2012-05-08 7:11 ` KOSAKI Motohiro
2012-05-08 7:36 ` Pekka Enberg
2012-05-08 7:36 ` Pekka Enberg
2012-05-08 7:50 ` KOSAKI Motohiro
2012-05-08 7:50 ` KOSAKI Motohiro
2012-05-08 8:03 ` Pekka Enberg
2012-05-08 8:03 ` Pekka Enberg
2012-05-08 9:15 ` leonid.moiseichuk
2012-05-08 9:15 ` leonid.moiseichuk
2012-05-08 9:19 ` Pekka Enberg
2012-05-08 9:19 ` Pekka Enberg
2012-05-08 10:38 ` leonid.moiseichuk
2012-05-08 10:38 ` leonid.moiseichuk
2012-06-01 12:21 ` [PATCH 0/5] Some vmevent fixes Anton Vorontsov
2012-06-01 12:21 ` Anton Vorontsov
2012-06-01 12:24 ` [PATCH 1/5] vmstat: Implement refresh_vm_stats() Anton Vorontsov
2012-06-01 12:24 ` Anton Vorontsov
2012-06-05 14:30 ` Christoph Lameter
2012-06-05 14:30 ` Christoph Lameter
2012-06-08 3:17 ` KOSAKI Motohiro
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-01 12:24 ` Anton Vorontsov
2012-06-08 3:25 ` KOSAKI Motohiro
2012-06-08 3:25 ` KOSAKI Motohiro
2012-06-08 6:58 ` Anton Vorontsov
2012-06-08 6:58 ` Anton Vorontsov
2012-06-08 7:03 ` Pekka Enberg
2012-06-08 7:03 ` Pekka Enberg
2012-06-08 8:07 ` Anton Vorontsov
2012-06-08 8:07 ` Anton Vorontsov
2012-06-08 7:05 ` leonid.moiseichuk
2012-06-08 7:05 ` leonid.moiseichuk
2012-06-08 7:10 ` KOSAKI Motohiro
2012-06-08 7:10 ` KOSAKI Motohiro
2012-06-08 7:18 ` leonid.moiseichuk
2012-06-08 7:18 ` leonid.moiseichuk
2012-06-08 7:23 ` KOSAKI Motohiro
2012-06-08 7:23 ` KOSAKI Motohiro
2012-06-08 7:28 ` leonid.moiseichuk
2012-06-08 7:28 ` leonid.moiseichuk
2012-06-08 7:33 ` KOSAKI Motohiro
2012-06-08 7:33 ` KOSAKI Motohiro
2012-06-08 7:49 ` leonid.moiseichuk
2012-06-08 7:49 ` leonid.moiseichuk
2012-06-08 7:58 ` Anton Vorontsov
2012-06-08 7:58 ` Anton Vorontsov
2012-06-08 8:16 ` leonid.moiseichuk
2012-06-08 8:16 ` leonid.moiseichuk
2012-06-08 8:41 ` Anton Vorontsov
2012-06-08 8:41 ` Anton Vorontsov
2012-06-08 8:57 ` leonid.moiseichuk
2012-06-08 8:57 ` leonid.moiseichuk
2012-06-08 10:35 ` Anton Vorontsov
2012-06-08 10:35 ` Anton Vorontsov
2012-06-08 11:03 ` leonid.moiseichuk
2012-06-08 11:03 ` leonid.moiseichuk
2012-06-08 12:13 ` Anton Vorontsov
2012-06-08 12:13 ` Anton Vorontsov
2012-06-08 12:25 ` leonid.moiseichuk
2012-06-08 12:25 ` leonid.moiseichuk
2012-06-01 12:24 ` [PATCH 3/5] vmevent: Refresh vmstats before sampling Anton Vorontsov
2012-06-01 12:24 ` Anton Vorontsov
2012-06-05 14:36 ` Christoph Lameter
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 ` Anton Vorontsov
2012-06-01 12:24 ` [PATCH 5/5] vmevent: Rename one-shot mode to edge trigger mode Anton Vorontsov
2012-06-01 12:24 ` Anton Vorontsov
2012-06-03 18:26 ` [PATCH 0/5] Some vmevent fixes Pekka Enberg
2012-06-03 18:26 ` Pekka Enberg
2012-06-04 8:45 ` Minchan Kim
2012-06-04 8:45 ` Minchan Kim
2012-06-04 9:20 ` Pekka Enberg
2012-06-04 9:20 ` Pekka Enberg
2012-06-04 12:23 ` Minchan Kim
2012-06-04 12:23 ` Minchan Kim
2012-06-04 11:38 ` Anton Vorontsov
2012-06-04 11:38 ` Anton Vorontsov
2012-06-04 12:17 ` Minchan Kim
2012-06-04 12:17 ` Minchan Kim
2012-06-04 13:35 ` Anton Vorontsov
2012-06-04 13:35 ` Anton Vorontsov
2012-06-05 7:53 ` Pekka Enberg
2012-06-05 7:53 ` Pekka Enberg
2012-06-05 8:00 ` Minchan Kim
2012-06-05 8:00 ` Minchan Kim
2012-06-05 8:01 ` Pekka Enberg
2012-06-05 8:01 ` Pekka Enberg
2012-06-05 8:16 ` leonid.moiseichuk
2012-06-05 8:16 ` leonid.moiseichuk
2012-06-05 8:27 ` Minchan Kim
2012-06-05 8:27 ` Minchan Kim
2012-06-08 3:35 ` KOSAKI Motohiro
2012-06-08 3:35 ` KOSAKI Motohiro
2012-06-04 20:05 ` KOSAKI Motohiro [this message]
2012-06-04 20:05 ` KOSAKI Motohiro
2012-06-04 22:39 ` Anton Vorontsov
2012-06-04 22:39 ` Anton Vorontsov
2012-06-08 3:45 ` KOSAKI Motohiro
2012-06-08 3:45 ` KOSAKI Motohiro
2012-06-08 6:57 ` Pekka Enberg
2012-06-08 6:57 ` Pekka Enberg
2012-06-05 7:47 ` Pekka Enberg
2012-06-05 7:47 ` Pekka Enberg
2012-06-05 8:39 ` Anton Vorontsov
2012-06-05 8:39 ` Anton Vorontsov
2012-06-07 2:41 ` Minchan Kim
2012-06-07 2:41 ` Minchan Kim
2012-06-08 7:49 ` Anton Vorontsov
2012-06-08 7:49 ` Anton Vorontsov
2012-06-08 8:43 ` Minchan Kim
2012-06-08 8:43 ` Minchan Kim
2012-06-08 8:48 ` Pekka Enberg
2012-06-08 8:48 ` Pekka Enberg
2012-06-08 9:12 ` leonid.moiseichuk
2012-06-08 9:12 ` leonid.moiseichuk
2012-06-08 9:45 ` Anton Vorontsov
2012-06-08 9:45 ` Anton Vorontsov
2012-06-08 10:42 ` Minchan Kim
2012-06-08 10:42 ` Minchan Kim
2012-06-08 11:14 ` Anton Vorontsov
2012-06-08 11:14 ` Anton Vorontsov
2012-06-11 4:50 ` Minchan Kim
2012-06-11 4:50 ` Minchan Kim
2012-06-05 7:52 ` Pekka Enberg
2012-06-05 7:52 ` Pekka Enberg
2012-06-08 3:55 ` KOSAKI Motohiro
2012-06-08 3:55 ` KOSAKI Motohiro
2012-06-08 6:54 ` Pekka Enberg
2012-06-08 6:54 ` Pekka Enberg
2012-06-08 6:57 ` KOSAKI Motohiro
2012-06-08 6:57 ` KOSAKI Motohiro
2012-06-08 6:59 ` Pekka Enberg
2012-06-08 6:59 ` Pekka Enberg
2012-06-04 19:50 ` KOSAKI Motohiro
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 8:32 ` Minchan Kim
2012-05-08 9:27 ` Pekka Enberg
2012-05-08 9:27 ` Pekka Enberg
2012-06-05 14:40 ` Christoph Lameter
2012-06-05 14:40 ` Christoph Lameter
2012-05-08 6:58 ` Anton Vorontsov
2012-05-08 6:58 ` Anton Vorontsov
2012-05-08 7:16 ` KOSAKI Motohiro
2012-05-08 7:16 ` KOSAKI Motohiro
2012-05-08 8:13 ` Anton Vorontsov
2012-05-08 8:13 ` Anton Vorontsov
2012-05-08 8:21 ` 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 8:10 ` Pekka Enberg
2012-05-03 9:44 ` Anton Vorontsov
2012-05-03 9:44 ` Anton Vorontsov
2012-05-03 10:54 ` Pekka Enberg
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=4FCD14F1.1030105@gmail.com \
--to=kosaki.motohiro@gmail.com \
--cc=cbouatmailru@gmail.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.