I'd further some of that...regarding how cpu requests are made in 6.5+.
If i'm requesting 14 cores (and i haven't changed the advanced options), because its greater then or equal to 10 cores, it is going to be split in to 2 numa nodes of 7 and 7. So what does that mean when you have another request for 10 cores, with the changes to reservation and shares? I assume it still gets split in to 2 numa nodes of 5 and 5, and that one of those 5's gets almost all of the vcpu it wants all of the time (due to the reservation of 10ghz, and at 2.2ghz * 5 or 11ghz for one numa node), but then the rest gets whatever it wants most of the time due to the increased share value.
So taking a step back...
10 cores * 2 sockets
numa nodes: 4 nodes, 1 at nn at 5 cores, another at 5 cores, 7 cores and 7 cores, for the two vm's.
Lets say, nn 1 goes to CPU socket 1, and nn 2 goes to CPU socket 2...
Socket 1 gets:
nn 1
nn 3
Socket 2 gets:
nn 2
nn 4
nn3 requests CPU, but can't get any because 10ghz on socket 1 is already taken and can't be given out...so it then requests resources from Socket 2...On socket 2 it asks for resources, but its now fighting against nn2 which has a higher share value and nn4 which is requesting a high % of resources already...
It may be that its smart enough to realize that putting nn1 and 2 on the same socket may be the best option overall, but even then...it still runs poorly right (since you have 2 nn asking for 7 cores on a 10 core socket)...