转帖 http://bbs.vmsky.com/viewthread.php?tid=10034&extra=&page=2
 
Shares表示了一台VM的重要性和该VM在资源分配时的权值,当同一台ESX或一个RESOURCE POOL中所有VM对CPU或内存资源需求超过100%时,发生资源争抢,此时,每台VM所能抢到的资源不超过((本VM SHARE)/(所有VM SHARE))*总资源,这个值以下简称“最大可SHARE资源”。
当一台VM提出资源申请时,有以下几种情况:
1、如果申请的资源=保留(Reservation)(VM启动时),检查系统总资源扣除其它VM的Reservation(未配置Reservation者视为0)后的剩余资源能否满足需求,如果能则启动VM,否则报错,无法启动VM;
2、如果申请的资源超过限制(Limit),直接拒绝申请;
3、如果申请的资源低于限制(Limit),但超过了“最大可SHARE资源”,对于超过的这部分资源申请,仅视系统空闲资源情况,全部或部分分配资源,对于不超过“最大可SHARE资源”部分,参照下一种情况分配资源;
4、如果申请小于或等于“最大可SHARE资源”,首先分配空闲资源,不足部分,系统就会去收回其它VM超过它们“最大可SHARE资源”的部分用于满足当前申请。正常情况下,系统总能够收集足够的资源用于满足当前申请,但如果其中有VM的保留(Reservation)>“最大可SHARE资源”,那么系统只能收回超过保留(Reservation)部分资源,这时系统就只能部分满足当前申请。
 
比如
vma 2000share
vmb 1000share
.....
当vma需要40%共享资源,vmb需要80%共享
已经超出共享值
结果vma 强制占有33.3%, vmb强制占有66.6%,谁都不允许跨线这里红字部分值得商榷,VMA的SHARES值是VMB的两倍,在发生资源争抢时,能抢到的最大SHARE资源VMA是66.7%,VMB是33.3%,在VMA需要40%资源,VMB需要80%资源时,最终应该是 VMA占有40%,VMB占用60%资源。