I know these are a lot of numbers :-/
Thererfore I summarize the result a bit.
Improvements rework the interrupt delivery path, some kvm_stat exit
accouting and the usage of findfirstbit.
These optimizations save ~1µs on nearly every exit (look at new avg and
min values).
That leads to an overall speed improvement of 11%pv/19%nopv.
Thats not yet the big snarl I'd like to find but a good first step.
Values of the optimized kvm code:
NOPV:
count 20 csum 13722482 sum 117424658 avg 5871232.900 => ~1:57 runtime
MMIO count 10000 min 45 max 1550
sum 2933679 avg 293.3679 stddev 294.569 % 2.50
DCR count 5141 min 40 max 130
sum 230901 avg 44.9136 stddev 6.603 % 0.20
SIGNAL count 659 min 63 max 620
sum 52477 avg 79.6313 stddev 53.867 % 0.04
ITLBREAL count 72059 min 11 max 65
sum 873286 avg 12.1190 stddev 2.286 % 0.74
ITLBVIRT count 848813 min 20 max 645
sum 19494094 avg 22.9663 stddev 3.645 % 16.60
DTLBREAL count 83901 min 12 max 81
sum 1051450 avg 12.5320 stddev 2.247 % 0.90
DTLBVIRT count 840848 min 20 max 551
sum 19486145 avg 23.1744 stddev 4.038 % 16.59
SYSCALL count 7616 min 10 max 59
sum 77276 avg 10.1465 stddev 1.576 % 0.07
ISI count 9837 min 10 max 56
sum 99511 avg 10.1160 stddev 2.252 % 0.08
DSI count 18611 min 10 max 58
sum 187475 avg 10.0733 stddev 1.793 % 0.16
EMULINST count 4953567 min 10 max 3708
sum 63937759 avg 12.9074 stddev 37.267 % 54.45
DEC count 9902 min 52 max 1349
sum 565012 avg 57.0604 stddev 23.644 % 0.48
EXTINT count 27 min 35 max 573
sum 6181 avg 228.9259 stddev 187.173 % 0.01
FP_UNAVAIL count 260 min 10 max 10
sum 2600 avg 10.0000 stddev 0.000 % 0.00
TIMEINGUEST count 6861241 min 0 max 3703
sum 8426812 avg 1.2282 stddev 9.534 % 7.18
PV:
count 20 csum 8348740 sum 82362754 avg 4118137.700 => ~1:22 runtime
MMIO count 10508 min 45 max 5078
sum 2921817 avg 278.0564 stddev 272.303 % 3.55
DCR count 5147 min 40 max 792
sum 256065 avg 49.7503 stddev 37.294 % 0.31
SIGNAL count 652 min 63 max 2347
sum 242326 avg 371.6656 stddev 271.899 % 0.29
ITLBREAL count 70628 min 12 max 134
sum 857714 avg 12.1441 stddev 2.425 % 1.04
ITLBVIRT count 716360 min 20 max 1232
sum 16617104 avg 23.1966 stddev 7.661 % 20.18
DTLBREAL count 80688 min 12 max 122
sum 1057913 avg 13.1112 stddev 2.268 % 1.28
DTLBPV count 28786 min 19 max 506
sum 602458 avg 20.9289 stddev 5.840 % 0.73
DTLBVIRT count 741001 min 20 max 893
sum 17304816 avg 23.3533 stddev 6.933 % 21.01
SYSCALL count 7613 min 10 max 57
sum 84461 avg 11.0943 stddev 2.138 % 0.10
HCALL count 1 min 18 max 18
sum 18 avg 18.0000 stddev 0.000 % 0.00
ISI count 9837 min 10 max 56
sum 99223 avg 10.0867 stddev 1.885 % 0.12
DSI count 17434 min 10 max 60
sum 175595 avg 10.0720 stddev 1.608 % 0.21
EMULINST count 2477375 min 10 max 3869
sum 36067189 avg 14.5586 stddev 54.974 % 43.79
DEC count 6284 min 52 max 1080
sum 363704 avg 57.8778 stddev 24.201 % 0.44
EXTINT count 1811 min 33 max 1756
sum 268117 avg 148.0491 stddev 126.669 % 0.33
FP_UNAVAIL count 245 min 10 max 53
sum 2493 avg 10.1755 stddev 2.742 % 0.00
TIMEINGUEST count 4174370 min 0 max 3854
sum 5441741 avg 1.3036 stddev 13.208 % 6.61
---
Old non-optimized cases for comparison:
NOPV:
MMIO count 10105 min 46 max 1534
sum 2952467 avg 292.1788 stddev 295.933 % 2.04
DCR count 5428 min 40 max 209
sum 246168 avg 45.3515 stddev 6.758 % 0.17
SIGNAL count 695 min 65 max 3755
sum 89767 avg 129.1612 stddev 314.421 % 0.06
ITLBREAL count 80045 min 13 max 108
sum 1063127 avg 13.2816 stddev 2.338 % 0.73
ITLBVIRT count 1000585 min 21 max 264827
sum 24300596 avg 24.2864 stddev 264.753 % 16.78
DTLBREAL count 91206 min 13 max 69
sum 1285214 avg 14.0913 stddev 2.225 % 0.89
DTLBVIRT count 977434 min 21 max 1446
sum 24007008 avg 24.5613 stddev 4.426 % 16.58
SYSCALL count 10460 min 11 max 55
sum 116447 avg 11.1326 stddev 1.929 % 0.08
ISI count 11724 min 11 max 61
sum 130007 avg 11.0890 stddev 1.929 % 0.09
DSI count 20737 min 11 max 57
sum 230009 avg 11.0917 stddev 1.914 % 0.16
EMULINST count 5683356 min 11 max 3778
sum 79339467 avg 13.9600 stddev 50.275 % 54.78
DEC count 13079 min 50 max 826
sum 732712 avg 56.0220 stddev 22.382 % 0.51
EXTINT count 55 min 30 max 1478
sum 10996 avg 199.9273 stddev 238.150 % 0.01
FP_UNAVAIL count 280 min 11 max 53
sum 3163 avg 11.2964 stddev 3.495 % 0.00
TIMEINGUEST count 7905189 min 0 max 3688
sum 10330742 avg 1.3068 stddev 8.970 % 7.13
csum 15810378
sumsum 144837890 => ~2:24 runtime
sumavg 7241894
PV:
MMIO count 12505 min 46 max 3087
sum 3693782 avg 295.3844 stddev 260.788 % 4.01
DCR count 5595 min 40 max 706
sum 273578 avg 48.8969 stddev 31.305 % 0.30
SIGNAL count 654 min 65 max 4132
sum 300027 avg 458.7569 stddev 571.130 % 0.33
ITLBREAL count 71711 min 13 max 104
sum 943053 avg 13.1507 stddev 2.360 % 1.02
ITLBVIRT count 750649 min 21 max 1503
sum 18178245 avg 24.2167 stddev 7.335 % 19.71
DTLBREAL count 83356 min 13 max 102
sum 1146242 avg 13.7512 stddev 2.406 % 1.24
DTLBPV count 30086 min 20 max 237
sum 653556 avg 21.7229 stddev 4.639 % 0.71
DTLBVIRT count 772811 min 21 max 713
sum 19079477 avg 24.6884 stddev 6.593 % 20.69
SYSCALL count 7647 min 11 max 57
sum 84821 avg 11.0921 stddev 1.897 % 0.09
HCALL count 1 min 19 max 19
sum 19 avg 19.0000 stddev 0.000 % 0.00
ISI count 9895 min 11 max 73
sum 109667 avg 11.0831 stddev 1.904 % 0.12
DSI count 17974 min 10 max 57
sum 199504 avg 11.0996 stddev 2.046 % 0.22
EMULINST count 2567245 min 11 max 4212
sum 40501314 avg 15.7762 stddev 65.673 % 43.92
DEC count 7488 min 51 max 641
sum 426813 avg 56.9996 stddev 23.893 % 0.46
EXTINT count 2215 min 31 max 1677
sum 297495 avg 134.3093 stddev 116.219 % 0.32
FP_UNAVAIL count 258 min 11 max 11
sum 2838 avg 11.0000 stddev 0.000 % 0.00
TIMEINGUEST count 4340090 min 0 max 3850
sum 6316079 avg 1.4553 stddev 12.599 % 6.85
csum 8680180
sumsum 92206510 => ~1:32 runtime
sumavg 4610325
--
Grüsse / regards,
Christian Ehrhardt
IBM Linux Technology Center, Open Virtualization
--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html