Bug 2101787
Summary: | [rhel.8.7] Loading a kernel/initrd is sometimes very slow | ||||||
---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 8 | Reporter: | Yedidyah Bar David <didi> | ||||
Component: | seabios | Assignee: | Gerd Hoffmann <kraxel> | ||||
Status: | CLOSED ERRATA | QA Contact: | Xueqiang Wei <xuwei> | ||||
Severity: | high | Docs Contact: | |||||
Priority: | high | ||||||
Version: | 8.7 | CC: | coli, jinzhao, juzhang, kkiwi, kraxel, mrezanin, msobczyk, virt-maint, ymankad, zhguo | ||||
Target Milestone: | rc | Keywords: | Performance, Regression, Triaged | ||||
Target Release: | --- | ||||||
Hardware: | Unspecified | ||||||
OS: | Unspecified | ||||||
Whiteboard: | |||||||
Fixed In Version: | seabios-1.16.0-3.module+el8.7.0+16134+e5908aa2 | Doc Type: | If docs needed, set a value | ||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | |||||||
: | 2108555 (view as bug list) | Environment: | |||||
Last Closed: | 2022-11-08 09:20:10 UTC | Type: | Bug | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Bug Depends On: | |||||||
Bug Blocks: | 2108555 | ||||||
Attachments: |
|
Description
Yedidyah Bar David
2022-06-28 11:14:19 UTC
What exactly is the boot device? Can you capture a firmware log? <qemu:commandline> <qemu:arg value='-chardev'/> <qemu:arg value='file,id=firmware,path=/tmp/edk2-devel-q35.log'/> <qemu:arg value='-device'/> <qemu:arg value='isa-debugcon,iobase=0x402,chardev=firmware'/> </qemu:commandline> (In reply to Gerd Hoffmann from comment #1) > What exactly is the boot device? Attaching the libvirt xml (as copied from a typical successful run of our CI, should be mostly identical to current case). > Can you capture a firmware log? > > <qemu:commandline> > <qemu:arg value='-chardev'/> > <qemu:arg value='file,id=firmware,path=/tmp/edk2-devel-q35.log'/> > <qemu:arg value='-device'/> > <qemu:arg value='isa-debugcon,iobase=0x402,chardev=firmware'/> > </qemu:commandline> I'll try. three changes for virtio-blk in 1.15 ... 1.16: a05af290bac5 virtio-blk: split large IO according to size_max 815d7498655b virtio-blk: abstract a function named virtio_blk_op_one_segment to handle r/w request 27b573d4f5a5 virtio-blk: add feature VIRTIO_BLK_F_SIZE_MAX and VIRTIO_BLK_F_SEG_MAX They make seabios query the host for the maximum request size and if io requests are larger than that seabios will split them into smaller ones. Should essentially be a no-op, but maybe there is a bug in there that seabios splits requests even though it is not needed, thereby slowing down the boot. The firmware log (grep for lines with virtio-blk) should help figuring this. Attached some console and firmware logs. Files named *-03 are from a plain unattended boot. Files named *-04* are from a run where I entered the grub prompt and ran several 'initrd' commands to load the default initramfs image (~ 67 MB). During some of them, I imposed cpu load on the host (plain 'while true; do :; done &'). Tried running more than one endless loop in parallel but this caused no difference - apparently we (vdsm/libvirt, no idea) somehow allocate a cpu to the qemu process for itself (the host (actually a nested-kvm VM) has 2 cpus). While cpu was loaded, throughput was ~ 100KB/s. When not, it was faster, but changing significantly. Files named *-05* are from a similar flow as 04, but after downgrading seabios-bin to 1.15. Throughput during cpu load is ~ 500 KB/s, without cpu load it's more than 1MB/s (in previous cases it also went much higher, not sure what changed. Perhaps the various tests cause memory fragmentation or whatever that makes it rather slow even unloaded, just a wild guess). (In reply to Yedidyah Bar David from comment #8) > Attached some console and firmware logs. Seems to be corrupted or incomplete. I get a decompression error + only HostedEngine-console.log-02 unpacked, the other files are missing. QE bot(pre verify): Set 'Verified:Tested,SanityOnly' as gating/tier1 test pass. According to Comment 21 and Comment 25, set status to VERIFIED. Thanks. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (Low: virt:rhel and virt-devel:rhel security, bug fix, and enhancement update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2022:7472 |