Hardy - Use MFENCE/LFENCE instead of CPUID
Bug #249135 reported by
Tim Gardner
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Hardy |
Fix Released
|
Medium
|
Tim Gardner |
Bug Description
Hi,
There have been a series of patches committed to the mainline kernel recently that address a performance issue for gettimeofday when running on hypervisors that enable hardware assisted virtualization. The non-ideal performance occurs because a CPUID instruction is used to serialize the pipeline before RDTSC, and when using hardware virtualization, CPUID always exits to the hypervisor.
The code in question also exists in the ubuntu-hardy tree.
The fix is to use MFENCE/LFENCE instead of CPUID. This series of patches backports those commits for current ubuntu's git tree.
Please have a look.
Thanks,
Alok
Changed in linux: | |
assignee: | nobody → timg-tpi |
importance: | Undecided → Medium |
milestone: | none → ubuntu-8.04.2 |
status: | New → In Progress |
milestone: | ubuntu-8.04.2 → ubuntu-8.10-beta |
Changed in linux (Ubuntu): | |
assignee: | Tim Gardner (timg-tpi) → nobody |
importance: | Medium → Undecided |
milestone: | ubuntu-8.10-beta → none |
status: | Fix Committed → Invalid |
To post a comment you must log in.
These 6 commits migrate from CPUID to MFENCE/LFENCE:
http:// kernel. ubuntu. com/git? p=ubuntu/ ubuntu- hardy.git; a=commit; h=12d503a50efbf ccebd31f3bf0d63 65043d8d3ea1 kernel. ubuntu. com/git? p=ubuntu/ ubuntu- hardy.git; a=commit; h=b312a5f161978 b4c41afe12261c1 7763e1e480b3 kernel. ubuntu. com/git? p=ubuntu/ ubuntu- hardy.git; a=commit; h=f4c08bc613b9e c5b7e65ee8503dc c5672ee9cb5c kernel. ubuntu. com/git? p=ubuntu/ ubuntu- hardy.git; a=commit; h=0fe07cb0805ff b42225164ce5ce4 9de5af8b4120 kernel. ubuntu. com/git? p=ubuntu/ ubuntu- hardy.git; a=commit; h=d6bcc67937ece a5c9cee274615c6 0d159e0dec6f kernel. ubuntu. com/git? p=ubuntu/ ubuntu- hardy.git; a=commit; h=7cceb5df7cb20 d12d2bfcb89595c a2eb663732e2
http://
http://
http://
http://
http://