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

2012-03-05 Thread Peter Krempa

On 03/03/2012 03:03 AM, Eric Blake wrote:

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.



The same check for the timeout was also needed in shutdown_guest(). I 
added the checks, changed the wording in the config file and set the 
default SHUTDOWN_TIMEOUT to 300 (with a note in the docs) and pushed the 
result.


Thanks

Peter

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


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

2012-03-02 Thread Eric Blake
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   ebl...@redhat.com+1-919-301-3266
Libvirt virtualization library http://libvirt.org



signature.asc
Description: OpenPGP digital signature
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list