On Wed, Aug 03, 2011 at 06:03:38PM +0300, Apollon Oikonomopoulos wrote: > When wait_for_sync is set to False in LUInstanceCreate, Ganeti lets DRBD sync > in the background while performing the rest of the installation steps, > including OS installation. > > However, OS installation is a very disk-intensive task that intereferes badly > with the background I/O caused by DRBD's initial sync. To this end, we pause > the background sync before OS installation and unpause it afterwards, which > yields a significant speed boost for OS installation. The following should be > noted: > > a) The user has requested not to wait for sync, i.e. the instance will be > non-redundant for an unspecified interval anyway and delaying this by a > couple of minutes is not a big compromise. > > b) This approach is also followed during disk wiping.
Excellent, thanks, I'll commit with this interdiff: diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 365151d..a70dda0 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -8861,8 +8861,9 @@ class LUInstanceCreate(LogicalUnit): if iobj.disk_template != constants.DT_DISKLESS and not self.adopt_disks: if self.op.mode == constants.INSTANCE_CREATE: if not self.op.no_install: - if (iobj.disk_template in constants.DTS_INT_MIRROR and not - self.op.wait_for_sync): + pause_sync = (iobj.disk_template in constants.DTS_INT_MIRROR and + not self.op.wait_for_sync) + if pause_sync: feedback_fn("* pausing disk sync to install instance OS") result = self.rpc.call_blockdev_pause_resume_sync(pnode_name, iobj.disks, True) @@ -8875,8 +8876,7 @@ class LUInstanceCreate(LogicalUnit): # FIXME: pass debug option from opcode to backend result = self.rpc.call_instance_os_add(pnode_name, iobj, False, self.op.debug_level) - if (iobj.disk_template in constants.DTS_INT_MIRROR and not - self.op.wait_for_sync): + if pause_sync: feedback_fn("* resuming disk sync") result = self.rpc.call_blockdev_pause_resume_sync(pnode_name, iobj.disks, False) Just to simplify the check. thanks, iustin