[libvirt] [PATCH v2] libvirt-guests: Add parallel startup and shutdown of guests

Eric Blake eblake at redhat.com
Sat Mar 3 02:03:03 UTC 2012


On 03/01/2012 07:23 AM, Peter Krempa wrote:
> With this patch, it's possible to shut down guests in parallel. Parallel
> startup was possible before, but this functionality was not documented
> properly.
> 
> To enable parallel startup set the START_DELAY to 0.
> 
> Parallel shutdown has a configurable parameter PARALLEL_SHUTDOWN that
> defines the number of machines being shut down in parallel. Enabling
> this feature changes the semantics of SHUTDOWN_TIMEOUT parameter that is
> applied as a cumulative timeout to shutdown all guests on a URI.
> ---

> +# shutdown_guests_parallel URI GUESTS
> +# Shutdown guests GUESTS on machine URI in parallel
> +shutdown_guests_parallel()
> +{
> +    uri=$1
> +    guests=$2
> +
> +    on_shutdown=

check_timeout=false

> +    timeout=$SHUTDOWN_TIMEOUT

if [ $timeout -gt 0 ]; then
    check_timeout=true
fi

> +    while [ -n "$on_shutdown" ] || [ -n "$guests" ]; do
> +        while [ -n "$guests" ] &&
> +              [ $(guest_count "$on_shutdown") -lt "$PARALLEL_SHUTDOWN" ]; do
> +            set -- $guests
> +            guest=$1
> +            shift
> +            guests=$*
> +            shutdown_guest_async "$uri" "$guest"
> +            on_shutdown="$on_shutdown $guest"
> +        done
> +        sleep 1

if $check_timeout; then

> +        timeout=$(($timeout - 1))
> +        if [ $timeout -le 0 ]; then
> +            eval_gettext "Timeout expired while shutting down domains"; echo
> +            RETVAL=1
> +            return
> +        fi

fi

> +        on_shutdown_prev=$on_shutdown
> +        on_shutdown=$(check_guests_shutdown "$uri" "$on_shutdown")
> +        print_guests_shutdown "$uri" "$on_shutdown_prev" "$on_shutdown"
> +    done
> +}
> +

> 
> -# number of seconds we're willing to wait for a guest to shut down
> +# If set to non-zero, shutdown will suspend guests concurrently. Number of
> +# guests on shutdown at any time will not exceed number set in this variable.
> +#PARALLEL_SHUTDOWN=0
> +
> +# Number of seconds we're willing to wait for a guest to shut down. If parallel
> +# shutdown is enabled, this timeout applies as a timeout for shutting down all
> +# guests on a single URI defined in the variable URIS. This must be set to
> +# a nonzero positive value if the shutdown action is requested.

Change the last sentence:

If this is 0, then there is no time out (use with caution, as guests
might not respond to a shutdown request).  (Hmm, maybe we want to
default to 300 [5 minutes], and document our non-zero default, so that
you have to explicitly request 0 to avoid timeouts.)

ACK with those lines added to shutdown_guests_parallel, and the wording
change to the config file, and with the optional change to the timeout
default.

-- 
Eric Blake   eblake at redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 620 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20120302/ffdf45c2/attachment-0001.sig>


More information about the libvir-list mailing list