All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anton Vorontsov <anton.vorontsov@linaro.org>
To: leonid.moiseichuk@nokia.com
Cc: kosaki.motohiro@gmail.com, penberg@kernel.org,
	b.zolnierkie@samsung.com, 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 2/5] vmevent: Convert from deferred timer to deferred work
Date: Fri, 8 Jun 2012 05:13:34 -0700	[thread overview]
Message-ID: <20120608121334.GA20772@lizard> (raw)
In-Reply-To: <84FF21A720B0874AA94B46D76DB98269045F7C35@008-AM1MPN1-004.mgdnok.nokia.com>

On Fri, Jun 08, 2012 at 11:03:29AM +0000, leonid.moiseichuk@nokia.com wrote:
> > -----Original Message-----
> > From: ext Anton Vorontsov [mailto:cbouatmailru@gmail.com]
> > Sent: 08 June, 2012 13:35
> ...
> > > Context switches, parsing, activity in userspace even memory situation is
> > not changed.
> > 
> > Sure, there is some additional overhead. I'm just saying that it is not drastic. It
> > would be like 100 sprintfs + 100 sscanfs + 2 context switches? Well, it is
> > unfortunate... but come on, today's phones are running X11 and Java. :-)
> 
> Vmstat generation is not so trivial. Meminfo has even higher overhead. I just checked generation time using idling device and open/read test:
> - vmstat min 30, avg 94 max 2746 uSeconds
> - meminfo min 30, average 65 max 15961 uSeconds
> 
> In comparison /proc/version for the same conditions: min 30, average 41, max 1505 uSeconds

Hm. I would expect that avg value for meminfo will be much worse
than vmstat (meminfo grabs some locks).

OK, if we consider 100ms interval, then this would be like 0.1%
overhead? Not great, but still better than memcg:

http://lkml.org/lkml/2011/12/21/487 

:-)

Personally? I'm all for saving these 0.1% tho, I'm all for vmevent.
But, for example, it's still broken for SMP as it is costly to
update vm_stat. And I see no way to fix this.

So, I guess the right approach would be to find ways to not depend on
frequent vm_stat updates (and thus reads).

userland deferred timers (and infrequent reads from vmstat) +
"userland vm pressure notifications" looks promising for the userland
solution.

For in-kernel solution it is all the same, a deferred timer that
reads vm_stat occasionally (no pressure case) + in-kernel shrinker
notifications for fast reaction under pressure.

> > > In kernel space you can use sliding timer (increasing interval) + shinker.
> > 
> > Well, w/ Minchan's idea, we can get shrinker notifications into the userland,
> > so the sliding timer thing would be still possible.
> 
> Only as a post-schrinker actions. In case of memory stressing or
> close-to-stressing conditions shrinkers called very often, I saw up to
> 50 times per second.

Well, yes. But in userland you would just poll/select on the shrinker
notification fd, you won't get more than you can (or want to) process.

-- 
Anton Vorontsov
Email: cbouatmailru@gmail.com

--
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/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: Anton Vorontsov <anton.vorontsov@linaro.org>
To: leonid.moiseichuk@nokia.com
Cc: kosaki.motohiro@gmail.com, penberg@kernel.org,
	b.zolnierkie@samsung.com, 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 2/5] vmevent: Convert from deferred timer to deferred work
Date: Fri, 8 Jun 2012 05:13:34 -0700	[thread overview]
Message-ID: <20120608121334.GA20772@lizard> (raw)
In-Reply-To: <84FF21A720B0874AA94B46D76DB98269045F7C35@008-AM1MPN1-004.mgdnok.nokia.com>

On Fri, Jun 08, 2012 at 11:03:29AM +0000, leonid.moiseichuk@nokia.com wrote:
> > -----Original Message-----
> > From: ext Anton Vorontsov [mailto:cbouatmailru@gmail.com]
> > Sent: 08 June, 2012 13:35
> ...
> > > Context switches, parsing, activity in userspace even memory situation is
> > not changed.
> > 
> > Sure, there is some additional overhead. I'm just saying that it is not drastic. It
> > would be like 100 sprintfs + 100 sscanfs + 2 context switches? Well, it is
> > unfortunate... but come on, today's phones are running X11 and Java. :-)
> 
> Vmstat generation is not so trivial. Meminfo has even higher overhead. I just checked generation time using idling device and open/read test:
> - vmstat min 30, avg 94 max 2746 uSeconds
> - meminfo min 30, average 65 max 15961 uSeconds
> 
> In comparison /proc/version for the same conditions: min 30, average 41, max 1505 uSeconds

Hm. I would expect that avg value for meminfo will be much worse
than vmstat (meminfo grabs some locks).

OK, if we consider 100ms interval, then this would be like 0.1%
overhead? Not great, but still better than memcg:

http://lkml.org/lkml/2011/12/21/487 

:-)

Personally? I'm all for saving these 0.1% tho, I'm all for vmevent.
But, for example, it's still broken for SMP as it is costly to
update vm_stat. And I see no way to fix this.

So, I guess the right approach would be to find ways to not depend on
frequent vm_stat updates (and thus reads).

userland deferred timers (and infrequent reads from vmstat) +
"userland vm pressure notifications" looks promising for the userland
solution.

For in-kernel solution it is all the same, a deferred timer that
reads vm_stat occasionally (no pressure case) + in-kernel shrinker
notifications for fast reaction under pressure.

> > > In kernel space you can use sliding timer (increasing interval) + shinker.
> > 
> > Well, w/ Minchan's idea, we can get shrinker notifications into the userland,
> > so the sliding timer thing would be still possible.
> 
> Only as a post-schrinker actions. In case of memory stressing or
> close-to-stressing conditions shrinkers called very often, I saw up to
> 50 times per second.

Well, yes. But in userland you would just poll/select on the shrinker
notification fd, you won't get more than you can (or want to) process.

-- 
Anton Vorontsov
Email: cbouatmailru@gmail.com

  reply	other threads:[~2012-06-08 12:15 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 [this message]
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
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=20120608121334.GA20772@lizard \
    --to=anton.vorontsov@linaro.org \
    --cc=b.zolnierkie@samsung.com \
    --cc=john.stultz@linaro.org \
    --cc=kernel-team@android.com \
    --cc=kosaki.motohiro@gmail.com \
    --cc=leonid.moiseichuk@nokia.com \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.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.