Richard W.M. Jones
2016-Mar-20 12:30 UTC
[Libguestfs] [PATCH v2 0/7] tests/qemu: Add program for tracing and analyzing boot times.
v1 was here: https://www.redhat.com/archives/libguestfs/2016-March/thread.html#00157 Not running the 'hwclock' command reduces boot times considerably. However I'm not sure if it is safe. See the question I posted on qemu-devel: http://thread.gmane.org/gmane.comp.emulators.qemu/402194 At the moment, about 50% of the time is consumed by SeaBIOS. Of this, about ⅓rd is SGABIOS (it contains a useless ¼s sleep waiting for a keypress ... ffs!), and the other ⅔rds is something else in SeaBIOS. Simply removing SGABIOS improves boot times to below 2s, but at a cost that we cannot see any messages from SeaBIOS so further measurement and therefore improvement becomes impossible. I'm going to try to fix SeaBIOS/SGABIOS first. See also: http://thread.gmane.org/gmane.comp.emulators.qemu/402196 Rich.
Richard W.M. Jones
2016-Mar-20 12:30 UTC
[Libguestfs] [PATCH v2 1/7] appliance: Print location of udevd.
This is useful for debugging (but we can't print it unconditionally since we cannot run grep etc yet). It also allows us to identify when udevd is invoked so we can time it for boot analysis. --- appliance/init | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/appliance/init b/appliance/init index f6fe9b9..657943c 100755 --- a/appliance/init +++ b/appliance/init @@ -65,10 +65,12 @@ systemd-tmpfiles --prefix=/dev --create --boot for f in /sbin/udevd /lib/udev/udevd \ /lib/systemd/systemd-udevd /usr/lib/systemd/systemd-udevd \ /usr/lib/udev/udevd; do - if [ -x "$f" ]; then UDEVD="$f"; fi + if [ -x "$f" ]; then UDEVD="$f"; fi done -if [ -z "$UDEVD" ]; then - echo "udev not found! Things will probably not work ..." +if [ -n "$UDEVD" ]; then + echo "UDEVD=$UDEVD" +else + echo "WARNING: udev not found! Things will probably not work ..." fi $UDEVD --daemon #--debug -- 2.5.0
Richard W.M. Jones
2016-Mar-20 12:30 UTC
[Libguestfs] [PATCH v2 2/7] appliance: When using verbose mode, 'set -x' in the appliance init script.
--- appliance/init | 1 + 1 file changed, 1 insertion(+) diff --git a/appliance/init b/appliance/init index 657943c..d1ea9a6 100755 --- a/appliance/init +++ b/appliance/init @@ -95,6 +95,7 @@ hwclock -u -s # Parse the kernel command line. if grep -sq guestfs_verbose=1 /proc/cmdline; then guestfs_verbose=1 + set -x fi if grep -sq guestfs_network=1 /proc/cmdline; then guestfs_network=1 -- 2.5.0
Richard W.M. Jones
2016-Mar-20 12:31 UTC
[Libguestfs] [PATCH v2 3/7] appliance: Move /proc/cmdline checks earlier.
--- appliance/init | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/appliance/init b/appliance/init index d1ea9a6..de028b3 100755 --- a/appliance/init +++ b/appliance/init @@ -77,21 +77,6 @@ $UDEVD --daemon #--debug udevadm trigger udevadm settle --timeout=600 -if grep -sq selinux=1 /proc/cmdline; then - mount -t selinuxfs none /sys/fs/selinux -fi - -# Disk optimizations. -# Increase the SCSI timeout so we can read remote images. -shopt -s nullglob -for f in /sys/block/sd*/device/timeout; do echo 300 > $f; done -# https://access.redhat.com/site/solutions/5427 -for f in /sys/block/{h,s,ub,v}d*/queue/scheduler; do echo noop > $f; done -shopt -u nullglob - -# Update the system clock. -hwclock -u -s - # Parse the kernel command line. if grep -sq guestfs_verbose=1 /proc/cmdline; then guestfs_verbose=1 @@ -108,6 +93,21 @@ if grep -sq guestfs_noreboot=1 /proc/cmdline; then fi eval `grep -Eo 'guestfs_channel=[^[:space:]]+' /proc/cmdline` +if grep -sq selinux=1 /proc/cmdline; then + mount -t selinuxfs none /sys/fs/selinux +fi + +# Disk optimizations. +# Increase the SCSI timeout so we can read remote images. +shopt -s nullglob +for f in /sys/block/sd*/device/timeout; do echo 300 > $f; done +# https://access.redhat.com/site/solutions/5427 +for f in /sys/block/{h,s,ub,v}d*/queue/scheduler; do echo noop > $f; done +shopt -u nullglob + +# Update the system clock. +hwclock -u -s + # Set up the network. ip addr add 127.0.0.1/8 brd + dev lo scope host ip link set dev lo up -- 2.5.0
Richard W.M. Jones
2016-Mar-20 12:31 UTC
[Libguestfs] [PATCH v2 4/7] appliance: Don't run hwclock command.
This command alone took 0.3 seconds which is about 10% of the current launch time. It appears to be unnecessary. This reverts commit 508f1ee87e816bf6b6fc8e629ccbb2d61a971169. --- appliance/init | 3 --- 1 file changed, 3 deletions(-) diff --git a/appliance/init b/appliance/init index de028b3..586f208 100755 --- a/appliance/init +++ b/appliance/init @@ -105,9 +105,6 @@ for f in /sys/block/sd*/device/timeout; do echo 300 > $f; done for f in /sys/block/{h,s,ub,v}d*/queue/scheduler; do echo noop > $f; done shopt -u nullglob -# Update the system clock. -hwclock -u -s - # Set up the network. ip addr add 127.0.0.1/8 brd + dev lo scope host ip link set dev lo up -- 2.5.0
Richard W.M. Jones
2016-Mar-20 12:31 UTC
[Libguestfs] [PATCH v2 5/7] launch: direct: Remove dead code promising we were going to use virtio-console.
We're never going to use virtio-console since, although it is faster, it's not available during early boot, and that is more important for debugging. --- src/launch-direct.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/launch-direct.c b/src/launch-direct.c index a81d4b3..f1fe92b 100644 --- a/src/launch-direct.c +++ b/src/launch-direct.c @@ -574,19 +574,9 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) ADD_CMDLINE ("-device"); ADD_CMDLINE (VIRTIO_SERIAL); -#if 0 - /* Use virtio-console (a variant form of virtio-serial) for the - * guest's serial console. - */ - ADD_CMDLINE ("-chardev"); - ADD_CMDLINE ("stdio,id=console"); - ADD_CMDLINE ("-device"); - ADD_CMDLINE ("virtconsole,chardev=console,name=org.libguestfs.console.0"); -#else /* When the above works ... until then: */ ADD_CMDLINE ("-serial"); ADD_CMDLINE ("stdio"); -#endif if (qemu_supports_device (g, data, "Serial Graphics Adapter")) { /* Use sgabios instead of vgabios. This means we'll see BIOS -- 2.5.0
Richard W.M. Jones
2016-Mar-20 12:31 UTC
[Libguestfs] [PATCH v2 6/7] tests/qemu: Add program for tracing and analyzing boot times.
--- .gitignore | 1 + appliance/init | 5 +- tests/qemu/Makefile.am | 22 +- tests/qemu/boot-analysis.c | 1195 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 1219 insertions(+), 4 deletions(-) create mode 100644 tests/qemu/boot-analysis.c diff --git a/.gitignore b/.gitignore index 1493011..9306a19 100644 --- a/.gitignore +++ b/.gitignore @@ -510,6 +510,7 @@ Makefile.in /tests/mountable/test-internal-parse-mountable /tests/parallel/test-parallel /tests/protocol/test-error-messages +/tests/qemu/boot-analysis /tests/qemu/qemu-boot /tests/qemu/qemu-speed-test /tests/regressions/rhbz501893 diff --git a/appliance/init b/appliance/init index 586f208..8225110 100755 --- a/appliance/init +++ b/appliance/init @@ -91,6 +91,9 @@ fi if grep -sq guestfs_noreboot=1 /proc/cmdline; then guestfs_noreboot=1 fi +if grep -sq guestfs_boot_analysis=1 /proc/cmdline; then + guestfs_boot_analysis=1 +fi eval `grep -Eo 'guestfs_channel=[^[:space:]]+' /proc/cmdline` if grep -sq selinux=1 /proc/cmdline; then @@ -131,7 +134,7 @@ lvm vgchange -aay --sysinit ldmtool create all # These are useful when debugging. -if test "$guestfs_verbose" = 1; then +if test "$guestfs_verbose" = 1 && test "$guestfs_boot_analysis" != 1; then uname -a ls -lR /dev cat /proc/mounts diff --git a/tests/qemu/Makefile.am b/tests/qemu/Makefile.am index 6c72b18..57ceeae 100644 --- a/tests/qemu/Makefile.am +++ b/tests/qemu/Makefile.am @@ -34,10 +34,10 @@ EXTRA_DIST = \ qemu-boot.c \ qemu-speed-test.c -# qemu-boot & qemu-speed-test are built but not run by default as they -# are mainly qemu & kernel diagnostic tools. +# qemu-boot, qemu-speed-test and boot-analysis are built but not run +# by default as they are mainly qemu & kernel diagnostic tools. -check_PROGRAMS = qemu-boot qemu-speed-test +check_PROGRAMS = qemu-boot qemu-speed-test boot-analysis qemu_boot_SOURCES = \ ../../df/estimate-max-threads.c \ @@ -76,6 +76,22 @@ qemu_speed_test_LDADD = \ $(LTLIBINTL) \ $(top_builddir)/gnulib/lib/libgnu.la +boot_analysis_SOURCES = \ + boot-analysis.c +boot_analysis_CPPFLAGS = \ + -I$(top_srcdir)/gnulib/lib -I$(top_builddir)/gnulib/lib \ + -I$(top_srcdir)/src -I$(top_builddir)/src +boot_analysis_CFLAGS = \ + $(WARN_CFLAGS) $(WERROR_CFLAGS) +boot_analysis_LDADD = \ + $(top_builddir)/src/libutils.la \ + $(top_builddir)/src/libguestfs.la \ + $(LIBXML2_LIBS) \ + $(LIBVIRT_LIBS) \ + $(LTLIBINTL) \ + $(top_builddir)/gnulib/lib/libgnu.la \ + -lm + # Don't run these tests in parallel, since they are designed to check # the integrity of qemu. .NOTPARALLEL: diff --git a/tests/qemu/boot-analysis.c b/tests/qemu/boot-analysis.c new file mode 100644 index 0000000..9c7dd72 --- /dev/null +++ b/tests/qemu/boot-analysis.c @@ -0,0 +1,1195 @@ +/* libguestfs + * Copyright (C) 2016 Red Hat Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +/* Trace and analyze the appliance boot process to find out which + * steps are taking the most time. It is not part of the standard + * tests. + * + * This needs to be run on a quiet machine, so that other processes + * disturb the timing as little as possible. The program is + * completely safe to run at any time. It doesn't read or write any + * external files, and it doesn't require root. + * + * You can run it from the build directory like this: + * + * make + * make -C tests/qemu boot-analysis + * ./run tests/qemu/boot-analysis + * + * The way it works is roughly like this: + * + * We create a libguestfs handle and register callback handlers so we + * can see appliance messages, trace events and so on. + * + * We then launch the handle and shut it down as quickly as possible. + * + * While the handle is running, events (seen by the callback handlers) + * are written verbatim into an in-memory buffer, with timestamps. + * + * Afterwards we analyze the result using regular expressions to try + * to identify a "timeline" for the handle (eg. at what time did the + * BIOS hand control to the kernel). + * + * The whole process is repeated across a few runs, and the final + * timeline (including statistical analysis of the variation between + * runs) gets printed. + * + * The program is very sensitive to the specific messages printed by + * BIOS/kernel/supermin/userspace, so it won't work on non-x86, and it + * will require periodic adjustment of the regular expressions in + * order to keep things up to date. + */ + +#include <config.h> + +#include <stdio.h> +#include <stdlib.h> +#include <stdint.h> +#include <inttypes.h> +#include <string.h> +#include <unistd.h> +#include <getopt.h> +#include <limits.h> +#include <time.h> +#include <errno.h> +#include <error.h> +#include <ctype.h> +#include <assert.h> +#include <math.h> + +#include "ignore-value.h" + +#include "guestfs.h" +#include "guestfs-internal-frontend.h" + +#define NR_WARMUP_PASSES 3 +#define NR_TEST_PASSES 5 + +/* Per-pass data collected. */ +struct pass_data { + size_t pass; + struct timespec start_t; + struct timespec end_t; + int64_t elapsed_ns; + + /* Array of timestamped events. */ + size_t nr_events; + struct event *events; + + /* Was the previous appliance log message incomplete? If so, this + * contains the index of that incomplete message in the events + * array. + */ + ssize_t incomplete_log_message; + + /* Have we seen the launch event yet? We don't record events until + * this one has been received. This makes it easy to base the + * timeline at event 0. + */ + int seen_launch; +}; + +struct event { + struct timespec t; + uint64_t source; + char *message; +}; + +static struct pass_data pass_data[NR_TEST_PASSES]; + +/* The final timeline consisting of various activities starting and + * ending. We're interested in when the activities start, and how + * long they take (mean, variance, standard deviation of length). + */ +struct activity { + char *name; /* Name of this activity. */ + int flags; +#define LONG_ACTIVITY 1 /* Expected to take a long time. */ + + /* For each pass, record the actual start & end events of this + * activity. + */ + size_t start_event[NR_TEST_PASSES]; + size_t end_event[NR_TEST_PASSES]; + + double t; /* Start (ns offset). */ + double end_t; /* t + mean - 1 */ + + /* Length of this activity. */ + double mean; /* Mean time elapsed (ns). */ + double variance; /* Variance. */ + double sd; /* Standard deviation. */ + double percent; /* Percent of total elapsed time. */ + + int warning; /* Appears in red. */ +}; + +static size_t nr_activities; +static struct activity *activities; + +static int verbose = 0; + +static void run_test (void); +static void get_time (struct timespec *ts); +static int64_t timespec_diff (const struct timespec *x, const struct timespec *y); +static struct event *add_event (struct pass_data *, uint64_t source); +static guestfs_h *create_handle (void); +static void set_up_event_handlers (guestfs_h *g, size_t pass); +static void add_drive (guestfs_h *g); +static void check_pass_data (void); +static void dump_pass_data (void); +static void construct_timeline (void); +static void dump_timeline (void); +static void print_info (void); +static void print_analysis (void); +static void free_pass_data (void); +static void free_final_timeline (void); +static void ansi_green (void); +static void ansi_red (void); +static void ansi_blue (void); +static void ansi_magenta (void); +static void ansi_restore (void); + +static void +usage (int exitcode) +{ + fprintf (stderr, + "boot-analysis: Trace and analyze the appliance boot process.\n" + "Usage:\n" + " boot-analysis [--options]\n" + "Options:\n" + " --help Display this usage text and exit.\n" + " -v|--verbose Verbose output, useful for debugging.\n"); + exit (exitcode); +} + +int +main (int argc, char *argv[]) +{ + enum { HELP_OPTION = CHAR_MAX + 1 }; + static const char *options = "v"; + static const struct option long_options[] = { + { "help", 0, 0, HELP_OPTION }, + { "verbose", 0, 0, 'v' }, + { 0, 0, 0, 0 } + }; + int c, option_index; + + for (;;) { + c = getopt_long (argc, argv, options, long_options, &option_index); + if (c == -1) break; + + switch (c) { + case 0: + /* Options which are long only. */ + fprintf (stderr, "%s: unknown long option: %s (%d)\n", + guestfs_int_program_name, long_options[option_index].name, option_index); + exit (EXIT_FAILURE); + + case 'v': + verbose = 1; + break; + + case HELP_OPTION: + usage (EXIT_SUCCESS); + + default: + usage (EXIT_FAILURE); + } + } + + if (STRNEQ (host_cpu, "x86_64")) + fprintf (stderr, "WARNING: host_cpu != x86_64: This program may not work or give bogus results.\n"); + + run_test (); +} + +static void +run_test (void) +{ + guestfs_h *g; + size_t i; + + printf ("Warming up the libguestfs cache ...\n"); + for (i = 0; i < NR_WARMUP_PASSES; ++i) { + g = create_handle (); + add_drive (g); + if (guestfs_launch (g) == -1) + exit (EXIT_FAILURE); + guestfs_close (g); + } + + printf ("Running the tests in %d passes ...\n", NR_TEST_PASSES); + for (i = 0; i < NR_TEST_PASSES; ++i) { + g = create_handle (); + set_up_event_handlers (g, i); + add_drive (g); + if (guestfs_launch (g) == -1) + exit (EXIT_FAILURE); + guestfs_close (g); + + printf (" pass %zu: %zu events collected in %" PRIi64 " ns\n", + i+1, pass_data[i].nr_events, pass_data[i].elapsed_ns); + } + + if (verbose) + dump_pass_data (); + + printf ("Analyzing the results ...\n"); + check_pass_data (); + construct_timeline (); + + if (verbose) + dump_timeline (); + + printf ("\n"); + print_info (); + printf ("\n"); + print_analysis (); + + free_pass_data (); + free_final_timeline (); +} + +static void +get_time (struct timespec *ts) +{ + if (clock_gettime (CLOCK_REALTIME, ts) == -1) + error (EXIT_FAILURE, errno, "clock_gettime: CLOCK_REALTIME"); +} + +/* Computes Y - X, returning nanoseconds. */ +static int64_t +timespec_diff (const struct timespec *x, const struct timespec *y) +{ + int64_t nsec; + + nsec = (y->tv_sec - x->tv_sec) * UINT64_C(1000000000); + nsec += y->tv_nsec - x->tv_nsec; + return nsec; +} + +static struct event * +add_event (struct pass_data *data, uint64_t source) +{ + struct event *ret; + + data->nr_events++; + data->events = realloc (data->events, + sizeof (struct event) * data->nr_events); + if (data->events == NULL) + error (EXIT_FAILURE, errno, "realloc"); + ret = &data->events[data->nr_events-1]; + get_time (&ret->t); + ret->source = source; + ret->message = NULL; + return ret; +} + +/* Common function to create the handle and set various defaults. */ +static guestfs_h * +create_handle (void) +{ + guestfs_h *g; + + g = guestfs_create (); + if (!g) error (EXIT_FAILURE, errno, "guestfs_create"); + + /* We always run these tests using LIBGUESTFS_BACKEND=direct. It + * may be in future we need to test libvirt as well, in case + * performance issues are suspected there, but so far libvirt has + * not been a bottleneck. + */ + if (guestfs_set_backend (g, "direct") == -1) + exit (EXIT_FAILURE); + + /* This changes some details in appliance/init. */ + if (guestfs_set_append (g, "guestfs_boot_analysis=1") == -1) + exit (EXIT_FAILURE); + + return g; +} + +/* Common function to add the /dev/null drive. */ +static void +add_drive (guestfs_h *g) +{ + if (guestfs_add_drive (g, "/dev/null") == -1) + exit (EXIT_FAILURE); +} + +/* Called when the handle is closed. Perform any cleanups required in + * the pass_data here. + */ +static void +close_callback (guestfs_h *g, void *datavp, uint64_t source, + int eh, int flags, + const char *buf, size_t buf_len, + const uint64_t *array, size_t array_len) +{ + struct pass_data *data = datavp; + struct event *event; + + if (!data->seen_launch) + return; + + event = add_event (data, source); + event->message = strdup ("close callback"); + if (event->message == NULL) + error (EXIT_FAILURE, errno, "strdup"); + + get_time (&data->end_t); + data->elapsed_ns = timespec_diff (&data->start_t, &data->end_t); +} + +/* Called when the qemu subprocess exits. + * XXX This is never called - why? + */ +static void +subprocess_quit_callback (guestfs_h *g, void *datavp, uint64_t source, + int eh, int flags, + const char *buf, size_t buf_len, + const uint64_t *array, size_t array_len) +{ + struct pass_data *data = datavp; + struct event *event; + + if (!data->seen_launch) + return; + + event = add_event (data, source); + event->message = strdup ("subprocess quit callback"); + if (event->message == NULL) + error (EXIT_FAILURE, errno, "strdup"); +} + +/* Called when the launch operation is complete (the library and the + * guestfs daemon and talking to each other). + */ +static void +launch_done_callback (guestfs_h *g, void *datavp, uint64_t source, + int eh, int flags, + const char *buf, size_t buf_len, + const uint64_t *array, size_t array_len) +{ + struct pass_data *data = datavp; + struct event *event; + + if (!data->seen_launch) + return; + + event = add_event (data, source); + event->message = strdup ("launch done callback"); + if (event->message == NULL) + error (EXIT_FAILURE, errno, "strdup"); +} + +/* Trim \r (multiple) from the end of a string. */ +static void +trim_r (char *message) +{ + size_t len = strlen (message); + + while (len > 0 && message[len-1] == '\r') { + message[len-1] = '\0'; + len--; + } +} + +/* Called when we get (possibly part of) a log message (or more than + * one log message) from the appliance (which may include qemu, the + * BIOS, kernel, etc). + */ +static void +appliance_callback (guestfs_h *g, void *datavp, uint64_t source, + int eh, int flags, + const char *buf, size_t buf_len, + const uint64_t *array, size_t array_len) +{ + struct pass_data *data = datavp; + struct event *event; + size_t i, len, slen; + + if (!data->seen_launch) + return; + + /* If the previous log message was incomplete then we may need to + * append part of the current log message to a previous one. + */ + if (data->incomplete_log_message >= 0) { + len = buf_len; + for (i = 0; i < buf_len; ++i) { + if (buf[i] == '\n') { + len = i; + break; + } + } + + event = &data->events[data->incomplete_log_message]; + slen = strlen (event->message); + event->message = realloc (event->message, slen + len + 1); + if (event->message == NULL) + error (EXIT_FAILURE, errno, "realloc"); + memcpy (event->message + slen, buf, len); + event->message[slen + len] = '\0'; + trim_r (event->message); + + /* Skip what we just added to the previous incomplete message. */ + buf += len; + buf_len -= len; + + if (buf_len == 0) /* still not complete, more to come! */ + return; + + /* Skip the \n in the buffer. */ + buf++; + buf_len--; + data->incomplete_log_message = -1; + } + + /* Add the event, or perhaps multiple events if the message + * contains \n characters. + */ + while (buf_len > 0) { + len = buf_len; + for (i = 0; i < buf_len; ++i) { + if (buf[i] == '\n') { + len = i; + break; + } + } + + event = add_event (data, source); + event->message = strndup (buf, len); + if (event->message == NULL) + error (EXIT_FAILURE, errno, "strndup"); + trim_r (event->message); + + /* Skip what we just added to the event. */ + buf += len; + buf_len -= len; + + if (buf_len == 0) { + /* Event is incomplete (doesn't end with \n). We'll finish it + * in the next callback. + */ + data->incomplete_log_message = event - data->events; + return; + } + + /* Skip the \n in the buffer. */ + buf++; + buf_len--; + } +} + +/* Called when we get a debug message from the library side. These + * are always delivered as complete messages. + */ +static void +library_callback (guestfs_h *g, void *datavp, uint64_t source, + int eh, int flags, + const char *buf, size_t buf_len, + const uint64_t *array, size_t array_len) +{ + struct pass_data *data = datavp; + struct event *event; + + if (!data->seen_launch) + return; + + event = add_event (data, source); + event->message = strndup (buf, buf_len); + if (event->message == NULL) + error (EXIT_FAILURE, errno, "strndup"); +} + +/* Called when we get a call trace message (a libguestfs API function + * has been called or is returning). These are always delivered as + * complete messages. + */ +static void +trace_callback (guestfs_h *g, void *datavp, uint64_t source, + int eh, int flags, + const char *buf, size_t buf_len, + const uint64_t *array, size_t array_len) +{ + struct pass_data *data = datavp; + struct event *event; + char *message; + + message = strndup (buf, buf_len); + if (message == NULL) + error (EXIT_FAILURE, errno, "strndup"); + + if (STREQ (message, "launch")) + data->seen_launch = 1; + + if (!data->seen_launch) { + free (message); + return; + } + + event = add_event (data, source); + event->message = message; +} + +/* Common function to set up event callbacks and record data in memory + * for a particular pass (0 <= pass < NR_TEST_PASSES). + */ +static void +set_up_event_handlers (guestfs_h *g, size_t pass) +{ + struct pass_data *data; + + assert (/* 0 <= pass && */ pass < NR_TEST_PASSES); + + data = &pass_data[pass]; + data->pass = pass; + data->nr_events = 0; + data->events = NULL; + get_time (&data->start_t); + data->incomplete_log_message = -1; + data->seen_launch = 0; + + guestfs_set_event_callback (g, close_callback, + GUESTFS_EVENT_CLOSE, 0, data); + guestfs_set_event_callback (g, subprocess_quit_callback, + GUESTFS_EVENT_SUBPROCESS_QUIT, 0, data); + guestfs_set_event_callback (g, launch_done_callback, + GUESTFS_EVENT_LAUNCH_DONE, 0, data); + guestfs_set_event_callback (g, appliance_callback, + GUESTFS_EVENT_APPLIANCE, 0, data); + guestfs_set_event_callback (g, library_callback, + GUESTFS_EVENT_LIBRARY, 0, data); + guestfs_set_event_callback (g, trace_callback, + GUESTFS_EVENT_TRACE, 0, data); + + guestfs_set_verbose (g, 1); + guestfs_set_trace (g, 1); +} + +/* Sanity check the collected events. */ +static void +check_pass_data (void) +{ + size_t i, j, len; + int64_t ns; + const char *message; + + for (i = 0; i < NR_TEST_PASSES; ++i) { + assert (pass_data[i].pass == i); + assert (pass_data[i].elapsed_ns > 1000); + assert (pass_data[i].nr_events > 0); + assert (pass_data[i].events != NULL); + + for (j = 0; j < pass_data[i].nr_events; ++j) { + assert (pass_data[i].events[j].t.tv_sec > 0); + if (j > 0) { + ns = timespec_diff (&pass_data[i].events[j-1].t, + &pass_data[i].events[j].t); + assert (ns >= 0); + } + assert (pass_data[i].events[j].source != 0); + message = pass_data[i].events[j].message; + assert (message != NULL); + assert (strchr (message, '\n') == NULL); + len = strlen (message); + assert (len == 0 || message[len-1] != '\r'); + } + } +} + +static void +print_escaped_string (const char *message) +{ + while (*message) { + if (isprint (*message)) + putchar (*message); + else + printf ("\\x%02x", (unsigned int) *message); + message++; + } +} + +/* Dump the events to stdout, if verbose is set. */ +static void +dump_pass_data (void) +{ + size_t i, j; + + for (i = 0; i < NR_TEST_PASSES; ++i) { + printf ("pass %zu\n", pass_data[i].pass); + printf (" number of events collected %zu\n", pass_data[i].nr_events); + printf (" elapsed time %" PRIi64 " ns\n", pass_data[i].elapsed_ns); + for (j = 0; j < pass_data[i].nr_events; ++j) { + int64_t ns; + CLEANUP_FREE char *event_str = NULL; + + ns = timespec_diff (&pass_data[i].start_t, &pass_data[i].events[j].t); + event_str = guestfs_event_to_string (pass_data[i].events[j].source); + printf (" #%zu: +%" PRIi64 " [%s] \"", j, ns, event_str); + print_escaped_string (pass_data[i].events[j].message); + printf ("\"\n"); + } + } +} + +/* Add an activity to the global list. */ +static struct activity * +add_activity (const char *name, int flags) +{ + struct activity *ret; + + nr_activities++; + activities = realloc (activities, sizeof (struct activity) * nr_activities); + if (activities == NULL) + error (EXIT_FAILURE, errno, "realloc"); + ret = &activities[nr_activities-1]; + ret->name = strdup (name); + if (ret->name == NULL) + error (EXIT_FAILURE, errno, "strdup"); + ret->flags = flags; + return ret; +} + +static struct activity * +find_activity (const char *name) +{ + size_t i; + + for (i = 0; i < nr_activities; ++i) + if (STREQ (activities[i].name, name)) + return &activities[i]; + error (EXIT_FAILURE, 0, + "internal error: could not find activity '%s'", name); + /*NOTREACHED*/ + abort (); +} + +static int +compare_activities (const void *av, const void *bv) +{ + const struct activity *a = av; + const struct activity *b = bv; + + return a->t - b->t; +} + +/* Analyze significant events from the events array, to form a + * timeline of activities. + */ +static void +construct_timeline (void) +{ + size_t i, j, k; + struct pass_data *data; + struct activity *activity; + int64_t delta_ns; + + for (i = 0; i < NR_TEST_PASSES; ++i) { + data = &pass_data[i]; + + /* Find an activity, by matching an event with the condition + * `begin_cond' through to the second event `end_cond'. Create an + * activity object in the timeline from the result. + */ +#define FIND(name, flags, begin_cond, end_cond) \ + do { \ + activity = NULL; \ + for (j = 0; j < data->nr_events; ++j) { \ + if (begin_cond) { \ + for (k = j+1; k < data->nr_events; ++k) { \ + if (end_cond) { \ + if (i == 0) \ + activity = add_activity (name, flags); \ + else \ + activity = find_activity (name); \ + break; \ + } \ + } \ + break; \ + } \ + } \ + if (activity) { \ + activity->start_event[i] = j; \ + activity->end_event[i] = k; \ + } \ + else \ + error (EXIT_FAILURE, 0, "could not find activity '%s' in pass '%zu'", \ + name, i); \ + } while (0) + +#if 0 + /* Same as FIND() macro, but if no matching events are found, + * ignore it. + */ +#define FIND_OPTIONAL(name, flags, begin_cond, end_cond) \ + do { \ + activity = NULL; \ + for (j = 0; j < data->nr_events; ++j) { \ + if (begin_cond) { \ + for (k = j+1; k < data->nr_events; ++k) { \ + if (end_cond) { \ + if (i == 0) \ + activity = add_activity (name, flags); \ + else \ + activity = find_activity (name); \ + break; \ + } \ + } \ + break; \ + } \ + } \ + if (activity) { \ + activity->start_event[i] = j; \ + activity->end_event[i] = k; \ + } \ + } while (0) +#endif + +#define FIND_MULTIPLE(debug_name, flags, next_cond, end_cond) \ + do { \ + activity = NULL; \ + for (j = 0; j < data->nr_events; ++j) { \ + if (next_cond) { \ + if (activity) \ + activity->end_event[i] = j; \ + if (i == 0) \ + activity = add_activity (data->events[j].message, flags); \ + else \ + activity = find_activity (data->events[j].message); \ + activity->start_event[i] = j; \ + } \ + else if (end_cond) \ + break; \ + } \ + if (j < data->nr_events && activity) \ + activity->end_event[i] = j; \ + else \ + error (EXIT_FAILURE, 0, "could not find activity '%s' in pass '%zu'", \ + debug_name, i); \ + } while (0) + + /* Add one activity which is going to cover the whole process + * from launch to close. The launch event is always event 0. + * NB: This activity must be called "run" (see below). + */ + FIND ("run", LONG_ACTIVITY, + j == 0, data->events[k].source == GUESTFS_EVENT_CLOSE); + + /* Find where we invoke supermin --build. This should be a null + * operation, but it still takes time to run the external command. + */ + FIND ("supermin:build", 0, + data->events[j].source == GUESTFS_EVENT_LIBRARY && + strstr (data->events[j].message, + "begin building supermin appliance"), + data->events[k].source == GUESTFS_EVENT_LIBRARY && + strstr (data->events[k].message, + "finished building supermin appliance")); + + /* Find where we invoke qemu to test features. */ + FIND ("qemu:feature-detect", 0, + data->events[j].source == GUESTFS_EVENT_LIBRARY && + strstr (data->events[j].message, + "begin testing qemu features"), + data->events[k].source == GUESTFS_EVENT_LIBRARY && + strstr (data->events[k].message, + "finished testing qemu features")); + + /* Find where we run qemu. */ + FIND ("qemu", LONG_ACTIVITY, + data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, "-nodefconfig"), + data->events[k].source == GUESTFS_EVENT_CLOSE); + +#define SGABIOS_STRING "\033[1;256r\033[256;256H\033[6n" + + /* From starting qemu up to entering the BIOS is the qemu overhead. */ + FIND ("qemu:overhead", 0, + data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, "-nodefconfig"), + data->events[k].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[k].message, SGABIOS_STRING)); + + /* From entering the BIOS to starting the kernel is the BIOS overhead. */ + FIND ("bios:overhead", 0, + data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, SGABIOS_STRING), + data->events[k].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[k].message, "Linux version")); + + /* SGABIOS (option ROM). */ + FIND ("sgabios", 0, + data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, SGABIOS_STRING), + data->events[k].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[k].message, "SeaBIOS (version")); + + /* SeaBIOS. */ + FIND ("seabios", 0, + data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, "SeaBIOS (version"), + data->events[k].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[k].message, "Linux version")); + + /* Find where we run the guest kernel. */ + FIND ("kernel", LONG_ACTIVITY, + data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, "Linux version"), + data->events[k].source == GUESTFS_EVENT_CLOSE); + + /* Kernel startup. */ + FIND ("kernel:overhead", 0, + data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, "Linux version"), + data->events[k].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[k].message, "supermin:") && + strstr (data->events[k].message, "starting up")); + + /* XXX More detailed look at kernel boot stages here. */ + + /* Find where we run supermin mini-initrd. */ + FIND ("supermin:mini-initrd", 0, + data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, "supermin:") && + strstr (data->events[j].message, "starting up"), + data->events[k].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[k].message, "supermin: chroot")); + + /* Loading kernel modules from supermin initrd. */ + FIND_MULTIPLE + ("supermin insmod", 0, + data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, "supermin: internal insmod"), + data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, "supermin: picked")); + + /* Find where we run the /init script. */ + FIND ("/init", 0, + data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, "supermin: chroot"), + data->events[k].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[k].message, "guestfsd --verbose")); + + /* Everything from the chroot to the first echo in the /init + * script counts as bash overhead. + */ + FIND ("bash:overhead", 0, + data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, "supermin: chroot"), + data->events[k].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[k].message, "Starting /init script")); + + /* Find where we run guestfsd. */ + FIND ("guestfsd", 0, + data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, "guestfsd --verbose"), + data->events[k].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[k].message, "fsync /dev/sda")); + + /* Shutdown process. */ + FIND ("shutdown", 0, + data->events[j].source == GUESTFS_EVENT_TRACE && + STREQ (data->events[j].message, "close"), + data->events[k].source == GUESTFS_EVENT_CLOSE); + } + + /* Now we can go through the activities, computing the start and + * elapsed time. + */ + for (j = 0; j < nr_activities; ++j) { + activity = &activities[j]; + + activity->t = 0; + activity->mean = 0; + for (i = 0; i < NR_TEST_PASSES; ++i) { + delta_ns + timespec_diff (&pass_data[i].events[0].t, + &pass_data[i].events[activity->start_event[i]].t); + activity->t += delta_ns; + + delta_ns + timespec_diff (&pass_data[i].events[activity->start_event[i]].t, + &pass_data[i].events[activity->end_event[i]].t); + activity->mean += delta_ns; + } + + /* Divide through to get real start time and mean of each activity. */ + activity->t /= NR_TEST_PASSES; + activity->mean /= NR_TEST_PASSES; + + /* Calculate the end time of this activity. It's convenient when + * drawing the timeline for one activity to finish just before the + * next activity starts, rather than having them end and start at + * the same time, hence ``- 1'' here. + */ + activity->end_t = activity->t + activity->mean - 1; + + /* The above only calculated mean. Now we are able to + * calculate from the mean the variance and the standard + * deviation. + */ + activity->variance = 0; + for (i = 0; i < NR_TEST_PASSES; ++i) { + delta_ns + timespec_diff (&pass_data[i].events[activity->start_event[i]].t, + &pass_data[i].events[activity->end_event[i]].t); + activity->variance += pow (delta_ns - activity->mean, 2); + } + activity->variance /= NR_TEST_PASSES; + + activity->sd = sqrt (activity->variance); + } + + /* Get the total mean elapsed time from the special "run" activity. */ + activity = find_activity ("run"); + for (j = 0; j < nr_activities; ++j) { + activities[j].percent = 100.0 * activities[j].mean / activity->mean; + + activities[j].warning + !(activities[j].flags & LONG_ACTIVITY) && activities[j].percent >= 5.0; + } + + /* Sort the activities by start time. */ + qsort (activities, nr_activities, sizeof (struct activity), + compare_activities); +} + +/* Dump the timeline to stdout, if verbose is set. */ +static void +dump_timeline (void) +{ + size_t i; + + for (i = 0; i < nr_activities; ++i) { + printf ("activity %zu:\n", i); + printf (" name = %s\n", activities[i].name); + printf (" start - end = %.1f - %.1f\n", + activities[i].t, activities[i].end_t); + printf (" mean elapsed = %.1f\n", activities[i].mean); + printf (" variance = %.1f\n", activities[i].variance); + printf (" s.d = %.1f\n", activities[i].sd); + printf (" percent = %.1f\n", activities[i].percent); + } +} + +/* Print some information that will allow us to determine the test + * system when reviewing the results in future. + */ +static void +print_info (void) +{ + size_t i; + + printf ("%s %s\n", PACKAGE_NAME, PACKAGE_VERSION_FULL); + + printf ("Host:\n"); + ignore_value (system ("uname -a")); + ignore_value (system ("grep '^model name' /proc/cpuinfo | head -1")); + + /* We can dig some information about qemu and the appliance out of + * the events. + */ + printf ("Appliance:\n"); + assert (NR_TEST_PASSES > 0); + for (i = 0; i < pass_data[0].nr_events; ++i) { + const char *message = pass_data[0].events[i].message; + if (strstr (message, "qemu version") || + (strstr (message, "SeaBIOS") && strstr (message, "version")) || + strstr (message, "Linux version") || + (strstr (message, "supermin") && strstr (message, "starting up"))) { + print_escaped_string (message); + putchar ('\n'); + } + } +} + +static void +print_analysis (void) +{ + double t = -1; /* Current time. */ + /* Which columns contain activities that we are displaying now? + * -1 == unused column, else index of an activity + */ + CLEANUP_FREE ssize_t *columns = NULL; + const size_t nr_columns = nr_activities; + size_t last_free_column = 0; + + size_t i, j; + double last_t, smallest_next_t; + const double MAX_T = 1e20; + + columns = malloc (nr_columns * sizeof (ssize_t)); + if (columns == NULL) error (EXIT_FAILURE, errno, "malloc"); + for (j = 0; j < nr_columns; ++j) + columns[j] = -1; + + for (;;) { + /* Find the next significant time to display, which is a time when + * some activity started or ended. + */ + smallest_next_t = MAX_T; + for (i = 0; i < nr_activities; ++i) { + if (t < activities[i].t && activities[i].t < smallest_next_t) + smallest_next_t = activities[i].t; + else if (t < activities[i].end_t && activities[i].end_t < smallest_next_t) + smallest_next_t = activities[i].end_t; + } + if (smallest_next_t == MAX_T) + break; /* Finished. */ + + last_t = t; + t = smallest_next_t; + + /* Draw a spacer line, but only if last_t -> t is a large jump. */ + if (t - last_t >= 1000000 /* ns */) { + printf (" "); + ansi_magenta (); + for (j = 0; j < last_free_column; ++j) { + if (columns[j] >= 0 && + activities[columns[j]].end_t != last_t /* !▼ */) + printf ("│ "); + else + printf (" "); + } + ansi_restore (); + printf ("\n"); + } + + /* If there are any activities that ended before this time, drop + * them from the columns list. + */ + for (i = 0; i < nr_activities; ++i) { + if (activities[i].end_t < t) { + for (j = 0; j < nr_columns; ++j) + if (columns[j] == (ssize_t) i) { + columns[j] = -1; + break; + } + } + } + + /* May need to adjust last_free_column after previous operation. */ + while (last_free_column > 0 && columns[last_free_column-1] == -1) + last_free_column--; + + /* If there are any activities starting at this time, add them to + * the right hand end of the columns list. + */ + for (i = 0; i < nr_activities; ++i) { + if (activities[i].t == t) + columns[last_free_column++] = i; + } + + /* Draw the line. */ + ansi_blue (); + printf ("%1.6fs: ", t / 1000000000); + + ansi_magenta (); + for (j = 0; j < last_free_column; ++j) { + if (columns[j] >= 0) { + if (activities[columns[j]].t == t) + printf ("▲ "); + else if (activities[columns[j]].end_t == t) + printf ("▼ "); + else + printf ("│ "); + } + else + printf (" "); + } + ansi_restore (); + + for (j = 0; j < last_free_column; ++j) { + if (columns[j] >= 0 && activities[columns[j]].t == t) /* ▲ */ { + if (activities[columns[j]].warning) ansi_red (); else ansi_green (); + print_escaped_string (activities[columns[j]].name); + ansi_restore (); + printf (" mean:%1.6fs ±%.1fms ", + activities[columns[j]].mean / 1000000000, + activities[columns[j]].sd / 1000000); + if (activities[columns[j]].warning) ansi_red (); else ansi_green (); + printf ("(%.1f%%) ", activities[columns[j]].percent); + ansi_restore (); + } + } + + printf ("\n"); + } +} + +/* Free the non-static part of the pass_data structures. */ +static void +free_pass_data (void) +{ + size_t i, j; + + for (i = 0; i < NR_TEST_PASSES; ++i) { + for (j = 0; j < pass_data[i].nr_events; ++j) + free (pass_data[i].events[j].message); + free (pass_data[i].events); + } +} + +static void +free_final_timeline (void) +{ + size_t i; + + for (i = 0; i < nr_activities; ++i) + free (activities[i].name); + free (activities); +} + +/* Colours. */ +static void +ansi_green (void) +{ + if (isatty (1)) + fputs ("\033[0;32m", stdout); +} + +static void +ansi_red (void) +{ + if (isatty (1)) + fputs ("\033[1;31m", stdout); +} + +static void +ansi_blue (void) +{ + if (isatty (1)) + fputs ("\033[1;34m", stdout); +} + +static void +ansi_magenta (void) +{ + if (isatty (1)) + fputs ("\033[1;35m", stdout); +} + +static void +ansi_restore (void) +{ + if (isatty (1)) + fputs ("\033[0m", stdout); +} -- 2.5.0
Richard W.M. Jones
2016-Mar-20 12:31 UTC
[Libguestfs] [PATCH v2 7/7] launch: Remove guestfs_int_print_timestamped_message function.
This function was kind of like debug(), except that it didn't check the g->verbose flag and it only worked in the library (it would crash if used after fork). It also wasn't very useful. The sort of boot analysis done by tests/qemu/boot-analysis.c means that timestamping (some) messages is even less interesting than before. Remove it and replace calls with debug() instead. --- src/appliance.c | 9 +++------ src/guestfs-internal.h | 1 - src/launch-direct.c | 9 +++------ src/launch-libvirt.c | 21 +++++++-------------- src/launch-uml.c | 3 +-- src/launch-unix.c | 6 ++---- src/launch.c | 25 ------------------------- 7 files changed, 16 insertions(+), 58 deletions(-) diff --git a/src/appliance.c b/src/appliance.c index de088e9..864761f 100644 --- a/src/appliance.c +++ b/src/appliance.c @@ -233,18 +233,15 @@ build_supermin_appliance (guestfs_h *g, } (void) utimes (cachedir, NULL); - if (g->verbose) - guestfs_int_print_timestamped_message (g, "begin building supermin appliance"); + debug (g, "begin building supermin appliance"); /* Build the appliance if it needs to be built. */ - if (g->verbose) - guestfs_int_print_timestamped_message (g, "run supermin"); + debug (g, "run supermin"); if (run_supermin_build (g, lockfile, appliancedir, supermin_path) == -1) return -1; - if (g->verbose) - guestfs_int_print_timestamped_message (g, "finished building supermin appliance"); + debug (g, "finished building supermin appliance"); /* Return the appliance filenames. */ *kernel = safe_asprintf (g, "%s/kernel", appliancedir); diff --git a/src/guestfs-internal.h b/src/guestfs-internal.h index 3707c1b..61f384c 100644 --- a/src/guestfs-internal.h +++ b/src/guestfs-internal.h @@ -778,7 +778,6 @@ extern int guestfs_int_get_uefi (guestfs_h *g, char **code, char **vars); /* launch.c */ extern int64_t guestfs_int_timeval_diff (const struct timeval *x, const struct timeval *y); -extern void guestfs_int_print_timestamped_message (guestfs_h *g, const char *fs, ...) __attribute__((format (printf,2,3))); extern void guestfs_int_launch_send_progress (guestfs_h *g, int perdozen); extern char *guestfs_int_appliance_command_line (guestfs_h *g, const char *appliance_dev, int flags); #define APPLIANCE_COMMAND_LINE_IS_TCG 1 diff --git a/src/launch-direct.c b/src/launch-direct.c index f1fe92b..3ed840d 100644 --- a/src/launch-direct.c +++ b/src/launch-direct.c @@ -285,8 +285,7 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) guestfs_int_launch_send_progress (g, 3); - if (g->verbose) - guestfs_int_print_timestamped_message (g, "begin testing qemu features"); + debug (g, "begin testing qemu features"); /* Get qemu help text and version. */ if (qemu_supports (g, data, NULL) == -1) @@ -327,8 +326,7 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) } } - if (g->verbose) - guestfs_int_print_timestamped_message (g, "finished testing qemu features"); + debug (g, "finished testing qemu features"); /* Construct the qemu command line. We have to do this before * forking, because after fork we are not allowed to use @@ -815,8 +813,7 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) goto cleanup1; } - if (g->verbose) - guestfs_int_print_timestamped_message (g, "appliance is up"); + debug (g, "appliance is up"); /* This is possible in some really strange situations, such as * guestfsd starts up OK but then qemu immediately exits. Check for diff --git a/src/launch-libvirt.c b/src/launch-libvirt.c index cdc83f4..9f2672d 100644 --- a/src/launch-libvirt.c +++ b/src/launch-libvirt.c @@ -286,8 +286,7 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) } debug (g, "guest random name = %s", data->name); - if (g->verbose) - guestfs_int_print_timestamped_message (g, "connect to libvirt"); + debug (g, "connect to libvirt"); /* Decode the URI string. */ if (!libvirt_uri) { /* "libvirt" */ @@ -326,8 +325,7 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) data->qemu_version = 0; } - if (g->verbose) - guestfs_int_print_timestamped_message (g, "get libvirt capabilities"); + debug (g, "get libvirt capabilities"); capabilities_xml = virConnectGetCapabilities (conn); if (!capabilities_xml) { @@ -339,8 +337,7 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) * struct, and can also fail if we detect that the hypervisor cannot * run qemu guests (RHBZ#886915). */ - if (g->verbose) - guestfs_int_print_timestamped_message (g, "parsing capabilities XML"); + debug (g, "parsing capabilities XML"); if (parse_capabilities (g, capabilities_xml, data) == -1) goto cleanup; @@ -373,8 +370,7 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) /* Locate and/or build the appliance. */ TRACE0 (launch_build_libvirt_appliance_start); - if (g->verbose) - guestfs_int_print_timestamped_message (g, "build appliance"); + debug (g, "build appliance"); if (guestfs_int_build_appliance (g, ¶ms.kernel, ¶ms.initrd, &appliance) == -1) @@ -503,8 +499,7 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) } /* Construct the libvirt XML. */ - if (g->verbose) - guestfs_int_print_timestamped_message (g, "create libvirt XML"); + debug (g, "create libvirt XML"); params.appliance_index = g->nr_drives; strcpy (params.appliance_dev, "/dev/sd"); @@ -522,8 +517,7 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) } /* Launch the libvirt guest. */ - if (g->verbose) - guestfs_int_print_timestamped_message (g, "launch libvirt guest"); + debug (g, "launch libvirt guest"); dom = virDomainCreateXML (conn, (char *) xml, VIR_DOMAIN_START_AUTODESTROY); if (!dom) { @@ -591,8 +585,7 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) goto cleanup; } - if (g->verbose) - guestfs_int_print_timestamped_message (g, "appliance is up"); + debug (g, "appliance is up"); /* This is possible in some really strange situations, such as * guestfsd starts up OK but then qemu immediately exits. Check for diff --git a/src/launch-uml.c b/src/launch-uml.c index 1c2fd02..318081c 100644 --- a/src/launch-uml.c +++ b/src/launch-uml.c @@ -446,8 +446,7 @@ launch_uml (guestfs_h *g, void *datav, const char *arg) goto cleanup1; } - if (g->verbose) - guestfs_int_print_timestamped_message (g, "appliance is up"); + debug (g, "appliance is up"); /* This is possible in some really strange situations, such as * guestfsd starts up OK but then vmlinux immediately exits. Check diff --git a/src/launch-unix.c b/src/launch-unix.c index 973e14b..212de69 100644 --- a/src/launch-unix.c +++ b/src/launch-unix.c @@ -53,8 +53,7 @@ launch_unix (guestfs_h *g, void *datav, const char *sockpath) return -1; } - if (g->verbose) - guestfs_int_print_timestamped_message (g, "connecting to %s", sockpath); + debug (g, "connecting to %s", sockpath); daemon_sock = socket (AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0); if (daemon_sock == -1) { @@ -90,8 +89,7 @@ launch_unix (guestfs_h *g, void *datav, const char *sockpath) goto cleanup; } - if (g->verbose) - guestfs_int_print_timestamped_message (g, "connected"); + debug (g, "connected"); if (g->state != READY) { error (g, _("contacted guestfsd, but state != READY")); diff --git a/src/launch.c b/src/launch.c index 074ac6f..f553bd3 100644 --- a/src/launch.c +++ b/src/launch.c @@ -119,31 +119,6 @@ guestfs_int_launch_send_progress (guestfs_h *g, int perdozen) } } -/* Note that since this calls 'debug' it should only be called - * from the parent process. - */ -void -guestfs_int_print_timestamped_message (guestfs_h *g, const char *fs, ...) -{ - va_list args; - char *msg; - int err; - struct timeval tv; - - va_start (args, fs); - err = vasprintf (&msg, fs, args); - va_end (args); - - if (err < 0) return; - - gettimeofday (&tv, NULL); - - debug (g, "[%05" PRIi64 "ms] %s", - guestfs_int_timeval_diff (&g->launch_t, &tv), msg); - - free (msg); -} - /* Compute Y - X and return the result in milliseconds. * Approximately the same as this code: * http://www.mpp.mpg.de/~huber/util/timevaldiff.c -- 2.5.0
Richard W.M. Jones
2016-Mar-20 12:40 UTC
Re: [Libguestfs] [PATCH v2 0/7] tests/qemu: Add program for tracing and analyzing boot times.
Typical analysis from this program attached. (The real output from the program has pretty colours ...) Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-df lists disk usage of guests without needing to install any software inside the virtual machine. Supports Linux and Windows. http://people.redhat.com/~rjones/virt-df/ --7ZAtKRhVyVSsbBD2 Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename="analysis.txt" Content-Transfer-Encoding: 8bit Linux moo.home.annexia.org 4.4.4-301.fc23.x86_64 #1 SMP Fri Mar 4 17:42:42 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux model name : Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz Warming up the libguestfs cache ... Running the tests in 2 passes ... pass 1: 461 events collected in 2282816890 ns pass 2: 461 events collected in 2266873397 ns pass 0 number of events collected 461 elapsed time 2282816890 ns #0: +147443 [trace] "launch" #1: +151110 [trace] "version" #2: +159516 [trace] "version = <struct guestfs_version = major: 1, minor: 33, release: 15, extra: , >" #3: +161830 [trace] "get_backend" #4: +163814 [trace] "get_backend = "direct"" #5: +164982 [library] "launch: program=boot-analysis" #6: +165903 [library] "launch: version=1.33.15" #7: +166831 [library] "launch: backend registered: unix" #8: +167616 [library] "launch: backend registered: uml" #9: +168287 [library] "launch: backend registered: libvirt" #10: +168899 [library] "launch: backend registered: direct" #11: +169474 [library] "launch: backend=direct" #12: +170141 [library] "launch: tmpdir=/home/rjones/d/libguestfs/tmp/libguestfsDOucPz" #13: +202457 [library] "launch: umask=0002" #14: +203374 [library] "launch: euid=1000" #15: +220156 [trace] "get_backend_setting "force_tcg"" #16: +224124 [trace] "get_backend_setting = NULL (error)" #17: +230759 [trace] "get_cachedir" #18: +232760 [trace] "get_cachedir = "/home/rjones/d/libguestfs/tmp"" #19: +246029 [library] "begin building supermin appliance" #20: +246607 [library] "run supermin" #21: +249927 [library] "command: run: /usr/bin/supermin" #22: +250539 [library] "command: run: \ --build" #23: +251007 [library] "command: run: \ --verbose" #24: +251471 [library] "command: run: \ --if-newer" #25: +252083 [library] "command: run: \ --lock /home/rjones/d/libguestfs/tmp/.guestfs-1000/lock" #26: +252789 [library] "command: run: \ --copy-kernel" #27: +253367 [library] "command: run: \ -f ext2" #28: +253964 [library] "command: run: \ --host-cpu x86_64" #29: +254460 [library] "command: run: \ /home/rjones/d/libguestfs/appliance/supermin.d" #30: +255101 [library] "command: run: \ -o /home/rjones/d/libguestfs/tmp/.guestfs-1000/appliance.d" #31: +8276383 [appliance] "supermin: version: 5.1.15" #32: +8277112 [appliance] "supermin: rpm: detected RPM version 4.13" #33: +8277641 [appliance] "supermin: package handler: fedora/rpm" #34: +8277846 [appliance] "supermin: acquiring lock on /home/rjones/d/libguestfs/tmp/.guestfs-1000/lock" #35: +8279912 [appliance] "supermin: if-newer: output does not need rebuilding" #36: +10738829 [library] "finished building supermin appliance" #37: +10759858 [library] "begin testing qemu features" #38: +10762666 [library] "command: run: /usr/bin/qemu-kvm" #39: +10763144 [library] "command: run: \ -display none" #40: +10763467 [library] "command: run: \ -help" #41: +109881029 [library] "command: run: /usr/bin/qemu-kvm" #42: +109882585 [library] "command: run: \ -display none" #43: +109883183 [library] "command: run: \ -version" #44: +204787129 [library] "qemu version 2.5" #45: +204791498 [library] "command: run: /usr/bin/qemu-kvm" #46: +204792374 [library] "command: run: \ -display none" #47: +204792999 [library] "command: run: \ -machine accel=kvm:tcg" #48: +204793611 [library] "command: run: \ -device ?" #49: +301752570 [trace] "get_sockdir" #50: +301757996 [trace] "get_sockdir = "/run/user/1000"" #51: +302140236 [library] "finished testing qemu features" #52: +302151821 [trace] "get_backend_setting "gdb"" #53: +302156417 [trace] "get_backend_setting = NULL (error)" #54: +304046282 [appliance] "[00302ms] /usr/bin/qemu-kvm \" #55: +304048563 [appliance] " -global virtio-blk-pci.scsi=off \" #56: +304050283 [appliance] " -nodefconfig \" #57: +304051966 [appliance] " -enable-fips \" #58: +304053570 [appliance] " -nodefaults \" #59: +304055288 [appliance] " -display none \" #60: +304056989 [appliance] " -machine accel=kvm:tcg \" #61: +304058405 [appliance] " -cpu host \" #62: +304059751 [appliance] " -m 500 \" #63: +304061194 [appliance] " -no-reboot \" #64: +304062616 [appliance] " -rtc driftfix=slew \" #65: +304064126 [appliance] " -no-hpet \" #66: +304065683 [appliance] " -global kvm-pit.lost_tick_policy=discard \" #67: +304067208 [appliance] " -kernel /home/rjones/d/libguestfs/tmp/.guestfs-1000/appliance.d/kernel \" #68: +304068865 [appliance] " -initrd /home/rjones/d/libguestfs/tmp/.guestfs-1000/appliance.d/initrd \" #69: +304070394 [appliance] " -device virtio-scsi-pci,id=scsi \" #70: +304071970 [appliance] " -drive file=/home/rjones/d/libguestfs/tmp/libguestfsDOucPz/devnull1,cache=writeback,id=hd0,if=none \" #71: +304073902 [appliance] " -device scsi-hd,drive=hd0 \" #72: +304075535 [appliance] " -drive file=/home/rjones/d/libguestfs/tmp/.guestfs-1000/appliance.d/root,snapshot=on,id=appliance,cache=unsafe,if=none \" #73: +304077200 [appliance] " -device scsi-hd,drive=appliance \" #74: +304078741 [appliance] " -device virtio-serial-pci \" #75: +304080228 [appliance] " -serial stdio \" #76: +304081626 [appliance] " -device sga \" #77: +304083208 [appliance] " -chardev socket,path=/run/user/1000/libguestfs0hEfxo/guestfsd.sock,id=channel0 \" #78: +304084864 [appliance] " -device virtserialport,chardev=channel0,name=org.libguestfs.channel.0 \" #79: +304086528 [appliance] " -append 'panic=1 console=ttyS0 udevtimeout=6000 udev.event-timeout=6000 no_timer_check acpi=off printk.time=1 cgroup_disable=memory root=/dev/sdb selinux=0 guestfs_verbose=1 TERM=xterm-256color guestfs_boot_analysis=1'" #80: +402033642 [appliance] "WARNING: Image format was not specified for '/home/rjones/d/libguestfs/tmp/libguestfsDOucPz/devnull1' and probing guessed raw." #81: +402036909 [appliance] " Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted." #82: +402037921 [appliance] " Specify the 'raw' format explicitly to remove the restrictions." #83: +468615858 [appliance] "\x1b[1;256r\x1b[256;256H\x1b[6n" #84: +737817509 [appliance] "Google, Inc." #85: +737820124 [appliance] "Serial Graphics Adapter 06/19/15" #86: +737822013 [appliance] "SGABIOS $Id: sgabios.S 8 2010-04-22 00:03:40Z nlaredo $ (mockbuild@) Fri Jun 19 00:52:18 UTC 2015" #87: +737823798 [appliance] "Term: 80x24" #88: +737825462 [appliance] "4 0" #89: +737827075 [appliance] "\x1b[2J\x0dSeaBIOS (version 1.8.2-20150714_191134-)" #90: +847527635 [appliance] "\x0dBooting from ROM..." #91: +1498583245 [appliance] "\x0dProbing EDD (edd=off to disable)... ok" #92: +1498588180 [appliance] "\x1b[2J[ 0.000000] Initializing cgroup subsys cpuset" #93: +1578297560 [appliance] "[ 0.000000] Initializing cgroup subsys cpu" #94: +1578299341 [appliance] "[ 0.000000] Initializing cgroup subsys cpuacct" #95: +1578300235 [appliance] "[ 0.000000] Linux version 4.4.4-301.fc23.x86_64 (mockbuild@bkernel02.phx2.fedoraproject.org) (gcc version 5.3.1 20151207 (Red Hat 5.3.1-2) (GCC) ) #1 SMP Fri Mar 4 17:42:42 UTC 2016" #96: +1579437002 [appliance] "[ 0.000000] Command line: panic=1 console=ttyS0 udevtimeout=6000 udev.event-timeout=6000 no_timer_check acpi=off printk.time=1 cgroup_disable=memory root=/dev/sdb selinux=0 guestfs_verbose=1 TERM=xterm-256color guestfs_boot_analysis=1" #97: +1580589541 [appliance] "[ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256" #98: +1581723903 [appliance] "[ 0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'" #99: +1581725406 [appliance] "[ 0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'" #100: +1582860145 [appliance] "[ 0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'" #101: +1582861673 [appliance] "[ 0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format." #102: +1583995644 [appliance] "[ 0.000000] x86/fpu: Using 'eager' FPU context switches." #103: +1583997147 [appliance] "[ 0.000000] e820: BIOS-provided physical RAM map:" #104: +1583998041 [appliance] "[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009f7ff] usable" #105: +1585148018 [appliance] "[ 0.000000] BIOS-e820: [mem 0x000000000009f800-0x000000000009ffff] reserved" #106: +1585150003 [appliance] "[ 0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved" #107: +1585151262 [appliance] "[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001f3dffff] usable" #108: +1586287942 [appliance] "[ 0.000000] BIOS-e820: [mem 0x000000001f3e0000-0x000000001f3fffff] reserved" #109: +1586289402 [appliance] "[ 0.000000] BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved" #110: +1587425993 [appliance] "[ 0.000000] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved" #111: +1587427505 [appliance] "[ 0.000000] NX (Execute Disable) protection: active" #112: +1587428376 [appliance] "[ 0.000000] SMBIOS 2.8 present." #113: +1588572045 [appliance] "[ 0.000000] Hypervisor detected: KVM" #114: +1588573562 [appliance] "[ 0.000000] e820: last_pfn = 0x1f3e0 max_arch_pfn = 0x400000000" #115: +1588574564 [appliance] "[ 0.000000] x86/PAT: Configuration [0-7]: WB WC UC- UC WB WC UC- WT " #116: +1589708009 [appliance] "[ 0.000000] found SMP MP-table at [mem 0x000f64d0-0x000f64df] mapped at [ffff8800000f64d0]" #117: +1589709512 [appliance] "[ 0.000000] Using GB pages for direct mapping" #118: +1589710419 [appliance] "[ 0.000000] RAMDISK: [mem 0x1f38a000-0x1f3dffff]" #119: +1590843717 [appliance] "[ 0.000000] No NUMA configuration found" #120: +1590845202 [appliance] "[ 0.000000] Faking a node at [mem 0x0000000000000000-0x000000001f3dffff]" #121: +1590846149 [appliance] "[ 0.000000] NODE_DATA(0) allocated [mem 0x1f378000-0x1f389fff]" #122: +1591982264 [appliance] "[ 0.000000] kvm-clock: Using msrs 4b564d01 and 4b564d00" #123: +1591983698 [appliance] "[ 0.000000] kvm-clock: cpu 0, msr 0:1f368001, primary cpu clock" #124: +1591984626 [appliance] "[ 0.000000] kvm-clock: using sched offset of 1128250597 cycles" #125: +1593132165 [appliance] "[ 0.000000] clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns" #126: +1593133666 [appliance] "[ 0.000000] Zone ranges:" #127: +1593134573 [appliance] "[ 0.000000] DMA [mem 0x0000000000001000-0x0000000000ffffff]" #128: +1594269741 [appliance] "[ 0.000000] DMA32 [mem 0x0000000001000000-0x000000001f3dffff]" #129: +1594271152 [appliance] "[ 0.000000] Normal empty" #130: +1594272092 [appliance] "[ 0.000000] Movable zone start for each node" #131: +1594272912 [appliance] "[ 0.000000] Early memory node ranges" #132: +1595408325 [appliance] "[ 0.000000] node 0: [mem 0x0000000000001000-0x000000000009efff]" #133: +1595409782 [appliance] "[ 0.000000] node 0: [mem 0x0000000000100000-0x000000001f3dffff]" #134: +1595410612 [appliance] "[ 0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000001f3dffff]" #135: +1596545387 [appliance] "[ 0.000000] SFI: Simple Firmware Interface v0.81 http://simplefirmware.org" #136: +1596546756 [appliance] "[ 0.000000] Intel MultiProcessor Specification v1.4" #137: +1597694902 [appliance] "[ 0.000000] MPTABLE: OEM ID: BOCHSCPU" #138: +1597696375 [appliance] "[ 0.000000] MPTABLE: Product ID: 0.1 " #139: +1597697225 [appliance] "[ 0.000000] MPTABLE: APIC at: 0xFEE00000" #140: +1597697986 [appliance] "[ 0.000000] Processor #0 (Bootup-CPU)" #141: +1597698779 [appliance] "[ 0.000000] IOAPIC[0]: apic_id 0, version 17, address 0xfec00000, GSI 0-23" #142: +1598836161 [appliance] "[ 0.000000] Processors: 1" #143: +1598837499 [appliance] "[ 0.000000] smpboot: Allowing 1 CPUs, 0 hotplug CPUs" #144: +1598838367 [appliance] "[ 0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff]" #145: +1599971258 [appliance] "[ 0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x0009ffff]" #146: +1599972658 [appliance] "[ 0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000effff]" #147: +1599973462 [appliance] "[ 0.000000] PM: Registered nosave memory: [mem 0x000f0000-0x000fffff]" #148: +1601108016 [appliance] "[ 0.000000] e820: [mem 0x1f400000-0xfeffbfff] available for PCI devices" #149: +1601109374 [appliance] "[ 0.000000] Booting paravirtualized kernel on KVM" #150: +1602226775 [appliance] "[ 0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1910969940391419 ns" #151: +1602228326 [appliance] "[ 0.000000] setup_percpu: NR_CPUS:1024 nr_cpumask_bits:1 nr_cpu_ids:1 nr_node_ids:1" #152: +1603364627 [appliance] "[ 0.000000] PERCPU: Embedded 34 pages/cpu @ffff88001f000000 s98712 r8192 d32360 u2097152" #153: +1603365993 [appliance] "[ 0.000000] KVM setup async PF for cpu 0" #154: +1603366924 [appliance] "[ 0.000000] kvm-stealtime: cpu 0, msr 1f00d900" #155: +1604502833 [appliance] "[ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 125849" #156: +1604504205 [appliance] "[ 0.000000] Policy zone: DMA32" #157: +1604505090 [appliance] "[ 0.000000] Kernel command line: panic=1 console=ttyS0 udevtimeout=6000 udev.event-timeout=6000 no_timer_check acpi=off printk.time=1 cgroup_disable=memory root=/dev/sdb selinux=0 guestfs_verbose=1 TERM=xterm-256color guestfs_boot_analysis=1" #158: +1605639283 [appliance] "[ 0.000000] PID hash table entries: 2048 (order: 2, 16384 bytes)" #159: +1606775674 [appliance] "[ 0.000000] Memory: 485620K/511480K available (7827K kernel code, 1307K rwdata, 3444K rodata, 1528K init, 1544K bss, 25860K reserved, 0K cma-reserved)" #160: +1607910593 [appliance] "[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1" #161: +1607911967 [appliance] "[ 0.000000] Hierarchical RCU implementation." #162: +1607912837 [appliance] "[ 0.000000] \x09Build-time adjustment of leaf fanout to 64." #163: +1609048767 [appliance] "[ 0.000000] \x09RCU restricting CPUs from NR_CPUS=1024 to nr_cpu_ids=1." #164: +1609050038 [appliance] "[ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=1" #165: +1609050748 [appliance] "[ 0.000000] NR_IRQS:65792 nr_irqs:256 16" #166: +1610184515 [appliance] "[ 0.000000] \x09Offload RCU callbacks from all CPUs" #167: +1610185688 [appliance] "[ 0.000000] \x09Offload RCU callbacks from CPUs: 0." #168: +1610186341 [appliance] "[ 0.000000] Console: colour *CGA 80x25" #169: +1610186953 [appliance] "[ 0.000000] console [ttyS0] enabled" #170: +1611295424 [appliance] "[ 0.000000] tsc: Detected 2593.994 MHz processor" #171: +1611296569 [appliance] "[ 0.041879] Calibrating delay loop (skipped) preset value.. 5187.98 BogoMIPS (lpj=2593994)" #172: +1611297270 [appliance] "[ 0.042446] pid_max: default: 32768 minimum: 301" #173: +1612411168 [appliance] "[ 0.042785] Security Framework initialized" #174: +1612411881 [appliance] "[ 0.043064] Yama: becoming mindful." #175: +1612412502 [appliance] "[ 0.043310] SELinux: Disabled at boot." #176: +1613549975 [appliance] "[ 0.043660] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes)" #177: +1613551223 [appliance] "[ 0.044209] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes)" #178: +1613551900 [appliance] "[ 0.044717] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes)" #179: +1614691667 [appliance] "[ 0.045187] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes)" #180: +1614692714 [appliance] "[ 0.045791] Initializing cgroup subsys io" #181: +1615818691 [appliance] "[ 0.046090] Initializing cgroup subsys memory" #182: +1615819663 [appliance] "[ 0.046542] Disabling memory control group subsystem" #183: +1615820334 [appliance] "[ 0.046882] Initializing cgroup subsys devices" #184: +1616951514 [appliance] "[ 0.047200] Initializing cgroup subsys freezer" #185: +1616952672 [appliance] "[ 0.047508] Initializing cgroup subsys net_cls" #186: +1616953297 [appliance] "[ 0.047813] Initializing cgroup subsys perf_event" #187: +1616953925 [appliance] "[ 0.048127] Initializing cgroup subsys net_prio" #188: +1618070496 [appliance] "[ 0.048454] Initializing cgroup subsys hugetlb" #189: +1618071474 [appliance] "[ 0.048771] Initializing cgroup subsys pids" #190: +1619897918 [appliance] "[ 0.050009] mce: CPU supports 10 MCE banks" #191: +1619899131 [appliance] "[ 0.050329] Last level iTLB entries: 4KB 0, 2MB 0, 4MB 0" #192: +1619899847 [appliance] "[ 0.050701] Last level dTLB entries: 4KB 0, 2MB 0, 4MB 0, 1GB 0" #193: +1629517447 [appliance] "[ 0.059636] Freeing SMP alternatives memory: 28K (ffffffff81ec6000 - ffffffff81ecd000)" #194: +1632098688 [appliance] "[ 0.062221] ftrace: allocating 29522 entries in 116 pages" #195: +1653005102 [appliance] "[ 0.083103] x2apic enabled" #196: +1653006772 [appliance] "[ 0.083481] Switched APIC routing to physical x2apic." #197: +1654452726 [appliance] "[ 0.084544] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1" #198: +1654453949 [appliance] "[ 0.084976] smpboot: CPU0: Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz (family: 0x6, model: 0x3d, stepping: 0x4)" #199: +1654454686 [appliance] "[ 0.085665] Performance Events: 16-deep LBR, Broadwell events, Intel PMU driver." #200: +1655600907 [appliance] "[ 0.086233] ... version: 2" #201: +1655601951 [appliance] "[ 0.086495] ... bit width: 48" #202: +1655602559 [appliance] "[ 0.086760] ... generic registers: 4" #203: +1656739318 [appliance] "[ 0.087051] ... value mask: 0000ffffffffffff" #204: +1656740352 [appliance] "[ 0.087395] ... max period: 000000007fffffff" #205: +1656741030 [appliance] "[ 0.087735] ... fixed-purpose events: 3" #206: +1657857199 [appliance] "[ 0.088012] ... event mask: 000000070000000f" #207: +1657858360 [appliance] "[ 0.088804] x86: Booted up 1 node, 1 CPUs" #208: +1657859005 [appliance] "[ 0.089082] smpboot: Total of 1 processors activated (5187.98 BogoMIPS)" #209: +1658968912 [appliance] "[ 0.089737] devtmpfs: initialized" #210: +1661143181 [appliance] "[ 0.091227] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns" #211: +1661144425 [appliance] "[ 0.091939] atomic64_test: passed for x86-64 platform with CX8 and with SSE" #212: +1662267067 [appliance] "[ 0.092406] pinctrl core: initialized pinctrl subsystem" #213: +1662268242 [appliance] "[ 0.092803] RTC time: 12:39:27, date: 03/20/16" #214: +1662268884 [appliance] "[ 0.093180] NET: Registered protocol family 16" #215: +1663470095 [appliance] "[ 0.093601] cpuidle: using governor menu" #216: +1663471301 [appliance] "[ 0.094036] PCI: Using configuration type 1 for base access" #217: +1665163081 [appliance] "[ 0.095252] ACPI: Interpreter disabled." #218: +1665164225 [appliance] "[ 0.095577] vgaarb: loaded" #219: +1665164858 [appliance] "[ 0.095821] SCSI subsystem initialized" #220: +1665165491 [appliance] "[ 0.096105] usbcore: registered new interface driver usbfs" #221: +1666292082 [appliance] "[ 0.096488] usbcore: registered new interface driver hub" #222: +1666293201 [appliance] "[ 0.096843] usbcore: registered new device driver usb" #223: +1666293788 [appliance] "[ 0.097223] PCI: Probing PCI hardware" #224: +1666294623 [appliance] "[ 0.097494] PCI host bridge to bus 0000:00" #225: +1667427793 [appliance] "[ 0.097774] pci_bus 0000:00: root bus resource [io 0x0000-0xffff]" #226: +1667428825 [appliance] "[ 0.098183] pci_bus 0000:00: root bus resource [mem 0x00000000-0xffffffffff]" #227: +1667429389 [appliance] "[ 0.098649] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff]" #228: +1672874977 [appliance] "[ 0.102946] pci 0000:00:01.1: legacy IDE quirk: reg 0x10: [io 0x01f0-0x01f7]" #229: +1672876700 [appliance] "[ 0.103444] pci 0000:00:01.1: legacy IDE quirk: reg 0x14: [io 0x03f6]" #230: +1672877345 [appliance] "[ 0.103897] pci 0000:00:01.1: legacy IDE quirk: reg 0x18: [io 0x0170-0x0177]" #231: +1673996446 [appliance] "[ 0.104380] pci 0000:00:01.1: legacy IDE quirk: reg 0x1c: [io 0x0376]" #232: +1673998919 [appliance] "[ 0.105138] pci 0000:00:01.3: quirk: [io 0x0600-0x063f] claimed by PIIX4 ACPI" #233: +1675117175 [appliance] "[ 0.105628] pci 0000:00:01.3: quirk: [io 0x0700-0x070f] claimed by PIIX4 SMB" #234: +1689577809 [appliance] "[ 0.119624] pci 0000:00:01.0: PIIX/ICH IRQ router [8086:7000]" #235: +1689579265 [appliance] "[ 0.120193] NetLabel: Initializing" #236: +1689579867 [appliance] "[ 0.120425] NetLabel: domain hash size = 128" #237: +1689580286 [appliance] "[ 0.120719] NetLabel: protocols = UNLABELED CIPSOv4" #238: +1690691686 [appliance] "[ 0.121077] NetLabel: unlabeled traffic allowed by default" #239: +1693098593 [appliance] "[ 0.121543] clocksource: Switched to clocksource kvm-clock" #240: +1697406909 [appliance] "[ 0.127480] pnp: PnP ACPI: disabled" #241: +1697408565 [appliance] "[ 0.128509] NET: Registered protocol family 2" #242: +1698538885 [appliance] "[ 0.128969] TCP established hash table entries: 4096 (order: 3, 32768 bytes)" #243: +1698539725 [appliance] "[ 0.129444] TCP bind hash table entries: 4096 (order: 4, 65536 bytes)" #244: +1699672141 [appliance] "[ 0.129898] TCP: Hash tables configured (established 4096 bind 4096)" #245: +1699673095 [appliance] "[ 0.130482] UDP hash table entries: 256 (order: 1, 8192 bytes)" #246: +1699673529 [appliance] "[ 0.130885] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)" #247: +1700803965 [appliance] "[ 0.131335] NET: Registered protocol family 1" #248: +1700804777 [appliance] "[ 0.131633] pci 0000:00:00.0: Limiting direct PCI/PCI transfers" #249: +1700805227 [appliance] "[ 0.132041] pci 0000:00:01.0: PIIX3: Enabling Passive Release" #250: +1701932232 [appliance] "[ 0.132433] pci 0000:00:01.0: Activating ISA DMA hang workarounds" #251: +1701933316 [appliance] "[ 0.132906] Unpacking initramfs..." #252: +1703265782 [appliance] "[ 0.133374] Freeing initrd memory: 344K (ffff88001f38a000 - ffff88001f3e0000)" #253: +1703266861 [appliance] "[ 0.133960] platform rtc_cmos: registered platform RTC device (no PNP device found)" #254: +1704648489 [appliance] "[ 0.134732] futex hash table entries: 256 (order: 2, 16384 bytes)" #255: +1704649641 [appliance] "[ 0.135168] audit: initializing netlink subsys (disabled)" #256: +1704650164 [appliance] "[ 0.135528] audit: type=2000 audit(1458477567.955:1): initialized" #257: +1705772643 [appliance] "[ 0.136123] Initialise system trusted keyring" #258: +1705773567 [appliance] "[ 0.136470] HugeTLB registered 1 GB page size, pre-allocated 0 pages" #259: +1705774079 [appliance] "[ 0.136893] HugeTLB registered 2 MB page size, pre-allocated 0 pages" #260: +1708096268 [appliance] "[ 0.138196] zbud: loaded" #261: +1708097257 [appliance] "[ 0.138567] VFS: Disk quotas dquot_6.6.0" #262: +1708097778 [appliance] "[ 0.138848] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)" #263: +1709446211 [appliance] "[ 0.139571] Key type big_key registered" #264: +1711289017 [appliance] "[ 0.141364] NET: Registered protocol family 38" #265: +1711289999 [appliance] "[ 0.141709] Key type asymmetric registered" #266: +1711290489 [appliance] "[ 0.141981] Asymmetric key parser 'x509' registered" #267: +1711290871 [appliance] "[ 0.142338] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250)" #268: +1712419415 [appliance] "[ 0.142885] io scheduler noop registered" #269: +1712420298 [appliance] "[ 0.143146] io scheduler deadline registered" #270: +1712420708 [appliance] "[ 0.143449] io scheduler cfq registered (default)" #271: +1713541204 [appliance] "[ 0.143853] pci_hotplug: PCI Hot Plug PCI Core version: 0.5" #272: +1713542138 [appliance] "[ 0.144236] pciehp: PCI Express Hot Plug Controller Driver version: 0.4" #273: +1714628531 [appliance] "[ 0.144782] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled" #274: +1737387483 [appliance] "[ 0.167535] serial8250: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A" #275: +1738628968 [appliance] "[ 0.168780] Non-volatile memory driver v1.3" #276: +1738629686 [appliance] "[ 0.169085] Linux agpgart interface v0.103" #277: +1739962259 [appliance] "[ 0.170096] scsi host0: ata_piix" #278: +1739962826 [appliance] "[ 0.170375] scsi host1: ata_piix" #279: +1739963237 [appliance] "[ 0.170627] ata1: PATA max MWDMA2 cmd 0x1f0 ctl 0x3f6 bmdma 0xc060 irq 14" #280: +1739963693 [appliance] "[ 0.171086] ata2: PATA max MWDMA2 cmd 0x170 ctl 0x376 bmdma 0xc068 irq 15" #281: +1741066353 [appliance] "[ 0.171733] libphy: Fixed MDIO Bus: probed" #282: +1741066821 [appliance] "[ 0.172049] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver" #283: +1742209296 [appliance] "[ 0.172489] ehci-pci: EHCI PCI platform driver" #284: +1742210765 [appliance] "[ 0.172800] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver" #285: +1742211439 [appliance] "[ 0.173226] ohci-pci: OHCI PCI platform driver" #286: +1743321291 [appliance] "[ 0.173537] uhci_hcd: USB Universal Host Controller Interface driver" #287: +1743322081 [appliance] "[ 0.174017] usbcore: registered new interface driver usbserial" #288: +1743322477 [appliance] "[ 0.174415] usbcore: registered new interface driver usbserial_generic" #289: +1744454836 [appliance] "[ 0.174868] usbserial: USB Serial support registered for generic" #290: +1744455829 [appliance] "[ 0.175273] i8042: PNP: No PS/2 controller found. Probing ports directly." #291: +1745585579 [appliance] "[ 0.176217] serio: i8042 KBD port at 0x60,0x64 irq 1" #292: +1745586473 [appliance] "[ 0.176546] serio: i8042 AUX port at 0x60,0x64 irq 12" #293: +1746703324 [appliance] "[ 0.177121] mousedev: PS/2 mouse device common for all mice" #294: +1746704288 [appliance] "[ 0.177640] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0" #295: +1747824370 [appliance] "[ 0.178608] input: VirtualPS/2 VMware VMMouse as /devices/platform/i8042/serio1/input/input3" #296: +1748944259 [appliance] "[ 0.179306] input: VirtualPS/2 VMware VMMouse as /devices/platform/i8042/serio1/input/input2" #297: +1748945151 [appliance] "[ 0.180037] rtc_cmos rtc_cmos: rtc core: registered rtc_cmos as rtc0" #298: +1750052288 [appliance] "[ 0.180532] rtc_cmos rtc_cmos: alarms up to one day, 114 bytes nvram" #299: +1750053284 [appliance] "[ 0.181005] device-mapper: uevent: version 1.0.3" #300: +1751178878 [appliance] "[ 0.181417] device-mapper: ioctl: 4.34.0-ioctl (2015-10-28) initialised: dm-devel@redhat.com" #301: +1751179833 [appliance] "[ 0.182046] hidraw: raw HID events driver (C) Jiri Kosina" #302: +1752325114 [appliance] "[ 0.182434] usbcore: registered new interface driver usbhid" #303: +1752326687 [appliance] "[ 0.182807] usbhid: USB HID core driver" #304: +1752327439 [appliance] "[ 0.183090] drop_monitor: Initializing network drop monitor service" #305: +1753453323 [appliance] "[ 0.183577] ip_tables: (C) 2000-2006 Netfilter Core Team" #306: +1753454256 [appliance] "[ 0.183975] Initializing XFRM netlink socket" #307: +1753454692 [appliance] "[ 0.184376] NET: Registered protocol family 10" #308: +1754717315 [appliance] "[ 0.184807] mip6: Mobile IPv6" #309: +1754718316 [appliance] "[ 0.185034] NET: Registered protocol family 17" #310: +1754718746 [appliance] "[ 0.185444] microcode: CPU0 sig=0x306d4, pf=0x1, revision=0x1" #311: +1754719212 [appliance] "[ 0.185838] microcode: Microcode Update Driver: v2.01 <tigran@aivazian.fsnet.co.uk>, Peter Oruba" #312: +1755847009 [appliance] "[ 0.186436] AVX2 version of gcm_enc/dec engaged." #313: +1755847753 [appliance] "[ 0.186739] AES CTR mode by8 optimization enabled" #314: +1773249630 [appliance] "[ 0.203347] registered taskstats version 1" #315: +1773250815 [appliance] "[ 0.203698] Loading compiled-in X.509 certificates" #316: +1774482151 [appliance] "[ 0.204584] Loaded X.509 cert 'Fedora kernel signing key: ff671496ff3f386a8ef2031bac2201b2edb4da2a'" #317: +1774483051 [appliance] "[ 0.205212] zswap: loaded using pool lzo/zbud" #318: +1774483581 [appliance] "[ 0.205637] Magic number: 8:887:683" #319: +1775598297 [appliance] "[ 0.205967] rtc_cmos rtc_cmos: setting system clock to 2016-03-20 12:39:27 UTC (1458477567)" #320: +1898461040 [appliance] "[ 0.328531] Freeing unused kernel memory: 1528K (ffffffff81d48000 - ffffffff81ec6000)" #321: +1898462356 [appliance] "[ 0.329079] Write protecting the kernel read-only data: 12288k" #322: +1898463099 [appliance] "[ 0.329570] Freeing unused kernel memory: 352K (ffff8800017a8000 - ffff880001800000)" #323: +1901110890 [appliance] "[ 0.331207] Freeing unused kernel memory: 652K (ffff880001b5d000 - ffff880001c00000)" #324: +1901111838 [appliance] "supermin: mounting /proc" #325: +1901112236 [appliance] "supermin: ext2 mini initrd starting up: 5.1.15 dietlibc" #326: +1901130485 [appliance] "supermin: cmdline: panic=1 console=ttyS0 udevtimeout=6000 udev.event-timeout=6000 no_timer_check acpi=off printk.time=1 cgroup_disable=memory root=/dev/sdb selinux=0 guestfs_verbose=1 TERM=xterm-256color guestfs_boot_analysis=1" #327: +1902275395 [appliance] "supermin: uptime: 0.26 0.14" #328: +1903378005 [appliance] "supermin: mounting /sys" #329: +1903379037 [appliance] "supermin: internal insmod crc32-pclmul.ko" #330: +1904726374 [appliance] "supermin: internal insmod crc32c-intel.ko" #331: +1904727226 [appliance] "supermin: internal insmod crct10dif-pclmul.ko" #332: +1905827944 [appliance] "supermin: internal insmod crc32.ko" #333: +1906988159 [appliance] "supermin: internal insmod virtio.ko" #334: +1908702651 [appliance] "supermin: internal insmod virtio_ring.ko" #335: +1908703455 [appliance] "supermin: internal insmod virtio_blk.ko" #336: +1909856826 [appliance] "supermin: internal insmod virtio-rng.ko" #337: +1910953800 [appliance] "supermin: internal insmod virtio_console.ko" #338: +1912990126 [appliance] "supermin: internal insmod virtio_net.ko" #339: +1914243041 [appliance] "supermin: internal insmod virtio_scsi.ko" #340: +1914243801 [appliance] "supermin: internal insmod virtio_balloon.ko" #341: +1915341054 [appliance] "supermin: internal insmod virtio_input.ko" #342: +1916441706 [appliance] "supermin: internal insmod virtio_mmio.ko" #343: +1917538134 [appliance] "supermin: internal insmod virtio_pci.ko" #344: +1919545587 [appliance] "[ 0.349669] virtio-pci 0000:00:02.0: PCI->APIC IRQ transform: INT A -> IRQ 10" #345: +1919546869 [appliance] "[ 0.350184] virtio-pci 0000:00:02.0: virtio_pci: leaving for legacy driver" #346: +1921092009 [appliance] "[ 0.351188] scsi host2: Virtio SCSI HBA" #347: +1921092886 [appliance] "[ 0.351623] virtio-pci 0000:00:03.0: PCI->APIC IRQ transform: INT A -> IRQ 11" #348: +1921093192 [appliance] "[ 0.352120] virtio-pci 0000:00:03.0: virtio_pci: leaving for legacy driver" #349: +1925134272 [appliance] "[ 0.355232] scsi 2:0:0:0: Direct-Access QEMU QEMU HARDDISK 2.5+ PQ: 0 ANSI: 5" #350: +1925135515 [appliance] "[ 0.355993] scsi 2:0:1:0: Direct-Access QEMU QEMU HARDDISK 2.5+ PQ: 0 ANSI: 5" #351: +1940829827 [appliance] "[ 0.370948] sd 2:0:0:0: Attached scsi generic sg0 type 0" #352: +1940831113 [appliance] "[ 0.371443] sd 2:0:1:0: Attached scsi generic sg1 type 0" #353: +1940831419 [appliance] "[ 0.371937] sd 2:0:0:0: [sda] 8 512-byte logical blocks: (4.10 kB/4.00 KiB)" #354: +1941930911 [appliance] "[ 0.372451] sd 2:0:1:0: [sdb] 8388608 512-byte logical blocks: (4.29 GB/4.00 GiB)" #355: +1941931311 [appliance] "[ 0.373111] sd 2:0:0:0: [sda] Write Protect is off" #356: +1943035999 [appliance] "[ 0.373474] sd 2:0:1:0: [sdb] Write Protect is off" #357: +1943036376 [appliance] "[ 0.373838] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA" #358: +1944140306 [appliance] "[ 0.374472] sd 2:0:1:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA" #359: +1945499684 [appliance] "[ 0.375498] Dev sda: unable to read RDB block 8" #360: +1945500501 [appliance] "[ 0.375950] sda: unable to read partition table" #361: +1945500827 [appliance] "[ 0.376275] sda: partition table beyond EOD, enabling native capacity" #362: +1947105724 [appliance] "[ 0.377163] sd 2:0:1:0: [sdb] Attached SCSI disk" #363: +1947106648 [appliance] "[ 0.377549] Dev sda: unable to read RDB block 8" #364: +1947106891 [appliance] "[ 0.377858] sda: unable to read partition table" #365: +1947107080 [appliance] "[ 0.378161] sda: partition table beyond EOD, truncated" #366: +1948211773 [appliance] "[ 0.378787] sd 2:0:0:0: [sda] Attached SCSI disk" #367: +1948212192 [appliance] "supermin: internal insmod crc-ccitt.ko" #368: +1949926809 [appliance] "supermin: internal insmod crc-itu-t.ko" #369: +1949927509 [appliance] "supermin: internal insmod crc8.ko" #370: +1951675280 [appliance] "supermin: internal insmod libcrc32c.ko" #371: +1951676420 [appliance] "supermin: picked /sys/block/sdb/dev as root device" #372: +1952783002 [appliance] "supermin: creating /dev/root as block special 8:16" #373: +1952783853 [appliance] "supermin: mounting new root on /root" #374: +1953939205 [appliance] "[ 0.384085] EXT4-fs (sdb): mounting ext2 file system using the ext4 subsystem" #375: +1956529358 [appliance] "[ 0.386671] EXT4-fs (sdb): mounted filesystem without journal. Opts: " #376: +1956530329 [appliance] "supermin: chroot" #377: +1965185616 [appliance] "Starting /init script ..." #378: +2070362644 [appliance] "[ 0.500469] random: systemd-tmpfile urandom read with 80 bits of entropy available" #379: +2071744483 [appliance] "[/usr/lib/tmpfiles.d/journal-nocow.conf:26] Failed to replace specifiers: /var/log/journal/%m" #380: +2073121930 [appliance] "[/usr/lib/tmpfiles.d/systemd.conf:26] Failed to replace specifiers: /run/log/journal/%m" #381: +2073122583 [appliance] "[/usr/lib/tmpfiles.d/systemd.conf:28] Failed to replace specifiers: /run/log/journal/%m" #382: +2073124850 [appliance] "[/usr/lib/tmpfiles.d/systemd.conf:29] Failed to replace specifiers: /run/log/journal/%m" #383: +2074260427 [appliance] "[/usr/lib/tmpfiles.d/systemd.conf:32] Failed to replace specifiers: /var/log/journal/%m" #384: +2074261044 [appliance] "[/usr/lib/tmpfiles.d/systemd.conf:33] Failed to replace specifiers: /var/log/journal/%m/system.journal" #385: +2075597550 [appliance] "[/usr/lib/tmpfiles.d/systemd.conf:37] Failed to replace specifiers: /var/log/journal/%m" #386: +2075598068 [appliance] "[/usr/lib/tmpfiles.d/systemd.conf:38] Failed to replace specifiers: /var/log/journal/%m" #387: +2075598298 [appliance] "[/usr/lib/tmpfiles.d/systemd.conf:39] Failed to replace specifiers: /var/log/journal/%m/system.journal" #388: +2076681425 [appliance] "UDEVD=/usr/lib/systemd/systemd-udevd" #389: +2080189956 [appliance] "starting version 229" #390: +2147808021 [appliance] "[ 0.577887] piix4_smbus 0000:00:01.3: PCI->APIC IRQ transform: INT A -> IRQ 9" #391: +2147809300 [appliance] "[ 0.578383] piix4_smbus 0000:00:01.3: SMBus Host Controller at 0x700, revision 0" #392: +2182141938 [appliance] "[ 0.612232] intel_rapl: no valid rapl domains found in package 0" #393: +2207026507 [appliance] "[ 0.637126] input: PC Speaker as /devices/platform/pcspkr/input/input4" #394: +2215064188 [appliance] "[ 0.645194] random: nonblocking pool is initialized" #395: +2222206065 [appliance] "+ grep -sq guestfs_network=1 /proc/cmdline" #396: +2222207598 [appliance] "+ grep -sq guestfs_rescue=1 /proc/cmdline" #397: +2223845143 [appliance] "+ grep -sq guestfs_noreboot=1 /proc/cmdline" #398: +2223846028 [appliance] "+ grep -sq guestfs_boot_analysis=1 /proc/cmdline" #399: +2225312012 [appliance] "+ guestfs_boot_analysis=1" #400: +2226468203 [appliance] "++ grep -Eo 'guestfs_channel=[^[:space:]]+' /proc/cmdline" #401: +2226469028 [appliance] "+ eval" #402: +2227631960 [appliance] "+ grep -sq selinux=1 /proc/cmdline" #403: +2227632978 [appliance] "+ shopt -s nullglob" #404: +2227633277 [appliance] "+ for f in '/sys/block/sd*/device/timeout'" #405: +2228763365 [appliance] "+ echo 300" #406: +2228764136 [appliance] "+ for f in '/sys/block/sd*/device/timeout'" #407: +2228764332 [appliance] "+ echo 300" #408: +2228764484 [appliance] "+ for f in '/sys/block/{h,s,ub,v}d*/queue/scheduler'" #409: +2228764627 [appliance] "+ echo noop" #410: +2228764776 [appliance] "+ for f in '/sys/block/{h,s,ub,v}d*/queue/scheduler'" #411: +2229862714 [appliance] "+ echo noop" #412: +2229864052 [appliance] "+ shopt -u nullglob" #413: +2229864252 [appliance] "+ ip addr add 127.0.0.1/8 brd + dev lo scope host" #414: +2232073306 [appliance] "+ ip link set dev lo up" #415: +2232076200 [appliance] "+ test '' = 1" #416: +2232076664 [appliance] "+ mdadm -As --auto=yes --run" #417: +2236022535 [appliance] "mdadm: No arrays found in config file or automatically" #418: +2236024820 [appliance] "+ modprobe dm_mod" #419: +2237430363 [appliance] "+ lvmetad" #420: +2240145280 [appliance] "+ lvm vgchange -aay --sysinit" #421: +2243949022 [appliance] " Configuration setting "global/notify_dbus" unknown." #422: +2243949990 [appliance] " lvmetad is not active yet, using direct activation during sysinit" #423: +2246643479 [appliance] "+ ldmtool create all" #424: +2250354120 [appliance] "[" #425: +2250355138 [appliance] "]" #426: +2250355312 [appliance] "+ test 1 = 1" #427: +2250355470 [appliance] "+ test 1 '!=' 1" #428: +2250355698 [appliance] "+ test '' = 1" #429: +2251491263 [appliance] "+ cmd=guestfsd" #430: +2251492238 [appliance] "+ test x '!=' x" #431: +2251492464 [appliance] "+ test 1 = 1" #432: +2251492692 [appliance] "+ cmd='guestfsd --verbose'" #433: +2251492940 [appliance] "+ test '' = 1" #434: +2251493145 [appliance] "+ echo guestfsd --verbose" #435: +2251493352 [appliance] "guestfsd --verbose" #436: +2251493562 [appliance] "+ guestfsd --verbose" #437: +2260135598 [appliance] "trying to open virtio-serial channel '/dev/virtio-ports/org.libguestfs.channel.0'" #438: +2260137117 [appliance] "udevadm --debug settle" #439: +2262363111 [appliance] "calling: settle" #440: +2262370721 [launch_done] "launch done callback" #441: +2262372472 [library] "recv_from_daemon: received GUESTFS_LAUNCH_FLAG" #442: +2262373500 [library] "appliance is up" #443: +2262390731 [trace] "launch = 0" #444: +2262391594 [trace] "close" #445: +2262392583 [library] "closing guestfs handle 0x55eb2eb8c7a0 (state 2)" #446: +2262394907 [trace] "internal_autosync" #447: +2264992750 [appliance] "guestfsd: main_loop: new request, len 0x28" #448: +2264993776 [appliance] "umount-all: /proc/mounts: fsname=/dev/root dir=/ type=ext2 opts=rw,noatime,block_validity,barrier,user_xattr,acl freq=0 passno=0" #449: +2264994271 [appliance] "umount-all: /proc/mounts: fsname=/proc dir=/proc type=proc opts=rw,relatime freq=0 passno=0" #450: +2266161113 [appliance] "umount-all: /proc/mounts: fsname=/sys dir=/sys type=sysfs opts=rw,relatime freq=0 passno=0" #451: +2266161500 [appliance] "umount-all: /proc/mounts: fsname=tmpfs dir=/run type=tmpfs opts=rw,nosuid,relatime,size=97708k,mode=755 freq=0 passno=0" #452: +2266161815 [appliance] "umount-all: /proc/mounts: fsname=/dev dir=/dev type=devtmpfs opts=rw,relatime,size=242824k,nr_inodes=60706,mode=755 freq=0 passno=0" #453: +2269956659 [appliance] "fsync /dev/sda" #454: +2276086959 [trace] "internal_autosync = 0" #455: +2276088930 [library] "sending SIGTERM to process 21607" #456: +2282816237 [close] "close callback" #457: +2282822347 [library] "command: run: rm" #458: +2282823277 [library] "command: run: \ -rf /home/rjones/d/libguestfs/tmp/libguestfsDOucPz" #459: +2283992941 [library] "command: run: rm" #460: +2283993663 [library] "command: run: \ -rf /run/user/1000/libguestfs0hEfxo" pass 1 number of events collected 461 elapsed time 2266873397 ns #0: +139401 [trace] "launch" #1: +141774 [trace] "version" #2: +146241 [trace] "version = <struct guestfs_version = major: 1, minor: 33, release: 15, extra: , >" #3: +148391 [trace] "get_backend" #4: +150880 [trace] "get_backend = "direct"" #5: +152228 [library] "launch: program=boot-analysis" #6: +153435 [library] "launch: version=1.33.15" #7: +154232 [library] "launch: backend registered: unix" #8: +154899 [library] "launch: backend registered: uml" #9: +155697 [library] "launch: backend registered: libvirt" #10: +156482 [library] "launch: backend registered: direct" #11: +157173 [library] "launch: backend=direct" #12: +157990 [library] "launch: tmpdir=/home/rjones/d/libguestfs/tmp/libguestfsnmgtRi" #13: +189043 [library] "launch: umask=0002" #14: +190505 [library] "launch: euid=1000" #15: +202732 [trace] "get_backend_setting "force_tcg"" #16: +207479 [trace] "get_backend_setting = NULL (error)" #17: +216104 [trace] "get_cachedir" #18: +218906 [trace] "get_cachedir = "/home/rjones/d/libguestfs/tmp"" #19: +234673 [library] "begin building supermin appliance" #20: +235610 [library] "run supermin" #21: +239688 [library] "command: run: /usr/bin/supermin" #22: +240625 [library] "command: run: \ --build" #23: +241421 [library] "command: run: \ --verbose" #24: +242122 [library] "command: run: \ --if-newer" #25: +243248 [library] "command: run: \ --lock /home/rjones/d/libguestfs/tmp/.guestfs-1000/lock" #26: +244072 [library] "command: run: \ --copy-kernel" #27: +244889 [library] "command: run: \ -f ext2" #28: +245609 [library] "command: run: \ --host-cpu x86_64" #29: +246354 [library] "command: run: \ /home/rjones/d/libguestfs/appliance/supermin.d" #30: +247211 [library] "command: run: \ -o /home/rjones/d/libguestfs/tmp/.guestfs-1000/appliance.d" #31: +8214105 [appliance] "supermin: version: 5.1.15" #32: +8215068 [appliance] "supermin: rpm: detected RPM version 4.13" #33: +8215670 [appliance] "supermin: package handler: fedora/rpm" #34: +8215907 [appliance] "supermin: acquiring lock on /home/rjones/d/libguestfs/tmp/.guestfs-1000/lock" #35: +8217975 [appliance] "supermin: if-newer: output does not need rebuilding" #36: +10620441 [library] "finished building supermin appliance" #37: +10638767 [library] "begin testing qemu features" #38: +10643999 [library] "command: run: /usr/bin/qemu-kvm" #39: +10644845 [library] "command: run: \ -display none" #40: +10646602 [library] "command: run: \ -help" #41: +106273872 [library] "command: run: /usr/bin/qemu-kvm" #42: +106274897 [library] "command: run: \ -display none" #43: +106275478 [library] "command: run: \ -version" #44: +203774409 [library] "qemu version 2.5" #45: +203777225 [library] "command: run: /usr/bin/qemu-kvm" #46: +203778092 [library] "command: run: \ -display none" #47: +203778683 [library] "command: run: \ -machine accel=kvm:tcg" #48: +203779187 [library] "command: run: \ -device ?" #49: +301367769 [trace] "get_sockdir" #50: +301372861 [trace] "get_sockdir = "/run/user/1000"" #51: +301737015 [library] "finished testing qemu features" #52: +301747584 [trace] "get_backend_setting "gdb"" #53: +301751916 [trace] "get_backend_setting = NULL (error)" #54: +303384552 [appliance] "[00302ms] /usr/bin/qemu-kvm \" #55: +303385945 [appliance] " -global virtio-blk-pci.scsi=off \" #56: +303386283 [appliance] " -nodefconfig \" #57: +303386773 [appliance] " -enable-fips \" #58: +303387008 [appliance] " -nodefaults \" #59: +303387257 [appliance] " -display none \" #60: +303387509 [appliance] " -machine accel=kvm:tcg \" #61: +303387766 [appliance] " -cpu host \" #62: +303388004 [appliance] " -m 500 \" #63: +303388334 [appliance] " -no-reboot \" #64: +303388622 [appliance] " -rtc driftfix=slew \" #65: +303388862 [appliance] " -no-hpet \" #66: +303389154 [appliance] " -global kvm-pit.lost_tick_policy=discard \" #67: +303389481 [appliance] " -kernel /home/rjones/d/libguestfs/tmp/.guestfs-1000/appliance.d/kernel \" #68: +303389873 [appliance] " -initrd /home/rjones/d/libguestfs/tmp/.guestfs-1000/appliance.d/initrd \" #69: +303390133 [appliance] " -device virtio-scsi-pci,id=scsi \" #70: +303390454 [appliance] " -drive file=/home/rjones/d/libguestfs/tmp/libguestfsnmgtRi/devnull1,cache=writeback,id=hd0,if=none \" #71: +303390740 [appliance] " -device scsi-hd,drive=hd0 \" #72: +303391054 [appliance] " -drive file=/home/rjones/d/libguestfs/tmp/.guestfs-1000/appliance.d/root,snapshot=on,id=appliance,cache=unsafe,if=none \" #73: +303391438 [appliance] " -device scsi-hd,drive=appliance \" #74: +303391705 [appliance] " -device virtio-serial-pci \" #75: +303391969 [appliance] " -serial stdio \" #76: +303392174 [appliance] " -device sga \" #77: +303392418 [appliance] " -chardev socket,path=/run/user/1000/libguestfsRJNA2d/guestfsd.sock,id=channel0 \" #78: +303392702 [appliance] " -device virtserialport,chardev=channel0,name=org.libguestfs.channel.0 \" #79: +303393740 [appliance] " -append 'panic=1 console=ttyS0 udevtimeout=6000 udev.event-timeout=6000 no_timer_check acpi=off printk.time=1 cgroup_disable=memory root=/dev/sdb selinux=0 guestfs_verbose=1 TERM=xterm-256color guestfs_boot_analysis=1'" #80: +398564258 [appliance] "WARNING: Image format was not specified for '/home/rjones/d/libguestfs/tmp/libguestfsnmgtRi/devnull1' and probing guessed raw." #81: +398565421 [appliance] " Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted." #82: +398565971 [appliance] " Specify the 'raw' format explicitly to remove the restrictions." #83: +464682224 [appliance] "\x1b[1;256r\x1b[256;256H\x1b[6n" #84: +731815532 [appliance] "Google, Inc." #85: +731816776 [appliance] "Serial Graphics Adapter 06/19/15" #86: +731817499 [appliance] "SGABIOS $Id: sgabios.S 8 2010-04-22 00:03:40Z nlaredo $ (mockbuild@) Fri Jun 19 00:52:18 UTC 2015" #87: +731818127 [appliance] "Term: 80x24" #88: +731818568 [appliance] "4 0" #89: +731818972 [appliance] "\x1b[2J\x0dSeaBIOS (version 1.8.2-20150714_191134-)" #90: +841089745 [appliance] "\x0dBooting from ROM..." #91: +1484308192 [appliance] "\x0dProbing EDD (edd=off to disable)... ok" #92: +1484310651 [appliance] "\x1b[2J[ 0.000000] Initializing cgroup subsys cpuset" #93: +1564645056 [appliance] "[ 0.000000] Initializing cgroup subsys cpu" #94: +1564646172 [appliance] "[ 0.000000] Initializing cgroup subsys cpuacct" #95: +1564646527 [appliance] "[ 0.000000] Linux version 4.4.4-301.fc23.x86_64 (mockbuild@bkernel02.phx2.fedoraproject.org) (gcc version 5.3.1 20151207 (Red Hat 5.3.1-2) (GCC) ) #1 SMP Fri Mar 4 17:42:42 UTC 2016" #96: +1565793658 [appliance] "[ 0.000000] Command line: panic=1 console=ttyS0 udevtimeout=6000 udev.event-timeout=6000 no_timer_check acpi=off printk.time=1 cgroup_disable=memory root=/dev/sdb selinux=0 guestfs_verbose=1 TERM=xterm-256color guestfs_boot_analysis=1" #97: +1568053603 [appliance] "[ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256" #98: +1568055220 [appliance] "[ 0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'" #99: +1568055920 [appliance] "[ 0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'" #100: +1569195939 [appliance] "[ 0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'" #101: +1569196790 [appliance] "[ 0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format." #102: +1570339729 [appliance] "[ 0.000000] x86/fpu: Using 'eager' FPU context switches." #103: +1570341239 [appliance] "[ 0.000000] e820: BIOS-provided physical RAM map:" #104: +1570341837 [appliance] "[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009f7ff] usable" #105: +1571481410 [appliance] "[ 0.000000] BIOS-e820: [mem 0x000000000009f800-0x000000000009ffff] reserved" #106: +1571482335 [appliance] "[ 0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved" #107: +1572615889 [appliance] "[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001f3dffff] usable" #108: +1572617005 [appliance] "[ 0.000000] BIOS-e820: [mem 0x000000001f3e0000-0x000000001f3fffff] reserved" #109: +1572617396 [appliance] "[ 0.000000] BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved" #110: +1573751015 [appliance] "[ 0.000000] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved" #111: +1573751871 [appliance] "[ 0.000000] NX (Execute Disable) protection: active" #112: +1574885825 [appliance] "[ 0.000000] SMBIOS 2.8 present." #113: +1574886641 [appliance] "[ 0.000000] Hypervisor detected: KVM" #114: +1574887030 [appliance] "[ 0.000000] e820: last_pfn = 0x1f3e0 max_arch_pfn = 0x400000000" #115: +1574887450 [appliance] "[ 0.000000] x86/PAT: Configuration [0-7]: WB WC UC- UC WB WC UC- WT " #116: +1576020760 [appliance] "[ 0.000000] found SMP MP-table at [mem 0x000f64d0-0x000f64df] mapped at [ffff8800000f64d0]" #117: +1576021669 [appliance] "[ 0.000000] Using GB pages for direct mapping" #118: +1576022098 [appliance] "[ 0.000000] RAMDISK: [mem 0x1f38a000-0x1f3dffff]" #119: +1577157517 [appliance] "[ 0.000000] No NUMA configuration found" #120: +1577158451 [appliance] "[ 0.000000] Faking a node at [mem 0x0000000000000000-0x000000001f3dffff]" #121: +1577158901 [appliance] "[ 0.000000] NODE_DATA(0) allocated [mem 0x1f378000-0x1f389fff]" #122: +1578293304 [appliance] "[ 0.000000] kvm-clock: Using msrs 4b564d01 and 4b564d00" #123: +1578294164 [appliance] "[ 0.000000] kvm-clock: cpu 0, msr 0:1f368001, primary cpu clock" #124: +1578294585 [appliance] "[ 0.000000] kvm-clock: using sched offset of 1117368092 cycles" #125: +1579428855 [appliance] "[ 0.000000] clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns" #126: +1579429744 [appliance] "[ 0.000000] Zone ranges:" #127: +1580571321 [appliance] "[ 0.000000] DMA [mem 0x0000000000001000-0x0000000000ffffff]" #128: +1580572191 [appliance] "[ 0.000000] DMA32 [mem 0x0000000001000000-0x000000001f3dffff]" #129: +1580581295 [appliance] "[ 0.000000] Normal empty" #130: +1580581767 [appliance] "[ 0.000000] Movable zone start for each node" #131: +1581715560 [appliance] "[ 0.000000] Early memory node ranges" #132: +1581716373 [appliance] "[ 0.000000] node 0: [mem 0x0000000000001000-0x000000000009efff]" #133: +1581716796 [appliance] "[ 0.000000] node 0: [mem 0x0000000000100000-0x000000001f3dffff]" #134: +1582850598 [appliance] "[ 0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000001f3dffff]" #135: +1582851451 [appliance] "[ 0.000000] SFI: Simple Firmware Interface v0.81 http://simplefirmware.org" #136: +1582851826 [appliance] "[ 0.000000] Intel MultiProcessor Specification v1.4" #137: +1583980321 [appliance] "[ 0.000000] MPTABLE: OEM ID: BOCHSCPU" #138: +1583981475 [appliance] "[ 0.000000] MPTABLE: Product ID: 0.1 " #139: +1583982103 [appliance] "[ 0.000000] MPTABLE: APIC at: 0xFEE00000" #140: +1585119263 [appliance] "[ 0.000000] Processor #0 (Bootup-CPU)" #141: +1585120164 [appliance] "[ 0.000000] IOAPIC[0]: apic_id 0, version 17, address 0xfec00000, GSI 0-23" #142: +1585120618 [appliance] "[ 0.000000] Processors: 1" #143: +1585120984 [appliance] "[ 0.000000] smpboot: Allowing 1 CPUs, 0 hotplug CPUs" #144: +1586254702 [appliance] "[ 0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff]" #145: +1586255585 [appliance] "[ 0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x0009ffff]" #146: +1586255975 [appliance] "[ 0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000effff]" #147: +1587392642 [appliance] "[ 0.000000] PM: Registered nosave memory: [mem 0x000f0000-0x000fffff]" #148: +1587393460 [appliance] "[ 0.000000] e820: [mem 0x1f400000-0xfeffbfff] available for PCI devices" #149: +1588586224 [appliance] "[ 0.000000] Booting paravirtualized kernel on KVM" #150: +1588587092 [appliance] "[ 0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1910969940391419 ns" #151: +1588587939 [appliance] "[ 0.000000] setup_percpu: NR_CPUS:1024 nr_cpumask_bits:1 nr_cpu_ids:1 nr_node_ids:1" #152: +1589725448 [appliance] "[ 0.000000] PERCPU: Embedded 34 pages/cpu @ffff88001f000000 s98712 r8192 d32360 u2097152" #153: +1589726163 [appliance] "[ 0.000000] KVM setup async PF for cpu 0" #154: +1590859380 [appliance] "[ 0.000000] kvm-stealtime: cpu 0, msr 1f00d900" #155: +1590860261 [appliance] "[ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 125849" #156: +1590860656 [appliance] "[ 0.000000] Policy zone: DMA32" #157: +1590860968 [appliance] "[ 0.000000] Kernel command line: panic=1 console=ttyS0 udevtimeout=6000 udev.event-timeout=6000 no_timer_check acpi=off printk.time=1 cgroup_disable=memory root=/dev/sdb selinux=0 guestfs_verbose=1 TERM=xterm-256color guestfs_boot_analysis=1" #158: +1593141591 [appliance] "[ 0.000000] PID hash table entries: 2048 (order: 2, 16384 bytes)" #159: +1593144920 [appliance] "[ 0.000000] Memory: 485620K/511480K available (7827K kernel code, 1307K rwdata, 3444K rodata, 1528K init, 1544K bss, 25860K reserved, 0K cma-reserved)" #160: +1594279677 [appliance] "[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1" #161: +1594280495 [appliance] "[ 0.000000] Hierarchical RCU implementation." #162: +1594280857 [appliance] "[ 0.000000] \x09Build-time adjustment of leaf fanout to 64." #163: +1595416032 [appliance] "[ 0.000000] \x09RCU restricting CPUs from NR_CPUS=1024 to nr_cpu_ids=1." #164: +1595416908 [appliance] "[ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=1" #165: +1596557474 [appliance] "[ 0.000000] NR_IRQS:65792 nr_irqs:256 16" #166: +1596558281 [appliance] "[ 0.000000] \x09Offload RCU callbacks from all CPUs" #167: +1596558679 [appliance] "[ 0.000000] \x09Offload RCU callbacks from CPUs: 0." #168: +1596558965 [appliance] "[ 0.000000] Console: colour *CGA 80x25" #169: +1597686741 [appliance] "[ 0.000000] console [ttyS0] enabled" #170: +1597687552 [appliance] "[ 0.000000] tsc: Detected 2593.994 MHz processor" #171: +1597687893 [appliance] "[ 0.042322] Calibrating delay loop (skipped) preset value.. 5187.98 BogoMIPS (lpj=2593994)" #172: +1598818246 [appliance] "[ 0.042899] pid_max: default: 32768 minimum: 301" #173: +1598819117 [appliance] "[ 0.043247] Security Framework initialized" #174: +1598819473 [appliance] "[ 0.043530] Yama: becoming mindful." #175: +1598819751 [appliance] "[ 0.043776] SELinux: Disabled at boot." #176: +1599948692 [appliance] "[ 0.044126] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes)" #177: +1599949504 [appliance] "[ 0.044667] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes)" #178: +1601083942 [appliance] "[ 0.045182] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes)" #179: +1601103870 [appliance] "[ 0.045644] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes)" #180: +1602354592 [appliance] "[ 0.046257] Initializing cgroup subsys io" #181: +1602355839 [appliance] "[ 0.046550] Initializing cgroup subsys memory" #182: +1602356484 [appliance] "[ 0.047015] Disabling memory control group subsystem" #183: +1602357037 [appliance] "[ 0.047366] Initializing cgroup subsys devices" #184: +1603482878 [appliance] "[ 0.047676] Initializing cgroup subsys freezer" #185: +1603483979 [appliance] "[ 0.048004] Initializing cgroup subsys net_cls" #186: +1603484632 [appliance] "[ 0.048325] Initializing cgroup subsys perf_event" #187: +1604608898 [appliance] "[ 0.048661] Initializing cgroup subsys net_prio" #188: +1604610070 [appliance] "[ 0.049011] Initializing cgroup subsys hugetlb" #189: +1604610703 [appliance] "[ 0.049318] Initializing cgroup subsys pids" #190: +1606681477 [appliance] "[ 0.050568] mce: CPU supports 10 MCE banks" #191: +1606682705 [appliance] "[ 0.050894] Last level iTLB entries: 4KB 0, 2MB 0, 4MB 0" #192: +1606683312 [appliance] "[ 0.051266] Last level dTLB entries: 4KB 0, 2MB 0, 4MB 0, 1GB 0" #193: +1615740666 [appliance] "[ 0.059647] Freeing SMP alternatives memory: 28K (ffffffff81ec6000 - ffffffff81ecd000)" #194: +1618329957 [appliance] "[ 0.062278] ftrace: allocating 29522 entries in 116 pages" #195: +1639245067 [appliance] "[ 0.083108] x2apic enabled" #196: +1639246590 [appliance] "[ 0.083504] Switched APIC routing to physical x2apic." #197: +1640618314 [appliance] "[ 0.084557] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1" #198: +1640619617 [appliance] "[ 0.085010] smpboot: CPU0: Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz (family: 0x6, model: 0x3d, stepping: 0x4)" #199: +1641752086 [appliance] "[ 0.085737] Performance Events: 16-deep LBR, Broadwell events, Intel PMU driver." #200: +1641753183 [appliance] "[ 0.086259] ... version: 2" #201: +1641753868 [appliance] "[ 0.086520] ... bit width: 48" #202: +1642887320 [appliance] "[ 0.086807] ... generic registers: 4" #203: +1642888446 [appliance] "[ 0.087084] ... value mask: 0000ffffffffffff" #204: +1642889053 [appliance] "[ 0.087426] ... max period: 000000007fffffff" #205: +1642889644 [appliance] "[ 0.087785] ... fixed-purpose events: 3" #206: +1643997597 [appliance] "[ 0.088067] ... event mask: 000000070000000f" #207: +1643998680 [appliance] "[ 0.088876] x86: Booted up 1 node, 1 CPUs" #208: +1645113532 [appliance] "[ 0.089164] smpboot: Total of 1 processors activated (5187.98 BogoMIPS)" #209: +1645114628 [appliance] "[ 0.089820] devtmpfs: initialized" #210: +1647435717 [appliance] "[ 0.091309] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns" #211: +1647437208 [appliance] "[ 0.092033] atomic64_test: passed for x86-64 platform with CX8 and with SSE" #212: +1648570136 [appliance] "[ 0.092509] pinctrl core: initialized pinctrl subsystem" #213: +1648571251 [appliance] "[ 0.092902] RTC time: 12:39:30, date: 03/20/16" #214: +1648571931 [appliance] "[ 0.093283] NET: Registered protocol family 16" #215: +1649813088 [appliance] "[ 0.093715] cpuidle: using governor menu" #216: +1649814266 [appliance] "[ 0.094161] PCI: Using configuration type 1 for base access" #217: +1651492027 [appliance] "[ 0.095384] ACPI: Interpreter disabled." #218: +1651493402 [appliance] "[ 0.095723] vgaarb: loaded" #219: +1651494004 [appliance] "[ 0.095970] SCSI subsystem initialized" #220: +1651494578 [appliance] "[ 0.096272] usbcore: registered new interface driver usbfs" #221: +1652625942 [appliance] "[ 0.096667] usbcore: registered new interface driver hub" #222: +1652627060 [appliance] "[ 0.097019] usbcore: registered new device driver usb" #223: +1652627626 [appliance] "[ 0.097406] PCI: Probing PCI hardware" #224: +1653790879 [appliance] "[ 0.097685] PCI host bridge to bus 0000:00" #225: +1653792047 [appliance] "[ 0.097983] pci_bus 0000:00: root bus resource [io 0x0000-0xffff]" #226: +1653792749 [appliance] "[ 0.098385] pci_bus 0000:00: root bus resource [mem 0x00000000-0xffffffffff]" #227: +1654897966 [appliance] "[ 0.098866] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff]" #228: +1659252834 [appliance] "[ 0.103113] pci 0000:00:01.1: legacy IDE quirk: reg 0x10: [io 0x01f0-0x01f7]" #229: +1659254425 [appliance] "[ 0.103612] pci 0000:00:01.1: legacy IDE quirk: reg 0x14: [io 0x03f6]" #230: +1659255065 [appliance] "[ 0.104041] pci 0000:00:01.1: legacy IDE quirk: reg 0x18: [io 0x0170-0x0177]" #231: +1660375095 [appliance] "[ 0.104521] pci 0000:00:01.1: legacy IDE quirk: reg 0x1c: [io 0x0376]" #232: +1660376209 [appliance] "[ 0.105277] pci 0000:00:01.3: quirk: [io 0x0600-0x063f] claimed by PIIX4 ACPI" #233: +1661501079 [appliance] "[ 0.105773] pci 0000:00:01.3: quirk: [io 0x0700-0x070f] claimed by PIIX4 SMB" #234: +1676525754 [appliance] "[ 0.120383] pci 0000:00:01.0: PIIX/ICH IRQ router [8086:7000]" #235: +1676527343 [appliance] "[ 0.120922] NetLabel: Initializing" #236: +1676528014 [appliance] "[ 0.121139] NetLabel: domain hash size = 128" #237: +1676528606 [appliance] "[ 0.121413] NetLabel: protocols = UNLABELED CIPSOv4" #238: +1679736296 [appliance] "[ 0.121761] NetLabel: unlabeled traffic allowed by default" #239: +1679737535 [appliance] "[ 0.124087] clocksource: Switched to clocksource kvm-clock" #240: +1684459475 [appliance] "[ 0.128332] pnp: PnP ACPI: disabled" #241: +1686180166 [appliance] "[ 0.130045] NET: Registered protocol family 2" #242: +1686181360 [appliance] "[ 0.130556] TCP established hash table entries: 4096 (order: 3, 32768 bytes)" #243: +1686182040 [appliance] "[ 0.131006] TCP bind hash table entries: 4096 (order: 4, 65536 bytes)" #244: +1687323987 [appliance] "[ 0.131434] TCP: Hash tables configured (established 4096 bind 4096)" #245: +1687325288 [appliance] "[ 0.131998] UDP hash table entries: 256 (order: 1, 8192 bytes)" #246: +1688458606 [appliance] "[ 0.132380] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)" #247: +1688459672 [appliance] "[ 0.132813] NET: Registered protocol family 1" #248: +1688460315 [appliance] "[ 0.133098] pci 0000:00:00.0: Limiting direct PCI/PCI transfers" #249: +1688460842 [appliance] "[ 0.133488] pci 0000:00:01.0: PIIX3: Enabling Passive Release" #250: +1689589876 [appliance] "[ 0.133873] pci 0000:00:01.0: Activating ISA DMA hang workarounds" #251: +1689590922 [appliance] "[ 0.134323] Unpacking initramfs..." #252: +1690869934 [appliance] "[ 0.134757] Freeing initrd memory: 344K (ffff88001f38a000 - ffff88001f3e0000)" #253: +1690871151 [appliance] "[ 0.135306] platform rtc_cmos: registered platform RTC device (no PNP device found)" #254: +1692150258 [appliance] "[ 0.136028] futex hash table entries: 256 (order: 2, 16384 bytes)" #255: +1692151431 [appliance] "[ 0.136456] audit: initializing netlink subsys (disabled)" #256: +1692152068 [appliance] "[ 0.136797] audit: type=2000 audit(1458477570.228:1): initialized" #257: +1693488247 [appliance] "[ 0.137368] Initialise system trusted keyring" #258: +1693489376 [appliance] "[ 0.137721] HugeTLB registered 1 GB page size, pre-allocated 0 pages" #259: +1693490036 [appliance] "[ 0.138114] HugeTLB registered 2 MB page size, pre-allocated 0 pages" #260: +1695492419 [appliance] "[ 0.139386] zbud: loaded" #261: +1695493520 [appliance] "[ 0.139736] VFS: Disk quotas dquot_6.6.0" #262: +1695494120 [appliance] "[ 0.140037] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)" #263: +1696830315 [appliance] "[ 0.140745] Key type big_key registered" #264: +1698648419 [appliance] "[ 0.142517] NET: Registered protocol family 38" #265: +1698649574 [appliance] "[ 0.142837] Key type asymmetric registered" #266: +1698650142 [appliance] "[ 0.143101] Asymmetric key parser 'x509' registered" #267: +1698650630 [appliance] "[ 0.143441] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250)" #268: +1699757284 [appliance] "[ 0.143960] io scheduler noop registered" #269: +1699758351 [appliance] "[ 0.144218] io scheduler deadline registered" #270: +1699758834 [appliance] "[ 0.144509] io scheduler cfq registered (default)" #271: +1700871756 [appliance] "[ 0.144951] pci_hotplug: PCI Hot Plug PCI Core version: 0.5" #272: +1700872825 [appliance] "[ 0.145504] pciehp: PCI Express Hot Plug Controller Driver version: 0.4" #273: +1701981381 [appliance] "[ 0.146338] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled" #274: +1725263660 [appliance] "[ 0.169120] serial8250: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A" #275: +1726732608 [appliance] "[ 0.170625] Non-volatile memory driver v1.3" #276: +1726733819 [appliance] "[ 0.170934] Linux agpgart interface v0.103" #277: +1728052309 [appliance] "[ 0.171928] scsi host0: ata_piix" #278: +1728053464 [appliance] "[ 0.172211] scsi host1: ata_piix" #279: +1728054048 [appliance] "[ 0.172434] ata1: PATA max MWDMA2 cmd 0x1f0 ctl 0x3f6 bmdma 0xc060 irq 14" #280: +1728054608 [appliance] "[ 0.172853] ata2: PATA max MWDMA2 cmd 0x170 ctl 0x376 bmdma 0xc068 irq 15" #281: +1729168429 [appliance] "[ 0.173476] libphy: Fixed MDIO Bus: probed" #282: +1729169175 [appliance] "[ 0.173786] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver" #283: +1729169683 [appliance] "[ 0.174200] ehci-pci: EHCI PCI platform driver" #284: +1730303942 [appliance] "[ 0.174488] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver" #285: +1730304877 [appliance] "[ 0.174872] ohci-pci: OHCI PCI platform driver" #286: +1730305483 [appliance] "[ 0.175153] uhci_hcd: USB Universal Host Controller Interface driver" #287: +1731440277 [appliance] "[ 0.175595] usbcore: registered new interface driver usbserial" #288: +1731441370 [appliance] "[ 0.175952] usbcore: registered new interface driver usbserial_generic" #289: +1731441947 [appliance] "[ 0.176356] usbserial: USB Serial support registered for generic" #290: +1732558403 [appliance] "[ 0.176769] i8042: PNP: No PS/2 controller found. Probing ports directly." #291: +1733773238 [appliance] "[ 0.177666] serio: i8042 KBD port at 0x60,0x64 irq 1" #292: +1733775278 [appliance] "[ 0.178004] serio: i8042 AUX port at 0x60,0x64 irq 12" #293: +1733776291 [appliance] "[ 0.178538] mousedev: PS/2 mouse device common for all mice" #294: +1734866211 [appliance] "[ 0.179046] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0" #295: +1736122554 [appliance] "[ 0.180003] input: VirtualPS/2 VMware VMMouse as /devices/platform/i8042/serio1/input/input3" #296: +1736123737 [appliance] "[ 0.180678] input: VirtualPS/2 VMware VMMouse as /devices/platform/i8042/serio1/input/input2" #297: +1737241349 [appliance] "[ 0.181383] rtc_cmos rtc_cmos: rtc core: registered rtc_cmos as rtc0" #298: +1737242386 [appliance] "[ 0.181855] rtc_cmos rtc_cmos: alarms up to one day, 114 bytes nvram" #299: +1738435495 [appliance] "[ 0.182323] device-mapper: uevent: version 1.0.3" #300: +1738436644 [appliance] "[ 0.182715] device-mapper: ioctl: 4.34.0-ioctl (2015-10-28) initialised: dm-devel@redhat.com" #301: +1738437290 [appliance] "[ 0.183308] hidraw: raw HID events driver (C) Jiri Kosina" #302: +1739584034 [appliance] "[ 0.183692] usbcore: registered new interface driver usbhid" #303: +1739585080 [appliance] "[ 0.184033] usbhid: USB HID core driver" #304: +1739585620 [appliance] "[ 0.184303] drop_monitor: Initializing network drop monitor service" #305: +1740715371 [appliance] "[ 0.184760] ip_tables: (C) 2000-2006 Netfilter Core Team" #306: +1740716398 [appliance] "[ 0.185124] Initializing XFRM netlink socket" #307: +1740716930 [appliance] "[ 0.185483] NET: Registered protocol family 10" #308: +1741838627 [appliance] "[ 0.185897] mip6: Mobile IPv6" #309: +1741839672 [appliance] "[ 0.186093] NET: Registered protocol family 17" #310: +1741840263 [appliance] "[ 0.186484] microcode: CPU0 sig=0x306d4, pf=0x1, revision=0x1" #311: +1741840890 [appliance] "[ 0.186862] microcode: Microcode Update Driver: v2.01 <tigran@aivazian.fsnet.co.uk>, Peter Oruba" #312: +1742977245 [appliance] "[ 0.187424] AVX2 version of gcm_enc/dec engaged." #313: +1742978146 [appliance] "[ 0.187711] AES CTR mode by8 optimization enabled" #314: +1761190772 [appliance] "[ 0.205062] registered taskstats version 1" #315: +1761192139 [appliance] "[ 0.205385] Loading compiled-in X.509 certificates" #316: +1762375083 [appliance] "[ 0.206244] Loaded X.509 cert 'Fedora kernel signing key: ff671496ff3f386a8ef2031bac2201b2edb4da2a'" #317: +1762376206 [appliance] "[ 0.206852] zswap: loaded using pool lzo/zbud" #318: +1762376854 [appliance] "[ 0.207256] Magic number: 8:887:683" #319: +1763466629 [appliance] "[ 0.207568] rtc_cmos rtc_cmos: setting system clock to 2016-03-20 12:39:30 UTC (1458477570)" #320: +1886127448 [appliance] "[ 0.330021] Freeing unused kernel memory: 1528K (ffffffff81d48000 - ffffffff81ec6000)" #321: +1886129424 [appliance] "[ 0.330562] Write protecting the kernel read-only data: 12288k" #322: +1886132750 [appliance] "[ 0.331080] Freeing unused kernel memory: 352K (ffff8800017a8000 - ffff880001800000)" #323: +1888843733 [appliance] "[ 0.332742] Freeing unused kernel memory: 652K (ffff880001b5d000 - ffff880001c00000)" #324: +1888844654 [appliance] "supermin: mounting /proc" #325: +1888845046 [appliance] "supermin: ext2 mini initrd starting up: 5.1.15 dietlibc" #326: +1890013809 [appliance] "supermin: cmdline: panic=1 console=ttyS0 udevtimeout=6000 udev.event-timeout=6000 no_timer_check acpi=off printk.time=1 cgroup_disable=memory root=/dev/sdb selinux=0 guestfs_verbose=1 TERM=xterm-256color guestfs_boot_analysis=1" #327: +1890014781 [appliance] "supermin: uptime: 0.27 0.14" #328: +1891127695 [appliance] "supermin: mounting /sys" #329: +1891128224 [appliance] "supermin: internal insmod crc32-pclmul.ko" #330: +1892467473 [appliance] "supermin: internal insmod crc32c-intel.ko" #331: +1892468289 [appliance] "supermin: internal insmod crct10dif-pclmul.ko" #332: +1893570041 [appliance] "supermin: internal insmod crc32.ko" #333: +1894659309 [appliance] "supermin: internal insmod virtio.ko" #334: +1896422680 [appliance] "supermin: internal insmod virtio_ring.ko" #335: +1896423390 [appliance] "supermin: internal insmod virtio_blk.ko" #336: +1897501521 [appliance] "supermin: internal insmod virtio-rng.ko" #337: +1898629654 [appliance] "supermin: internal insmod virtio_console.ko" #338: +1900657612 [appliance] "supermin: internal insmod virtio_net.ko" #339: +1901920188 [appliance] "supermin: internal insmod virtio_scsi.ko" #340: +1903044166 [appliance] "supermin: internal insmod virtio_balloon.ko" #341: +1903045442 [appliance] "supermin: internal insmod virtio_input.ko" #342: +1904128275 [appliance] "supermin: internal insmod virtio_mmio.ko" #343: +1905209093 [appliance] "supermin: internal insmod virtio_pci.ko" #344: +1906282571 [appliance] "[ 0.351153] virtio-pci 0000:00:02.0: PCI->APIC IRQ transform: INT A -> IRQ 10" #345: +1907391885 [appliance] "[ 0.351667] virtio-pci 0000:00:02.0: virtio_pci: leaving for legacy driver" #346: +1908770046 [appliance] "[ 0.352690] scsi host2: Virtio SCSI HBA" #347: +1908771021 [appliance] "[ 0.353102] virtio-pci 0000:00:03.0: PCI->APIC IRQ transform: INT A -> IRQ 11" #348: +1908771444 [appliance] "[ 0.353598] virtio-pci 0000:00:03.0: virtio_pci: leaving for legacy driver" #349: +1912827625 [appliance] "[ 0.356731] scsi 2:0:0:0: Direct-Access QEMU QEMU HARDDISK 2.5+ PQ: 0 ANSI: 5" #350: +1912829131 [appliance] "[ 0.357470] scsi 2:0:1:0: Direct-Access QEMU QEMU HARDDISK 2.5+ PQ: 0 ANSI: 5" #351: +1931634509 [appliance] "[ 0.375493] sd 2:0:0:0: Attached scsi generic sg0 type 0" #352: +1931635875 [appliance] "[ 0.376027] sd 2:0:1:0: Attached scsi generic sg1 type 0" #353: +1931636107 [appliance] "[ 0.376556] sd 2:0:0:0: [sda] 8 512-byte logical blocks: (4.10 kB/4.00 KiB)" #354: +1932757666 [appliance] "[ 0.377143] sd 2:0:1:0: [sdb] 8388608 512-byte logical blocks: (4.29 GB/4.00 GiB)" #355: +1934002572 [appliance] "[ 0.377865] sd 2:0:0:0: [sda] Write Protect is off" #356: +1934003696 [appliance] "[ 0.378248] sd 2:0:1:0: [sdb] Write Protect is off" #357: +1934003952 [appliance] "[ 0.378657] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA" #358: +1935128289 [appliance] "[ 0.379302] sd 2:0:1:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA" #359: +1936911379 [appliance] "[ 0.380705] Dev sda: unable to read RDB block 8" #360: +1936912327 [appliance] "[ 0.381140] sda: unable to read partition table" #361: +1936912566 [appliance] "[ 0.381490] sda: partition table beyond EOD, enabling native capacity" #362: +1938500321 [appliance] "[ 0.382389] sd 2:0:1:0: [sdb] Attached SCSI disk" #363: +1938501116 [appliance] "[ 0.382900] Dev sda: unable to read RDB block 8" #364: +1938501336 [appliance] "[ 0.383215] sda: unable to read partition table" #365: +1938501487 [appliance] "[ 0.383532] sda: partition table beyond EOD, truncated" #366: +1939611728 [appliance] "[ 0.384237] sd 2:0:0:0: [sda] Attached SCSI disk" #367: +1939612220 [appliance] "supermin: internal insmod crc-ccitt.ko" #368: +1940714392 [appliance] "supermin: internal insmod crc-itu-t.ko" #369: +1941821487 [appliance] "supermin: internal insmod crc8.ko" #370: +1943365168 [appliance] "supermin: internal insmod libcrc32c.ko" #371: +1943365983 [appliance] "supermin: picked /sys/block/sdb/dev as root device" #372: +1944460610 [appliance] "supermin: creating /dev/root as block special 8:16" #373: +1944461337 [appliance] "supermin: mounting new root on /root" #374: +1944461511 [appliance] "[ 0.389441] EXT4-fs (sdb): mounting ext2 file system using the ext4 subsystem" #375: +1948265619 [appliance] "[ 0.392188] EXT4-fs (sdb): mounted filesystem without journal. Opts: " #376: +1948266732 [appliance] "supermin: chroot" #377: +1956567229 [appliance] "Starting /init script ..." #378: +2064643002 [appliance] "[ 0.508528] random: systemd-tmpfile urandom read with 79 bits of entropy available" #379: +2065944843 [appliance] "[/usr/lib/tmpfiles.d/journal-nocow.conf:26] Failed to replace specifiers: /var/log/journal/%m" #380: +2067292216 [appliance] "[/usr/lib/tmpfiles.d/systemd.conf:26] Failed to replace specifiers: /run/log/journal/%m" #381: +2067293412 [appliance] "[/usr/lib/tmpfiles.d/systemd.conf:28] Failed to replace specifiers: /run/log/journal/%m" #382: +2067293710 [appliance] "[/usr/lib/tmpfiles.d/systemd.conf:29] Failed to replace specifiers: /run/log/journal/%m" #383: +2068440681 [appliance] "[/usr/lib/tmpfiles.d/systemd.conf:32] Failed to replace specifiers: /var/log/journal/%m" #384: +2068441058 [appliance] "[/usr/lib/tmpfiles.d/systemd.conf:33] Failed to replace specifiers: /var/log/journal/%m/system.journal" #385: +2069945670 [appliance] "[/usr/lib/tmpfiles.d/systemd.conf:37] Failed to replace specifiers: /var/log/journal/%m" #386: +2069946507 [appliance] "[/usr/lib/tmpfiles.d/systemd.conf:38] Failed to replace specifiers: /var/log/journal/%m" #387: +2069946791 [appliance] "[/usr/lib/tmpfiles.d/systemd.conf:39] Failed to replace specifiers: /var/log/journal/%m/system.journal" #388: +2072200550 [appliance] "UDEVD=/usr/lib/systemd/systemd-udevd" #389: +2074745745 [appliance] "starting version 229" #390: +2166190858 [appliance] "[ 0.610068] piix4_smbus 0000:00:01.3: PCI->APIC IRQ transform: INT A -> IRQ 9" #391: +2166192150 [appliance] "[ 0.610752] piix4_smbus 0000:00:01.3: SMBus Host Controller at 0x700, revision 0" #392: +2190375042 [appliance] "[ 0.634255] input: PC Speaker as /devices/platform/pcspkr/input/input4" #393: +2197211627 [appliance] "[ 0.641119] random: nonblocking pool is initialized" #394: +2201263496 [appliance] "[ 0.645144] intel_rapl: no valid rapl domains found in package 0" #395: +2210122223 [appliance] "+ grep -sq guestfs_network=1 /proc/cmdline" #396: +2210123413 [appliance] "+ grep -sq guestfs_rescue=1 /proc/cmdline" #397: +2211676758 [appliance] "+ grep -sq guestfs_noreboot=1 /proc/cmdline" #398: +2211677608 [appliance] "+ grep -sq guestfs_boot_analysis=1 /proc/cmdline" #399: +2214179490 [appliance] "+ guestfs_boot_analysis=1" #400: +2214180419 [appliance] "++ grep -Eo 'guestfs_channel=[^[:space:]]+' /proc/cmdline" #401: +2215360930 [appliance] "+ eval" #402: +2215361784 [appliance] "+ grep -sq selinux=1 /proc/cmdline" #403: +2215362026 [appliance] "+ shopt -s nullglob" #404: +2215362185 [appliance] "+ for f in '/sys/block/sd*/device/timeout'" #405: +2216488450 [appliance] "+ echo 300" #406: +2216488833 [appliance] "+ for f in '/sys/block/sd*/device/timeout'" #407: +2216488970 [appliance] "+ echo 300" #408: +2216489123 [appliance] "+ for f in '/sys/block/{h,s,ub,v}d*/queue/scheduler'" #409: +2216489257 [appliance] "+ echo noop" #410: +2217672460 [appliance] "+ for f in '/sys/block/{h,s,ub,v}d*/queue/scheduler'" #411: +2217674626 [appliance] "+ echo noop" #412: +2217674953 [appliance] "+ shopt -u nullglob" #413: +2217675279 [appliance] "+ ip addr add 127.0.0.1/8 brd + dev lo scope host" #414: +2220033292 [appliance] "+ ip link set dev lo up" #415: +2220034517 [appliance] "+ test '' = 1" #416: +2220034797 [appliance] "+ mdadm -As --auto=yes --run" #417: +2223956603 [appliance] "mdadm: No arrays found in config file or automatically" #418: +2223957984 [appliance] "+ modprobe dm_mod" #419: +2225298741 [appliance] "+ lvmetad" #420: +2227762913 [appliance] "+ lvm vgchange -aay --sysinit" #421: +2231333146 [appliance] " Configuration setting "global/notify_dbus" unknown." #422: +2231334173 [appliance] " lvmetad is not active yet, using direct activation during sysinit" #423: +2234022854 [appliance] "+ ldmtool create all" #424: +2238833631 [appliance] "[" #425: +2238834839 [appliance] "]" #426: +2238834990 [appliance] "+ test 1 = 1" #427: +2238835145 [appliance] "+ test 1 '!=' 1" #428: +2238835324 [appliance] "+ test '' = 1" #429: +2240017320 [appliance] "+ cmd=guestfsd" #430: +2240018150 [appliance] "+ test x '!=' x" #431: +2240018398 [appliance] "+ test 1 = 1" #432: +2240018533 [appliance] "+ cmd='guestfsd --verbose'" #433: +2240018686 [appliance] "+ test '' = 1" #434: +2240018827 [appliance] "+ echo guestfsd --verbose" #435: +2240018953 [appliance] "guestfsd --verbose" #436: +2240019070 [appliance] "+ guestfsd --verbose" #437: +2248600573 [appliance] "trying to open virtio-serial channel '/dev/virtio-ports/org.libguestfs.channel.0'" #438: +2248601967 [appliance] "udevadm --debug settle" #439: +2250839221 [appliance] "calling: settle" #440: +2250847987 [launch_done] "launch done callback" #441: +2250850513 [library] "recv_from_daemon: received GUESTFS_LAUNCH_FLAG" #442: +2250852032 [library] "appliance is up" #443: +2250877067 [trace] "launch = 0" #444: +2250878155 [trace] "close" #445: +2250879672 [library] "closing guestfs handle 0x55eb2eb8c7a0 (state 2)" #446: +2250883093 [trace] "internal_autosync" #447: +2253681120 [appliance] "guestfsd: main_loop: new request, len 0x28" #448: +2253681925 [appliance] "umount-all: /proc/mounts: fsname=/dev/root dir=/ type=ext2 opts=rw,noatime,block_validity,barrier,user_xattr,acl freq=0 passno=0" #449: +2253682315 [appliance] "umount-all: /proc/mounts: fsname=/proc dir=/proc type=proc opts=rw,relatime freq=0 passno=0" #450: +2254851718 [appliance] "umount-all: /proc/mounts: fsname=/sys dir=/sys type=sysfs opts=rw,relatime freq=0 passno=0" #451: +2254852079 [appliance] "umount-all: /proc/mounts: fsname=tmpfs dir=/run type=tmpfs opts=rw,nosuid,relatime,size=97708k,mode=755 freq=0 passno=0" #452: +2255974417 [appliance] "umount-all: /proc/mounts: fsname=/dev dir=/dev type=devtmpfs opts=rw,relatime,size=242824k,nr_inodes=60706,mode=755 freq=0 passno=0" #453: +2258852466 [appliance] "fsync /dev/sda" #454: +2259948899 [trace] "internal_autosync = 0" #455: +2259950967 [library] "sending SIGTERM to process 21627" #456: +2266872725 [close] "close callback" #457: +2266880057 [library] "command: run: rm" #458: +2266881759 [library] "command: run: \ -rf /home/rjones/d/libguestfs/tmp/libguestfsnmgtRi" #459: +2268445016 [library] "command: run: rm" #460: +2268446292 [library] "command: run: \ -rf /run/user/1000/libguestfsRJNA2d" Analyzing the results ... activity 0: name = run start - end = 0.0 - 2274701058.0 mean elapsed = 2274701059.0 variance = 63484801030225.0 s.d = 7967735.0 percent = 100.0 activity 1: name = supermin:build start - end = 96929.0 - 10536212.0 mean elapsed = 10439284.0 variance = 2863962256.0 s.d = 53516.0 percent = 0.5 activity 2: name = qemu:feature-detect start - end = 10555890.5 - 301795202.5 mean elapsed = 291239313.0 variance = 19899334225.0 s.d = 141065.0 percent = 12.8 activity 3: name = qemu start - end = 303574861.0 - 2274701058.0 mean elapsed = 1971126198.0 variance = 58365871739536.0 s.d = 7639756.0 percent = 86.7 activity 4: name = qemu:overhead start - end = 303574861.0 - 466505618.0 mean elapsed = 162930758.0 variance = 2672626623489.0 s.d = 1634817.0 percent = 7.2 activity 5: name = bios:overhead start - end = 466505619.0 - 1571329958.0 mean elapsed = 1104824340.0 variance = 23619959641369.0 s.d = 4860037.0 percent = 48.6 activity 6: name = sgabios start - end = 466505619.0 - 734679600.5 mean elapsed = 268173982.5 variance = 1075855407990.2 s.d = 1037234.5 percent = 11.8 activity 7: name = seabios start - end = 734679601.5 - 1571329958.0 mean elapsed = 836650357.5 variance = 14613818954006.2 s.d = 3822802.5 percent = 36.8 activity 8: name = kernel start - end = 1571329959.0 - 2274701058.0 mean elapsed = 703371100.0 variance = 1310800589604.0 s.d = 1144902.0 percent = 30.9 activity 9: name = kernel:overhead start - end = 1571329959.0 - 1894835218.0 mean elapsed = 323505260.0 variance = 480608041081.0 s.d = 693259.0 percent = 14.2 activity 10: name = supermin:mini-initrd start - end = 1894835219.0 - 1952255107.5 mean elapsed = 57419889.5 variance = 4007189227412.2 s.d = 2001796.5 percent = 2.5 activity 11: name = supermin: internal insmod crc32-pclmul.ko start - end = 1897110208.5 - 1898453500.5 mean elapsed = 1343293.0 variance = 16353936.0 s.d = 4044.0 percent = 0.1 activity 12: name = supermin: internal insmod crc32c-intel.ko start - end = 1898453501.5 - 1898454334.5 mean elapsed = 834.0 variance = 324.0 s.d = 18.0 percent = 0.0 activity 13: name = supermin: internal insmod crct10dif-pclmul.ko start - end = 1898454335.5 - 1899555569.5 mean elapsed = 1101235.0 variance = 267289.0 s.d = 517.0 percent = 0.0 activity 14: name = supermin: internal insmod crc32.ko start - end = 1899555570.5 - 1900680311.0 mean elapsed = 1124741.5 variance = 1258369202.2 s.d = 35473.5 percent = 0.0 activity 15: name = supermin: internal insmod virtio.ko start - end = 1900680312.0 - 1902419242.5 mean elapsed = 1738931.5 variance = 597289160.2 s.d = 24439.5 percent = 0.1 activity 16: name = supermin: internal insmod virtio_ring.ko start - end = 1902419243.5 - 1902419999.5 mean elapsed = 757.0 variance = 2209.0 s.d = 47.0 percent = 0.0 activity 17: name = supermin: internal insmod virtio_blk.ko start - end = 1902420000.5 - 1903535750.5 mean elapsed = 1115751.0 variance = 1415264400.0 s.d = 37620.0 percent = 0.0 activity 18: name = supermin: internal insmod virtio-rng.ko start - end = 1903535751.5 - 1904648304.0 mean elapsed = 1112553.5 variance = 242720820.2 s.d = 15579.5 percent = 0.0 activity 19: name = supermin: internal insmod virtio_console.ko start - end = 1904648305.0 - 1906680446.0 mean elapsed = 2032142.0 variance = 17505856.0 s.d = 4184.0 percent = 0.1 activity 20: name = supermin: internal insmod virtio_net.ko start - end = 1906680447.0 - 1907938191.5 mean elapsed = 1257745.5 variance = 23333730.2 s.d = 4830.5 percent = 0.1 activity 21: name = supermin: internal insmod virtio_scsi.ko start - end = 1907938192.5 - 1908500560.5 mean elapsed = 562369.0 variance = 315404668881.0 s.d = 561609.0 percent = 0.0 activity 22: name = supermin: internal insmod virtio_balloon.ko start - end = 1908500561.5 - 1909049825.0 mean elapsed = 549264.5 variance = 300291396132.2 s.d = 547988.5 percent = 0.0 activity 23: name = supermin: internal insmod virtio_input.ko start - end = 1909049826.0 - 1910141567.5 mean elapsed = 1091742.5 variance = 79379190.2 s.d = 8909.5 percent = 0.0 activity 24: name = supermin: internal insmod virtio_mmio.ko start - end = 1910141568.5 - 1911230190.5 mean elapsed = 1088623.0 variance = 60918025.0 s.d = 7805.0 percent = 0.0 activity 25: name = supermin: internal insmod virtio_pci.ko start - end = 1911230191.5 - 1943768783.0 mean elapsed = 32538592.5 variance = 3476488901690.2 s.d = 1864534.5 percent = 1.4 activity 26: name = supermin: internal insmod crc-ccitt.ko start - end = 1943768784.0 - 1945177177.5 mean elapsed = 1408394.5 variance = 93772219506.2 s.d = 306222.5 percent = 0.1 activity 27: name = supermin: internal insmod crc-itu-t.ko start - end = 1945177178.5 - 1945731075.0 mean elapsed = 553897.5 variance = 306027474006.2 s.d = 553197.5 percent = 0.0 activity 28: name = supermin: internal insmod crc8.ko start - end = 1945731076.0 - 1947376801.0 mean elapsed = 1645726.0 variance = 10413182025.0 s.d = 102045.0 percent = 0.1 activity 29: name = supermin: internal insmod libcrc32c.ko start - end = 1947376802.0 - 1947377778.5 mean elapsed = 977.5 variance = 26406.2 s.d = 162.5 percent = 0.0 activity 30: name = /init start - end = 1952255108.5 - 2245612189.5 mean elapsed = 293357082.0 variance = 2576927088961.0 s.d = 1605281.0 percent = 12.9 activity 31: name = bash:overhead start - end = 1952255108.5 - 1960732999.5 mean elapsed = 8477892.0 variance = 31468986025.0 s.d = 177395.0 percent = 0.4 activity 32: name = guestfsd start - end = 2245612190.5 - 2264261139.5 mean elapsed = 18648950.0 variance = 34218710289.0 s.d = 184983.0 percent = 0.8 activity 33: name = shutdown start - end = 2256491452.5 - 2274701058.0 mean elapsed = 18209606.5 variance = 4906386696332.2 s.d = 2215036.5 percent = 0.8 libguestfs 1.33.15 Host: Appliance: qemu version 2.5 \x1b[2J\x0dSeaBIOS (version 1.8.2-20150714_191134-) [ 0.000000] Linux version 4.4.4-301.fc23.x86_64 (mockbuild@bkernel02.phx2.fedoraproject.org) (gcc version 5.3.1 20151207 (Red Hat 5.3.1-2) (GCC) ) #1 SMP Fri Mar 4 17:42:42 UTC 2016 supermin: ext2 mini initrd starting up: 5.1.15 dietlibc 0.000000s: run mean:2.274701s 8.0ms (100.0%) 0.000097s: supermin:build mean:0.010439s 0.1ms (0.5%) 0.010536s: 0.010556s: qemu:feature-detect mean:0.291239s 0.1ms (12.8%) 0.301795s: 0.303575s: qemu mean:1.971126s 7.6ms (86.7%) qemu:overhead mean:0.162931s 1.6ms (7.2%) 0.466506s: 0.466506s: bios:overhead mean:1.104824s 4.9ms (48.6%) sgabios mean:0.268174s 1.0ms (11.8%) 0.734680s: 0.734680s: seabios mean:0.836650s 3.8ms (36.8%) 1.571330s: 1.571330s: kernel mean:0.703371s 1.1ms (30.9%) kernel:overhead mean:0.323505s 0.7ms (14.2%) 1.894835s: 1.894835s: supermin:mini-initrd mean:0.057420s 2.0ms (2.5%) 1.897110s: supermin: internal insmod crc32-pclmul.ko mean:0.001343s 0.0ms (0.1%) 1.898454s: 1.898454s: supermin: internal insmod crc32c-intel.ko mean:0.000001s 0.0ms (0.0%) 1.898454s: 1.898454s: supermin: internal insmod crct10dif-pclmul.ko mean:0.001101s 0.0ms (0.0%) 1.899556s: 1.899556s: supermin: internal insmod crc32.ko mean:0.001125s 0.0ms (0.0%) 1.900680s: 1.900680s: supermin: internal insmod virtio.ko mean:0.001739s 0.0ms (0.1%) 1.902419s: 1.902419s: supermin: internal insmod virtio_ring.ko mean:0.000001s 0.0ms (0.0%) 1.902420s: 1.902420s: supermin: internal insmod virtio_blk.ko mean:0.001116s 0.0ms (0.0%) 1.903536s: 1.903536s: supermin: internal insmod virtio-rng.ko mean:0.001113s 0.0ms (0.0%) 1.904648s: 1.904648s: supermin: internal insmod virtio_console.ko mean:0.002032s 0.0ms (0.1%) 1.906680s: 1.906680s: supermin: internal insmod virtio_net.ko mean:0.001258s 0.0ms (0.1%) 1.907938s: 1.907938s: supermin: internal insmod virtio_scsi.ko mean:0.000562s 0.6ms (0.0%) 1.908501s: 1.908501s: supermin: internal insmod virtio_balloon.ko mean:0.000549s 0.5ms (0.0%) 1.909050s: 1.909050s: supermin: internal insmod virtio_input.ko mean:0.001092s 0.0ms (0.0%) 1.910142s: 1.910142s: supermin: internal insmod virtio_mmio.ko mean:0.001089s 0.0ms (0.0%) 1.911230s: 1.911230s: supermin: internal insmod virtio_pci.ko mean:0.032539s 1.9ms (1.4%) 1.943769s: 1.943769s: supermin: internal insmod crc-ccitt.ko mean:0.001408s 0.3ms (0.1%) 1.945177s: 1.945177s: supermin: internal insmod crc-itu-t.ko mean:0.000554s 0.6ms (0.0%) 1.945731s: 1.945731s: supermin: internal insmod crc8.ko mean:0.001646s 0.1ms (0.1%) 1.947377s: 1.947377s: supermin: internal insmod libcrc32c.ko mean:0.000001s 0.0ms (0.0%) 1.947378s: 1.952255s: 1.952255s: /init mean:0.293357s 1.6ms (12.9%) bash:overhead mean:0.008478s 0.2ms (0.4%) 1.960733s: 2.245612s: 2.245612s: guestfsd mean:0.018649s 0.2ms (0.8%) 2.256491s: shutdown mean:0.018210s 2.2ms (0.8%) 2.264261s: 2.274701s: --7ZAtKRhVyVSsbBD2--
Török Edwin
2016-Mar-20 15:28 UTC
Re: [Libguestfs] [PATCH v2 0/7] tests/qemu: Add program for tracing and analyzing boot times.
On 03/20/2016 14:30, Richard W.M. Jones wrote:> v1 was here: > > https://www.redhat.com/archives/libguestfs/2016-March/thread.html#00157Thanks, this is much better than looking at 'ts -i' output. BTW I have use 'git am' to apply them to latest git HEAD and try it. Is this the preferred way, or is there a git branch/repo somewhere that I missed which would already have these applied?> > Not running the 'hwclock' command reduces boot times considerably. > However I'm not sure if it is safe. See the question I posted on > qemu-devel: > > http://thread.gmane.org/gmane.comp.emulators.qemu/402194 > > At the moment, about 50% of the time is consumed by SeaBIOS. Of this, > about ⅓rd is SGABIOS (it contains a useless ¼s sleep waiting for a > keypress ... ffs!)Ah, I didn't have sgabios installed, and it complained it couldn't find an event (qemu:overhead?). Installed it and I got similar results to yours, the largest overhead is BIOS: https://gist.github.com/anonymous/37cfb3d4eb3d3a1c86b2 Thought to try booting a Xen PV domain for comparison, but AFAICT libguestfs doesn't support LIBGUESTFS_BACKEND=libvirt:xen:///>, and the other ⅔rds is something else in SeaBIOS. > Simply removing SGABIOS improves boot times to below 2s, but at a cost > that we cannot see any messages from SeaBIOS so further measurement > and therefore improvement becomes impossible. I'm going to try to fix > SeaBIOS/SGABIOS first. See also: > > http://thread.gmane.org/gmane.comp.emulators.qemu/402196Nice, this would benefit booting regular VMs too, not just libguestfs appliances, right? Best regards, -- Edwin Török | Co-founder and Lead Developer Skylable open-source object storage: reliable, fast, secure http://www.skylable.com
Richard W.M. Jones
2016-Mar-20 16:05 UTC
Re: [Libguestfs] [PATCH v2 0/7] tests/qemu: Add program for tracing and analyzing boot times.
On Sun, Mar 20, 2016 at 05:28:05PM +0200, Török Edwin wrote:> On 03/20/2016 14:30, Richard W.M. Jones wrote: > > v1 was here: > > > > https://www.redhat.com/archives/libguestfs/2016-March/thread.html#00157 > > Thanks, this is much better than looking at 'ts -i' output. > > BTW I have use 'git am' to apply them to latest git HEAD and try it. > Is this the preferred way, or is there a git branch/repo somewhere that I missed which would already have these applied?I've just pushed what I'm working on to my fork of the repo (https://github.com/rwmjones/libguestfs/commits/master).> Ah, I didn't have sgabios installed, and it complained it couldn't > find an event (qemu:overhead?).Right - it's very sensitive to the exact debug output.> Installed it and I got similar results to yours, the largest > overhead is BIOS: > https://gist.github.com/anonymous/37cfb3d4eb3d3a1c86b2Your qemu overhead is lower. That could be because of: https://bugzilla.redhat.com/show_bug.cgi?id=1319483 Interestingly your total time is at least double mine. Either your hardware is slower or there's something else going on.> Thought to try booting a Xen PV domain for comparison, but AFAICT > libguestfs doesn't support LIBGUESTFS_BACKEND=libvirt:xen:///No, this isn't really going to work. It's a bunch of work to support completely different hypervisors like Xen, even with libvirt helping.> >, and the other ⅔rds is something else in SeaBIOS. > > Simply removing SGABIOS improves boot times to below 2s, but at a cost > > that we cannot see any messages from SeaBIOS so further measurement > > and therefore improvement becomes impossible. I'm going to try to fix > > SeaBIOS/SGABIOS first. See also: > > > > http://thread.gmane.org/gmane.comp.emulators.qemu/402196SGABIOS turns out to be caused by something different from what I thought. See my attempt (not yet working) to fix this: https://github.com/rwmjones/libguestfs/commit/8ffab2d708e9480741b373c0702d12ed86dd572a I haven't looked at SeaBIOS yet. That's the biggest issue.> Nice, this would benefit booting regular VMs too, not just > libguestfs appliances, right?Yes, this work benefits everyone. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://libguestfs.org
Kashyap Chamarthy
2016-Mar-21 13:14 UTC
Re: [Libguestfs] [PATCH v2 0/7] tests/qemu: Add program for tracing and analyzing boot times.
I gave this series a spin, along a custom QEMU, and `supermin` from Git, for my `libguestfs-test-tool` itself fails with: "Could not open option rom 'linuxboot_dma.bin': No such file or directory" How I went about: (1) Build QEMU with https://lists.gnu.org/archive/html/qemu-devel/2016-01/msg05891.html -- Add optionrom compatible with fw_cfg DMA version Build QEMU with the above patch: $ w3m https://patchwork.ozlabs.org/patch/575578/mbox \ > add-optionrom-compatible-with-fw_cfg-DMA-version.patch $ git am -3 \ ~/add-optionrom-compatible-with-fw_cfg-DMA-version.patch # sudo dnf builddep qemu -y $ ~/src/qemu/configure --target-list=x86_64-softmmu $ make -j4 (2) Build 'supermin' from Git (3) Build 'libguestfs' from Rich's fork https://github.com/rwmjones/libguestfs/commits/master/ Configure libguestfs (from Rich's fork) with `supermin` built from Git in step (2): $ SUPERMIN=~/src/supermin/src/supermin ./configure $ ./bootstrap && ./autogen.sh && make Compile libguestfs: $ ./autogen.sh $ make -j22 (4) Use the QEMU built in step (1), build and run the 'boot-analysis' program from libguestfs test suite: $ export LIBGUESTFS_HV=$HOME/build/qemu-build/x86_64-softmmu/qemu-system-x86_64 $ make -C tests/qemu boot-analysis $ ./run tests/qemu/boot-analysis -v One and a half minute passes, nothing is printed on the screen. . . Okay, let's try 'libguestfs-test-tool' (untruncated output attached), it fails with: ------------------------------------- [...] Could not open option rom 'linuxboot_dma.bin': No such file or directory \x1b[1;256r\x1b[256;256H\x1b[6n Google, Inc. Serial Graphics Adapter 11/03/11 SGABIOS $Id$ (pbonzini@yakj.usersys.redhat.com) Thu Nov 3 13:33:51 UTC 2011 Term: 80x24 4 0 \x1b[2J SeaBIOS (version rel-1.9.1-0-gb3ef39f-prebuilt.qemu-project.org) Booting from Hard Disk... Boot failed: not a bootable disk ------------------------------------- Rich: What am I missing here? -- /kashyap
Richard W.M. Jones
2016-Mar-21 13:16 UTC
Re: [Libguestfs] [PATCH v2 0/7] tests/qemu: Add program for tracing and analyzing boot times.
On Mon, Mar 21, 2016 at 02:14:19PM +0100, Kashyap Chamarthy wrote:> I gave this series a spin, along a custom QEMU, and `supermin` from Git, > for my `libguestfs-test-tool` itself fails with: > > "Could not open option rom 'linuxboot_dma.bin': No such file or > directory"The qemu build is broken in some way. To fix it you have to do: cp pc-bios/optionrom/linuxboot_dma.bin pc-bios/optionrom/ Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into KVM guests. http://libguestfs.org/virt-v2v
Pino Toscano
2016-Mar-22 14:51 UTC
Re: [Libguestfs] [PATCH v2 1/7] appliance: Print location of udevd.
On Sunday 20 March 2016 12:30:58 Richard W.M. Jones wrote:> This is useful for debugging (but we can't print it unconditionally > since we cannot run grep etc yet). It also allows us to identify > when udevd is invoked so we can time it for boot analysis. > ---I just sent a patch to make use of bash functionalities for string matching in /proc/cmdline. This way, the verbosity level could be checked earlier than this point (earlier than what patch #3 in this series does), and used here. -- Pino Toscano
Pino Toscano
2016-Mar-22 14:55 UTC
Re: [Libguestfs] [PATCH v2 5/7] launch: direct: Remove dead code promising we were going to use virtio-console.
On Sunday 20 March 2016 12:31:02 Richard W.M. Jones wrote:> We're never going to use virtio-console since, although it is faster, > it's not available during early boot, and that is more important for > debugging. > --- > src/launch-direct.c | 10 ---------- > 1 file changed, 10 deletions(-) > > diff --git a/src/launch-direct.c b/src/launch-direct.c > index a81d4b3..f1fe92b 100644 > --- a/src/launch-direct.c > +++ b/src/launch-direct.c > @@ -574,19 +574,9 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) > ADD_CMDLINE ("-device"); > ADD_CMDLINE (VIRTIO_SERIAL); > > -#if 0 > - /* Use virtio-console (a variant form of virtio-serial) for the > - * guest's serial console. > - */ > - ADD_CMDLINE ("-chardev"); > - ADD_CMDLINE ("stdio,id=console"); > - ADD_CMDLINE ("-device"); > - ADD_CMDLINE ("virtconsole,chardev=console,name=org.libguestfs.console.0"); > -#else > /* When the above works ... until then: */This line ^ should be removed too, as it does not make much sense without the comments removed by this patch. With this fix, LGTM. Thanks, -- Pino Toscano
Reasonably Related Threads
- Re: [PATCH v2 0/7] tests/qemu: Add program for tracing and analyzing boot times.
- Re: [PATCH v2 0/7] tests/qemu: Add program for tracing and analyzing boot times.
- Re: [PATCH v2 0/7] tests/qemu: Add program for tracing and analyzing boot times.
- Bug#688311: xen-utils-4.2: qemu-dm not available
- [PATCH v2 0/7] tests/qemu: Add program for tracing and analyzing boot times.