forked fromtorvalds/linux
- Notifications
You must be signed in to change notification settings - Fork0
Commit56f3547
mm: adjust vm_committed_as_batch according to vm overcommit policy
When checking a performance change for will-it-scale scalability mmap test[1], we found very high lock contention for spinlock of percpu counter'vm_committed_as': 94.14% 0.35% [kernel.kallsyms] [k] _raw_spin_lock_irqsave 48.21% _raw_spin_lock_irqsave;percpu_counter_add_batch;__vm_enough_memory;mmap_region;do_mmap; 45.91% _raw_spin_lock_irqsave;percpu_counter_add_batch;__do_munmap;Actually this heavy lock contention is not always necessary. The'vm_committed_as' needs to be very precise when the strictOVERCOMMIT_NEVER policy is set, which requires a rather small batch numberfor the percpu counter.So keep 'batch' number unchanged for strict OVERCOMMIT_NEVER policy, andlift it to 64X for OVERCOMMIT_ALWAYS and OVERCOMMIT_GUESS policies. Alsoadd a sysctl handler to adjust it when the policy is reconfigured.Benchmark with the same testcase in [1] shows 53% improvement on a 8C/16Tdesktop, and 2097%(20X) on a 4S/72C/144T server. We tested with testplatforms in 0day (server, desktop and laptop), and 80%+ platforms showsimprovements with that test. And whether it shows improvements depends onif the test mmap size is bigger than the batch number computed.And if the lift is 16X, 1/3 of the platforms will show improvements,though it should help the mmap/unmap usage generally, as Michal Hockomentioned:: I believe that there are non-synthetic worklaods which would benefit from: a larger batch. E.g. large in memory databases which do large mmaps: during startups from multiple threads.[1]https://lore.kernel.org/lkml/20200305062138.GI5972@shao2-debian/Signed-off-by: Feng Tang <feng.tang@intel.com>Signed-off-by: Andrew Morton <akpm@linux-foundation.org>Acked-by: Michal Hocko <mhocko@suse.com>Cc: Matthew Wilcox (Oracle) <willy@infradead.org>Cc: Johannes Weiner <hannes@cmpxchg.org>Cc: Mel Gorman <mgorman@suse.de>Cc: Qian Cai <cai@lca.pw>Cc: Kees Cook <keescook@chromium.org>Cc: Andi Kleen <andi.kleen@intel.com>Cc: Tim Chen <tim.c.chen@intel.com>Cc: Dave Hansen <dave.hansen@intel.com>Cc: Huang Ying <ying.huang@intel.com>Cc: Christoph Lameter <cl@linux.com>Cc: Dennis Zhou <dennis@kernel.org>Cc: Haiyang Zhang <haiyangz@microsoft.com>Cc: kernel test robot <rong.a.chen@intel.com>Cc: "K. Y. Srinivasan" <kys@microsoft.com>Cc: Tejun Heo <tj@kernel.org>Link:http://lkml.kernel.org/r/1589611660-89854-4-git-send-email-feng.tang@intel.comLink:http://lkml.kernel.org/r/1592725000-73486-4-git-send-email-feng.tang@intel.comLink:http://lkml.kernel.org/r/1594389708-60781-5-git-send-email-feng.tang@intel.comSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>1 parent0a4954a commit56f3547
5 files changed
+64
-7
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
206 | 206 | | |
207 | 207 | | |
208 | 208 | | |
| 209 | + | |
| 210 | + | |
209 | 211 | | |
210 | 212 | | |
211 | 213 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
| 60 | + | |
60 | 61 | | |
61 | 62 | | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
62 | 66 | | |
63 | 67 | | |
64 | 68 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2671 | 2671 | | |
2672 | 2672 | | |
2673 | 2673 | | |
2674 | | - | |
| 2674 | + | |
2675 | 2675 | | |
2676 | 2676 | | |
2677 | 2677 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
16 | 17 | | |
17 | 18 | | |
18 | 19 | | |
| |||
144 | 145 | | |
145 | 146 | | |
146 | 147 | | |
147 | | - | |
| 148 | + | |
148 | 149 | | |
149 | 150 | | |
150 | 151 | | |
151 | 152 | | |
152 | | - | |
153 | | - | |
154 | | - | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
155 | 165 | | |
156 | 166 | | |
157 | 167 | | |
| |||
162 | 172 | | |
163 | 173 | | |
164 | 174 | | |
165 | | - | |
| 175 | + | |
166 | 176 | | |
167 | 177 | | |
168 | 178 | | |
| |||
176 | 186 | | |
177 | 187 | | |
178 | 188 | | |
179 | | - | |
| 189 | + | |
180 | 190 | | |
181 | 191 | | |
182 | 192 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
746 | 746 | | |
747 | 747 | | |
748 | 748 | | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
| 762 | + | |
| 763 | + | |
| 764 | + | |
| 765 | + | |
| 766 | + | |
| 767 | + | |
| 768 | + | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
| 780 | + | |
| 781 | + | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
| 785 | + | |
| 786 | + | |
| 787 | + | |
| 788 | + | |
| 789 | + | |
749 | 790 | | |
750 | 791 | | |
751 | 792 | | |
| |||
0 commit comments
Comments
(0)