Bug 539685

Summary: [Intel 5.5 FEAT] Fix spinlock issue which causes performance impact on large systems [rhel-5.4.z]
Product: Red Hat Enterprise Linux 5 Reporter: Benjamin Kahn <bkahn>
Component: kernelAssignee: Jiri Pirko <jpirko>
Status: CLOSED ERRATA QA Contact: Red Hat Kernel QE team <kernel-qe>
Severity: high Docs Contact:
Priority: urgent    
Version: 5.5CC: anton, cward, dhoward, dzickus, emcnabb, hjia, jane.lv, jpirko, jtluka, jvillalo, ltroan, luyu, lwoodman, pm-eus, qcai, rkhan, rpacheco, syeghiay
Target Milestone: rcKeywords: FutureFeature, OtherQA, ZStream
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: kernel-2.6.18-164.7.1.el5 Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2009-12-15 17:20:35 UTC Type: ---
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: 526078    
Bug Blocks:    

Description Benjamin Kahn 2009-11-20 20:19:19 UTC
This bug has been copied from bug #526078 and has been proposed
to be backported to 5.4 z-stream (EUS).

Comment 2 Anton Arapov 2009-11-21 21:45:47 UTC
in kernel-2.6.18-164.7.1.el5

Please do NOT transition this bugzilla state to VERIFIED until our QE team
has sent specific instructions indicating when to do so.

Comment 5 Larry Woodman 2009-12-14 19:55:10 UTC
This the correct patch for this issue.  It resolves a performance problem seen running AIM7 as well as several other large benchmarks that do lots of forking, mmap()ing, munmap()ing and exit()ing while the system is under memory pressure.  This patch was introduced in the upstream kernel in 2.6.32.


-----------------------------------------------------------------------------
diff --git a/mm/mmap.c b/mm/mmap.c
index 04dfc7e..d80fa9d 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -559,9 +559,9 @@ again:                      remove_next = 1 + (end > next->vm_end);

        /*
         * When changing only vma->vm_end, we don't really need
-        * anon_vma lock: but is that case worth optimizing out?
+        * anon_vma lock.
         */
-       if (vma->anon_vma)
+       if (vma->anon_vma && (insert || importer || start != vma->vm_start))
                anon_vma = vma->anon_vma;
        if (anon_vma) {
                spin_lock(&anon_vma->lock);
-------------------------------------------------------------------------------

Larry Woodman

Comment 7 errata-xmlrpc 2009-12-15 17:20:35 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHSA-2009-1670.html