guestfs-performance(1) Virtualization Support guestfs-performance(1) (NAME) guestfs-performance - libguestfs (DESCRIPTION) libguestfs libguestfs . . Libguestfs ( ) qemu/KVM . : . (inspection) . (BASELINE MEASUREMENTS) libguestfs . : (Baseline: Starting the appliance) : time guestfish -a /dev/null run << >> (hot cache) . : boot-benchmark https://github.com/libguestfs/libguestfs-analysis-tools . guestfish libguestfs (null) . ( /var/tmp/.guestfs-*). . . << >> . : (Baseline: Performing inspection of a guest) . libguestfs X ( X = ) X . libguestfs . . libvirt : time guestfish --ro -a disk.img -i exit time guestfish --ro -d GuestName -i exit << >> . libguestfs libvirt libguestfs ( "INSPECTION" guestfs(3) ) . ( /var/tmp/.guestfs-*). . . ( <= ). (UNDERSTANDING THE APPLIANCE AND WHEN IT IS BUILT/CACHED) libguestfs . /var/tmp/.guestfs-* $TMPDIR $LIBGUESTFS_CACHEDIR . "SUPERMIN APPLIANCES" supermin(1) . libguestfs . . ( "yum" "apt-get"). : . : o ( ) ( ). o . o /var/tmp ( $TMPDIR $LIBGUESTFS_CACHEDIR) . (USING A FIXED APPLIANCE) . . : libguestfs-make-fixed-appliance "" ( : /usr/local/lib/guestfs/appliance /dev/shm/appliance). $LIBGUESTFS_PATH ( libguestfs ) "guestfs_set_path" . : export LIBGUESTFS_PATH=/usr/local/lib/guestfs/appliance libguestfs virt guestfish . . ( : libguestfs-make-fixed-appliance(1)). (Performance of the fixed appliance) ( /dev/shm) . : 1. libguestfs libguestfs . 2. (on demand) . : time guestfish -a /dev/null run . libguestfs API . . (REDUCING THE NUMBER OF TIMES THE APPLIANCE IS LAUNCHED) . libguestfs . "guestfs_launch" . guestfish(1) guestfish / --listen guestfish . (daemon) . (marshal) . . : 1. . . 2. / (hard limit) . "guestfs_max_disks" guestfs(3) . "LIMITS" guestfs(3) . 3. libguestfs . : UUID ( / ) (volume groups) ( "guestfs_lvm_set_filter" ). virt-df(1) . (SHORTENING THE TIME TAKEN FOR INSPECTION OF VMs) : ( ) . . : . ("guestfs_inspect_os") : o . o ("guestfs_inspect_list_applications") . o ("guestfs_inspect_get_icon") . (PARALLEL APPLIANCES) Libguestfs / (I/O bound) . N . ( ) ( ) : 12 ++---+----+----+----+-----+----+----+----+----+---++ + + + + + + + + + + * | | | * | 11 ++ ++ | | | | | * * | 10 ++ ++ | * | | | s | | 9 ++ ++ e | | | * | c | | 8 ++ * ++ o | * | | | n 7 ++ ++ | * | d | * | | | s 6 ++ ++ | * * | | * | | | 5 ++ ++ | | | * | | * * | 4 ++ ++ | | | | + * * * + + + + + + + + 3 ++-*--+----+----+----+-----+----+----+----+----+---++ 0 2 4 6 8 10 12 14 16 18 20 number of parallel appliances libvirt libvirt . : http://rwmj.wordpress.com/2013/02/25/multiple-libguestfs-appliances-in-parallel-part-1 http://rwmj.wordpress.com/2013/02/25/multiple-libguestfs-appliances-in-parallel-part-2 http://rwmj.wordpress.com/2013/02/25/multiple-libguestfs-appliances-in-parallel-part-3 http://rwmj.wordpress.com/2013/02/25/multiple-libguestfs-appliances-in-parallel-part-4 #!/usr/bin/env perl use strict; use threads; use warnings; use Sys::Guestfs; use Time::HiRes qw(time); sub test { my $g = Sys::Guestfs->new; $g->add_drive_ro ("/dev/null"); $g->launch (); # You could add some work for libguestfs to do here. $g->close (); } # Get everything into cache. test (); test (); test (); for my $nr_threads (1..20) { my $start_t = time (); my @threads; foreach (1..$nr_threads) { push @threads, threads->create (\&test) } foreach (@threads) { $_->join (); if (my $err = $_->error ()) { die "launch failed with $nr_threads threads: $err" } } my $end_t = time (); printf ("%d %.2f\n", $nr_threads, $end_t - $start_t); } (TROUBLESHOOTING POOR PERFORMANCE) (Ensure hardware virtualization is available) /proc/cpuinfo . BIOS . libguestfs . (Nested virtualization) libguestfs (baremetal) . KVM (Ensure KVM is available) KVM libguestfs . 0666 /dev/kvm . (Processors to avoid) (AMD Geode ) . Xen dom0 (Xen dom0) Xen dom0 . libguestfs >= 1.34 qemu >= 2.7 (Use libguestfs >= 1.34 and qemu >= 2.7) libguestfs 1.33 libguestfs qemu . libguestfs qemu . (DETAILED ANALYSIS) (Boot analysis) https://github.com/libguestfs/libguestfs-analysis-tools "boot-analysis" . ( qemu BIOS init libguestfs) . ts (Detailed timings using ts) ts(1) ( moreutils) : $ guestfish -a /dev/null run -v |& ts -i '%.s' 0.000022 libguestfs: launch: program=guestfish 0.000134 libguestfs: launch: version=1.29.31fedora=23,release=2.fc23,libvirt 0.000044 libguestfs: launch: backend registered: unix 0.000035 libguestfs: launch: backend registered: uml 0.000035 libguestfs: launch: backend registered: libvirt 0.000032 libguestfs: launch: backend registered: direct 0.000030 libguestfs: launch: backend=libvirt 0.000031 libguestfs: launch: tmpdir=/tmp/libguestfsw18rBQ 0.000029 libguestfs: launch: umask=0002 0.000031 libguestfs: launch: euid=1000 0.000030 libguestfs: libvirt version = 1002012 (1.2.12) [etc] ( ). gdb (Detailed debugging using gdb) gdb BIOS/kernel . . qemu "-S" "-s" . qemu . qemu(1) . Libguestfs qemu ( ) qemu (wrapper) qemu : #!/bin/bash - # Set this to point to the real qemu binary. qemu=/usr/bin/qemu-kvm if [ "$1" != "-global" ]; then # Scanning help output etc. exec $qemu "$@" else # Really running qemu. exec $qemu -S -s "$@" fi guestfish libguestfs qemu ( "QEMU WRAPPERS" guestfs(3) ): LIBGUESTFS_HV=/path/to/qemu-wrapper guestfish -a /dev/null -v run qemu . gdb qemu : $ gdb (gdb) set architecture i8086 The target architecture is assumed to be i8086 (gdb) target remote :1234 Remote debugging using :1234 0x0000fff0 in ?? () (gdb) cont gdb "^C" "bt" (stack trace) (breakpoints) . BIOS . (PERFORMANCE REGRESSIONS IN OTHER PROGRAMS) ( qemu ) libguestfs . https://github.com/libguestfs/libguestfs-analysis-tools boot-benchmark/boot-benchmark-range.pl (benchmark) libguestfs ( ) . : ./boot-benchmark/boot-benchmark-range.pl --man (SEE ALSO) supermin(1), guestfish(1), guestfs(3), guestfs-examples(3), guestfs-internals(1), libguestfs-make-fixed-appliance(1), stap(1), qemu(1), gdb(1), http://libguestfs.org (AUTHORS) Richard W.M. Jones ("rjones at redhat dot com") (COPYRIGHT) Copyright (C) 2012-2025 Red Hat Inc. (LICENSE) << >> (GNU Lesser General Public License) ( ) / . . << >> . << >> : Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA (BUGS) libguestfs : https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools libguestfs : https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools : o libguestfs. o libguestfs ( ). o . o libguestfs-test-tool(1) . libguestfs-1.60.1 2026-07-14 guestfs-performance(1)