AIXのvcpuとlcpuの違い
以下のpdfが参考になります。
Understanding POWER7 Capacity Entitlement and Virtual – IBM
vcpu
vcpuは「Physical CPU(物理CPU)」もしくは「VIRTUAL PROCESSOR(VP)」のことです。
vcpuが「VP」であることはしっくりくると思いますが、「物理CPU」というのは腑に落ちないかもしれません。
PowerVMのおかげで、物理的なCPUを単位時間辺りに使える秒数で区切ることができるようになりました。ある意味物理CPUの切り売りです。1つのCPUを時間毎に区切って、各OSに貸してあげているわけです。
そのCPUが各OSに割り当てられるのですから、使える時間の多い少ないはありますが、OSから見れば物理CPUが割り当たっているのと同じです。
別の見方をすると、1つのCPUが、複数の仮想的なCPUとして各OSで稼働しているイメージですね。
つまり視点の違いはありますが、「物理CPU」と「VP」は同じもの。つまり「Physical CPU」=「VIRTUAL PROCESSOR」です。
「Physical CPUs」、「VIRTUAL PROCESSORs」は「proc」で表記されます。
ここで「CPUs」「PROCESSORs」と「s」が付いているのはCPUが複数あることが多いからです。
1 2 3 4 5 |
# lsdev -C | grep proc proc0 Available 00-00 Processor proc2 Available 00-02 Processor proc4 Available 00-04 Processor proc6 Available 00-06 Processor |
※コマンド結果は、こちらのサイトから引用させて頂きました。
「Processor」の箇所は、日本語環境の場合は、「プロセッサー」と表示されます。
procの数字が1つ飛ばしであることに気付いた方は鋭い!
この例は「2 SMT」ですが、「4 SMT」の場合は「proc0」「proc4」と続いていきます。(SMTについては後述)
ご注意ください!
lcpu
lcpuは「Logical CPU」のことです。
各OSが使用できるCPU数ですね。CPUでマルチスレッドがサポートされていれば、1つのvpuc(物理CPU)が、2つのlcpu(論理CPU)や4つのlcpu(論理CPU)に見えるわけです。
「Logical CPUs」は「processor」と表記されます。
「bindprocessor -q」や「lparstat」で確認できます。
1 2 3 4 |
# bindprocessor -q The available <span style="color: #ff0000;">processors</span> are: 0 1 2 3 4 5 6 7 # lparstat …type=Shared mode=Uncapped smt=On<span style="color: #ff0000;"> lcpu=8</span> mem=2048MB… |
※コマンド結果は、こちらのサイトから引用させて頂きました。
bindprocessorコマンドの結果から、「processors are:」の後ろに0から7までのprocessorが並んでいます。合計8つですね。
またlparstatコマンドの結果には「lcpu=8」とあります。ここからも合計8個であることがわかります。
vcpuとlcpuの数を同時に知るコマンド
ずばり、smtctrlコマンドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#smtctl This system is SMT capable. This system supports up to 4 SMT threads per processor SMT is currently enabled. SMT boot mode is set to disabled. proc0 has 2 SMT threads <span style="color: #ff0000;">Bind processor 0 is bound with proc0 Bind processor 1 is bound with proc0</span> proc2 has 2 SMT threads Bind processor 2 is bound with proc2 Bind processor 3 is bound with proc2 |
※引用元はこちら
赤字にした箇所に注目してください。
「processor 0」は「lcpu」、「proc0」は「vcpu」です。
「processor 1」も「lcpu」、「proc0」は「vcpu」です。
vcpuである「proc0」は2つの論理的なCPUとしてOSに認識されていることがわかります。