はじめに
AOS5.5以降からデフォルト設定でenableとなっているFrodoについて、確認してみました。
Frodoって何?
Nutanix Bibleもしくはネットワールド様のこちらのブログを参考にしてください。
要するに、単一キューのVirtio-SCSI PCIコントローラーを複数キューのVirtio-SCSI PCIコントローラーにすることで、仮想VMのディスクIOの性能が改善されました。このコンポーネントをFrodo、別名AHV Turboと呼んでます。

もう待たなくていい : AHV Turboの登場! - ネットワールド らぼ
本記事の原文はNutanixコミュニティのブログNutanix Connect Blogの記事の翻訳ヴァージョンです。原文の著者はNutanix社のSoftware EngineerのFelipe Franciosi氏によるものです。原文を...

Nutanix Cloud バイブル(日本語版) - NutanixBible.jp
The Nutanix Cloud Bible - Nutanix Cloud バイブル(日本語版) - HCIを中心としたNutanixプロダクトのアーキテクチャー詳細解説。高性能・高信頼かつシンプルに管理できるITインフラの仕掛けを、裏...
確認してみた
クラスターで稼働しているVM名とUUIDを特定します。
今回はWindows Server 2022と言う名前のものを確認してみます。
nutanix@NTNX-HOME-C-CVM:192.168.3.116:~$ acli vm.list VM name VM UUID NTNX-HOME-A-PCVM d473f41e-0125-4e2b-ade4-326974fe1ba2 RockyLinux9.5 17e3b176-61f7-4544-be14-396bbddea92e WindowsServer2022 af38043f-67a0-494e-be77-b151d98b4a1d auto_DND_calm_policy_engine_a0c97f11-b18e-4c89-833f-b192eceeb2e4 783295c0-d306-4c03-b610-eb6ea8b7c22f karbon-homek8scluster-114a45-master-0 84b35313-03c7-4379-8fb8-c6d79a49e8d9 karbon-homek8scluster-114a45-worker-0 d09ad4c3-5150-492f-94e4-77d361c9ea15 karbon-homek8scluster-17c150-etcd-0 38a10b47-2821-49f0-8c35-0e7500587123 vm-250422-233911 ba2f7453-e795-4e36-ac4d-c92f3f9b55be
次に、どのAHVホストで稼働しているか確認します。
allsshを先頭につけることで、全てのCVMに同じコマンドを投入します。
nutanix@NTNX-HOME-C-CVM:192.168.3.116:~$ allssh virsh list --all ================== 192.168.3.116 ================= Id Name State ---------------------------------------------------- 5 NTNX-7be58cc8-A-CVM running 8 af38043f-67a0-494e-be77-b151d98b4a1d running 9 17e3b176-61f7-4544-be14-396bbddea92e running - NTNX-HOME-C-CVM shut off
次に、対象のAHVにログインし、UUIDをgrepした次のコマンドを投入します。
ps -awwux | grep 17e3b176-61f7-4544-be14-396bbddea92e
次のように、frodoが対象のVMで有効化されていることを確認できます。
qemu 1220381 0.0 1.3 8590123668 871716 ? Sl 06:25 0:01 /usr/libexec/frodo 6 17e3b176-61f7-4544-be14-396bbddea92e
また、同じコマンドで以下も表示されます。
わかりやすいように、Frodoに関する引数で改行しています。
qemu 2838700 11.2 12.8 9530520 8371700 ? Sl Apr26 154:58 /usr/libexec/qemu-kvm -uuid af38043f-67a0-494e-be77-b151d98b4a1d -name guest=af38043f-67a0-494e-be77-b151d98b4a1d,debug-threads=on -S -object {"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain-af38043f-67a0-494e-be77-b151d98b4a1d/master-key.aes"} -machine pc-i440fx-rhel7.6.0,usb=off,dump-guest-core=off,mem-merge=off -accel kvm -cpu EPYC-Rome-v4,enforce,svm=off,pku=off,hle=off,rtm=off,hv-time=on,kvm-pv-eoi=on,hv-relaxed=on,hv-vapic=on,hv-spinlocks=0x2000,hv-vpindex=on,hv-runtime=on,hv-synic=on,hv-stimer=on,hv-tlbflush=on,hv-ipi=on,l3-cache=on,check=no -m size=8388608k,slots=240,maxmem=8589934592k -overcommit mem-lock=off -smp 4,maxcpus=240,sockets=240,dies=1,cores=1,threads=1 -object {"qom-type":"memory-backend-memfd","id":"ram-node0","share":true,"size":8589934592} -numa node,nodeid=0,cpus=0-239,memdev=ram-node0 -smbios type=1,manufacturer=Nutanix,product=AHV,serial=AF38043F-67A0-494E-BE77-B151D98B4A1D -device vmgenid,guid=a76804e5-c05e-409d-8d2e-0a80c1537081,id=vmgenid0 -no-user-config -nodefaults -chardev socket,id=charmonitor,fd=41,server=on,wait=off -mon chardev=charmonitor,id=monitor,mode=control -rtc base=localtime,clock=vm,driftfix=slew -global kvm-pit.lost_tick_policy=delay -no-shutdown -boot menu=off,strict=off -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x5.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x5 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x5.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x5.0x2 -device ahci,id=sata0,bus=pci.0,addr=0x6 -blockdev {"driver":"iscsi","portal":"127.0.0.1:3261","target":"iqn.2010-06.com.nutanix:vmdisk-d2746662-64f2-4b8c-8b30-c9421bff981f","lun":0,"transport":"tcp","node-name":"libvirt-4-storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-4-format","read-only":true,"driver":"raw","file":"libvirt-4-storage"} -device ide-cd,bus=sata0.0,drive=libvirt-4-format,id=sata0-0-0,bootindex=1,werror=report,rerror=report -device ide-cd,bus=sata0.1,id=sata0-0-1,bootindex=2,werror=report,rerror=report -netdev tap,fd=44,id=hostua-7e50a4ef-5e64-4a7a-8861-8ea480df0478,vhost=on,vhostfd=45 -device virtio-net-pci,rx_queue_size=256,netdev=hostua-7e50a4ef-5e64-4a7a-8861-8ea480df0478,id=ua-7e50a4ef-5e64-4a7a-8861-8ea480df0478,mac=50:6b:8d:82:5d:ef,bootindex=5,bus=pci.0,addr=0x3 -chardev socket,id=charserial0,fd=40,server=on,wait=off -device isa-serial,chardev=charserial0,id=serial0,index=1,iobase=760,irq=3 -device usb-tablet,id=input0,bus=usb.0,port=1 -audiodev {"id":"audio1","driver":"none"} -vnc 127.0.0.1:1,audiodev=audio1 -device VGA,id=video0,vgamem_mb=16,bus=pci.0,addr=0x2 -device virtio-balloon-pci,id=balloon0,deflate-on-oom=on,bus=pci.0,addr=0x7 -device vmcoreinfo -object dbus-vmstate,addr=unix:path=/run/dbus/system_bus_socket,id=dbus-vmstate1,id-list=af38043f-67a0-494e-be77-b151d98b4a1d -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny -msg timestamp=on -chardev socket,id=frodo0,fd=3 -device vhost-user-scsi-pci,chardev=frodo0,id=frodo-scsi0,num_queues=4,max_sectors=2048,bus=pci.0,addr=0x4,bootindex=3,boot_tpgt=0
ここで着目していただきたいのは、num_queuesです。
こちら、Nutanix Bibleにも書かれている通り、VMのvCPU数に応じて変化します。
この仮想マシンはvCPUが4なので、4が指定されています。気になる方は、色々な仮想マシンで試してみてください。
また、Frodoのセッションは次の通りです。IPアドレスから、AHVとCVMで使用する仮想スイッチを経由していることも確認できました。
[root@NTNX-HOME-C-AHV ~]# netstat -np | egrep tcp.*frodo tcp 0 0 192.168.5.1:51610 192.168.5.254:3261 ESTABLISHED 2838709/frodo tcp 0 0 192.168.5.1:51614 192.168.5.254:3261 ESTABLISHED 2838709/frodo tcp 0 0 192.168.5.1:51618 192.168.5.254:3261 ESTABLISHED 2838709/frodo tcp 0 0 192.168.5.1:51596 192.168.5.254:3261 ESTABLISHED 2838709/frodo
参考
Nutanix Support & Insights
コメント