Merge "Limit qemu-img execution arenas" into stable/train

This commit is contained in:
Zuul 2021-06-02 02:30:04 +00:00 committed by Gerrit Code Review
commit 90c9fc607a
2 changed files with 16 additions and 0 deletions

View File

@ -48,6 +48,15 @@ log "Imaging $IMAGEFILE to $DEVICE"
# limit the memory usage for qemu-img to 2 GiB
ulimit -v 2097152
# NOTE(TheJulia): qemu-img uses multiple threads by default and in
# cross-thread memory allocation lock conflicts, glibc will ultimately
# attempt to provide it with an additional arena to allocate from, however
# the running default, when not overridden is 8 * ncpu * the footprint, which
# very quickly exceeds the ulimit. This is most observable on CI systems where
# cross-vcpu thread locking can result in a conflict that wouldn't normally be
# as likely on physical hardware.
# See discussion on https://bugzilla.redhat.com/show_bug.cgi?id=1892773
export MALLOC_ARENA_MAX=3
qemu-img convert -t directsync -O host_device $IMAGEFILE $DEVICE
sync

View File

@ -0,0 +1,7 @@
---
fixes:
- |
Fixes failures with disk image conversions which result in memory
allocation or input/output errors due to memory limitations by limiting
the number of available memory allocation pools to a non-dynamic
reasonable number which should not exceed the available system memory.