# Ref: http://libguestfs.org/guestfs-performance.1.html Run the below command: $ time guestfish -a /dev/null run NOTE: Discard the first few results, to get a hot cache. (Thanks Rich.) 1/ L0. with L1 running. ---------------------------------------------------------------------- $ for i in {1..10}; do time guestfish -a /dev/null run; done real 0m28.277s user 0m11.028s sys 0m0.706s real 0m2.753s user 0m0.054s sys 0m0.049s real 0m2.771s user 0m0.063s sys 0m0.044s real 0m2.774s user 0m0.053s sys 0m0.044s real 0m2.772s user 0m0.054s sys 0m0.049s real 0m2.715s user 0m0.051s sys 0m0.045s real 0m2.753s user 0m0.064s sys 0m0.037s real 0m2.709s user 0m0.059s sys 0m0.044s real 0m2.782s user 0m0.055s sys 0m0.045s real 0m2.775s user 0m0.054s sys 0m0.049s ---------------------------------------------------------------------- => Remove the appliance and re-run: ---------------------------------------------------------------------- $ rm -rf /var/tmp/guestfs-0 $ for in in {1..2}; do time guestfish -a /dev/null run; done real 0m14.623s user 0m10.172s sys 0m0.520s real 0m2.790s user 0m0.048s sys 0m0.046s ---------------------------------------------------------------------- 2. L1 w/ nesting, VMCS shadowing enabled. NOTE: *NO* L2 guests are running while this test is being performed. ---------------------------------------------------------------------- $ for i in {1..10}; do time guestfish -a /dev/null run; done | tee guestfish-timings-L1.txt real 0m55.182s user 0m14.747s sys 0m8.501s real 0m8.754s user 0m0.054s sys 0m0.494s real 0m9.576s user 0m0.056s sys 0m0.490s real 0m8.793s user 0m0.056s sys 0m0.498s real 0m8.767s user 0m0.053s sys 0m0.492s real 0m8.715s user 0m0.049s sys 0m0.502s real 0m8.814s user 0m0.051s sys 0m0.503s real 0m8.765s user 0m0.046s sys 0m0.516s real 0m8.783s user 0m0.050s sys 0m0.502s real 0m8.739s user 0m0.054s sys 0m0.496s ---------------------------------------------------------------------- => Next, is to try: L1 w/o nesting, VMCS shadowing disabled. ---------------------------------------------------------------------- # On L0 $ vi /etc/modprobe.d/dist.conf - s/options kvm-intel nested=y/options kvm-intel nested=n/ # For the test purpose, remove the XML fragment (which adds VMX # extensions) for L1 CPU $ virsh edit regular-guest - Remove the below fragment, save it: <cpu mode='custom' match='exact'> <model fallback='allow'>Haswell</model> <feature policy='require' name='vmx'/> </cpu> # Reboot $ init 6 # Check for the nested parameter on L0 $ cat /sys/module/kvm_intel/parameters/nested N # Remove any old appliances $ rm -rf /var/tmp/.guestfs-0 # Run: $ for i in {1..10}; do time guestfish -a /dev/null run; done | tee \ guestfish-timings-L1-no-nested.txt ---------------------------------------------------------------------- -- /kashyap