On Mon, 2015-07-06 at 17:34 +0530, Shivaprasad bhat wrote:
I had a chance to
test the patch and it
seems to work consistently in all sucores_per_core modes.
Hi Shivaprasad,
while reworking the series to address Martin's comments, I have created
a couple more test cases and I've run into a situation I'm not sure how
to handle.
Suppose we have the following situation on the host:
0* 1 2 3 4 5 6 7
8* 9 10 11 12 13 14 15
16* 17* 18* 19* 20 21 22 23
24* 25 26 27 28 29 30 31
32* 33 34 35 36 37 38 39
40* 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55
56 57 58 59 60 61 62 63
64 65 66 67 68 69 70* 71
72* 73 74 75 76 77 78 79
80* 81 82 83 84 85 86 87
88* 89* 90* 91* 92* 93* 94* 95*
Basically the user has *really* messed up its configuration :)
Nodes 0 (CPUs 0-23), 2 (CPUs 48-71) and 3 (CPUs 72-95) are easy: in all
cases at least one of the secondary threads is online, so we should
fallback to the subcore-unaware logic and just count the online CPUs.
Node 1 (CPUs 24-47) is different, though: all the primary threads are
online, and all the secondary threads are offline, just like they're
supposed to.
How should the threads in node 1 be counted, then? Should the
subcore-aware logic be applied (resulting in 41 online CPUs overall) or
should we use the fallback logic for all nodes because at least one of
them is violating our expectations (resulting in 20 online CPUs
overall)?
I'm tending towards "it doesn't really matter", eg. if you mess with
the configuration you can't expect the reported capacity to make any
sense. I'd probably go with the former option (because it requires less
changes to the code) and add a paragraph about it to the documentation,
but I'd love to hear your opinion on the subject.
Cheers.
--
Andrea Bolognani
Software Engineer - Virtualization Team