diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-03-31 22:41:52 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-04-06 09:30:10 +0100 |
commit | 232cb7b0553f844be695d26f55aaf531029a6a9a (patch) | |
tree | 5fa23ee5245cfc0ecec91d1ff8c1969165a6580c /scripts | |
parent | 82d7dc9709bb2cc85a42b168bdd25ab70e763bee (diff) | |
download | poky-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-x | scripts/runqemu | 9 |
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) |