On 10/05/07 17:33 -0400, Mike D. Day wrote:
Scheduling Groups
Scheduling groups provide the ability to combine domains into a group
assocation. One domain is designated as the group master. The other
domains are designated as group members. There may be only one master
domain for each group, and one or more member domains. A single domain
may be either a group master or group member, and never both at the
same time.
I ran Rusty Russell's virtbench on xen-unstable without the scheduling
groups patches, and with the patches.
http://ozlabs.org/~rusty/virtbench/
Virtbench automatically creates four paravirtual guests and runs a
series of microbenchmarks, including some that test inter-guest
communication. I ran these benchmarks on an athlon x2
Linux svm 2.6.18-xen #1 SMP Tue Apr 24 11:01:39 EDT 2007 x86_64 GNU/Linux
The results are mixed - the unpatched credit scheduler is faster on
some microbenchmarks and slower on others.
Smaller == better
UNPATCHED RESULTS
Bringing up machines..
Time for one context switch via pipe: 6082 (6014 - 6160)
Time for one Copy-on-Write fault: 5628 (5472 - 5783)
Time to exec client once: 581656 (562984 - 598656)
Time for one fork/exit/wait: 357625 (353625 - 365812)
Time to send 4 MB from host: 21401750 (20443000 - 31179250)
Time for one syscall via libc: 684 (684 - 685)
Time to walk linear 64 MB: 686312 (682437 - 689125)
Time to walk random 64 MB: 945250 (940750 - 948875)
Time for one outb PIO operation: 298 (298 - 300)
Time for two PTE updates: 5250 (5228 - 5264)
Time to read from disk (256 kB): 7879125 (5765500 - 18967062)
Time for one disk read: 25246 (24839 - 35062)
Time to send 4 MB between guests: 16729375 (14412437 - 30318562)
Time for inter-guest pingpong: 70152 (68960 - 104968)
Time to sendfile 4 MB between guests: 46993000 (16927000 - 380530000)
Time to receive 1000 1k UDPs between guests: 47102000 (11709000 - 3427813000)
mdday@svm:~/src/virtbench$
WITH SCHEDULING GROUP PATCHES
Bringing up machines..
Time for one context switch via pipe: 6117 (6016 - 6279)
Time for one Copy-on-Write fault: 5566 (5438 - 5740)
Time to exec client once: 584031 (569593 - 595093)
Time for one fork/exit/wait: 332406 (321125 - 350375)
Time to send 4 MB from host: 21453250 (20431500 - 29317750)
Time for one syscall via libc: 683 (683 - 690)
Time to walk linear 64 MB: 688312 (684000 - 691625)
Time to walk random 64 MB: 931125 (929250 - 933125)
Time for one outb PIO operation: 282 (282 - 292)
Time for two PTE updates: 5184 (5174 - 5204)
Time to read from disk (256 kB): 7963437 (5850375 - 17305687)
Time for one disk read: 25332 (24867 - 65437)
Time to send 4 MB between guests: 15529187 (13590187 - 34647875)
Time for inter-guest pingpong: 81570 (68687 - 98175)
Time to sendfile 4 MB between guests: 36325000 (16996000 - 503692000)
Time to receive 1000 1k UDPs between guests: 43529000 (10414000 - 228768000)
The only code that is in the fast patch is a conditional:
static inline struct csched_dom *master_dom(struct csched_dom *d)
{
if ( d->is_member )
return d->master;
return d;
}
I'm going to make a change to remove this conditional from the fast
path and retest.
Mike
--
Mike D. Day
IBM LTC
Cell: 919 412-3900
Sametime: ncmike@xxxxxxxxxx AIM: ncmikeday Yahoo: ultra.runner
PGP key: http://www.ncultra.org/ncmike/pubkey.asc
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|