From: Anton Vorontsov <anton@enomsg.org>
To: Luiz Capitulino <lcapitulino@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Minchan Kim <minchan@kernel.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org, mhocko@suse.cz,
kmpark@infradead.org, hyunhee.kim@samsung.com
Subject: Re: [PATCH v2] vmpressure: implement strict mode
Date: Tue, 2 Jul 2013 10:24:09 -0700 [thread overview]
Message-ID: <20130702172409.GA13695@teo> (raw)
In-Reply-To: <20130702105911.2830181d@redhat.com>
On Tue, Jul 02, 2013 at 10:59:11AM -0400, Luiz Capitulino wrote:
> 2. Considering the interface can be extended, how can new applications
> work on backwards mode? Say, we add ultra-critical on 3.12 and
> I update my application to work on it, how will my application
> work on 3.11?
It will refuse to run, as expected. We are returning -EINVAL on unknown
levels. The same way you try to run e.g. systemd on linux-2.4. Systemd
requires new features of the kernel, if there are no features present the
kernel returns an error and then app gracefully fails.
> Hint: Try and error is an horribly bad approach.
>
> 3. I also don't believe we have good forward compatibility with
> the current API, as adding new events will cause existing ones
> to be triggered more often,
If they don't register for the new events (the old apps don't know about
them, so they won't), there will be absolutely no difference in the
behaviour, and that is what is most important.
There is a scalability problem I can see because of the need of the read()
call on each fd, but the "scalability" problem will actually arise if we
have insane number of levels.
> Honestly, what Andrew suggested is the best design for me: apps
> are notified on all events but the event name is sent to the application.
I am fine with this approach (or any other, I'm really indifferent to the
API itself -- read/netlink/notification per file/whatever for the
payload), except that you still have the similar problem:
read() old read() new
--------------------------
"low" "low"
"low" "foo" -- the app does not know what does this mean
"med" "bar" -- ditto
"med" "med"
> This is pretty simple and solves all the problems we've discussed
> so far.
>
> Why can't we just do it?
Because of the problems described above. Again, add versioning and there
will be no problem (but just the fact that we need for versioning for that
kind of interface might raise questions).
> > > > Here is more complicated case:
> > > >
> > > > Old kernels, pressure_level reads:
> > > >
> > > > low, med, crit
> > > >
> > > > The app just wants to listen for med level.
> > > >
> > > > New kernels, pressure_level reads:
> > > >
> > > > low, FOO, med, BAR, crit
> > > >
> > > > How would application decide which of FOO and BAR are ex-med levels?
> > >
> > > What you meant by ex-med?
> >
> > The scale is continuous and non-overlapping. If you add some other level,
> > you effectively "shrinking" other levels, so the ex-med in the list above
> > might correspond to "FOO, med" or "med, BAR" or "FOO, med, BAR", and that
> > is exactly the problem.
>
> Just return the events in order?
The order is not a problem, the meaning is. The old app does not know the
meaning of FOO or BAR levels, for it is is literally "some foo" and "some
bar" -- it can't make any decision.
Anton
--
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>
next prev parent reply other threads:[~2013-07-02 17:24 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-27 3:17 [PATCH v2] vmpressure: implement strict mode Luiz Capitulino
2013-06-27 9:26 ` Michal Hocko
2013-06-27 13:34 ` Luiz Capitulino
2013-06-27 14:59 ` Michal Hocko
2013-06-27 15:53 ` Minchan Kim
2013-06-27 17:42 ` Michal Hocko
2013-06-27 15:44 ` Minchan Kim
2013-06-27 22:02 ` Andrew Morton
2013-06-28 0:02 ` Minchan Kim
2013-06-28 0:34 ` Andrew Morton
2013-06-28 0:58 ` Anton Vorontsov
2013-06-28 1:13 ` Andrew Morton
2013-06-28 4:34 ` Anton Vorontsov
2013-06-28 5:07 ` Anton Vorontsov
2013-06-28 14:00 ` Luiz Capitulino
2013-06-28 16:57 ` Anton Vorontsov
2013-06-28 17:09 ` Anton Vorontsov
2013-06-28 18:25 ` Luiz Capitulino
2013-06-28 18:45 ` Anton Vorontsov
2013-06-28 18:58 ` Luiz Capitulino
2013-06-28 18:45 ` Luiz Capitulino
2013-06-28 18:55 ` Anton Vorontsov
2013-06-28 19:44 ` Luiz Capitulino
2013-06-29 0:56 ` Anton Vorontsov
2013-07-01 8:22 ` Hyunhee Kim
2013-07-02 4:32 ` Anton Vorontsov
2013-07-02 8:29 ` Hyunhee Kim
2013-07-02 13:29 ` Michal Hocko
2013-07-02 14:59 ` Luiz Capitulino
2013-07-02 17:24 ` Anton Vorontsov [this message]
2013-07-02 18:38 ` Luiz Capitulino
2013-06-28 5:24 ` Andrew Morton
2013-06-28 13:43 ` Luiz Capitulino
2013-06-28 9:04 ` Minchan Kim
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=20130702172409.GA13695@teo \
--to=anton@enomsg.org \
--cc=akpm@linux-foundation.org \
--cc=hyunhee.kim@samsung.com \
--cc=kmpark@infradead.org \
--cc=lcapitulino@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.cz \
--cc=minchan@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).