summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2021-03-31 22:41:52 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-04-06 09:30:10 +0100
commit232cb7b0553f844be695d26f55aaf531029a6a9a (patch)
tree5fa23ee5245cfc0ecec91d1ff8c1969165a6580c /scripts
parent82d7dc9709bb2cc85a42b168bdd25ab70e763bee (diff)
downloadpoky-232cb7b0553f844be695d26f55aaf531029a6a9a.tar.gz
oeqa/runqemu: Support RUNQEMU_TMPFS_DIR as a location to copy snapshot images to
We have a working theory that IO queues on the autobuilder are impacting runtime testing under qemu, particularly async writes which inice does not influence. We already pass the snapshot option to qemu which copies the image and runs out of the copy. Add in the ability to copy the image to a specificed location which can be a tmpfs. This means that writes to the image would no longer be blocked by other writes to disk in the system. Preliminary tests show that this does improve the qemu errors at the expense of sometimes showing qemu startup timeouts as on a loaded system with a large test image, it can take longer than 120s to copy the image to tmpfs. Having a most consistent failure mode for loaded tests is probably desireable though. (From OE-Core rev: fd1c26ab426c3699ffd8082b83d65a84c8eb8bff) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/runqemu9
1 files changed, 9 insertions, 0 deletions
diff --git a/scripts/runqemu b/scripts/runqemu
index 35053de368..ba0b701aff 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -1196,6 +1196,15 @@ class BaseConfig(object):
1196 self.fstype = self.fstype[4:] 1196 self.fstype = self.fstype[4:]
1197 rootfs_format = self.fstype if self.fstype in ('vmdk', 'vhd', 'vhdx', 'qcow2', 'vdi') else 'raw' 1197 rootfs_format = self.fstype if self.fstype in ('vmdk', 'vhd', 'vhdx', 'qcow2', 'vdi') else 'raw'
1198 1198
1199 tmpfsdir = os.environ.get("RUNQEMU_TMPFS_DIR", None)
1200 if self.snapshot and tmpfsdir:
1201 newrootfs = os.path.join(tmpfsdir, os.path.basename(self.rootfs)) + "." + str(os.getpid())
1202 shutil.copyfile(self.rootfs, newrootfs)
1203 #print("Copying rootfs to tmpfs: %s" % newrootfs)
1204 self.rootfs = newrootfs
1205 # Don't need a second copy now!
1206 self.snapshot = False
1207
1199 qb_rootfs_opt = self.get('QB_ROOTFS_OPT') 1208 qb_rootfs_opt = self.get('QB_ROOTFS_OPT')
1200 if qb_rootfs_opt: 1209 if qb_rootfs_opt:
1201 self.rootfs_options = qb_rootfs_opt.replace('@ROOTFS@', self.rootfs) 1210 self.rootfs_options = qb_rootfs_opt.replace('@ROOTFS@', self.rootfs)