仮想環境でのオーバーコミットとはなにか。

 仮想マシンに対してリソースを割り当てる際、基盤となる物理マシンの上限を超えた割り当てを行うことを表す用語です。
 仮想マシンを作成する際、物理的なCPUやメモリ、ストレージなどを分割したように見立てた”仮想ハードウェア”を付与しますが、その際に「最大でどの程度使わせるか」の割り当て、つまり”割り当て量”を指定します。

 その後仮想マシンが稼働して実際に使うリソース、つまり”実使用量”は、その割り当てよりもずっと少量で済むことがよくあります。
実使用量の合計が物理マシンのリソース上限近くに達しない限り、この仮想環境を稼働させること自体は問題なくできますので、割り当て量の合計については物理マシンのリソース上限を超えて指定することを許可してしまおう、という方式がオーバーコミットです。
 一般に、物理マシンのリソースの使用効率を高める効果が期待されます。

オーバーコミットの注意点

 仮想マシンによるリソースの実使用量が、物理マシンのリソース上限に近づいたとき、処理速度が落ちる可能性があります。
また、リソースの種類によっては、割り当て量が大きい仮想マシンは作成や立ち上げができなくなります。
そのため、オーバーコミットを使って仮想環境を運用する際には、「物理マシンのリソース残量を監視」し、残量が少なくなってきたら「仮想マシンの作成時は事前に十分にリソースが足りるかを確認」する必要があります。

CPUのオーバーコミット

 仮想マシンへのCPUリソースの割り当ては、物理CPU内のコアに見立てた”仮想 CPU”を、仮想マシンにいくつ付与するかで行います。
CPUのオーバーコミットは、このコアに見立てた仮想CPUを、物理CPUが実際に持っているコアの数を超えて仮想マシンに付与することを可能とする方式です。
ひとつの物理CPUコアに対して作成された複数の仮想CPUは、非常に短い時間単位で交代してコアを使うことでCPUリソースを分け合います。
付与された仮想CPU数が多い仮想マシンほど、CPUリソースを多く(コアを一定時間内において頻繁に)使える仕組みとなっています。

メモリのオーバーコミット

 物理マシンに搭載されたメモリの容量を超えて、各仮想マシンに対してメモリ容量を割り当てることを可能とする方式です。
例えば、6GBメモリを搭載した物理マシン上で、メモリ容量を1GBずつ割り当てた仮想マシンを7つ起動して利用する、といったことが可能となります。
この例で仮想マシンのメモリ実使用量の合計が6GBに近づいてきた時は注意が必要です。
新たな仮想マシンの立ち上げが出来なくなってしまうことや、仮想環境全体のパフォーマンス低下につながってしまうことが懸念されます。