From: Wei Liu <Wei.Liu2@citrix.com>
To: xen-devel@lists.xen.org
Cc: wei.liu2@citrix.com, Jan Beulich <JBeulich@suse.com>
Subject: [RFC] Extending numbers of event channels
Date: Mon, 3 Dec 2012 16:29:14 +0000 [thread overview]
Message-ID: <1354552154.18784.9.camel@iceland> (raw)
Hi all
There has been discussion on extending number of event channels back in
September [0].
Regarding Jan's comment in [0], I don't think allowing user to specify
arbitrary number of levels a good idea. Because only the last level
should be shared among vcpus, other level should be in percpu struct to
allow for quicker lookup. The idea to let user specify levels will be
too complicated in implementation and blow up percpu section (since the
size grows exponentially). Three levels should be quite enough. See
maths below.
Number of event channels:
* 32bit: 1024 * sizeof(unsigned long long) * BITS_PER_BYTE = 64k
* 64bit: 4096 * sizeof(unsigned long long) * BITS_PER_BYTE = 512k
Basically the third level is a new ABI, so I choose to use unsigned long
long here to get more event channels.
Pages occupied by the third level (if PAGE_SIZE=4k):
* 32bit: 64k / 8 / 4k = 2
* 64bit: 512k / 8 / 4k = 16
Making second level percpu will incur overhead. In fact we move the
array in shared info into percpu struct:
* 32bit: sizeof(unsigned long) * 8 * sizeof(unsigned long) = 128 byte
* 64bit: sizeof(unsigned long) * 8 * sizeof(unsigned long) = 512 byte
What concerns me is that the struct evtchn buckets are allocated all at
once during initialization phrase. To save memory inside Xen, the
internal allocation/free scheme for evtchn needs to be modified. Ian
suggested we do small number of buckets at start of day then dynamically
fault in more as required.
To sum up:
1. Guest should allocate pages for third level evtchn.
2. Guest should register third level pages via a new hypercall op.
3. Hypervisor should setup third level evtchn in that hypercall op.
4. Only last level (third in this case) should be shared among
vcpus.
5. Need a flexible allocation/free scheme of struct evtchn.
6. Debug dumping should use snapshot to avoid holding event lock
for too long. (Jan's concern in [0])
Any comments are welcomed.
Wei.
[0] http://thread.gmane.org/gmane.comp.emulators.xen.devel/139921
next reply other threads:[~2012-12-03 16:29 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-03 16:29 Wei Liu [this message]
2012-12-03 17:35 ` [RFC] Extending numbers of event channels Jan Beulich
2012-12-03 17:52 ` Wei Liu
2012-12-03 17:57 ` Ian Campbell
2012-12-03 18:15 ` Wei Liu
2012-12-03 18:00 ` Jan Beulich
2012-12-03 18:09 ` Wei Liu
2012-12-04 8:05 ` Jan Beulich
2012-12-04 9:30 ` Ian Campbell
2012-12-04 9:37 ` Jan Beulich
2012-12-03 17:43 ` Ian Campbell
2012-12-03 17:48 ` Jan Beulich
2012-12-03 17:50 ` Ian Campbell
2012-12-03 18:52 ` David Vrabel
2012-12-03 19:11 ` Wei Liu
2012-12-03 20:56 ` Wei Liu
2012-12-04 11:35 ` David Vrabel
2012-12-06 10:03 ` Tim Deegan
2012-12-04 11:29 ` George Dunlap
2012-12-04 13:45 ` Jan Beulich
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=1354552154.18784.9.camel@iceland \
--to=wei.liu2@citrix.com \
--cc=JBeulich@suse.com \
--cc=xen-devel@lists.xen.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.