| Summary: | [CGROUP]STEAL time doesn't work on POWER | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Min Deng <mdeng> |
| Component: | qemu-kvm-rhev | Assignee: | David Gibson <dgibson> |
| Status: | CLOSED NOTABUG | QA Contact: | Virtualization Bugs <virt-bugs> |
| Severity: | unspecified | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 7.3 | CC: | knoel, qzhang, virt-maint |
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | ppc64le | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2016-11-18 02:54:56 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: | |
|
Description
Min Deng
2016-09-05 06:03:10 UTC
I've discussed this with Paul Mackerras at IBM, and I believe we've determined the cause. This is a side-effect of the way that in normal operation a POWER host can run more guest threads than host threads - that's because hardware-level threads can be used in the guest, but not in the host, due to restrictions of the virtualization hardware.
More specifically, the dynamic multithreading code we include means that although both VMs are bound to the same host thread, they could actually run on different "subcores" of the host core. When this is the case, it won't get accounted as stolen time (the two VMs still may affect each others' performance, but how much depends on whether the workloads on each are using the same functional units in the CPU, so it can't be measured as an amount of time).
The test case will need to be adjusted for Power: there are two obvious ways to do this:
1) Disable dynamic multi-threading:
echo 0 >/sys/module/kvm_hv/parameters/dynamic_mt_modes
With this executed before performing the test, the stolen time results should be as expected.
2) Increase each VM to 8 threads, and run 8 stress threads on each VM
This ensures that each VM occupies a whole host core, so they can't be packed onto the same core at the same time.
|