diff mbox series

[RFC,12/16] ext4: update reserved meta blocks in ext4_da_{release|update_reserve}_space()

Message ID 20230824092619.1327976-13-yi.zhang@huaweicloud.com
State New
Headers show
Series ext4: more accurate metadata reservaion for delalloc mount option | expand

Commit Message

Zhang Yi Aug. 24, 2023, 9:26 a.m. UTC
From: Zhang Yi <yi.zhang@huawei.com>

The same to ext4_da_reserve_space(), we also need to update reserved
metadata blocks when we release and convert a delalloc space range in
ext4_da_release_space() and ext4_da_update_reserve_space(). So also
prepare to reserve metadata blocks in these two functions, the
reservation logic are the same to data blocks. This patch is just a
preparation, the reserved ext_len is always zero.

Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
---
 fs/ext4/ext4.h              |  4 ++--
 fs/ext4/inode.c             | 47 +++++++++++++++++++++----------------
 include/trace/events/ext4.h | 28 ++++++++++++++--------
 3 files changed, 47 insertions(+), 32 deletions(-)

Comments

kernel test robot Sept. 6, 2023, 7:35 a.m. UTC | #1
Hello,

kernel test robot noticed a 25.3% improvement of stress-ng.msg.ops_per_sec on:


commit: 235f4f5bfea93e33e13ba9d8c553d9cf613a58ee ("[RFC PATCH 12/16] ext4: update reserved meta blocks in ext4_da_{release|update_reserve}_space()")
url: https://github.com/intel-lab-lkp/linux/commits/Zhang-Yi/ext4-correct-the-start-block-of-counting-reserved-clusters/20230824-173242
base: https://git.kernel.org/cgit/linux/kernel/git/tytso/ext4.git dev
patch link: https://lore.kernel.org/all/20230824092619.1327976-13-yi.zhang@huaweicloud.com/
patch subject: [RFC PATCH 12/16] ext4: update reserved meta blocks in ext4_da_{release|update_reserve}_space()

testcase: stress-ng
test machine: 64 threads 2 sockets Intel(R) Xeon(R) Gold 6346 CPU @ 3.10GHz (Ice Lake) with 256G memory
parameters:

	nr_threads: 100%
	testtime: 60s
	class: pts
	test: msg
	cpufreq_governor: performance






Details are as below:
-------------------------------------------------------------------------------------------------->


The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20230906/202309061536.1b59f59d-oliver.sang@intel.com

=========================================================================================
class/compiler/cpufreq_governor/kconfig/nr_threads/rootfs/tbox_group/test/testcase/testtime:
  pts/gcc-12/performance/x86_64-rhel-8.3/100%/debian-11.1-x86_64-20220510.cgz/lkp-icl-2sp7/msg/stress-ng/60s

commit: 
  637653488a ("ext4: factor out common part of ext4_da_{release|update_reserve}_space()")
  235f4f5bfe ("ext4: update reserved meta blocks in ext4_da_{release|update_reserve}_space()")

637653488ad95a0c 235f4f5bfea93e33e13ba9d8c55 
---------------- --------------------------- 
         %stddev     %change         %stddev
             \          |                \  
      2359            +1.3%       2390        boot-time.idle
   9537488           -18.9%    7734959        cpuidle..usage
      3.17            +0.6        3.78        mpstat.cpu.all.usr%
    336783 ± 17%     -28.6%     240355 ± 18%  numa-meminfo.node1.Active
    336689 ± 17%     -28.6%     240299 ± 18%  numa-meminfo.node1.Active(anon)
    460770 ± 16%     -30.0%     322742 ± 19%  numa-meminfo.node1.Shmem
    450337 ±  5%     +43.9%     648260 ±  6%  numa-numastat.node0.local_node
    485519 ±  4%     +40.1%     680005 ±  5%  numa-numastat.node0.numa_hit
    680896 ±  3%     +10.0%     748983 ±  4%  numa-numastat.node1.numa_hit
    136742           -14.2%     117325        sched_debug.cpu.nr_switches.avg
    116638 ±  3%     -13.7%     100689 ±  2%  sched_debug.cpu.nr_switches.min
      0.31 ± 10%     +18.2%       0.36 ±  7%  sched_debug.cpu.nr_uninterruptible.avg
     36.67 ±  4%     +10.9%      40.67 ±  2%  vmstat.procs.r
    273206           -14.6%     233356        vmstat.system.cs
    104671            +4.9%     109774        vmstat.system.in
     46.83 ±  7%     -31.0%      32.33 ± 14%  perf-c2c.DRAM.local
     10329 ±  8%     +26.9%      13107 ±  6%  perf-c2c.DRAM.remote
      8544 ±  8%     +31.0%      11194 ±  6%  perf-c2c.HITM.remote
     30099 ±  7%     +15.1%      34636 ±  5%  perf-c2c.HITM.total
    485599 ±  4%     +40.1%     680300 ±  5%  numa-vmstat.node0.numa_hit
    450417 ±  5%     +44.0%     648555 ±  6%  numa-vmstat.node0.numa_local
     84324 ± 17%     -28.7%      60140 ± 18%  numa-vmstat.node1.nr_active_anon
    115201 ± 16%     -30.0%      80698 ± 19%  numa-vmstat.node1.nr_shmem
     84323 ± 17%     -28.7%      60140 ± 18%  numa-vmstat.node1.nr_zone_active_anon
    680786 ±  3%     +10.0%     749101 ±  4%  numa-vmstat.node1.numa_hit
 7.181e+08           +24.4%  8.932e+08        stress-ng.msg.ops
  11872476           +25.3%   14879722        stress-ng.msg.ops_per_sec
    153117 ±  4%     +39.5%     213629 ±  3%  stress-ng.time.involuntary_context_switches
      3843            +5.3%       4048        stress-ng.time.percent_of_cpu_this_job_got
      2316            +4.4%       2418        stress-ng.time.system_time
     91.29           +28.5%     117.34        stress-ng.time.user_time
   9318632           -14.7%    7951016        stress-ng.time.voluntary_context_switches
    112355            -3.2%     108777 ±  2%  proc-vmstat.nr_active_anon
    154552            -3.9%     148580        proc-vmstat.nr_shmem
    112355            -3.2%     108777 ±  2%  proc-vmstat.nr_zone_active_anon
   1168434           +22.5%    1430780        proc-vmstat.numa_hit
   1102166           +23.8%    1364548        proc-vmstat.numa_local
    206664            -4.7%     196864        proc-vmstat.pgactivate
   1211499           +21.6%    1473352        proc-vmstat.pgalloc_normal
    973632           +28.0%    1246003 ±  2%  proc-vmstat.pgfree
     92337 ±  4%    +158.2%     238396 ±  7%  turbostat.C1
      0.09 ±  5%      +0.2        0.25 ±  8%  turbostat.C1%
   9175706           -22.1%    7147445        turbostat.C1E
     30.93            -3.9       27.02        turbostat.C1E%
    247900 ±  3%     +18.3%     293206 ±  2%  turbostat.C6
      6.42 ±  3%      +0.7        7.14 ±  2%  turbostat.C6%
      0.10           +15.0%       0.12 ±  4%  turbostat.IPC
     13954 ±  4%    +232.9%      46453 ± 10%  turbostat.POLL
    211.09            +2.4%     216.18        turbostat.PkgWatt
     59.62            +3.8%      61.89        turbostat.RAMWatt
      0.01 ± 12%     +34.4%       0.01 ± 14%  perf-sched.sch_delay.avg.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64
      0.01           +13.0%       0.01 ±  3%  perf-sched.sch_delay.avg.ms.schedule_preempt_disabled.rwsem_down_read_slowpath.down_read.sysvipc_proc_start
      0.01 ±  3%     +19.7%       0.01 ±  2%  perf-sched.sch_delay.avg.ms.schedule_preempt_disabled.rwsem_down_write_slowpath.down_write.msgctl_down
      1.39 ± 52%    +350.2%       6.24 ± 63%  perf-sched.sch_delay.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64
      4.37 ±  3%     -12.2%       3.84 ±  4%  perf-sched.wait_and_delay.avg.ms.schedule_timeout.rcu_gp_fqs_loop.rcu_gp_kthread.kthread
    189683           -20.7%     150342        perf-sched.wait_and_delay.count.schedule_preempt_disabled.rwsem_down_read_slowpath.down_read.msgctl_info.constprop
    103248           +15.7%     119498        perf-sched.wait_and_delay.count.schedule_preempt_disabled.rwsem_down_read_slowpath.down_read.sysvipc_proc_start
    859.83 ±  2%     +16.4%       1000 ±  4%  perf-sched.wait_and_delay.count.schedule_timeout.rcu_gp_fqs_loop.rcu_gp_kthread.kthread
     11.39 ± 22%     +88.6%      21.48 ± 38%  perf-sched.wait_and_delay.max.ms.schedule_preempt_disabled.rwsem_down_read_slowpath.down_read.msgctl_info.constprop
      0.55 ±  5%      -8.3%       0.50 ±  4%  perf-sched.wait_time.avg.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64
      4.36 ±  3%     -12.3%       3.83 ±  4%  perf-sched.wait_time.avg.ms.schedule_timeout.rcu_gp_fqs_loop.rcu_gp_kthread.kthread
      1.57 ± 36%    +125.7%       3.55 ± 23%  perf-sched.wait_time.max.ms.__cond_resched.__kmem_cache_alloc_node.__kmalloc.alloc_msg.load_msg
      1.06 ± 19%    +109.5%       2.21 ± 25%  perf-sched.wait_time.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_call_function_single
 7.183e+09           +20.5%  8.658e+09        perf-stat.i.branch-instructions
  37085833           +19.0%   44140894        perf-stat.i.branch-misses
     24.92            +3.3       28.26        perf-stat.i.cache-miss-rate%
  53067160           +38.2%   73340095        perf-stat.i.cache-misses
 2.157e+08           +21.2%  2.614e+08        perf-stat.i.cache-references
    289025           -14.7%     246454        perf-stat.i.context-switches
      3.34           -13.6%       2.89        perf-stat.i.cpi
 1.282e+11            +4.3%  1.337e+11        perf-stat.i.cpu-cycles
     76033           -19.8%      60961        perf-stat.i.cpu-migrations
      2396           -24.1%       1818        perf-stat.i.cycles-between-cache-misses
 9.348e+09           +20.5%  1.126e+10        perf-stat.i.dTLB-loads
      0.00 ±  2%      -0.0        0.00 ±  5%  perf-stat.i.dTLB-store-miss-rate%
 5.595e+09           +21.4%  6.791e+09        perf-stat.i.dTLB-stores
 3.773e+10           +20.6%  4.552e+10        perf-stat.i.instructions
      0.32           +14.1%       0.36        perf-stat.i.ipc
      2.00            +4.3%       2.09        perf-stat.i.metric.GHz
    847.80           +37.2%       1162        perf-stat.i.metric.K/sec
    349.01           +20.7%     421.38        perf-stat.i.metric.M/sec
     96.81            +0.9       97.69        perf-stat.i.node-load-miss-rate%
  34681142           +41.8%   49163827        perf-stat.i.node-load-misses
    571211 ± 12%     -19.2%     461475 ±  7%  perf-stat.i.node-loads
     69.19            +4.7       73.94        perf-stat.i.node-store-miss-rate%
  12432335           +42.8%   17748149        perf-stat.i.node-store-misses
   5384441           +11.0%    5974384        perf-stat.i.node-stores
     24.59            +3.5       28.04        perf-stat.overall.cache-miss-rate%
      3.40           -13.6%       2.94        perf-stat.overall.cpi
      2416           -24.6%       1823        perf-stat.overall.cycles-between-cache-misses
      0.00 ±  2%      -0.0        0.00 ±  6%  perf-stat.overall.dTLB-store-miss-rate%
      0.29           +15.7%       0.34        perf-stat.overall.ipc
     69.80            +5.0       74.83        perf-stat.overall.node-store-miss-rate%
  7.07e+09           +20.5%   8.52e+09        perf-stat.ps.branch-instructions
  36445205           +19.0%   43382549        perf-stat.ps.branch-misses
  52231245           +38.2%   72171401        perf-stat.ps.cache-misses
 2.124e+08           +21.2%  2.574e+08        perf-stat.ps.cache-references
    284550           -14.8%     242556        perf-stat.ps.context-switches
 1.262e+11            +4.3%  1.316e+11        perf-stat.ps.cpu-cycles
     74864           -19.9%      59988        perf-stat.ps.cpu-migrations
 9.201e+09           +20.5%  1.109e+10        perf-stat.ps.dTLB-loads
 5.507e+09           +21.4%  6.684e+09        perf-stat.ps.dTLB-stores
 3.714e+10           +20.6%  4.479e+10        perf-stat.ps.instructions
  34137147           +41.7%   48383050        perf-stat.ps.node-load-misses
    561002 ± 12%     -18.8%     455270 ±  7%  perf-stat.ps.node-loads
  12237881           +42.7%   17467084        perf-stat.ps.node-store-misses
   5295571           +11.0%    5875597        perf-stat.ps.node-stores
 2.342e+12           +20.5%  2.823e+12        perf-stat.total.instructions
     11.71           -10.7        1.04        perf-profile.calltrace.cycles-pp.idr_find.ipc_obtain_object_check.do_msgrcv.do_syscall_64.entry_SYSCALL_64_after_hwframe
     11.06           -10.1        0.94 ±  2%  perf-profile.calltrace.cycles-pp.idr_find.ipc_obtain_object_check.do_msgsnd.do_syscall_64.entry_SYSCALL_64_after_hwframe
     15.49            -9.2        6.24        perf-profile.calltrace.cycles-pp.ipc_obtain_object_check.do_msgrcv.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_msgrcv
     15.74            -8.4        7.36        perf-profile.calltrace.cycles-pp.ipc_obtain_object_check.do_msgsnd.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_msgsnd
      7.11            -3.0        4.09        perf-profile.calltrace.cycles-pp.msgctl
      7.03            -3.0        4.02        perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.msgctl
      7.01            -3.0        4.00        perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.msgctl
      6.93            -3.0        3.94        perf-profile.calltrace.cycles-pp.ksys_msgctl.do_syscall_64.entry_SYSCALL_64_after_hwframe.msgctl
      3.84            -1.7        2.14        perf-profile.calltrace.cycles-pp.msgctl_info.ksys_msgctl.do_syscall_64.entry_SYSCALL_64_after_hwframe.msgctl
      2.74            -1.2        1.54 ±  2%  perf-profile.calltrace.cycles-pp.msgctl_down.ksys_msgctl.do_syscall_64.entry_SYSCALL_64_after_hwframe.msgctl
      1.81 ±  2%      -1.2        0.62 ±  2%  perf-profile.calltrace.cycles-pp.down_read.msgctl_info.ksys_msgctl.do_syscall_64.entry_SYSCALL_64_after_hwframe
      1.59 ±  2%      -1.0        0.60 ±  2%  perf-profile.calltrace.cycles-pp.rwsem_down_read_slowpath.down_read.msgctl_info.ksys_msgctl.do_syscall_64
      1.71            -0.9        0.83 ±  4%  perf-profile.calltrace.cycles-pp.down_write.msgctl_down.ksys_msgctl.do_syscall_64.entry_SYSCALL_64_after_hwframe
      1.61            -0.8        0.80 ±  4%  perf-profile.calltrace.cycles-pp.rwsem_down_write_slowpath.down_write.msgctl_down.ksys_msgctl.do_syscall_64
      2.96            -0.7        2.25        perf-profile.calltrace.cycles-pp.secondary_startup_64_no_verify
      2.90            -0.7        2.21        perf-profile.calltrace.cycles-pp.do_idle.cpu_startup_entry.start_secondary.secondary_startup_64_no_verify
      2.90            -0.7        2.21        perf-profile.calltrace.cycles-pp.cpu_startup_entry.start_secondary.secondary_startup_64_no_verify
      2.90            -0.7        2.22        perf-profile.calltrace.cycles-pp.start_secondary.secondary_startup_64_no_verify
      1.84            -0.5        1.33        perf-profile.calltrace.cycles-pp.seq_read.vfs_read.ksys_read.do_syscall_64.entry_SYSCALL_64_after_hwframe
      1.87            -0.5        1.36        perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.read
      1.84            -0.5        1.34        perf-profile.calltrace.cycles-pp.vfs_read.ksys_read.do_syscall_64.entry_SYSCALL_64_after_hwframe.read
      1.85            -0.5        1.34        perf-profile.calltrace.cycles-pp.ksys_read.do_syscall_64.entry_SYSCALL_64_after_hwframe.read
      1.83            -0.5        1.33        perf-profile.calltrace.cycles-pp.seq_read_iter.seq_read.vfs_read.ksys_read.do_syscall_64
      1.89            -0.5        1.39        perf-profile.calltrace.cycles-pp.read
      1.87            -0.5        1.37        perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.read
      0.92 ±  3%      -0.5        0.42 ± 44%  perf-profile.calltrace.cycles-pp._raw_spin_lock_irqsave.__percpu_counter_sum.msgctl_info.ksys_msgctl.do_syscall_64
      1.84            -0.4        1.39 ±  2%  perf-profile.calltrace.cycles-pp.cpuidle_idle_call.do_idle.cpu_startup_entry.start_secondary.secondary_startup_64_no_verify
      0.66            -0.4        0.25 ±100%  perf-profile.calltrace.cycles-pp.flush_smp_call_function_queue.do_idle.cpu_startup_entry.start_secondary.secondary_startup_64_no_verify
      1.68            -0.4        1.28 ±  2%  perf-profile.calltrace.cycles-pp.cpuidle_enter.cpuidle_idle_call.do_idle.cpu_startup_entry.start_secondary
      1.66            -0.4        1.26 ±  2%  perf-profile.calltrace.cycles-pp.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle.cpu_startup_entry
      1.32            -0.4        0.94        perf-profile.calltrace.cycles-pp.intel_idle.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle
      0.97            -0.4        0.61 ±  3%  perf-profile.calltrace.cycles-pp.sysvipc_proc_start.seq_read_iter.seq_read.vfs_read.ksys_read
      0.92 ±  2%      -0.3        0.58 ±  3%  perf-profile.calltrace.cycles-pp.down_read.sysvipc_proc_start.seq_read_iter.seq_read.vfs_read
      0.81            -0.3        0.51        perf-profile.calltrace.cycles-pp.up_write.msgctl_down.ksys_msgctl.do_syscall_64.entry_SYSCALL_64_after_hwframe
      0.84 ±  2%      -0.3        0.56 ±  4%  perf-profile.calltrace.cycles-pp.rwsem_down_read_slowpath.down_read.sysvipc_proc_start.seq_read_iter.seq_read
      0.64 ±  3%      -0.2        0.45 ± 44%  perf-profile.calltrace.cycles-pp.schedule.schedule_preempt_disabled.rwsem_down_write_slowpath.down_write.msgctl_down
      0.64 ±  3%      -0.2        0.45 ± 44%  perf-profile.calltrace.cycles-pp.schedule_preempt_disabled.rwsem_down_write_slowpath.down_write.msgctl_down.ksys_msgctl
      0.64 ±  3%      -0.2        0.44 ± 44%  perf-profile.calltrace.cycles-pp.__schedule.schedule.schedule_preempt_disabled.rwsem_down_write_slowpath.down_write
      1.56 ±  2%      -0.2        1.40        perf-profile.calltrace.cycles-pp.__percpu_counter_sum.msgctl_info.ksys_msgctl.do_syscall_64.entry_SYSCALL_64_after_hwframe
      0.56            +0.1        0.61        perf-profile.calltrace.cycles-pp.ss_wakeup.do_msgrcv.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_msgrcv
      0.82 ±  5%      +0.1        0.96 ±  2%  perf-profile.calltrace.cycles-pp._copy_from_user.load_msg.do_msgsnd.do_syscall_64.entry_SYSCALL_64_after_hwframe
      0.66 ±  2%      +0.2        0.83        perf-profile.calltrace.cycles-pp.__check_object_size.load_msg.do_msgsnd.do_syscall_64.entry_SYSCALL_64_after_hwframe
      0.53            +0.2        0.73 ± 26%  perf-profile.calltrace.cycles-pp.__entry_text_start.__libc_msgrcv.stress_run
      0.70 ±  2%      +0.2        0.95 ±  2%  perf-profile.calltrace.cycles-pp.wake_up_q.do_msgrcv.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_msgrcv
      0.57 ±  3%      +0.4        0.94 ± 27%  perf-profile.calltrace.cycles-pp.__entry_text_start.__libc_msgsnd.stress_run
      1.58            +0.4        1.99        perf-profile.calltrace.cycles-pp.stress_msg.stress_run
      0.56 ±  2%      +0.4        0.98        perf-profile.calltrace.cycles-pp.___slab_alloc.__kmem_cache_alloc_node.__kmalloc.alloc_msg.load_msg
      0.00            +0.6        0.55 ±  2%  perf-profile.calltrace.cycles-pp.__x64_sys_msgsnd.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_msgsnd.stress_run
     44.35            +0.6       44.90        perf-profile.calltrace.cycles-pp.do_msgrcv.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_msgrcv.stress_run
      0.00            +0.6        0.56        perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_safe_stack.__libc_msgsnd.stress_run
      2.27            +0.6        2.85        perf-profile.calltrace.cycles-pp.__list_del_entry_valid.do_msgrcv.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_msgrcv
      2.52            +0.6        3.12        perf-profile.calltrace.cycles-pp.percpu_counter_add_batch.do_msgsnd.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_msgsnd
     44.94            +0.7       45.61        perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_msgrcv.stress_run
      2.65            +0.7        3.36        perf-profile.calltrace.cycles-pp.memcg_slab_post_alloc_hook.__kmem_cache_alloc_node.__kmalloc.alloc_msg.load_msg
     45.15            +0.7       45.86        perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.__libc_msgrcv.stress_run
      3.08            +0.8        3.86 ±  2%  perf-profile.calltrace.cycles-pp.__kmem_cache_free.free_msg.do_msgrcv.do_syscall_64.entry_SYSCALL_64_after_hwframe
      2.41            +0.9        3.27        perf-profile.calltrace.cycles-pp.percpu_counter_add_batch.do_msgrcv.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_msgrcv
     45.96            +0.9       46.84        perf-profile.calltrace.cycles-pp.__libc_msgrcv.stress_run
      2.56            +0.9        3.44        perf-profile.calltrace.cycles-pp.check_heap_object.__check_object_size.store_msg.do_msg_fill.do_msgrcv
      3.75            +1.1        4.82 ±  9%  perf-profile.calltrace.cycles-pp._copy_to_user.store_msg.do_msg_fill.do_msgrcv.do_syscall_64
      3.16            +1.1        4.24        perf-profile.calltrace.cycles-pp.__check_object_size.store_msg.do_msg_fill.do_msgrcv.do_syscall_64
      3.60            +1.2        4.78 ±  2%  perf-profile.calltrace.cycles-pp.__slab_free.free_msg.do_msgrcv.do_syscall_64.entry_SYSCALL_64_after_hwframe
      4.78            +1.4        6.22        perf-profile.calltrace.cycles-pp.__kmem_cache_alloc_node.__kmalloc.alloc_msg.load_msg.do_msgsnd
      4.99            +1.5        6.46        perf-profile.calltrace.cycles-pp.__kmalloc.alloc_msg.load_msg.do_msgsnd.do_syscall_64
      5.31            +1.7        6.97        perf-profile.calltrace.cycles-pp.alloc_msg.load_msg.do_msgsnd.do_syscall_64.entry_SYSCALL_64_after_hwframe
     36.29            +1.7       37.99        perf-profile.calltrace.cycles-pp.do_msgsnd.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_msgsnd.stress_run
      6.79            +1.9        8.66        perf-profile.calltrace.cycles-pp.load_msg.do_msgsnd.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_msgsnd
     37.42            +2.0       39.42        perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_msgsnd.stress_run
      7.34            +2.2        9.50 ±  2%  perf-profile.calltrace.cycles-pp.free_msg.do_msgrcv.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_msgrcv
      2.59            +2.2        4.76        perf-profile.calltrace.cycles-pp.native_queued_spin_lock_slowpath._raw_spin_lock.do_msgrcv.do_syscall_64.entry_SYSCALL_64_after_hwframe
      7.33            +2.3        9.62 ±  4%  perf-profile.calltrace.cycles-pp.store_msg.do_msg_fill.do_msgrcv.do_syscall_64.entry_SYSCALL_64_after_hwframe
      3.28            +2.4        5.66        perf-profile.calltrace.cycles-pp._raw_spin_lock.do_msgrcv.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_msgrcv
      7.85            +2.4       10.24 ±  4%  perf-profile.calltrace.cycles-pp.do_msg_fill.do_msgrcv.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_msgrcv
     38.05            +2.4       40.50        perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.__libc_msgsnd.stress_run
     39.32            +2.8       42.12        perf-profile.calltrace.cycles-pp.__libc_msgsnd.stress_run
      6.28            +3.7       10.01        perf-profile.calltrace.cycles-pp.native_queued_spin_lock_slowpath._raw_spin_lock.do_msgsnd.do_syscall_64.entry_SYSCALL_64_after_hwframe
      7.10            +4.1       11.20        perf-profile.calltrace.cycles-pp._raw_spin_lock.do_msgsnd.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_msgsnd
     87.71            +4.3       92.00        perf-profile.calltrace.cycles-pp.stress_run
     22.97           -21.0        2.02        perf-profile.children.cycles-pp.idr_find
     31.41           -17.7       13.70        perf-profile.children.cycles-pp.ipc_obtain_object_check
      7.13            -3.0        4.12        perf-profile.children.cycles-pp.msgctl
      6.93            -3.0        3.94        perf-profile.children.cycles-pp.ksys_msgctl
      3.84            -1.7        2.14        perf-profile.children.cycles-pp.msgctl_info
      2.74            -1.5        1.21 ±  3%  perf-profile.children.cycles-pp.down_read
      1.49            -1.3        0.18 ±  4%  perf-profile.children.cycles-pp._raw_spin_lock_irq
      2.44 ±  2%      -1.3        1.16 ±  3%  perf-profile.children.cycles-pp.rwsem_down_read_slowpath
      2.74            -1.2        1.54 ±  2%  perf-profile.children.cycles-pp.msgctl_down
      1.71            -0.9        0.84 ±  4%  perf-profile.children.cycles-pp.down_write
     91.47            -0.8       90.65        perf-profile.children.cycles-pp.do_syscall_64
      1.61            -0.8        0.80 ±  4%  perf-profile.children.cycles-pp.rwsem_down_write_slowpath
      1.42            -0.8        0.63        perf-profile.children.cycles-pp._raw_spin_lock_irqsave
      2.96            -0.7        2.25        perf-profile.children.cycles-pp.secondary_startup_64_no_verify
      2.96            -0.7        2.25        perf-profile.children.cycles-pp.cpu_startup_entry
      2.96            -0.7        2.25        perf-profile.children.cycles-pp.do_idle
      2.90            -0.7        2.22        perf-profile.children.cycles-pp.start_secondary
      1.84            -0.5        1.33        perf-profile.children.cycles-pp.seq_read
      1.84            -0.5        1.33        perf-profile.children.cycles-pp.seq_read_iter
      1.85            -0.5        1.34        perf-profile.children.cycles-pp.ksys_read
      1.85            -0.5        1.34        perf-profile.children.cycles-pp.vfs_read
      1.89            -0.5        1.39        perf-profile.children.cycles-pp.read
      1.88            -0.5        1.42 ±  2%  perf-profile.children.cycles-pp.cpuidle_idle_call
      0.99            -0.4        0.56        perf-profile.children.cycles-pp.rwsem_wake
      1.72            -0.4        1.30 ±  2%  perf-profile.children.cycles-pp.cpuidle_enter
      1.71            -0.4        1.29 ±  2%  perf-profile.children.cycles-pp.cpuidle_enter_state
      1.35            -0.4        0.95        perf-profile.children.cycles-pp.intel_idle
      0.49 ±  2%      -0.4        0.09 ±  5%  perf-profile.children.cycles-pp.up_read
      3.01 ±  3%      -0.4        2.65 ±  4%  perf-profile.children.cycles-pp.__schedule
      0.97            -0.4        0.61 ±  3%  perf-profile.children.cycles-pp.sysvipc_proc_start
     92.22            -0.3       91.87        perf-profile.children.cycles-pp.entry_SYSCALL_64_after_hwframe
      1.04            -0.3        0.70        perf-profile.children.cycles-pp.try_to_wake_up
      0.81            -0.3        0.51        perf-profile.children.cycles-pp.up_write
      2.67 ±  3%      -0.3        2.38 ±  5%  perf-profile.children.cycles-pp.schedule
      0.35 ±  3%      -0.3        0.10 ±  5%  perf-profile.children.cycles-pp.idr_get_next_ul
      0.35 ±  3%      -0.2        0.10        perf-profile.children.cycles-pp.idr_get_next
      1.66 ±  3%      -0.2        1.42 ±  5%  perf-profile.children.cycles-pp.schedule_preempt_disabled
      0.40            -0.2        0.17 ±  4%  perf-profile.children.cycles-pp.rwsem_optimistic_spin
      0.44 ±  2%      -0.2        0.23 ±  2%  perf-profile.children.cycles-pp.sysvipc_proc_next
      0.67            -0.2        0.50        perf-profile.children.cycles-pp.flush_smp_call_function_queue
      1.57 ±  2%      -0.2        1.40        perf-profile.children.cycles-pp.__percpu_counter_sum
      0.66            -0.2        0.51        perf-profile.children.cycles-pp.__flush_smp_call_function_queue
      0.56            -0.1        0.44        perf-profile.children.cycles-pp.sched_ttwu_pending
      0.51            -0.1        0.40 ±  2%  perf-profile.children.cycles-pp.activate_task
      0.49            -0.1        0.39 ±  2%  perf-profile.children.cycles-pp.ttwu_do_activate
      0.27            -0.1        0.17 ±  4%  perf-profile.children.cycles-pp.msgctl_stat
      0.48            -0.1        0.38        perf-profile.children.cycles-pp.dequeue_task_fair
      0.41 ±  2%      -0.1        0.32        perf-profile.children.cycles-pp.dequeue_entity
      0.15 ±  3%      -0.1        0.06        perf-profile.children.cycles-pp.osq_lock
      0.15 ±  3%      -0.1        0.06 ±  6%  perf-profile.children.cycles-pp.rwsem_spin_on_owner
      0.61            -0.1        0.52 ±  2%  perf-profile.children.cycles-pp.update_load_avg
      0.37            -0.1        0.28        perf-profile.children.cycles-pp.select_task_rq
      0.36            -0.1        0.28 ±  2%  perf-profile.children.cycles-pp.select_task_rq_fair
      0.43            -0.1        0.35 ±  2%  perf-profile.children.cycles-pp.enqueue_task_fair
      0.36 ±  2%      -0.1        0.28 ±  2%  perf-profile.children.cycles-pp.schedule_idle
      0.32            -0.1        0.25 ±  2%  perf-profile.children.cycles-pp.enqueue_entity
      1.84            -0.1        1.78        perf-profile.children.cycles-pp.wake_up_q
      0.18 ±  3%      -0.0        0.14 ±  4%  perf-profile.children.cycles-pp.select_idle_sibling
      0.17 ±  2%      -0.0        0.13        perf-profile.children.cycles-pp.wake_affine
      0.20 ±  2%      -0.0        0.16 ±  3%  perf-profile.children.cycles-pp.ttwu_queue_wakelist
      0.16 ±  3%      -0.0        0.12        perf-profile.children.cycles-pp.__smp_call_single_queue
      0.14 ±  3%      -0.0        0.11 ±  5%  perf-profile.children.cycles-pp.select_idle_cpu
      0.15 ±  2%      -0.0        0.12 ±  3%  perf-profile.children.cycles-pp.available_idle_cpu
      0.14 ±  5%      -0.0        0.11 ±  4%  perf-profile.children.cycles-pp.update_curr
      0.12 ±  4%      -0.0        0.09 ±  5%  perf-profile.children.cycles-pp.task_h_load
      0.14 ±  2%      -0.0        0.11 ±  3%  perf-profile.children.cycles-pp.rwsem_mark_wake
      0.10 ±  3%      -0.0        0.07 ±  5%  perf-profile.children.cycles-pp.switch_fpu_return
      0.12            -0.0        0.09 ±  6%  perf-profile.children.cycles-pp.menu_select
      0.10 ±  4%      -0.0        0.08 ±  8%  perf-profile.children.cycles-pp.select_idle_core
      0.09 ±  4%      -0.0        0.07 ±  7%  perf-profile.children.cycles-pp.switch_mm_irqs_off
      0.17 ±  4%      -0.0        0.15 ±  3%  perf-profile.children.cycles-pp.__irq_exit_rcu
      0.16 ±  3%      -0.0        0.14 ±  4%  perf-profile.children.cycles-pp.__do_softirq
      0.12 ±  4%      -0.0        0.09 ±  4%  perf-profile.children.cycles-pp.llist_add_batch
      0.08 ±  4%      -0.0        0.06 ±  6%  perf-profile.children.cycles-pp.sched_mm_cid_migrate_to
      0.08            -0.0        0.06        perf-profile.children.cycles-pp.__switch_to
      0.07            -0.0        0.05        perf-profile.children.cycles-pp.llist_reverse_order
      0.11 ±  5%      -0.0        0.09 ±  5%  perf-profile.children.cycles-pp.prepare_task_switch
      0.10 ±  4%      -0.0        0.09 ±  7%  perf-profile.children.cycles-pp.__update_load_avg_se
      0.07 ±  7%      -0.0        0.05        perf-profile.children.cycles-pp.restore_fpregs_from_fpstate
      0.09 ±  5%      -0.0        0.08 ±  4%  perf-profile.children.cycles-pp.rebalance_domains
      0.08 ±  4%      -0.0        0.07        perf-profile.children.cycles-pp.update_rq_clock_task
      0.06 ±  8%      +0.0        0.07        perf-profile.children.cycles-pp.security_msg_queue_msgsnd
      0.10 ±  4%      +0.0        0.11 ±  4%  perf-profile.children.cycles-pp.__cond_resched
      0.09            +0.0        0.11 ±  3%  perf-profile.children.cycles-pp.kmalloc_slab
      0.09 ±  6%      +0.0        0.11        perf-profile.children.cycles-pp.is_vmalloc_addr
      0.13 ±  5%      +0.0        0.15 ±  2%  perf-profile.children.cycles-pp.syscall_exit_to_user_mode_prepare
      0.10 ±  7%      +0.0        0.13 ±  3%  perf-profile.children.cycles-pp.format_decode
      0.18 ±  2%      +0.0        0.21 ±  2%  perf-profile.children.cycles-pp.__list_add_valid
      0.09 ± 11%      +0.0        0.12 ± 13%  perf-profile.children.cycles-pp.security_msg_msg_alloc
      0.14 ±  6%      +0.0        0.16 ±  4%  perf-profile.children.cycles-pp.security_ipc_permission
      0.10 ±  4%      +0.0        0.13 ±  3%  perf-profile.children.cycles-pp.number
      0.02 ±141%      +0.0        0.06 ±  8%  perf-profile.children.cycles-pp.allocate_slab
      0.19 ±  3%      +0.0        0.23 ±  2%  perf-profile.children.cycles-pp.obj_cgroup_charge
      0.26 ±  4%      +0.0        0.30 ±  3%  perf-profile.children.cycles-pp.syscall_enter_from_user_mode
      0.24 ±  5%      +0.1        0.29 ±  4%  perf-profile.children.cycles-pp.__get_obj_cgroup_from_memcg
      0.57            +0.1        0.63        perf-profile.children.cycles-pp.ss_wakeup
      0.47 ±  3%      +0.1        0.53 ±  5%  perf-profile.children.cycles-pp.get_obj_cgroup_from_current
      0.34 ±  2%      +0.1        0.41        perf-profile.children.cycles-pp.syscall_return_via_sysret
      0.32            +0.1        0.39        perf-profile.children.cycles-pp.vsnprintf
      0.41            +0.1        0.48        perf-profile.children.cycles-pp.__put_user_8
      0.32            +0.1        0.39        perf-profile.children.cycles-pp.seq_printf
      0.34            +0.1        0.42        perf-profile.children.cycles-pp.sysvipc_msg_proc_show
      0.43            +0.1        0.51 ±  2%  perf-profile.children.cycles-pp.__get_user_8
      0.50            +0.1        0.59 ±  2%  perf-profile.children.cycles-pp.__x64_sys_msgsnd
      0.36 ±  2%      +0.1        0.45 ±  2%  perf-profile.children.cycles-pp.exit_to_user_mode_prepare
      0.29 ±  3%      +0.1        0.38 ±  2%  perf-profile.children.cycles-pp.__virt_addr_valid
      0.39 ±  3%      +0.1        0.48        perf-profile.children.cycles-pp.__check_heap_object
      0.34 ±  2%      +0.1        0.45 ±  2%  perf-profile.children.cycles-pp.ipcperms
      0.61            +0.1        0.74        perf-profile.children.cycles-pp.mod_objcg_state
      0.83 ±  5%      +0.2        0.98 ±  2%  perf-profile.children.cycles-pp._copy_from_user
      0.66            +0.2        0.82        perf-profile.children.cycles-pp.syscall_exit_to_user_mode
      0.48 ±  2%      +0.2        0.65        perf-profile.children.cycles-pp.entry_SYSCALL_64_safe_stack
      0.86            +0.2        1.06        perf-profile.children.cycles-pp.entry_SYSRETQ_unsafe_stack
      1.12            +0.2        1.37        perf-profile.children.cycles-pp.__entry_text_start
      0.56 ±  2%      +0.4        0.98        perf-profile.children.cycles-pp.___slab_alloc
      1.62            +0.4        2.04        perf-profile.children.cycles-pp.stress_msg
      2.35            +0.6        2.92        perf-profile.children.cycles-pp.__list_del_entry_valid
     44.55            +0.6       45.16        perf-profile.children.cycles-pp.do_msgrcv
      2.68            +0.7        3.39        perf-profile.children.cycles-pp.memcg_slab_post_alloc_hook
      3.11            +0.8        3.90 ±  2%  perf-profile.children.cycles-pp.__kmem_cache_free
     46.38            +1.0       47.36        perf-profile.children.cycles-pp.__libc_msgrcv
      2.99            +1.0        4.00        perf-profile.children.cycles-pp.check_heap_object
      3.87            +1.1        4.97 ±  8%  perf-profile.children.cycles-pp._copy_to_user
      3.61            +1.2        4.79 ±  2%  perf-profile.children.cycles-pp.__slab_free
      4.25            +1.4        5.69        perf-profile.children.cycles-pp.__check_object_size
      4.86            +1.4        6.30        perf-profile.children.cycles-pp.__kmem_cache_alloc_node
      4.97            +1.5        6.44        perf-profile.children.cycles-pp.percpu_counter_add_batch
      5.03            +1.5        6.51        perf-profile.children.cycles-pp.__kmalloc
      5.33            +1.7        7.00        perf-profile.children.cycles-pp.alloc_msg
     36.43            +1.7       38.16        perf-profile.children.cycles-pp.do_msgsnd
      7.07            +2.1        9.13        perf-profile.children.cycles-pp.load_msg
      7.44            +2.2        9.62 ±  3%  perf-profile.children.cycles-pp.free_msg
      7.39            +2.3        9.68 ±  4%  perf-profile.children.cycles-pp.store_msg
      7.88            +2.4       10.28 ±  4%  perf-profile.children.cycles-pp.do_msg_fill
     39.75            +2.9       42.64        perf-profile.children.cycles-pp.__libc_msgsnd
     11.25            +4.2       15.48        perf-profile.children.cycles-pp.native_queued_spin_lock_slowpath
     87.71            +4.3       92.00        perf-profile.children.cycles-pp.stress_run
     11.07            +6.5       17.57        perf-profile.children.cycles-pp._raw_spin_lock
     22.77           -20.8        1.98        perf-profile.self.cycles-pp.idr_find
      1.35            -0.4        0.95        perf-profile.self.cycles-pp.intel_idle
      0.33 ±  2%      -0.2        0.08        perf-profile.self.cycles-pp.idr_get_next_ul
      0.44 ±  2%      -0.2        0.21 ±  2%  perf-profile.self.cycles-pp._raw_spin_lock_irqsave
      0.26            -0.2        0.10 ±  4%  perf-profile.self.cycles-pp.rwsem_down_read_slowpath
      0.17 ±  2%      -0.1        0.03 ± 70%  perf-profile.self.cycles-pp._raw_spin_lock_irq
      0.15 ±  3%      -0.1        0.06        perf-profile.self.cycles-pp.osq_lock
      0.30 ±  2%      -0.0        0.25        perf-profile.self.cycles-pp.update_load_avg
      0.16 ±  2%      -0.0        0.12 ±  3%  perf-profile.self.cycles-pp.__schedule
      0.15 ±  2%      -0.0        0.12 ±  4%  perf-profile.self.cycles-pp.available_idle_cpu
      0.12 ±  4%      -0.0        0.09 ±  5%  perf-profile.self.cycles-pp.task_h_load
      0.09 ±  7%      -0.0        0.06 ±  6%  perf-profile.self.cycles-pp.rwsem_optimistic_spin
      0.12 ±  4%      -0.0        0.09 ±  4%  perf-profile.self.cycles-pp.llist_add_batch
      0.09 ±  4%      -0.0        0.07 ±  7%  perf-profile.self.cycles-pp.switch_mm_irqs_off
      0.07            -0.0        0.05        perf-profile.self.cycles-pp.llist_reverse_order
      0.17 ±  2%      -0.0        0.15 ±  4%  perf-profile.self.cycles-pp.__update_load_avg_cfs_rq
      0.10 ±  5%      -0.0        0.08 ±  6%  perf-profile.self.cycles-pp.enqueue_task_fair
      0.08 ±  4%      -0.0        0.06        perf-profile.self.cycles-pp.__switch_to
      0.10            -0.0        0.08 ±  5%  perf-profile.self.cycles-pp.__update_load_avg_se
      0.08 ±  6%      -0.0        0.06 ±  6%  perf-profile.self.cycles-pp.sched_mm_cid_migrate_to
      0.07 ±  7%      -0.0        0.05        perf-profile.self.cycles-pp.restore_fpregs_from_fpstate
      0.07 ±  6%      -0.0        0.06        perf-profile.self.cycles-pp.update_rq_clock_task
      0.06 ±  7%      -0.0        0.05        perf-profile.self.cycles-pp.menu_select
      0.06 ±  6%      +0.0        0.07        perf-profile.self.cycles-pp.security_msg_queue_msgrcv
      0.07 ±  5%      +0.0        0.08 ±  4%  perf-profile.self.cycles-pp.is_vmalloc_addr
      0.06 ±  9%      +0.0        0.07        perf-profile.self.cycles-pp.__cond_resched
      0.08 ±  6%      +0.0        0.09 ±  5%  perf-profile.self.cycles-pp.kmalloc_slab
      0.10 ±  5%      +0.0        0.11 ±  4%  perf-profile.self.cycles-pp.vsnprintf
      0.08 ±  4%      +0.0        0.10 ±  3%  perf-profile.self.cycles-pp.format_decode
      0.09 ±  4%      +0.0        0.11 ±  4%  perf-profile.self.cycles-pp.do_msg_fill
      0.16 ±  3%      +0.0        0.19        perf-profile.self.cycles-pp.__list_add_valid
      0.09            +0.0        0.11 ±  4%  perf-profile.self.cycles-pp.number
      0.08 ±  4%      +0.0        0.10 ±  4%  perf-profile.self.cycles-pp.alloc_msg
      0.11 ±  3%      +0.0        0.13 ±  2%  perf-profile.self.cycles-pp.__kmalloc
      0.12 ±  4%      +0.0        0.14 ±  5%  perf-profile.self.cycles-pp.security_ipc_permission
      0.08 ± 14%      +0.0        0.11 ± 15%  perf-profile.self.cycles-pp.security_msg_msg_alloc
      0.21 ±  3%      +0.0        0.24        perf-profile.self.cycles-pp.syscall_enter_from_user_mode
      0.14 ±  2%      +0.0        0.17 ±  3%  perf-profile.self.cycles-pp.exit_to_user_mode_prepare
      0.16 ±  3%      +0.0        0.19 ±  3%  perf-profile.self.cycles-pp.obj_cgroup_charge
      0.18 ±  2%      +0.0        0.22 ±  2%  perf-profile.self.cycles-pp.store_msg
      0.23 ±  7%      +0.0        0.28 ±  4%  perf-profile.self.cycles-pp.__get_obj_cgroup_from_memcg
      0.28 ±  2%      +0.1        0.34 ±  2%  perf-profile.self.cycles-pp.do_syscall_64
      0.54            +0.1        0.60        perf-profile.self.cycles-pp.ss_wakeup
      0.34 ±  2%      +0.1        0.41        perf-profile.self.cycles-pp.syscall_return_via_sysret
      0.40            +0.1        0.47        perf-profile.self.cycles-pp.__put_user_8
      0.29 ±  3%      +0.1        0.36        perf-profile.self.cycles-pp.__entry_text_start
      0.41            +0.1        0.48 ±  3%  perf-profile.self.cycles-pp.__get_user_8
      0.27 ±  3%      +0.1        0.35 ±  2%  perf-profile.self.cycles-pp.__virt_addr_valid
      0.37 ±  3%      +0.1        0.46        perf-profile.self.cycles-pp.__check_heap_object
      0.35            +0.1        0.44 ±  6%  perf-profile.self.cycles-pp.kfree
      0.46 ±  2%      +0.1        0.55 ±  2%  perf-profile.self.cycles-pp.__libc_msgsnd
      0.31 ±  3%      +0.1        0.41 ±  2%  perf-profile.self.cycles-pp.ipcperms
      0.47            +0.1        0.57 ±  2%  perf-profile.self.cycles-pp.__libc_msgrcv
      0.57            +0.1        0.69        perf-profile.self.cycles-pp.mod_objcg_state
      0.80 ±  5%      +0.1        0.93 ±  2%  perf-profile.self.cycles-pp._copy_from_user
      0.26            +0.1        0.40        perf-profile.self.cycles-pp.syscall_exit_to_user_mode
      0.48 ±  2%      +0.2        0.65        perf-profile.self.cycles-pp.entry_SYSCALL_64_safe_stack
      0.84            +0.2        1.02        perf-profile.self.cycles-pp.entry_SYSRETQ_unsafe_stack
      0.36            +0.2        0.55 ±  3%  perf-profile.self.cycles-pp.load_msg
      0.88            +0.2        1.08        perf-profile.self.cycles-pp.__kmem_cache_alloc_node
      0.61            +0.2        0.85        perf-profile.self.cycles-pp.__percpu_counter_sum
      0.76 ±  2%      +0.3        1.01 ±  2%  perf-profile.self.cycles-pp.wake_up_q
      0.67            +0.3        0.93        perf-profile.self.cycles-pp.__check_object_size
      0.48 ±  2%      +0.4        0.87 ±  2%  perf-profile.self.cycles-pp.___slab_alloc
      1.57            +0.4        1.99        perf-profile.self.cycles-pp.stress_msg
      0.77            +0.5        1.25        perf-profile.self.cycles-pp.entry_SYSCALL_64_after_hwframe
      2.14            +0.5        2.67        perf-profile.self.cycles-pp._raw_spin_lock
      2.32            +0.6        2.88        perf-profile.self.cycles-pp.__list_del_entry_valid
      2.49            +0.7        3.14 ±  2%  perf-profile.self.cycles-pp.__kmem_cache_free
      2.43            +0.7        3.08        perf-profile.self.cycles-pp.memcg_slab_post_alloc_hook
      2.58            +0.9        3.48        perf-profile.self.cycles-pp.check_heap_object
      3.82            +1.1        4.91 ±  8%  perf-profile.self.cycles-pp._copy_to_user
      3.24            +1.2        4.41        perf-profile.self.cycles-pp.do_msgrcv
      3.58            +1.2        4.74 ±  2%  perf-profile.self.cycles-pp.__slab_free
      4.86            +1.4        6.32        perf-profile.self.cycles-pp.percpu_counter_add_batch
      7.55            +3.2       10.74        perf-profile.self.cycles-pp.ipc_obtain_object_check
      3.20            +3.2        6.42        perf-profile.self.cycles-pp.do_msgsnd
     11.14            +4.2       15.31        perf-profile.self.cycles-pp.native_queued_spin_lock_slowpath




Disclaimer:
Results have been estimated based on internal Intel analysis and are provided
for informational purposes only. Any difference in system hardware or software
design or configuration may affect actual performance.
diff mbox series

Patch

diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index ee2dbbde176e..3e0a39653469 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -2998,9 +2998,9 @@  extern int ext4_zero_partial_blocks(handle_t *handle, struct inode *inode,
 extern vm_fault_t ext4_page_mkwrite(struct vm_fault *vmf);
 extern qsize_t *ext4_get_reserved_space(struct inode *inode);
 extern int ext4_get_projid(struct inode *inode, kprojid_t *projid);
-extern void ext4_da_release_space(struct inode *inode, int to_free);
+extern void ext4_da_release_space(struct inode *inode, unsigned int data_len);
 extern void ext4_da_update_reserve_space(struct inode *inode,
-					int used, int quota_claim);
+					unsigned int data_len, int quota_claim);
 extern int ext4_issue_zeroout(struct inode *inode, ext4_lblk_t lblk,
 			      ext4_fsblk_t pblk, ext4_lblk_t len);
 
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 13036cecbcc0..38c47ce1333b 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -327,53 +327,59 @@  qsize_t *ext4_get_reserved_space(struct inode *inode)
 
 static void __ext4_da_update_reserve_space(const char *where,
 					   struct inode *inode,
-					   int data_len)
+					   unsigned int data_len, int ext_len)
 {
 	struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
 	struct ext4_inode_info *ei = EXT4_I(inode);
 
-	if (unlikely(data_len > ei->i_reserved_data_blocks)) {
-		ext4_warning(inode->i_sb, "%s: ino %lu, clear %d "
-			     "with only %d reserved data blocks",
-			     where, inode->i_ino, data_len,
-			     ei->i_reserved_data_blocks);
+	if (unlikely(data_len > ei->i_reserved_data_blocks ||
+		     ext_len > (long)ei->i_reserved_ext_blocks)) {
+		ext4_warning(inode->i_sb, "%s: ino %lu, clear %d,%d "
+			     "with only %d,%d reserved data blocks",
+			     where, inode->i_ino, data_len, ext_len,
+			     ei->i_reserved_data_blocks,
+			     ei->i_reserved_ext_blocks);
 		WARN_ON(1);
-		data_len = ei->i_reserved_data_blocks;
+		data_len = min(data_len, ei->i_reserved_data_blocks);
+		ext_len = min_t(unsigned int, ext_len, ei->i_reserved_ext_blocks);
 	}
 
 	/* Update per-inode reservations */
 	ei->i_reserved_data_blocks -= data_len;
-	percpu_counter_sub(&sbi->s_dirtyclusters_counter, data_len);
+	ei->i_reserved_ext_blocks -= ext_len;
+	percpu_counter_sub(&sbi->s_dirtyclusters_counter, (s64)data_len + ext_len);
 }
 
 /*
  * Called with i_data_sem down, which is important since we can call
  * ext4_discard_preallocations() from here.
  */
-void ext4_da_update_reserve_space(struct inode *inode,
-				  int used, int quota_claim)
+void ext4_da_update_reserve_space(struct inode *inode, unsigned int data_len,
+				  int quota_claim)
 {
 	struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
 	struct ext4_inode_info *ei = EXT4_I(inode);
+	int ext_len = 0;
 
-	if (!used)
+	if (!data_len)
 		return;
 
 	spin_lock(&ei->i_block_reservation_lock);
-	trace_ext4_da_update_reserve_space(inode, used, quota_claim);
-	__ext4_da_update_reserve_space(__func__, inode, used);
+	trace_ext4_da_update_reserve_space(inode, data_len, ext_len,
+					   quota_claim);
+	__ext4_da_update_reserve_space(__func__, inode, data_len, ext_len);
 	spin_unlock(&ei->i_block_reservation_lock);
 
 	/* Update quota subsystem for data blocks */
 	if (quota_claim)
-		dquot_claim_block(inode, EXT4_C2B(sbi, used));
+		dquot_claim_block(inode, EXT4_C2B(sbi, data_len));
 	else {
 		/*
 		 * We did fallocate with an offset that is already delayed
 		 * allocated. So on delayed allocated writeback we should
 		 * not re-claim the quota for fallocated blocks.
 		 */
-		dquot_release_reservation_block(inode, EXT4_C2B(sbi, used));
+		dquot_release_reservation_block(inode, EXT4_C2B(sbi, data_len));
 	}
 
 	/*
@@ -1484,20 +1490,21 @@  static int ext4_da_reserve_space(struct inode *inode, unsigned int rsv_dlen,
 	return 0;       /* success */
 }
 
-void ext4_da_release_space(struct inode *inode, int to_free)
+void ext4_da_release_space(struct inode *inode, unsigned int data_len)
 {
 	struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
 	struct ext4_inode_info *ei = EXT4_I(inode);
+	int ext_len = 0;
 
-	if (!to_free)
+	if (!data_len)
 		return;		/* Nothing to release, exit */
 
 	spin_lock(&ei->i_block_reservation_lock);
-	trace_ext4_da_release_space(inode, to_free);
-	__ext4_da_update_reserve_space(__func__, inode, to_free);
+	trace_ext4_da_release_space(inode, data_len, ext_len);
+	__ext4_da_update_reserve_space(__func__, inode, data_len, ext_len);
 	spin_unlock(&ei->i_block_reservation_lock);
 
-	dquot_release_reservation_block(inode, EXT4_C2B(sbi, to_free));
+	dquot_release_reservation_block(inode, EXT4_C2B(sbi, data_len));
 }
 
 /*
diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h
index 7a9839f2d681..e1e9d7ead20f 100644
--- a/include/trace/events/ext4.h
+++ b/include/trace/events/ext4.h
@@ -1214,15 +1214,19 @@  TRACE_EVENT(ext4_forget,
 );
 
 TRACE_EVENT(ext4_da_update_reserve_space,
-	TP_PROTO(struct inode *inode, int used_blocks, int quota_claim),
+	TP_PROTO(struct inode *inode,
+		 int data_blocks,
+		 int meta_blocks,
+		 int quota_claim),
 
-	TP_ARGS(inode, used_blocks, quota_claim),
+	TP_ARGS(inode, data_blocks, meta_blocks, quota_claim),
 
 	TP_STRUCT__entry(
 		__field(	dev_t,	dev			)
 		__field(	ino_t,	ino			)
 		__field(	__u64,	i_blocks		)
-		__field(	int,	used_blocks		)
+		__field(	int,	data_blocks		)
+		__field(	int,	meta_blocks		)
 		__field(	int,	reserved_data_blocks	)
 		__field(	int,	reserved_ext_blocks	)
 		__field(	int,	quota_claim		)
@@ -1233,19 +1237,20 @@  TRACE_EVENT(ext4_da_update_reserve_space,
 		__entry->dev	= inode->i_sb->s_dev;
 		__entry->ino	= inode->i_ino;
 		__entry->i_blocks = inode->i_blocks;
-		__entry->used_blocks = used_blocks;
+		__entry->data_blocks = data_blocks;
+		__entry->meta_blocks = meta_blocks;
 		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
 		__entry->reserved_ext_blocks = EXT4_I(inode)->i_reserved_ext_blocks;
 		__entry->quota_claim = quota_claim;
 		__entry->mode	= inode->i_mode;
 	),
 
-	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d "
+	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu data_blocks %d meta_blocks %d "
 		  "reserved_data_blocks %d reserved_ext_blocks %d quota_claim %d",
 		  MAJOR(__entry->dev), MINOR(__entry->dev),
 		  (unsigned long) __entry->ino,
 		  __entry->mode, __entry->i_blocks,
-		  __entry->used_blocks,
+		  __entry->data_blocks, __entry->meta_blocks,
 		  __entry->reserved_data_blocks, __entry->reserved_ext_blocks,
 		  __entry->quota_claim)
 );
@@ -1289,15 +1294,16 @@  TRACE_EVENT(ext4_da_reserve_space,
 );
 
 TRACE_EVENT(ext4_da_release_space,
-	TP_PROTO(struct inode *inode, int freed_blocks),
+	TP_PROTO(struct inode *inode, int freed_blocks, int meta_blocks),
 
-	TP_ARGS(inode, freed_blocks),
+	TP_ARGS(inode, freed_blocks, meta_blocks),
 
 	TP_STRUCT__entry(
 		__field(	dev_t,	dev			)
 		__field(	ino_t,	ino			)
 		__field(	__u64,	i_blocks		)
 		__field(	int,	freed_blocks		)
+		__field(	int,	meta_blocks		)
 		__field(	int,	reserved_data_blocks	)
 		__field(	int,	reserved_ext_blocks	)
 		__field(	__u16,  mode			)
@@ -1308,17 +1314,19 @@  TRACE_EVENT(ext4_da_release_space,
 		__entry->ino	= inode->i_ino;
 		__entry->i_blocks = inode->i_blocks;
 		__entry->freed_blocks = freed_blocks;
+		__entry->meta_blocks = meta_blocks;
 		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
 		__entry->reserved_ext_blocks = EXT4_I(inode)->i_reserved_ext_blocks;
 		__entry->mode	= inode->i_mode;
 	),
 
-	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu freed_blocks %d "
+	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu "
+		  "freed_blocks %d meta_blocks %d"
 		  "reserved_data_blocks %d reserved_ext_blocks %d",
 		  MAJOR(__entry->dev), MINOR(__entry->dev),
 		  (unsigned long) __entry->ino,
 		  __entry->mode, __entry->i_blocks,
-		  __entry->freed_blocks,
+		  __entry->freed_blocks, __entry->meta_blocks,
 		  __entry->reserved_data_blocks,
 		  __entry->reserved_ext_blocks)
 );