<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div id="bloop_customfont" style="color: rgb(0, 0, 0); margin: 0px;"><p class="airmail_on" style="font-family: Helvetica, Arial; font-size: 13px;">Hi Ryan,</p><p class="airmail_on" style="font-family: Helvetica, Arial; font-size: 13px;"><br></p><p class="airmail_on" style="font-family: Helvetica, Arial; font-size: 13px;">On October 29, 2015 at 23:51:52, Ryan Flagler (<a href="mailto:ryan.flagler@gmail.com">ryan.flagler@gmail.com</a>) wrote:</p><blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px;"><div></div><div><div dir="ltr">Hey everyone, sorry if I'm doing this wrong, this is my first time using a mailing list. (Side note, if anyone has a better way to view historical emails than the web page, please let me know)</div></div></blockquote><div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; color: rgb(0, 0, 0); margin: 0px;"><br></div><div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; color: rgb(0, 0, 0); margin: 0px;">There are archives of this list that you can view at [1]. </div><div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; color: rgb(0, 0, 0); margin: 0px;">Please use bottom posting to improve readability of the mailing lists.</div><br><blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px;"><div><div dir="ltr"><div>Which chipset emulation performs better and in what areas?</div><div>q35 vs i440fx</div></div></div></blockquote><div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; color: rgb(0, 0, 0); margin: 0px;"><br></div><div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; color: rgb(0, 0, 0); margin: 0px;">As far as I know the Q35 provides a more recent architecture of a modern PC, while the i440FX is a more mature option. </div><div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; color: rgb(0, 0, 0); margin: 0px;">The general rule of thumb for me is to use the i440FX by default, and use Q35 whenever i440FX doesn't support for the VM. </div><div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; color: rgb(0, 0, 0); margin: 0px;">Which in cases like virtualizing a Mac OS X machine it needs the Q35 chipset. </div><div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; color: rgb(0, 0, 0); margin: 0px;">I’ve tried Windows 10 on both i440FX and Q35 but see no significant performance gain if any exists.</div><br><blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px;"><div><div dir="ltr"><div>What is the best way to pass a disk through to a VM to get the most performance?</div><div>.img file, /dev/sd[x] disk, virtio-scsi, etc.</div></div></div></blockquote><div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; color: rgb(0, 0, 0); margin: 0px;"><br></div><div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; color: rgb(0, 0, 0); margin: 0px;">It depends on how you want to manage the disk drives/images. A raw image (.img) tends to have better performance than a QEMU (qcow, qcow2) image, but QEMU image can do snapshots. Passing through a real disk (/dev/sd[x]) should have the same performance as the native, but it looses the flexibility to do migration. The benefit of using a real disk is that we can use that to boot the system natively, though needs to reinstall the drivers.</div><div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; color: rgb(0, 0, 0); margin: 0px;"><br></div><div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; color: rgb(0, 0, 0); margin: 0px;">Another option is to use raw image on top of ZFS (or btrfs). It is the combination of raw performance, snapshotting capabilities of the underlying storage pool, compression, clones, thin provisioning, etc. Currently this is my approach on the storage side. I have 8  x 1 TB disks that I configure as a ZFS striped mirror pool (RAID10). On top of it I placed a dedicated ZFS dataset for each VM.</div><br><blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px;"><div><div dir="ltr"><div>What is the best way to handle networking?</div><div>virtio-nic, hardware passthrough, bridge, nat, etc.</div></div></div></blockquote><div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; color: rgb(0, 0, 0); margin: 0px;"><br></div><div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; color: rgb(0, 0, 0); margin: 0px;">I think the bridge vs NAT really depends on your network topology that you want to expose not about the performance. I prefer my VMs to be the same network citizen class in my home network, so I always choose bridged networking. I’ll answer the VirtioNet part below your last post.</div><br><div style="font-family: Helvetica, Arial; font-size: 13px;"><blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div><div dir="ltr"><div>What is the best way to assign CPUs?</div><div>cpu pinning, assigning host cpu parameters, etc.</div></div></div></blockquote></div><div style="font-family: Helvetica, Arial; font-size: 13px;"><br class="Apple-interchange-newline"></div><div style="font-family: Helvetica, Arial; font-size: 13px;">I can’t comment much on CPU pinning, since my host is only used by myself and I don’t experience a major performance breakdown on both the host and the VM when I’m using all my cores on the VM. If you’re not using NVIDIA GPU, the best CPU parameter should be:</div><div><div style="font-family: Helvetica, Arial; font-size: 13px;"><br></div><div><font face="Courier">-cpu host,kvm=off,hv_time,hv_relaxed,hv_vapic,hv_spinlocks=0x1fff,hv_vendor_id=12CHARID</font></div></div><div style="font-family: Helvetica, Arial; font-size: 13px;"><br></div><div><span style="font-family: Helvetica, Arial; font-size: 13px;">That basically use the exact CPU spec on the host, hides the KVM CPUID exposed to NVIDIA driver, and apply several Hyper-V enlightenment performance. Multiplayer games (like Tera) seems to be more affected using these Hyper-V flags. The last Hyper-V flags needs a very recent QEMU from GIT repo or apply Alex’ patch from [2]. I think you can skip the </span><font face="Courier">hv_vendor_id</font> flag if you’re using AMD GPU.</div><br><blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px;"><div><div dir="ltr"><div>Does the BIOS have an effect on performance?</div><div>seabios vs OVMF?</div></div></div></blockquote><div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; color: rgb(0, 0, 0); margin: 0px;"><br></div><div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; color: rgb(0, 0, 0); margin: 0px;">As far as I know, the major difference between Seabios vs OVMF is comparing BIOS (legacy) vs UEFI (legacy free). The major downside of using Seabios if we use an Intel Graphics for the KVM host, is the VGA arbitration. See Alex’ explanation on [3].</div><br><blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px;"><div dir="ltr"><div>CPU/Chipset IOMMU support - Not necessarily performance related, but stability?</div><div>e5 vs e3 vs i7 vs cpu architecture etc. What things are good to look for, what are bad? Etc.</div></div></blockquote><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">Alex summarized this on [4].</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">On November 14, 2015 at 08:06:00, Ryan Flagler (<a href="mailto:ryan.flagler@gmail.com">ryan.flagler@gmail.com</a>) wrote:</div> <div><div><div><br><blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span><div></div><div><div dir="ltr"><div>The 2nd command works, however passwing the mac address does not. It always defaults to the generic mac. Am I doing something wrong? If I try to use macaddr as the parameter I can an error that it isn't valid. Does anyone know if there is even a functional difference between these two?</div></div></div></span></blockquote></div><p>I used the Python script qemu-mac-hasher from [5] to generate a consistent MAC address generation based on the name of a VM. A better performance than plain VirtioNet is by using vhost [6]. This is my current line when enabling the virtual NIC of my VM.</p><p><font face="Courier">-netdev tap,vhost=on,id=brlan -device virtio-net-pci,mac=$(/usr/local/bin/qemu-mac-hasher $VM_NAME),netdev=brlan</font></p><div><blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span><div><div dir="ltr"><div>Lastly, my system has 4 NIC cards. Would it be faster or more efficient to pass through the nic itself? From what I read, it the 2nd option above should be just as fast as a physical NIC.</div></div></div></span></blockquote></div></div><p>Using a passed through physical NIC should have better performance and less CPU work in doing emulation. Since you have 4 NICs, I think you’d be better to passthrough that to the VM.</p><p><br></p><p>Please correct me if I’m wrong.</p><div>[1] https://www.redhat.com/archives/vfio-users</div><div>[2] http://www.spinics.net/lists/kvm/msg121742.html</div><div>[3] http://vfio.blogspot.co.id/2014/08/whats-deal-with-vga-arbitration.html</div><div>[4] http://vfio.blogspot.com/2015/10/intel-processors-with-acs-support.html</div><div>[5] https://wiki.archlinux.org/index.php/QEMU</div><div>[6] http://www.linux-kvm.org/page/UsingVhost</div></div><p><br></p><p>Best regards,</p><p><font face="helvetica, arial">-- </font><br><span data-mce-style="orphans: 2; text-align: -webkit-auto; widows: 2; background-color: #ffffff; color: #020103; font-family: 'Times New Roman', serif;" style="color: rgb(2, 1, 3);"><font face="Calibri"><b>Okky Hendriansyah</b></font></span></p></body></html>