You are viewing a plain text version of this content. The canonical link for it is here.
Posted to tashi-commits@incubator.apache.org by st...@apache.org on 2011/05/17 22:22:07 UTC

svn commit: r1104602 - /incubator/tashi/trunk/src/tashi/nodemanager/vmcontrol/qemu.py

Author: stroucki
Date: Tue May 17 22:22:07 2011
New Revision: 1104602

URL: http://svn.apache.org/viewvc?rev=1104602&view=rev
Log:
qemu.py: Clean up scratch space in separate thread to allow quicker creation times, especially when creating many VMs

Modified:
    incubator/tashi/trunk/src/tashi/nodemanager/vmcontrol/qemu.py

Modified: incubator/tashi/trunk/src/tashi/nodemanager/vmcontrol/qemu.py
URL: http://svn.apache.org/viewvc/incubator/tashi/trunk/src/tashi/nodemanager/vmcontrol/qemu.py?rev=1104602&r1=1104601&r2=1104602&view=diff
==============================================================================
--- incubator/tashi/trunk/src/tashi/nodemanager/vmcontrol/qemu.py (original)
+++ incubator/tashi/trunk/src/tashi/nodemanager/vmcontrol/qemu.py Tue May 17 22:22:07 2011
@@ -121,6 +121,10 @@ class Qemu(VmControlInterface):
 	class anonClass:
 		def __init__(self, **attrs):
 			self.__dict__.update(attrs)
+
+	def __cleanScratchSpace(self, file):
+		time.sleep(5)
+		os.unlink(file)
 	
 	def getSystemPids(self):
 		"""Utility function to get a list of system PIDs that match the QEMU_BIN specified (/proc/nnn/exe)"""
@@ -366,6 +370,7 @@ class Qemu(VmControlInterface):
 		# scratch disk (should be integrated better)
 		scratchSize = instance.hints.get("scratchSpace", "0")
 		scratchSize = int(scratchSize)
+		scratch_file = None
 
 		try:
 			if scratchSize > 0:
@@ -375,13 +380,9 @@ class Qemu(VmControlInterface):
 				scratch_file = os.path.join(self.scratchDir, instance.name + ".scratch")
 				print 'scratch file name is ', scratch_file
 				tempfd = open(scratch_file, "w")
-				print 'opened'
 				tempfd.seek( (scratchSize * 2 ** 30) - 1 )
-				print 'seeked'
 				tempfd.write('x')
-				print 'written'
 				tempfd.close()
-				print 'closed'
 				index += 1
 
 				thisDiskList = [ "file=%s" % scratch_file ]
@@ -457,10 +458,10 @@ class Qemu(VmControlInterface):
 		log.info("Adding vmId %d" % (child.pid))
 
 		# clean up scratch file
-		if scratchSize > 0:
-			scratch_file = os.path.join(self.scratchDir, instance.name + ".scratch")
-			time.sleep(5)
-			os.unlink(scratch_file)
+		if scratchSize > 0 and scratch_file is not None:
+			# do this in the background
+			threading.Thread(target=self.__cleanScratchSpace,args=[scratch_file]).start()
+
 
 		return (child.pid, cmd)