Bug 1305886 (RHEV_IO_NATIVE_EVERYWHERE)
Summary: | [RFE] Move to IO=native everywhere (AIO is processing only 1 request, even if >1 requests in virtio - RHEV-M) | ||
---|---|---|---|
Product: | Red Hat Enterprise Virtualization Manager | Reporter: | Karen Noel <knoel> |
Component: | RFEs | Assignee: | Adam Litke <alitke> |
Status: | CLOSED NOTABUG | QA Contact: | Raz Tamir <ratamir> |
Severity: | medium | Docs Contact: | |
Priority: | medium | ||
Version: | 4.0.0 | CC: | amureini, areis, atheurer, gklein, huding, jen, jherrman, juzhang, knoel, lsurette, mst, nsoffer, psuriset, rbalakri, srevivo, stefanha, tnisan, virt-bugs, virt-maint, xfu, ykaul, ylavi |
Target Milestone: | ovirt-4.1.0-alpha | Keywords: | FutureFeature, Performance |
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: |
When QEMU was configured with the aio=native parameter, KVM virtual machines were slowed significantly. With this update, asynchronous I/O (AIO) can correctly process more than one request at a time, and using aio=native no longer has a negative impact on guest performance.
|
Story Points: | --- |
Clone Of: | 1243548 | Environment: | |
Last Closed: | 2016-12-06 07:57:03 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | Storage | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: | |||
Bug Depends On: | 1243548 | ||
Bug Blocks: |
Description
Karen Noel
2016-02-09 13:55:49 UTC
After discussing with Yaniv K - we should just stop configuring this, and trust libvirt/qemu to have sane defaults. Karen, RHV is using this logic when creating libvirt xml: For block device: <driver cache="none" error_policy="stop" io="native" name="qemu" type="raw"/> For files: <driver cache="none" error_policy="stop" io="threads" name="qemu" type="raw"/> What is the recommended configuration? or should we let libvirt decide? For block devices io="native" is consistently the best choice. For files the results are mixed. QEMU and libvirt leave the choice up to the user. They do not automatically pick the best option (because it's not possible to know the answer in general). io="native" tends to perform well on local files although the results are not always consistent. On remote file systems like NFS io="threads" has been the recommendation. (In reply to Stefan Hajnoczi from comment #4) > For block devices io="native" is consistently the best choice. > > For files the results are mixed. QEMU and libvirt leave the choice up to > the user. They do not automatically pick the best option (because it's not > possible to know the answer in general). So what is the result of not specifying the io attribute? <driver cache="none" error_policy="stop" name="qemu" type="raw"/> Does it use always "native", or the behavior can changed based on other conditions? > io="native" tends to perform well on local files although the results are > not always consistent. We don't use normally local files, although we can optimize the local file case to use io="threads". > On remote file systems like NFS io="threads" has > been the recommendation. This is the common case when using file based storage. (In reply to Nir Soffer from comment #7) > (In reply to Stefan Hajnoczi from comment #4) > > For block devices io="native" is consistently the best choice. > > > > For files the results are mixed. QEMU and libvirt leave the choice up to > > the user. They do not automatically pick the best option (because it's not > > possible to know the answer in general). > > So what is the result of not specifying the io attribute? > > <driver cache="none" error_policy="stop" > name="qemu" type="raw"/> > > Does it use always "native", or the behavior can changed based on > other conditions? When <driver io=> is omitted QEMU always defaults to aio=threads. Yaniv, according to the discussion here, it seems the premise of this BZ is wrong. Should we close it? |