From: Ingo Oeser <netdev@axxeo.de>
To: "David S. Miller" <davem@davemloft.net>
Cc: simlo@phys.au.dk, linux-kernel@vger.kernel.org, mingo@elte.hu,
netdev@vger.kernel.org, Ingo Oeser <ioe-lkml@rameria.de>
Subject: Re: Van Jacobson's net channels and real-time
Date: Fri, 21 Apr 2006 18:52:47 +0200 [thread overview]
Message-ID: <200604211852.47335.netdev@axxeo.de> (raw)
In-Reply-To: <20060420.120955.28255828.davem@davemloft.net>
Hi David,
nice to see you getting started with it.
I'm not sure about the queue logic there.
1867 /* Caller must have exclusive producer access to the netchannel. */
1868 int netchannel_enqueue(struct netchannel *np, struct netchannel_buftrailer *bp)
1869 {
1870 unsigned long tail;
1871
1872 tail = np->netchan_tail;
1873 if (tail == np->netchan_head)
1874 return -ENOMEM;
This looks wrong, since empty and full are the same condition in your
case.
1891 struct netchannel_buftrailer *__netchannel_dequeue(struct netchannel *np)
1892 {
1893 unsigned long head = np->netchan_head;
1894 struct netchannel_buftrailer *bp = np->netchan_queue[head];
1895
1896 BUG_ON(np->netchan_tail == head);
See?
What about sth. like
struct netchannel {
/* This is only read/written by the writer (producer) */
unsigned long write_ptr;
struct netchannel_buftrailer *netchan_queue[NET_CHANNEL_ENTRIES];
/* This is modified by both */
atomic_t filled_entries; /* cache_line_align this? */
/* This is only read/written by the reader (consumer) */
unsigned long read_ptr;
}
This would prevent this bug from the beginning and let us still use the
full queue size.
If cacheline bouncing because of the shared filled_entries becomes an issue,
you are receiving or sending a lot.
Then you can enqueue and dequeue multiple and commit the counts later.
To be done with a atomic_read, atomic_add and atomic_sub on filled_entries.
Maybe even cheaper with local_t instead of atomic_t later on.
But I guess the cacheline bouncing will be a non-issue, since the whole
point of netchannels was to keep traffic as local to a cpu as possible, right?
Would you like to see a sample patch relative to your tree,
to show you what I mean?
Regards
Ingo Oeser
next prev parent reply other threads:[~2006-04-21 16:53 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-04-20 16:29 Van Jacobson's net channels and real-time Esben Nielsen
2006-04-20 19:09 ` David S. Miller
2006-04-21 16:52 ` Ingo Oeser [this message]
2006-04-22 11:48 ` Jörn Engel
2006-04-22 13:29 ` Ingo Oeser
2006-04-22 13:49 ` Jörn Engel
2006-04-23 0:05 ` Ingo Oeser
2006-04-23 5:50 ` David S. Miller
2006-04-24 16:42 ` Auke Kok
2006-04-24 16:59 ` linux-os (Dick Johnson)
2006-04-24 17:19 ` Rick Jones
2006-04-24 18:12 ` linux-os (Dick Johnson)
2006-04-24 23:17 ` Michael Chan
2006-04-25 1:49 ` Auke Kok
2006-04-25 11:29 ` linux-os (Dick Johnson)
2006-05-02 12:41 ` Vojtech Pavlik
2006-05-02 15:58 ` Andi Kleen
2006-04-23 5:52 ` David S. Miller
2006-04-23 9:23 ` Avi Kivity
2006-04-23 5:51 ` David S. Miller
2006-04-23 5:56 ` David S. Miller
2006-04-23 14:15 ` Ingo Oeser
2006-04-22 19:30 ` bert hubert
2006-04-23 5:53 ` David S. Miller
2006-04-21 8:53 ` Jan Kiszka
2006-04-24 14:22 ` Esben Nielsen
2006-04-27 8:09 ` Jan Kiszka
2006-04-27 8:16 ` David S. Miller
2006-04-27 10:00 ` Jan Kiszka
2006-04-27 19:50 ` David S. Miller
-- strict thread matches above, loose matches on Subject: below --
2006-04-24 17:28 Caitlin Bestler
[not found] <63KcN-6lD-25@gated-at.bofh.it>
[not found] ` <64wrg-2cg-41@gated-at.bofh.it>
[not found] ` <64wAE-2Cs-9@gated-at.bofh.it>
[not found] ` <64AkV-8cG-7@gated-at.bofh.it>
[not found] ` <65cqo-5tR-33@gated-at.bofh.it>
[not found] ` <65cJF-66i-11@gated-at.bofh.it>
2006-04-24 23:48 ` Robert Hancock
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=200604211852.47335.netdev@axxeo.de \
--to=netdev@axxeo.de \
--cc=davem@davemloft.net \
--cc=ioe-lkml@rameria.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=netdev@vger.kernel.org \
--cc=simlo@phys.au.dk \
/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.