diff mbox series

[v4,3/4] mm/util.c: remove the VM_WARN_ONCE for vm_committed_as underflow check

Message ID 1590714370-67182-4-git-send-email-feng.tang@intel.com (mailing list archive)
State New, archived
Headers show
Series make vm_committed_as_batch aware of vm overcommit policy | expand

Commit Message

Feng Tang May 29, 2020, 1:06 a.m. UTC
As is explained by Michal Hocko:

: Looking at the history, this has been added by 82f71ae4a2b8
: ("mm: catch memory commitment underflow") to have a safety check
: for issues which have been fixed. There doesn't seem to be any bug
: reports mentioning this splat since then so it is likely just
: spending cycles for a hot path (yes many people run with DEBUG_VM)
: without a strong reason.

Signed-off-by: Feng Tang <feng.tang@intel.com>
Cc: Konstantin Khlebnikov <koct9i@gmail.com>
Cc: Qian Cai <cai@lca.pw>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Andi Kleen <andi.kleen@intel.com>
---
 mm/util.c | 8 --------
 1 file changed, 8 deletions(-)

Comments

Qian Cai May 29, 2020, 2:49 a.m. UTC | #1
On Fri, May 29, 2020 at 09:06:09AM +0800, Feng Tang wrote:
> As is explained by Michal Hocko:
> 
> : Looking at the history, this has been added by 82f71ae4a2b8
> : ("mm: catch memory commitment underflow") to have a safety check
> : for issues which have been fixed. There doesn't seem to be any bug
> : reports mentioning this splat since then so it is likely just
> : spending cycles for a hot path (yes many people run with DEBUG_VM)
> : without a strong reason.

Hmm, it looks like the warning is still useful to catch issues in,

https://lore.kernel.org/linux-mm/20140624201606.18273.44270.stgit@zurg
https://lore.kernel.org/linux-mm/54BB9A32.7080703@oracle.com/

After read the whole discussion in that thread, I actually disagree with
Michal. In order to get ride of this existing warning, it is rather
someone needs a strong reason that could prove the performance hit is
noticeable with some data.

> 
> Signed-off-by: Feng Tang <feng.tang@intel.com>
> Cc: Konstantin Khlebnikov <koct9i@gmail.com>
> Cc: Qian Cai <cai@lca.pw>
> Cc: Michal Hocko <mhocko@suse.com>
> Cc: Andi Kleen <andi.kleen@intel.com>
> ---
>  mm/util.c | 8 --------
>  1 file changed, 8 deletions(-)
> 
> diff --git a/mm/util.c b/mm/util.c
> index 3c7a08c..fe63271 100644
> --- a/mm/util.c
> +++ b/mm/util.c
> @@ -814,14 +814,6 @@ int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin)
>  {
>  	long allowed;
>  
> -	/*
> -	 * A transient decrease in the value is unlikely, so no need
> -	 * READ_ONCE() for vm_committed_as.count.
> -	 */
> -	VM_WARN_ONCE(data_race(percpu_counter_read(&vm_committed_as) <
> -			-(s64)vm_committed_as_batch * num_online_cpus()),
> -			"memory commitment underflow");
> -
>  	vm_acct_memory(pages);
>  
>  	/*
> -- 
> 2.7.4
>
Feng Tang May 29, 2020, 5:37 a.m. UTC | #2
On Thu, May 28, 2020 at 10:49:28PM -0400, Qian Cai wrote:
> On Fri, May 29, 2020 at 09:06:09AM +0800, Feng Tang wrote:
> > As is explained by Michal Hocko:
> > 
> > : Looking at the history, this has been added by 82f71ae4a2b8
> > : ("mm: catch memory commitment underflow") to have a safety check
> > : for issues which have been fixed. There doesn't seem to be any bug
> > : reports mentioning this splat since then so it is likely just
> > : spending cycles for a hot path (yes many people run with DEBUG_VM)
> > : without a strong reason.
> 
> Hmm, it looks like the warning is still useful to catch issues in,
> 
> https://lore.kernel.org/linux-mm/20140624201606.18273.44270.stgit@zurg
> https://lore.kernel.org/linux-mm/54BB9A32.7080703@oracle.com/
> 
> After read the whole discussion in that thread, I actually disagree with
> Michal. In order to get ride of this existing warning, it is rather
> someone needs a strong reason that could prove the performance hit is
> noticeable with some data.

One problem with current check is percpu_counter_read(&vm_committed_as)
is not accurate, and percpu_counter_sum() is way too heavy.

Thanks,
Feng
Feng Tang June 2, 2020, 3:37 a.m. UTC | #3
Hi Qian,

On Thu, May 28, 2020 at 10:49:28PM -0400, Qian Cai wrote:
> On Fri, May 29, 2020 at 09:06:09AM +0800, Feng Tang wrote:
> > As is explained by Michal Hocko:
> > 
> > : Looking at the history, this has been added by 82f71ae4a2b8
> > : ("mm: catch memory commitment underflow") to have a safety check
> > : for issues which have been fixed. There doesn't seem to be any bug
> > : reports mentioning this splat since then so it is likely just
> > : spending cycles for a hot path (yes many people run with DEBUG_VM)
> > : without a strong reason.
> 
> Hmm, it looks like the warning is still useful to catch issues in,
> 
> https://lore.kernel.org/linux-mm/20140624201606.18273.44270.stgit@zurg
> https://lore.kernel.org/linux-mm/54BB9A32.7080703@oracle.com/
> 
> After read the whole discussion in that thread, I actually disagree with
> Michal. In order to get ride of this existing warning, it is rather
> someone needs a strong reason that could prove the performance hit is
> noticeable with some data.

I re-run the same benchmark with v5.7 and 5.7+remove_warning kernels,
the overall performance change is trivial (which is expected)

   1330147            +0.1%    1331032        will-it-scale.72.processes

But the perf stats of "self" shows big change for __vm_enough_memory() 

      0.27            -0.3        0.00        pp.self.__vm_enough_memory

I post the full compare result in the end.

Thanks,
Feng


=========================================================================================
tbox_group/testcase/rootfs/kconfig/compiler/nr_task/mode/test/cpufreq_governor/ucode:
  lkp-skl-2sp7/will-it-scale/debian-x86_64-20191114.cgz/x86_64-rhel-7.6-vm-debug/gcc-7/100%/process/mmap2/performance/0x2000065

commit: 
  v5.7
  af3eca72dc43078e1ee4a38b0ecc0225b659f345

            v5.7 af3eca72dc43078e1ee4a38b0ec 
---------------- --------------------------- 
       fail:runs  %reproduction    fail:runs
           |             |             |    
        850:3       -12130%         486:2     dmesg.timestamp:last
          2:3          -67%            :2     kmsg.Firmware_Bug]:the_BIOS_has_corrupted_hw-PMU_resources(MSR#is#bb)
           :3           33%           1:2     kmsg.Firmware_Bug]:the_BIOS_has_corrupted_hw-PMU_resources(MSR#is#e08)
          5:3         -177%            :2     kmsg.timestamp:Firmware_Bug]:the_BIOS_has_corrupted_hw-PMU_resources(MSR#is#bb)
           :3           88%           2:2     kmsg.timestamp:Firmware_Bug]:the_BIOS_has_corrupted_hw-PMU_resources(MSR#is#e08)
        398:3        -4444%         265:2     kmsg.timestamp:last
         %stddev     %change         %stddev
             \          |                \  
   1330147            +0.1%    1331032        will-it-scale.72.processes
      0.02            +0.0%       0.02        will-it-scale.72.processes_idle
     18474            +0.1%      18486        will-it-scale.per_process_ops
    301.18            -0.0%     301.16        will-it-scale.time.elapsed_time
    301.18            -0.0%     301.16        will-it-scale.time.elapsed_time.max
      1.00 ± 81%    +100.0%       2.00        will-it-scale.time.involuntary_context_switches
      9452            +0.0%       9452        will-it-scale.time.maximum_resident_set_size
      5925            +0.1%       5932        will-it-scale.time.minor_page_faults
      4096            +0.0%       4096        will-it-scale.time.page_size
      0.01 ± 35%     +12.5%       0.01 ± 33%  will-it-scale.time.system_time
      0.03 ± 14%      +5.0%       0.04 ± 14%  will-it-scale.time.user_time
     83.33            +0.2%      83.50        will-it-scale.time.voluntary_context_switches
   1330147            +0.1%    1331032        will-it-scale.workload
      0.45 ± 29%      +0.0        0.50 ± 28%  mpstat.cpu.all.idle%
     98.41            -0.1       98.34        mpstat.cpu.all.sys%
      1.14            +0.0        1.16        mpstat.cpu.all.usr%
    200395 ± 18%     +11.9%     224282 ± 14%  cpuidle.C1.time
      4008 ± 38%      -2.1%       3924 ± 15%  cpuidle.C1.usage
 1.222e+08 ± 19%     -29.2%   86444161        cpuidle.C1E.time
    254203 ± 19%     -23.2%     195198 ±  4%  cpuidle.C1E.usage
   8145747 ± 31%    +339.9%   35830338 ± 72%  cpuidle.C6.time
     22878 ±  9%    +288.2%      88823 ± 70%  cpuidle.C6.usage
      8891 ±  7%      -7.4%       8229        cpuidle.POLL.time
      3111 ± 18%     -11.1%       2766        cpuidle.POLL.usage
      0.00          -100.0%       0.00        numa-numastat.node0.interleave_hit
    314399 ±  2%      -1.0%     311244 ±  3%  numa-numastat.node0.local_node
    322209            +2.4%     329909        numa-numastat.node0.numa_hit
      7814 ± 73%    +138.9%      18670 ± 24%  numa-numastat.node0.other_node
      0.00          -100.0%       0.00        numa-numastat.node1.interleave_hit
    343026 ±  2%      -0.3%     341980        numa-numastat.node1.local_node
    358632            -3.3%     346708        numa-numastat.node1.numa_hit
     15613 ± 36%     -69.7%       4728 ± 98%  numa-numastat.node1.other_node
    301.18            -0.0%     301.16        time.elapsed_time
    301.18            -0.0%     301.16        time.elapsed_time.max
      1.00 ± 81%    +100.0%       2.00        time.involuntary_context_switches
      9452            +0.0%       9452        time.maximum_resident_set_size
      5925            +0.1%       5932        time.minor_page_faults
      4096            +0.0%       4096        time.page_size
      0.01 ± 35%     +12.5%       0.01 ± 33%  time.system_time
      0.03 ± 14%      +5.0%       0.04 ± 14%  time.user_time
     83.33            +0.2%      83.50        time.voluntary_context_switches
      0.33 ±141%     +50.0%       0.50 ±100%  vmstat.cpu.id
     97.00            +0.0%      97.00        vmstat.cpu.sy
      1.00            +0.0%       1.00        vmstat.cpu.us
      0.00          -100.0%       0.00        vmstat.io.bi
      4.00            +0.0%       4.00        vmstat.memory.buff
   1391751            +0.1%    1392746        vmstat.memory.cache
 1.294e+08            -0.0%  1.294e+08        vmstat.memory.free
     71.00            +0.0%      71.00        vmstat.procs.r
      1315            -0.7%       1305        vmstat.system.cs
    147433            -0.0%     147369        vmstat.system.in
      0.00          -100.0%       0.00        proc-vmstat.compact_isolated
     85060            +0.4%      85431        proc-vmstat.nr_active_anon
     37.00            -1.4%      36.50        proc-vmstat.nr_active_file
     71111            +0.1%      71200        proc-vmstat.nr_anon_pages
     77.33 ± 17%     +12.5%      87.00        proc-vmstat.nr_anon_transparent_hugepages
     54.00            +1.9%      55.00        proc-vmstat.nr_dirtied
      5.00            +0.0%       5.00        proc-vmstat.nr_dirty
   3215506            -0.0%    3215471        proc-vmstat.nr_dirty_background_threshold
   6438875            -0.0%    6438805        proc-vmstat.nr_dirty_threshold
    327936            +0.1%     328237        proc-vmstat.nr_file_pages
     50398            +0.0%      50398        proc-vmstat.nr_free_cma
  32356721            -0.0%   32356374        proc-vmstat.nr_free_pages
      4640            -0.1%       4636        proc-vmstat.nr_inactive_anon
     82.67 ±  2%      -0.8%      82.00 ±  2%  proc-vmstat.nr_inactive_file
     13256            -0.3%      13211        proc-vmstat.nr_kernel_stack
      8057            -0.5%       8017        proc-vmstat.nr_mapped
    134.00 ±141%     +49.3%     200.00 ±100%  proc-vmstat.nr_mlock
      2229            +0.2%       2234        proc-vmstat.nr_page_table_pages
     18609 ±  3%      +1.6%      18898 ±  3%  proc-vmstat.nr_shmem
     19964            -0.3%      19901        proc-vmstat.nr_slab_reclaimable
     34003            +0.1%      34025        proc-vmstat.nr_slab_unreclaimable
    309227            +0.0%     309249        proc-vmstat.nr_unevictable
      0.00          -100.0%       0.00        proc-vmstat.nr_writeback
     53.00            +0.0%      53.00        proc-vmstat.nr_written
     85060            +0.4%      85431        proc-vmstat.nr_zone_active_anon
     37.00            -1.4%      36.50        proc-vmstat.nr_zone_active_file
      4640            -0.1%       4636        proc-vmstat.nr_zone_inactive_anon
     82.67 ±  2%      -0.8%      82.00 ±  2%  proc-vmstat.nr_zone_inactive_file
    309227            +0.0%     309249        proc-vmstat.nr_zone_unevictable
      5.00            +0.0%       5.00        proc-vmstat.nr_zone_write_pending
      2181 ±124%     -68.6%     685.50 ± 80%  proc-vmstat.numa_hint_faults
     37.67 ±109%     +77.9%      67.00 ± 91%  proc-vmstat.numa_hint_faults_local
    702373            +0.7%     707116        proc-vmstat.numa_hit
     35.33 ± 85%     -70.3%      10.50 ±  4%  proc-vmstat.numa_huge_pte_updates
      0.00          -100.0%       0.00        proc-vmstat.numa_interleave
    678938            +0.7%     683714        proc-vmstat.numa_local
     23435            -0.1%      23401        proc-vmstat.numa_other
      4697 ± 68%     -86.8%     618.50 ± 98%  proc-vmstat.numa_pages_migrated
     25844 ± 52%     -79.1%       5406 ±  4%  proc-vmstat.numa_pte_updates
     20929 ±  4%      +1.9%      21332 ±  5%  proc-vmstat.pgactivate
      0.00          -100.0%       0.00        proc-vmstat.pgalloc_dma32
    760325            -0.4%     756908        proc-vmstat.pgalloc_normal
    801566            -0.5%     797832        proc-vmstat.pgfault
    714690            -0.2%     713286        proc-vmstat.pgfree
      4697 ± 68%     -86.8%     618.50 ± 98%  proc-vmstat.pgmigrate_success
      0.00          -100.0%       0.00        proc-vmstat.pgpgin
    103.00            +0.5%     103.50        proc-vmstat.thp_collapse_alloc
      5.00            +0.0%       5.00        proc-vmstat.thp_fault_alloc
      0.00          -100.0%       0.00        proc-vmstat.thp_zero_page_alloc
     41.00 ± 98%     +35.4%      55.50 ± 80%  proc-vmstat.unevictable_pgs_culled
    183.00 ±141%     +50.0%     274.50 ±100%  proc-vmstat.unevictable_pgs_mlocked
      2.59            +0.5%       2.60        perf-stat.i.MPKI
 4.854e+09            +0.0%  4.856e+09        perf-stat.i.branch-instructions
      0.45            -0.0        0.43        perf-stat.i.branch-miss-rate%
  21296577            -2.3%   20817170        perf-stat.i.branch-misses
     39.98            -0.2       39.81        perf-stat.i.cache-miss-rate%
  21372778            +0.0%   21380457        perf-stat.i.cache-misses
  53441942            +0.5%   53705724        perf-stat.i.cache-references
      1285            -0.7%       1277        perf-stat.i.context-switches
     10.67            -0.0%      10.67        perf-stat.i.cpi
     71998            -0.0%      71998        perf-stat.i.cpu-clock
  2.21e+11            +0.0%   2.21e+11        perf-stat.i.cpu-cycles
    117.36            +0.3%     117.71        perf-stat.i.cpu-migrations
     10322            -0.0%      10321        perf-stat.i.cycles-between-cache-misses
      0.05            +0.0        0.05        perf-stat.i.dTLB-load-miss-rate%
   2709233            +0.1%    2712427        perf-stat.i.dTLB-load-misses
 5.785e+09            +0.0%  5.787e+09        perf-stat.i.dTLB-loads
      0.00            +0.0        0.00 ±  2%  perf-stat.i.dTLB-store-miss-rate%
      8967            -3.0%       8701        perf-stat.i.dTLB-store-misses
  1.97e+09            +0.1%  1.971e+09        perf-stat.i.dTLB-stores
     94.02            +0.2       94.24        perf-stat.i.iTLB-load-miss-rate%
   2732366            -1.4%    2694372        perf-stat.i.iTLB-load-misses
    173049            -5.7%     163172 ±  2%  perf-stat.i.iTLB-loads
  2.07e+10            +0.0%  2.071e+10        perf-stat.i.instructions
      7671            +1.0%       7747        perf-stat.i.instructions-per-iTLB-miss
      0.10            +0.1%       0.10        perf-stat.i.ipc
      3.07            +0.0%       3.07        perf-stat.i.metric.GHz
      0.42            +0.5%       0.43        perf-stat.i.metric.K/sec
    175.98            +0.1%     176.08        perf-stat.i.metric.M/sec
      2565            -0.7%       2547        perf-stat.i.minor-faults
     99.55            -0.0       99.53        perf-stat.i.node-load-miss-rate%
   5949351            +0.3%    5969805        perf-stat.i.node-load-misses
     22301 ±  6%      +5.6%      23543 ±  8%  perf-stat.i.node-loads
     99.73            -0.0       99.72        perf-stat.i.node-store-miss-rate%
   5314673            -0.1%    5310449        perf-stat.i.node-store-misses
      4704 ±  4%      -1.8%       4619        perf-stat.i.node-stores
      2565            -0.7%       2547        perf-stat.i.page-faults
     71998            -0.0%      71998        perf-stat.i.task-clock
      2.58            +0.5%       2.59        perf-stat.overall.MPKI
      0.44            -0.0        0.43        perf-stat.overall.branch-miss-rate%
     39.99            -0.2       39.81        perf-stat.overall.cache-miss-rate%
     10.67            -0.0%      10.67        perf-stat.overall.cpi
     10340            -0.0%      10337        perf-stat.overall.cycles-between-cache-misses
      0.05            +0.0        0.05        perf-stat.overall.dTLB-load-miss-rate%
      0.00            -0.0        0.00        perf-stat.overall.dTLB-store-miss-rate%
     94.04            +0.2       94.29        perf-stat.overall.iTLB-load-miss-rate%
      7577            +1.4%       7686        perf-stat.overall.instructions-per-iTLB-miss
      0.09            +0.0%       0.09        perf-stat.overall.ipc
     99.62            -0.0       99.60        perf-stat.overall.node-load-miss-rate%
     99.91            +0.0       99.91        perf-stat.overall.node-store-miss-rate%
   4691551            +0.0%    4693151        perf-stat.overall.path-length
 4.838e+09            +0.0%   4.84e+09        perf-stat.ps.branch-instructions
  21230930            -2.3%   20750859        perf-stat.ps.branch-misses
  21302195            +0.0%   21309444        perf-stat.ps.cache-misses
  53273375            +0.5%   53531696        perf-stat.ps.cache-references
      1281            -0.7%       1273        perf-stat.ps.context-switches
     71760            -0.0%      71759        perf-stat.ps.cpu-clock
 2.203e+11            +0.0%  2.203e+11        perf-stat.ps.cpu-cycles
    117.02            +0.3%     117.33        perf-stat.ps.cpu-migrations
   2702184            +0.1%    2704689        perf-stat.ps.dTLB-load-misses
 5.766e+09            +0.0%  5.767e+09        perf-stat.ps.dTLB-loads
      9028            -3.2%       8736        perf-stat.ps.dTLB-store-misses
 1.963e+09            +0.1%  1.965e+09        perf-stat.ps.dTLB-stores
   2723237            -1.4%    2685365        perf-stat.ps.iTLB-load-misses
    172573            -5.7%     162735 ±  2%  perf-stat.ps.iTLB-loads
 2.063e+10            +0.0%  2.064e+10        perf-stat.ps.instructions
      2559            -0.7%       2540        perf-stat.ps.minor-faults
   5929506            +0.3%    5949863        perf-stat.ps.node-load-misses
     22689 ±  5%      +4.7%      23766 ±  8%  perf-stat.ps.node-loads
   5296902            -0.1%    5292690        perf-stat.ps.node-store-misses
      4724 ±  4%      -2.2%       4622        perf-stat.ps.node-stores
      2559            -0.7%       2540        perf-stat.ps.page-faults
     71760            -0.0%      71759        perf-stat.ps.task-clock
  6.24e+12            +0.1%  6.247e+12        perf-stat.total.instructions
     47.20            -0.2       47.05        pp.bt.percpu_counter_add_batch.__do_munmap.__vm_munmap.__x64_sys_munmap.do_syscall_64
     50.12            -0.2       49.97        pp.bt.entry_SYSCALL_64_after_hwframe.munmap
     50.10            -0.1       49.95        pp.bt.do_syscall_64.entry_SYSCALL_64_after_hwframe.munmap
     46.75            -0.1       46.60        pp.bt._raw_spin_lock_irqsave.percpu_counter_add_batch.__do_munmap.__vm_munmap.__x64_sys_munmap
     49.36            -0.1       49.22        pp.bt.__do_munmap.__vm_munmap.__x64_sys_munmap.do_syscall_64.entry_SYSCALL_64_after_hwframe
     49.78            -0.1       49.64        pp.bt.__x64_sys_munmap.do_syscall_64.entry_SYSCALL_64_after_hwframe.munmap
     49.75            -0.1       49.61        pp.bt.__vm_munmap.__x64_sys_munmap.do_syscall_64.entry_SYSCALL_64_after_hwframe.munmap
     50.48            -0.1       50.34        pp.bt.munmap
     46.56            -0.1       46.41        pp.bt.native_queued_spin_lock_slowpath._raw_spin_lock_irqsave.percpu_counter_add_batch.__do_munmap.__vm_munmap
      1.88            -0.0        1.88        pp.bt.unmap_region.__do_munmap.__vm_munmap.__x64_sys_munmap.do_syscall_64
      1.32            +0.0        1.33        pp.bt.unmap_page_range.unmap_vmas.unmap_region.__do_munmap.__vm_munmap
      1.42            +0.0        1.44        pp.bt.unmap_vmas.unmap_region.__do_munmap.__vm_munmap.__x64_sys_munmap
      0.51            +0.0        0.53        pp.bt.___might_sleep.unmap_page_range.unmap_vmas.unmap_region.__do_munmap
     48.27            +0.1       48.39        pp.bt.mmap_region.do_mmap.vm_mmap_pgoff.ksys_mmap_pgoff.do_syscall_64
     48.67            +0.1       48.80        pp.bt.vm_mmap_pgoff.ksys_mmap_pgoff.do_syscall_64.entry_SYSCALL_64_after_hwframe.mmap64
     48.51            +0.1       48.65        pp.bt.do_mmap.vm_mmap_pgoff.ksys_mmap_pgoff.do_syscall_64.entry_SYSCALL_64_after_hwframe
     47.10            +0.1       47.24        pp.bt.__vm_enough_memory.mmap_region.do_mmap.vm_mmap_pgoff.ksys_mmap_pgoff
     48.74            +0.1       48.88        pp.bt.ksys_mmap_pgoff.do_syscall_64.entry_SYSCALL_64_after_hwframe.mmap64
     49.08            +0.1       49.23        pp.bt.entry_SYSCALL_64_after_hwframe.mmap64
     46.48            +0.1       46.62        pp.bt.native_queued_spin_lock_slowpath._raw_spin_lock_irqsave.percpu_counter_add_batch.__vm_enough_memory.mmap_region
     49.06            +0.1       49.21        pp.bt.do_syscall_64.entry_SYSCALL_64_after_hwframe.mmap64
     49.46            +0.1       49.61        pp.bt.mmap64
     46.66            +0.1       46.80        pp.bt._raw_spin_lock_irqsave.percpu_counter_add_batch.__vm_enough_memory.mmap_region.do_mmap
     46.84            +0.4       47.23        pp.bt.percpu_counter_add_batch.__vm_enough_memory.mmap_region.do_mmap.vm_mmap_pgoff
     49.78            -0.1       49.64        pp.child.__x64_sys_munmap
     50.51            -0.1       50.36        pp.child.munmap
     49.76            -0.1       49.61        pp.child.__vm_munmap
     49.36            -0.1       49.22        pp.child.__do_munmap
      0.45            -0.0        0.41        pp.child.perf_event_mmap
      0.03 ± 70%      -0.0        0.00        pp.child.strlen
      0.02 ±141%      -0.0        0.00        pp.child.common_file_perm
      0.30            -0.0        0.29        pp.child.free_pgd_range
      1.88            -0.0        1.88        pp.child.unmap_region
      0.28            -0.0        0.27        pp.child.free_p4d_range
      0.28 ±  4%      -0.0        0.27        pp.child.apic_timer_interrupt
      0.19 ±  4%      -0.0        0.18 ±  2%  pp.child.hrtimer_interrupt
      0.09            -0.0        0.08 ±  5%  pp.child.find_vma
      0.40 ±  2%      -0.0        0.40 ±  3%  pp.child.vm_area_alloc
      0.35            -0.0        0.34        pp.child.syscall_return_via_sysret
      0.35 ±  2%      -0.0        0.34        pp.child.up_read
     93.41            -0.0       93.41        pp.child._raw_spin_lock_irqsave
      0.05 ±  8%      -0.0        0.05        pp.child.kmem_cache_alloc_trace
      0.11 ±  4%      -0.0        0.11        pp.child.d_path
      0.11 ±  4%      -0.0        0.11        pp.child.perf_iterate_sb
      0.08 ±  5%      -0.0        0.08        pp.child.prepend_path
     99.23            -0.0       99.23        pp.child.entry_SYSCALL_64_after_hwframe
     93.04            -0.0       93.04        pp.child.native_queued_spin_lock_slowpath
      0.09            -0.0        0.09        pp.child.tick_sched_timer
      0.05            -0.0        0.05        pp.child.unlink_file_vma
      0.05            -0.0        0.05        pp.child.task_tick_fair
      0.05            -0.0        0.05        pp.child.perf_event_mmap_output
     99.20            +0.0       99.20        pp.child.do_syscall_64
      0.21 ±  3%      +0.0        0.21        pp.child.smp_apic_timer_interrupt
      0.08            +0.0        0.08        pp.child.update_process_times
      0.06            +0.0        0.06        pp.child.down_write_killable
      0.15            +0.0        0.15 ±  6%  pp.child.rcu_all_qs
      0.37 ±  2%      +0.0        0.37 ±  5%  pp.child.kmem_cache_alloc
      0.28            +0.0        0.29 ±  5%  pp.child._cond_resched
      0.12 ±  3%      +0.0        0.12 ±  4%  pp.child.vma_link
      0.09 ±  5%      +0.0        0.10 ±  5%  pp.child.security_mmap_file
      0.06 ±  7%      +0.0        0.07 ±  7%  pp.child.scheduler_tick
      0.13 ±  3%      +0.0        0.14 ±  3%  pp.child.__hrtimer_run_queues
      0.32 ±  2%      +0.0        0.32        pp.child._raw_spin_unlock_irqrestore
      0.08            +0.0        0.08 ±  5%  pp.child.tick_sched_handle
      0.06            +0.0        0.07 ±  7%  pp.child.down_write
      0.06            +0.0        0.07 ±  7%  pp.child.remove_vma
      1.43            +0.0        1.44        pp.child.unmap_vmas
      0.05            +0.0        0.06        pp.child.__vma_rb_erase
      0.08            +0.0        0.09        pp.child.free_pgtables
      1.39            +0.0        1.40        pp.child.unmap_page_range
      0.35            +0.0        0.36 ±  4%  pp.child.entry_SYSCALL_64
      0.10 ±  4%      +0.0        0.11        pp.child.arch_get_unmapped_area_topdown
      0.58            +0.0        0.59        pp.child.___might_sleep
      0.06            +0.0        0.08 ±  6%  pp.child.shmem_mmap
      0.03 ± 70%      +0.0        0.05        pp.child.up_write
      0.03 ± 70%      +0.0        0.05        pp.child.vm_unmapped_area
      0.03 ± 70%      +0.0        0.05        pp.child.__vma_link_rb
      0.15 ±  3%      +0.0        0.17 ±  3%  pp.child.shmem_get_unmapped_area
      0.18 ±  2%      +0.0        0.20 ±  2%  pp.child.get_unmapped_area
      0.00            +0.0        0.03 ±100%  pp.child.prepend_name
      0.02 ±141%      +0.0        0.05        pp.child.touch_atime
     48.28            +0.1       48.39        pp.child.mmap_region
     47.10            +0.1       47.24        pp.child.__vm_enough_memory
     48.51            +0.1       48.65        pp.child.do_mmap
     48.74            +0.1       48.88        pp.child.ksys_mmap_pgoff
     48.67            +0.1       48.81        pp.child.vm_mmap_pgoff
     49.49            +0.1       49.64        pp.child.mmap64
     94.04            +0.2       94.28        pp.child.percpu_counter_add_batch
      0.27            -0.3        0.00        pp.self.__vm_enough_memory
      0.03 ± 70%      -0.0        0.00        pp.self.strlen
      0.02 ±141%      -0.0        0.00        pp.self.prepend_path
      0.28            -0.0        0.27        pp.self.free_p4d_range
      0.07            -0.0        0.06        pp.self.perf_iterate_sb
      0.08            -0.0        0.07        pp.self.perf_event_mmap
      0.35 ±  2%      -0.0        0.34 ±  5%  pp.self.kmem_cache_alloc
      0.11            -0.0        0.11 ±  4%  pp.self.rcu_all_qs
      0.37            -0.0        0.36        pp.self._raw_spin_lock_irqsave
      0.35            -0.0        0.34        pp.self.syscall_return_via_sysret
      0.35 ±  2%      -0.0        0.34        pp.self.up_read
      0.14 ±  3%      -0.0        0.14 ±  3%  pp.self._cond_resched
     93.04            -0.0       93.04        pp.self.native_queued_spin_lock_slowpath
      0.31            +0.0        0.32 ±  4%  pp.self.entry_SYSCALL_64
      0.69            +0.0        0.69        pp.self.unmap_page_range
      0.10 ±  4%      +0.0        0.10        pp.self._raw_spin_unlock_irqrestore
      0.06 ±  8%      +0.0        0.06        pp.self.find_vma
      0.06 ±  8%      +0.0        0.06        pp.self.__do_munmap
      0.06 ±  7%      +0.0        0.07        pp.self.mmap_region
      0.61 ±  3%      +0.0        0.62        pp.self.do_syscall_64
      0.02 ±141%      +0.0        0.03 ±100%  pp.self.up_write
      0.05            +0.0        0.06        pp.self.__vma_rb_erase
      0.54            +0.0        0.56        pp.self.___might_sleep
      0.03 ± 70%      +0.0        0.05        pp.self.vm_unmapped_area
      0.03 ± 70%      +0.0        0.05        pp.self.shmem_get_unmapped_area
      0.03 ± 70%      +0.0        0.05        pp.self.__vma_link_rb
      0.00            +0.0        0.03 ±100%  pp.self.prepend_name
      0.00            +0.0        0.03 ±100%  pp.self.do_mmap
      0.00            +0.0        0.03 ±100%  pp.self.arch_get_unmapped_area_topdown
      0.02 ±141%      +0.0        0.05        pp.self.perf_event_mmap_output
      0.32 ±  2%      +0.2        0.56        pp.self.percpu_counter_add_batch
    552.67 ±  2%      -5.2%     524.00 ±  6%  softirqs.BLOCK
      2.00            +0.0%       2.00        softirqs.HI
    911.00 ± 47%     -31.4%     625.00 ±  2%  softirqs.NET_RX
     63.67 ±  3%      -5.0%      60.50 ±  4%  softirqs.NET_TX
    312414            -1.1%     309101        softirqs.RCU
    228903            -1.4%     225602 ±  3%  softirqs.SCHED
    265.67            -1.0%     263.00        softirqs.TASKLET
   8777267            +0.1%    8789634        softirqs.TIMER
     23504            -0.1%      23472        interrupts.CAL:Function_call_interrupts
    144.00            -0.3%     143.50        interrupts.IWI:IRQ_work_interrupts
  43641147            -0.0%   43621882        interrupts.LOC:Local_timer_interrupts
      0.00          -100.0%       0.00        interrupts.MCP:Machine_check_polls
    570736 ±  5%      +2.1%     582977 ±  5%  interrupts.NMI:Non-maskable_interrupts
    570736 ±  5%      +2.1%     582977 ±  5%  interrupts.PMI:Performance_monitoring_interrupts
     45097            +0.7%      45407        interrupts.RES:Rescheduling_interrupts
      0.00          -100.0%       0.00        interrupts.RTR:APIC_ICR_read_retries
    193.67 ± 26%     -21.3%     152.50 ± 29%  interrupts.TLB:TLB_shootdowns
diff mbox series

Patch

diff --git a/mm/util.c b/mm/util.c
index 3c7a08c..fe63271 100644
--- a/mm/util.c
+++ b/mm/util.c
@@ -814,14 +814,6 @@  int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin)
 {
 	long allowed;
 
-	/*
-	 * A transient decrease in the value is unlikely, so no need
-	 * READ_ONCE() for vm_committed_as.count.
-	 */
-	VM_WARN_ONCE(data_race(percpu_counter_read(&vm_committed_as) <
-			-(s64)vm_committed_as_batch * num_online_cpus()),
-			"memory commitment underflow");
-
 	vm_acct_memory(pages);
 
 	/*