From: Steven Rostedt <rostedt@goodmis.org>
To: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: "Nitin Gupta" <ngupta@vflare.org>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Hugh Dickins" <hugh.dickins@tiscali.co.uk>,
"Ed Tomlinson" <edt@aei.ca>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linux-mm-cc@laptop.org, "Ingo Molnar" <mingo@elte.hu>,
"Frédéric Weisbecker" <fweisbec@gmail.com>
Subject: Re: [PATCH 2/4] virtual block device driver (ramzswap)
Date: Tue, 15 Sep 2009 09:14:30 -0400 [thread overview]
Message-ID: <1253020471.20020.76.camel@gandalf.stny.rr.com> (raw)
In-Reply-To: <84144f020909150030h1f9d8062sc39057b55a7ba6c0@mail.gmail.com>
On Tue, 2009-09-15 at 10:30 +0300, Pekka Enberg wrote:
> Hi Nitin,
>
> >>> +static int page_zero_filled(void *ptr)
> >>> +{
> >>> + u32 pos;
> >>> + u64 *page;
> >>> +
> >>> + page = (u64 *)ptr;
> >>> +
> >>> + for (pos = 0; pos != PAGE_SIZE / sizeof(*page); pos++) {
> >>> + if (page[pos])
> >>> + return 0;
> >>> + }
> >>> +
> >>> + return 1;
> >>> +}
> >>
> >> This looks like something that could be in lib/string.c.
> >>
> >> /me looks
> >>
> >> There's strspn so maybe you could introduce a memspn equivalent.
> >
> > Maybe this is just too specific to this driver. Who else will use it?
> > So, this simple function should stay within this driver only. If it
> > finds more user, we can them move it to lib/string.c.
> >
> > If I now move it to string.c I am sure I will get reverse argument
> > from someone else:
> > "currently, it has no other users so bury it with this driver only".
>
> How can you be sure about that? If you don't want to move it to
> generic code, fine, but the above argumentation doesn't really
> convince me. Check the git logs to see that this is *exactly* how new
> functions get added to lib/string.c. It's not always a question of two
> or more users, it's also an API issue. It doesn't make sense to put
> helpers in driver code where they don't belong (and won't be
> discovered if they're needed somewhere else).
I agree, a generic function like this should be put into string.c (or
some library). That's the first place I look when I want to do some kind
of generic string or memory manipulation.
If you don't put it there, and another driver writer needs the same
thing, they will write their own. That's how we get 10 different
implementations of the same code in the kernel. Because everyone thinks
"this will only be used by me".
> >>> +
> >>> + trace_mark(ramzswap_lock_wait, "ramzswap_lock_wait");
> >>> + mutex_lock(&rzs->lock);
> >>> + trace_mark(ramzswap_lock_acquired, "ramzswap_lock_acquired");
> >>
> >> Hmm? What's this? I don't think you should be doing ad hoc
> >> trace_mark() in driver code.
> >
> > This is not ad hoc. It is to see contention over this lock which I believe is a
> > major bottleneck even on dual-cores. I need to keep this to measure improvements
> > as I gradually make this locking more fine grained (using per-cpu buffer etc).
>
> It is ad hoc. Talk to the ftrace folks how to do it properly. I'd keep
> those bits out-of-tree until the issue is resolved, really.
Yes, trace_mark is deprecated. You want to use TRACE_EVENT. See how gfs2
does it in:
fs/gfs2/gfs2_trace.h
and it is well documented in
samples/trace_events/trace-events-samples.[ch]
-- Steve
--
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:[~2009-09-15 13:14 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200909100215.36350.ngupta@vflare.org>
2009-09-09 21:19 ` Nitin Gupta
2009-09-14 20:10 ` Pekka Enberg
2009-09-15 6:39 ` Nitin Gupta
2009-09-15 7:30 ` Pekka Enberg
2009-09-15 8:21 ` Nitin Gupta
2009-09-15 8:30 ` Pekka Enberg
2009-09-15 15:26 ` Greg KH
2009-09-15 15:55 ` Nitin Gupta
2009-09-15 11:45 ` Ed Tomlinson
2009-09-15 12:42 ` Pekka Enberg
2009-09-15 13:14 ` Steven Rostedt [this message]
2009-09-15 13:43 ` Pekka Enberg
2009-09-15 14:08 ` Steven Rostedt
2009-09-09 21:21 ` [PATCH 4/4] documentation Nitin Gupta
2009-09-09 21:50 ` [PATCH 3/4] send callback when swap slot is freed Nitin Gupta
2009-09-09 21:53 ` [PATCH 1/4] xvmalloc memory allocator Nitin Gupta
2009-09-09 22:02 ` [PATCH 0/4] compcache: in-memory compressed swapping v2 Nitin Gupta
2009-09-12 2:24 ` Nitin Gupta
2009-09-13 19:07 ` Hugh Dickins
2009-09-14 4:04 ` Nitin Gupta
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=1253020471.20020.76.camel@gandalf.stny.rr.com \
--to=rostedt@goodmis.org \
--cc=akpm@linux-foundation.org \
--cc=edt@aei.ca \
--cc=fweisbec@gmail.com \
--cc=hugh.dickins@tiscali.co.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm-cc@laptop.org \
--cc=linux-mm@kvack.org \
--cc=mingo@elte.hu \
--cc=ngupta@vflare.org \
--cc=penberg@cs.helsinki.fi \
/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