* [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI. @ 2023-08-14 9:35 Sebastian Andrzej Siewior 2023-08-14 9:35 ` [RFC PATCH net-next 1/2] " Sebastian Andrzej Siewior ` (2 more replies) 0 siblings, 3 replies; 26+ messages in thread From: Sebastian Andrzej Siewior @ 2023-08-14 9:35 UTC (permalink / raw) To: linux-kernel, netdev Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa The RPS code and "deferred skb free" both send IPI/ function call to a remote CPU in which a softirq is raised. This leads to a warning on PREEMPT_RT because raising softiqrs from function call led to undesired behaviour in the past. I had duct tape in RT for the "deferred skb free" and Wander Lairson Costa reported the RPS case. Patch #1 creates per-CPU threads for the backlog NAPI. It follows the threaded NAPI model and solves the issue and simplifies the code. Patch #2 gets rid of the warning. Since the ksoftirqd changes the situtation isn't as bad as it was. Still, it would be better to keep it in the context where it originated. Sebastian ^ permalink raw reply [flat|nested] 26+ messages in thread
* [RFC PATCH net-next 1/2] net: Use SMP threads for backlog NAPI. 2023-08-14 9:35 [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI Sebastian Andrzej Siewior @ 2023-08-14 9:35 ` Sebastian Andrzej Siewior 2023-08-21 8:32 ` kernel test robot 2023-08-23 13:35 ` Paolo Abeni 2023-08-14 9:35 ` [RFC PATCH 2/2] softirq: Drop the warning from do_softirq_post_smp_call_flush() Sebastian Andrzej Siewior 2023-08-14 18:24 ` [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI Jakub Kicinski 2 siblings, 2 replies; 26+ messages in thread From: Sebastian Andrzej Siewior @ 2023-08-14 9:35 UTC (permalink / raw) To: linux-kernel, netdev Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, Sebastian Andrzej Siewior Backlog NAPI is a per-CPU NAPI struct only (with no device behind it) used by drivers which don't do NAPI them self and RPS. The non-NAPI driver use the CPU local backlog NAPI. If RPS is enabled then a flow for the skb is computed and based on the flow the skb can be enqueued on a remote CPU. Scheduling/ raising the softirq (for backlog's NAPI) on the remote CPU isn't trivial because the softirq is only scheduled on the local CPU and performed after the hardirq is done. In order to schedule a softirq on the remote CPU, an IPI is sent to the remote CPU which schedules the backlog-NAPI on the then local CPU. On PREEMPT_RT interrupts are force-threaded. The soft interrupts are raised within the interrupt thread and processed after the interrupt handler completed still within the context of the interrupt thread. The softirq is handled in the context where it originated. With force-threaded interrupts enabled, ksoftirqd is woken up if a softirq is raised from hardirq context. This is the case if it is raised from an IPI. Additionally there is a warning on PREEMPT_RT if the softirq is raised from the idle thread. This was done for two reasons: - With threaded interrupts the processing should happen in thread context (where it originated) and ksoftirqd is the only thread for this context if raised from hardirq. Using the currently running task instead would "punish" a random task. - Once ksoftirqd is active it consumes all further softirqs until it stops running. This changed recently and is no longer the case. Instead of keeping the backlog NAPI in ksoftirqd (in force-threaded/ PREEMPT_RT setups) I am proposing NAPI-threads for backlog. The "proper" setup with threaded-NAPI is not doable because the threads are not pinned to an individual CPU and can be modified by the user. Additionally a dummy network device would have to be assigned. Also CPU-hotplug has to be considered if additional CPUs show up. All this can be probably done/ solved but the smpboot-threads already provide this infrastructure. Create NAPI-threads for backlog. The thread runs the inner loop from napi_threaded_poll(), the wait part is different. Since there are now per-CPU threads for backlog the remote IPI for signaling is not needed and can be removed. The NAPI for backlog can always be scheduled as it ends in waking the corresponding thread. Since "deferred skb free" use a similar IPI mechanism for signaling, it is also using the backlog threads. This makes NAPI threads mandatory for backlog and it can not be disabled. The other visibile part with RPS (or backlog usage in general) is that it becomes now visible in `top' while earlier it would remain unaccounted. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- include/linux/netdevice.h | 8 -- net/core/dev.c | 226 +++++++++++++------------------------- net/core/net-procfs.c | 2 +- net/core/skbuff.c | 2 +- 4 files changed, 79 insertions(+), 159 deletions(-) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 0896aaa91dd7b..17e31a68e725e 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -3190,9 +3190,6 @@ struct softnet_data { /* stats */ unsigned int processed; unsigned int time_squeeze; -#ifdef CONFIG_RPS - struct softnet_data *rps_ipi_list; -#endif bool in_net_rx_action; bool in_napi_threaded_poll; @@ -3221,12 +3218,8 @@ struct softnet_data { unsigned int input_queue_head ____cacheline_aligned_in_smp; /* Elements below can be accessed between CPUs for RPS/RFS */ - call_single_data_t csd ____cacheline_aligned_in_smp; - struct softnet_data *rps_ipi_next; - unsigned int cpu; unsigned int input_queue_tail; #endif - unsigned int received_rps; unsigned int dropped; struct sk_buff_head input_pkt_queue; struct napi_struct backlog; @@ -3236,7 +3229,6 @@ struct softnet_data { int defer_count; int defer_ipi_scheduled; struct sk_buff *defer_list; - call_single_data_t defer_csd; }; static inline void input_queue_head_incr(struct softnet_data *sd) diff --git a/net/core/dev.c b/net/core/dev.c index 636b41f0b32d6..40103238ac0a1 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -153,6 +153,7 @@ #include <linux/prandom.h> #include <linux/once_lite.h> #include <net/netdev_rx_queue.h> +#include <linux/smpboot.h> #include "dev.h" #include "net-sysfs.h" @@ -4658,57 +4659,8 @@ bool rps_may_expire_flow(struct net_device *dev, u16 rxq_index, EXPORT_SYMBOL(rps_may_expire_flow); #endif /* CONFIG_RFS_ACCEL */ - -/* Called from hardirq (IPI) context */ -static void rps_trigger_softirq(void *data) -{ - struct softnet_data *sd = data; - - ____napi_schedule(sd, &sd->backlog); - sd->received_rps++; -} - #endif /* CONFIG_RPS */ -/* Called from hardirq (IPI) context */ -static void trigger_rx_softirq(void *data) -{ - struct softnet_data *sd = data; - - __raise_softirq_irqoff(NET_RX_SOFTIRQ); - smp_store_release(&sd->defer_ipi_scheduled, 0); -} - -/* - * After we queued a packet into sd->input_pkt_queue, - * we need to make sure this queue is serviced soon. - * - * - If this is another cpu queue, link it to our rps_ipi_list, - * and make sure we will process rps_ipi_list from net_rx_action(). - * - * - If this is our own queue, NAPI schedule our backlog. - * Note that this also raises NET_RX_SOFTIRQ. - */ -static void napi_schedule_rps(struct softnet_data *sd) -{ - struct softnet_data *mysd = this_cpu_ptr(&softnet_data); - -#ifdef CONFIG_RPS - if (sd != mysd) { - sd->rps_ipi_next = mysd->rps_ipi_list; - mysd->rps_ipi_list = sd; - - /* If not called from net_rx_action() or napi_threaded_poll() - * we have to raise NET_RX_SOFTIRQ. - */ - if (!mysd->in_net_rx_action && !mysd->in_napi_threaded_poll) - __raise_softirq_irqoff(NET_RX_SOFTIRQ); - return; - } -#endif /* CONFIG_RPS */ - __napi_schedule_irqoff(&mysd->backlog); -} - #ifdef CONFIG_NET_FLOW_LIMIT int netdev_flow_limit_table_len __read_mostly = (1 << 12); #endif @@ -4781,7 +4733,7 @@ static int enqueue_to_backlog(struct sk_buff *skb, int cpu, * We can use non atomic operation since we own the queue lock */ if (!__test_and_set_bit(NAPI_STATE_SCHED, &sd->backlog.state)) - napi_schedule_rps(sd); + __napi_schedule_irqoff(&sd->backlog); goto enqueue; } reason = SKB_DROP_REASON_CPU_BACKLOG; @@ -5896,63 +5848,12 @@ static void flush_all_backlogs(void) cpus_read_unlock(); } -static void net_rps_send_ipi(struct softnet_data *remsd) -{ -#ifdef CONFIG_RPS - while (remsd) { - struct softnet_data *next = remsd->rps_ipi_next; - - if (cpu_online(remsd->cpu)) - smp_call_function_single_async(remsd->cpu, &remsd->csd); - remsd = next; - } -#endif -} - -/* - * net_rps_action_and_irq_enable sends any pending IPI's for rps. - * Note: called with local irq disabled, but exits with local irq enabled. - */ -static void net_rps_action_and_irq_enable(struct softnet_data *sd) -{ -#ifdef CONFIG_RPS - struct softnet_data *remsd = sd->rps_ipi_list; - - if (remsd) { - sd->rps_ipi_list = NULL; - - local_irq_enable(); - - /* Send pending IPI's to kick RPS processing on remote cpus. */ - net_rps_send_ipi(remsd); - } else -#endif - local_irq_enable(); -} - -static bool sd_has_rps_ipi_waiting(struct softnet_data *sd) -{ -#ifdef CONFIG_RPS - return sd->rps_ipi_list != NULL; -#else - return false; -#endif -} - static int process_backlog(struct napi_struct *napi, int quota) { struct softnet_data *sd = container_of(napi, struct softnet_data, backlog); bool again = true; int work = 0; - /* Check if we have pending ipi, its better to send them now, - * not waiting net_rx_action() end. - */ - if (sd_has_rps_ipi_waiting(sd)) { - local_irq_disable(); - net_rps_action_and_irq_enable(sd); - } - napi->weight = READ_ONCE(dev_rx_weight); while (again) { struct sk_buff *skb; @@ -5977,7 +5878,7 @@ static int process_backlog(struct napi_struct *napi, int quota) * We can use a plain write instead of clear_bit(), * and we dont need an smp_mb() memory barrier. */ - napi->state = 0; + napi->state = BIT(NAPI_STATE_THREADED); again = false; } else { skb_queue_splice_tail_init(&sd->input_pkt_queue, @@ -6634,6 +6535,8 @@ static void skb_defer_free_flush(struct softnet_data *sd) if (!READ_ONCE(sd->defer_list)) return; + smp_store_release(&sd->defer_ipi_scheduled, 0); + spin_lock(&sd->defer_lock); skb = sd->defer_list; sd->defer_list = NULL; @@ -6647,39 +6550,42 @@ static void skb_defer_free_flush(struct softnet_data *sd) } } +static void napi_threaded_poll_loop(struct napi_struct *napi) +{ + struct softnet_data *sd; + + for (;;) { + bool repoll = false; + void *have; + + local_bh_disable(); + sd = this_cpu_ptr(&softnet_data); + sd->in_napi_threaded_poll = true; + + have = netpoll_poll_lock(napi); + __napi_poll(napi, &repoll); + netpoll_poll_unlock(have); + + sd->in_napi_threaded_poll = false; + barrier(); + + skb_defer_free_flush(sd); + local_bh_enable(); + + if (!repoll) + break; + + cond_resched(); + } +} + static int napi_threaded_poll(void *data) { struct napi_struct *napi = data; - struct softnet_data *sd; - void *have; while (!napi_thread_wait(napi)) { - for (;;) { - bool repoll = false; - local_bh_disable(); - sd = this_cpu_ptr(&softnet_data); - sd->in_napi_threaded_poll = true; - - have = netpoll_poll_lock(napi); - __napi_poll(napi, &repoll); - netpoll_poll_unlock(have); - - sd->in_napi_threaded_poll = false; - barrier(); - - if (sd_has_rps_ipi_waiting(sd)) { - local_irq_disable(); - net_rps_action_and_irq_enable(sd); - } - skb_defer_free_flush(sd); - local_bh_enable(); - - if (!repoll) - break; - - cond_resched(); - } + napi_threaded_poll_loop(napi); } return 0; } @@ -6714,8 +6620,6 @@ static __latent_entropy void net_rx_action(struct softirq_action *h) */ if (!list_empty(&sd->poll_list)) goto start; - if (!sd_has_rps_ipi_waiting(sd)) - goto end; } break; } @@ -6744,8 +6648,7 @@ static __latent_entropy void net_rx_action(struct softirq_action *h) else sd->in_net_rx_action = false; - net_rps_action_and_irq_enable(sd); -end:; + local_irq_enable(); } struct netdev_adjacent { @@ -11157,7 +11060,7 @@ static int dev_cpu_dead(unsigned int oldcpu) struct sk_buff **list_skb; struct sk_buff *skb; unsigned int cpu; - struct softnet_data *sd, *oldsd, *remsd = NULL; + struct softnet_data *sd, *oldsd; local_irq_disable(); cpu = smp_processor_id(); @@ -11189,22 +11092,13 @@ static int dev_cpu_dead(unsigned int oldcpu) poll_list); list_del_init(&napi->poll_list); - if (napi->poll == process_backlog) - napi->state = 0; - else + if (!WARN_ON(napi->poll == process_backlog)) ____napi_schedule(sd, napi); } raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_enable(); -#ifdef CONFIG_RPS - remsd = oldsd->rps_ipi_list; - oldsd->rps_ipi_list = NULL; -#endif - /* send out pending IPI's on offline CPU */ - net_rps_send_ipi(remsd); - /* Process offline CPU's input_pkt_queue */ while ((skb = __skb_dequeue(&oldsd->process_queue))) { netif_rx(skb); @@ -11457,6 +11351,43 @@ static struct pernet_operations __net_initdata default_device_ops = { * */ +static DEFINE_PER_CPU(struct task_struct *, backlog_napi); + +static int backlog_napi_should_run(unsigned int cpu) +{ + struct softnet_data *sd = per_cpu_ptr(&softnet_data, cpu); + struct napi_struct *napi = &sd->backlog; + + if (READ_ONCE(sd->defer_list)) + return 1; + + return test_bit(NAPI_STATE_SCHED, &napi->state); +} + +static void run_backlog_napi(unsigned int cpu) +{ + struct softnet_data *sd = per_cpu_ptr(&softnet_data, cpu); + + napi_threaded_poll_loop(&sd->backlog); +} + +static void backlog_napi_setup(unsigned int cpu) +{ + struct softnet_data *sd = per_cpu_ptr(&softnet_data, cpu); + struct napi_struct *napi = &sd->backlog; + + napi->thread = this_cpu_read(backlog_napi); + set_bit(NAPI_STATE_THREADED, &napi->state); +} + +static struct smp_hotplug_thread backlog_threads = { + .store = &backlog_napi, + .thread_should_run = backlog_napi_should_run, + .thread_fn = run_backlog_napi, + .thread_comm = "backlog_napi/%u", + .setup = backlog_napi_setup, +}; + /* * This is called single threaded during boot, so no need * to take the rtnl semaphore. @@ -11497,17 +11428,14 @@ static int __init net_dev_init(void) #endif INIT_LIST_HEAD(&sd->poll_list); sd->output_queue_tailp = &sd->output_queue; -#ifdef CONFIG_RPS - INIT_CSD(&sd->csd, rps_trigger_softirq, sd); - sd->cpu = i; -#endif - INIT_CSD(&sd->defer_csd, trigger_rx_softirq, sd); spin_lock_init(&sd->defer_lock); init_gro_hash(&sd->backlog); sd->backlog.poll = process_backlog; sd->backlog.weight = weight_p; + INIT_LIST_HEAD(&sd->backlog.poll_list); } + smpboot_register_percpu_thread(&backlog_threads); dev_boot_phase = 0; diff --git a/net/core/net-procfs.c b/net/core/net-procfs.c index 09f7ed1a04e8a..086283cc8d47b 100644 --- a/net/core/net-procfs.c +++ b/net/core/net-procfs.c @@ -180,7 +180,7 @@ static int softnet_seq_show(struct seq_file *seq, void *v) sd->processed, sd->dropped, sd->time_squeeze, 0, 0, 0, 0, 0, /* was fastroute */ 0, /* was cpu_collision */ - sd->received_rps, flow_limit_count, + 0 /* was received_rps */, flow_limit_count, input_qlen + process_qlen, (int)seq->index, input_qlen, process_qlen); return 0; diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 33fdf04d4334d..265a8aa6b3228 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -6802,7 +6802,7 @@ nodefer: __kfree_skb(skb); * if we are unlucky enough (this seems very unlikely). */ if (unlikely(kick) && !cmpxchg(&sd->defer_ipi_scheduled, 0, 1)) - smp_call_function_single_async(cpu, &sd->defer_csd); + __napi_schedule(&sd->backlog); } static void skb_splice_csum_page(struct sk_buff *skb, struct page *page, -- 2.40.1 ^ permalink raw reply related [flat|nested] 26+ messages in thread
* Re: [RFC PATCH net-next 1/2] net: Use SMP threads for backlog NAPI. 2023-08-14 9:35 ` [RFC PATCH net-next 1/2] " Sebastian Andrzej Siewior @ 2023-08-21 8:32 ` kernel test robot 2023-08-23 13:35 ` Paolo Abeni 1 sibling, 0 replies; 26+ messages in thread From: kernel test robot @ 2023-08-21 8:32 UTC (permalink / raw) To: Sebastian Andrzej Siewior Cc: oe-lkp, lkp, netdev, ying.huang, feng.tang, fengwei.yin, linux-kernel, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, Sebastian Andrzej Siewior, oliver.sang Hello, kernel test robot noticed a -17.5% regression of phoronix-test-suite.netperf.localhost.UDPRequestResponse.10Seconds.transaction_rate_per_second on: commit: e9dc861c8b3c291826d6cc1a8674ec0b148cd82d ("[RFC PATCH net-next 1/2] net: Use SMP threads for backlog NAPI.") url: https://github.com/intel-lab-lkp/linux/commits/Sebastian-Andrzej-Siewior/net-Use-SMP-threads-for-backlog-NAPI/20230814-173835 base: https://git.kernel.org/cgit/linux/kernel/git/davem/net-next.git 83b5f0253b1ef352f4333c4fb2d24eff23045f6b patch link: https://lore.kernel.org/all/20230814093528.117342-2-bigeasy@linutronix.de/ patch subject: [RFC PATCH net-next 1/2] net: Use SMP threads for backlog NAPI. testcase: phoronix-test-suite test machine: 96 threads 2 sockets Intel(R) Xeon(R) Gold 6252 CPU @ 2.10GHz (Cascade Lake) with 512G memory parameters: test: netperf-1.0.4 cpufreq_governor: performance In addition to that, the commit also has significant impact on the following tests: +------------------+-------------------------------------------------------------------------------------------------+ | testcase: change | stress-ng: stress-ng.udp.ops_per_sec -40.3% regression | | test machine | 36 threads 1 sockets Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz (Cascade Lake) with 128G memory | | test parameters | class=os | | | cpufreq_governor=performance | | | disk=1HDD | | | fs=ext4 | | | nr_threads=1 | | | test=udp | | | testtime=60s | +------------------+-------------------------------------------------------------------------------------------------+ | testcase: change | qperf: qperf.udp.send_bw -24.2% regression | | test machine | 8 threads 1 sockets Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz (Haswell) with 8G memory | | test parameters | cluster=cs-localhost | | | cpufreq_governor=performance | | | runtime=600s | +------------------+-------------------------------------------------------------------------------------------------+ | testcase: change | uperf: uperf.Runstat_master_Mbps -16.5% regression | | test machine | 64 threads 2 sockets Intel(R) Xeon(R) Gold 6346 CPU @ 3.10GHz (Ice Lake) with 256G memory | | test parameters | cluster=cs-localhost | | | cpufreq_governor=performance | | | datasize=64 | | | nr_threads=1 | | | protocol=UDP | | | runtime=30s | | | winsize=32k | +------------------+-------------------------------------------------------------------------------------------------+ | testcase: change | stress-ng: stress-ng.dccp.ops_per_sec -16.0% regression | | test machine | 36 threads 1 sockets Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz (Cascade Lake) with 128G memory | | test parameters | class=os | | | cpufreq_governor=performance | | | disk=1HDD | | | fs=ext4 | | | nr_threads=1 | | | test=dccp | | | testtime=60s | +------------------+-------------------------------------------------------------------------------------------------+ If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <oliver.sang@intel.com> | Closes: https://lore.kernel.org/oe-lkp/202308211627.8b869c6e-oliver.sang@intel.com Details are as below: --------------------------------------------------------------------------------------------------> The kernel config and materials to reproduce are available at: https://download.01.org/0day-ci/archive/20230821/202308211627.8b869c6e-oliver.sang@intel.com ========================================================================================= compiler/cpufreq_governor/kconfig/rootfs/tbox_group/test/testcase: gcc-12/performance/x86_64-rhel-8.3/debian-x86_64-phoronix/lkp-csl-2sp7/netperf-1.0.4/phoronix-test-suite commit: 83b5f0253b ("net: phy: Introduce PSGMII PHY interface mode") e9dc861c8b ("net: Use SMP threads for backlog NAPI.") 83b5f0253b1ef352 e9dc861c8b3c291826d6cc1a867 ---------------- --------------------------- %stddev %change %stddev \ | \ 12507317 -10.7% 11173853 cpuidle..usage 23.00 ± 14% +42.0% 32.67 ± 7% perf-c2c.DRAM.local 3.91 ±101% -2.3 1.64 ±149% perf-profile.children.cycles-pp.asm_sysvec_apic_timer_interrupt 116234 -17.5% 95851 phoronix-test-suite.netperf.localhost.UDPRequestResponse.10Seconds.transaction_rate_per_second 237948 +67.3% 398178 vmstat.system.cs 0.22 -0.1 0.10 mpstat.cpu.all.soft% 0.53 +0.1 0.63 mpstat.cpu.all.sys% 20688 +7.4% 22214 proc-vmstat.nr_kernel_stack 53103 +1.4% 53861 proc-vmstat.nr_slab_unreclaimable 1991060 ± 8% +55.7% 3100058 turbostat.C1 0.14 ± 6% +0.2 0.31 ± 4% turbostat.C1% 0.29 ± 4% +0.1 0.42 ± 3% turbostat.C1E% 5063449 ± 4% -46.3% 2720011 ± 2% turbostat.POLL 0.26 ± 4% -0.1 0.17 ± 2% turbostat.POLL% 114.60 +1.6% 116.47 turbostat.PkgWatt 48.25 ± 4% -4.8% 45.93 ± 2% perf-stat.i.MPKI 7.498e+08 ± 2% +8.2% 8.113e+08 perf-stat.i.branch-instructions 85554181 -4.4% 81810261 perf-stat.i.cache-references 255667 ± 2% +66.2% 425026 perf-stat.i.context-switches 3.23 ± 3% -4.4% 3.09 perf-stat.i.cpi 106.09 +172.8% 289.40 ± 22% perf-stat.i.cpu-migrations 3590 -7.0% 3340 ± 2% perf-stat.i.cycles-between-cache-misses 0.47 ± 5% -0.1 0.42 ± 2% perf-stat.i.dTLB-load-miss-rate% 1930027 ± 2% -11.0% 1717629 ± 3% perf-stat.i.dTLB-load-misses 9.746e+08 ± 2% +7.7% 1.05e+09 perf-stat.i.dTLB-loads 0.08 ± 7% -0.0 0.07 ± 2% perf-stat.i.dTLB-store-miss-rate% 172760 ± 4% -11.6% 152755 perf-stat.i.dTLB-store-misses 5.334e+08 +7.8% 5.749e+08 perf-stat.i.dTLB-stores 81.38 -7.8 73.60 perf-stat.i.iTLB-load-miss-rate% 4442067 ± 2% -34.2% 2922023 perf-stat.i.iTLB-load-misses 869196 ± 6% +32.5% 1151689 ± 2% perf-stat.i.iTLB-loads 3.764e+09 ± 2% +6.7% 4.014e+09 perf-stat.i.instructions 1237 ± 5% +26.3% 1563 ± 2% perf-stat.i.instructions-per-iTLB-miss 0.49 ± 2% +8.8% 0.53 perf-stat.i.ipc 23.38 ± 2% +7.9% 25.24 perf-stat.i.metric.M/sec 120711 ± 5% +29.5% 156269 ± 14% perf-stat.i.node-load-misses 22.77 ± 3% -10.4% 20.40 ± 2% perf-stat.overall.MPKI 3.25 ± 2% -0.2 3.04 perf-stat.overall.branch-miss-rate% 2.86 ± 2% +0.2 3.07 ± 3% perf-stat.overall.cache-miss-rate% 1.91 ± 2% -7.9% 1.75 perf-stat.overall.cpi 2928 ± 2% -4.2% 2804 ± 2% perf-stat.overall.cycles-between-cache-misses 0.20 ± 4% -0.0 0.16 ± 3% perf-stat.overall.dTLB-load-miss-rate% 0.03 ± 4% -0.0 0.03 perf-stat.overall.dTLB-store-miss-rate% 83.63 -11.9 71.73 perf-stat.overall.iTLB-load-miss-rate% 847.76 ± 2% +62.0% 1373 perf-stat.overall.instructions-per-iTLB-miss 0.52 +8.6% 0.57 perf-stat.overall.ipc 7.356e+08 ± 2% +8.2% 7.957e+08 perf-stat.ps.branch-instructions 84014375 -4.4% 80324771 perf-stat.ps.cache-references 250660 ± 2% +66.3% 416753 perf-stat.ps.context-switches 7.033e+09 -1.8% 6.906e+09 perf-stat.ps.cpu-cycles 104.17 +172.6% 283.93 ± 22% perf-stat.ps.cpu-migrations 1896175 ± 2% -11.0% 1687140 ± 3% perf-stat.ps.dTLB-load-misses 9.562e+08 ± 2% +7.7% 1.03e+09 perf-stat.ps.dTLB-loads 169740 ± 4% -11.6% 150033 perf-stat.ps.dTLB-store-misses 5.232e+08 +7.8% 5.639e+08 perf-stat.ps.dTLB-stores 4356522 ± 2% -34.2% 2866282 perf-stat.ps.iTLB-load-misses 852611 ± 6% +32.5% 1129564 ± 2% perf-stat.ps.iTLB-loads 3.693e+09 ± 2% +6.6% 3.937e+09 perf-stat.ps.instructions 118546 ± 5% +29.4% 153343 ± 14% perf-stat.ps.node-load-misses 2.069e+11 +5.0% 2.173e+11 perf-stat.total.instructions *************************************************************************************************** lkp-csl-d02: 36 threads 1 sockets Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz (Cascade Lake) with 128G memory ========================================================================================= class/compiler/cpufreq_governor/disk/fs/kconfig/nr_threads/rootfs/tbox_group/test/testcase/testtime: os/gcc-12/performance/1HDD/ext4/x86_64-rhel-8.3/1/debian-11.1-x86_64-20220510.cgz/lkp-csl-d02/udp/stress-ng/60s commit: 83b5f0253b ("net: phy: Introduce PSGMII PHY interface mode") e9dc861c8b ("net: Use SMP threads for backlog NAPI.") 83b5f0253b1ef352 e9dc861c8b3c291826d6cc1a867 ---------------- --------------------------- %stddev %change %stddev \ | \ 12790365 ± 2% +32.0% 16887592 ± 3% cpuidle..usage 4.74 -8.6% 4.33 iostat.cpu.system 17.33 ± 19% -45.2% 9.50 ± 28% perf-c2c.DRAM.local 1.15 ± 2% -1.1 0.07 mpstat.cpu.all.soft% 3.06 ± 2% +0.6 3.71 mpstat.cpu.all.sys% 0.47 ± 9% +0.1 0.55 mpstat.cpu.all.usr% 3451432 +12.0% 3864232 vmstat.memory.cache 412424 ± 3% +198.2% 1230008 vmstat.system.cs 93962 ± 6% +21.0% 113707 ± 4% vmstat.system.in 19785 ± 5% +1026.7% 222913 ± 5% turbostat.C1 0.06 ± 9% +0.1 0.12 ± 6% turbostat.C1% 6268454 ± 6% +19.8% 7509215 ± 3% turbostat.IRQ 9630603 ± 3% +40.8% 13558028 ± 4% turbostat.POLL 0.25 ± 4% +0.2 0.46 turbostat.POLL% 3347 ± 4% +6.5e+05% 21761039 stress-ng.time.involuntary_context_switches 121.33 -21.4% 95.33 stress-ng.time.percent_of_cpu_this_job_got 71.34 -22.6% 55.23 stress-ng.time.system_time 12757669 +40.4% 17909736 ± 2% stress-ng.time.voluntary_context_switches 36420509 -40.3% 21760688 stress-ng.udp.ops 607006 -40.3% 362677 stress-ng.udp.ops_per_sec 471964 +81.1% 854856 meminfo.Active 453420 +85.0% 838688 meminfo.Active(anon) 3355258 +12.2% 3764944 meminfo.Cached 1009405 +41.2% 1425669 meminfo.Committed_AS 57926 +19.5% 69211 ± 2% meminfo.Mapped 4156253 +9.9% 4569409 meminfo.Memused 502429 +82.5% 916869 meminfo.Shmem 113354 +85.0% 209672 proc-vmstat.nr_active_anon 842826 +12.2% 945267 proc-vmstat.nr_file_pages 87951 +8.9% 95743 proc-vmstat.nr_inactive_anon 8798 +6.2% 9348 proc-vmstat.nr_kernel_stack 14481 +19.5% 17312 ± 2% proc-vmstat.nr_mapped 125608 +82.5% 229221 proc-vmstat.nr_shmem 113354 +85.0% 209672 proc-vmstat.nr_zone_active_anon 87951 +8.9% 95743 proc-vmstat.nr_zone_inactive_anon 1222387 -22.1% 952448 proc-vmstat.numa_hit 1220389 -22.0% 952356 proc-vmstat.numa_local 172618 +61.8% 279233 ± 3% proc-vmstat.pgactivate 2049577 -32.9% 1375385 proc-vmstat.pgalloc_normal 228482 +10.4% 252349 proc-vmstat.pgfault 1847715 -44.3% 1029148 proc-vmstat.pgfree 0.00 ± 27% -68.8% 0.00 ± 44% perf-sched.sch_delay.avg.ms.do_task_dead.do_exit.do_group_exit.__x64_sys_exit_group.do_syscall_64 0.01 ± 41% -74.5% 0.00 perf-sched.sch_delay.avg.ms.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 0.00 -58.3% 0.00 ± 44% perf-sched.sch_delay.avg.ms.wait_for_partner.fifo_open.do_dentry_open.do_open 0.00 ±223% +900.0% 0.00 ± 33% perf-sched.sch_delay.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_exc_page_fault 0.00 ± 48% +130.4% 0.01 ± 13% perf-sched.sch_delay.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_reschedule_ipi 0.71 ± 2% -51.3% 0.35 ± 4% perf-sched.total_wait_and_delay.average.ms 648341 +176.4% 1792232 perf-sched.total_wait_and_delay.count.ms 0.71 ± 2% -51.5% 0.35 ± 4% perf-sched.total_wait_time.average.ms 273.60 ± 7% -34.3% 179.63 ± 28% perf-sched.wait_and_delay.avg.ms.do_task_dead.do_exit.do_group_exit.__x64_sys_exit_group.do_syscall_64 49.49 -43.6% 27.89 ± 3% perf-sched.wait_and_delay.avg.ms.schedule_hrtimeout_range_clock.do_poll.constprop.0.do_sys_poll 0.00 +200.0% 0.01 perf-sched.wait_and_delay.avg.ms.schedule_timeout.__skb_wait_for_more_packets.__skb_recv_udp.udp_recvmsg 303.03 ± 4% -99.8% 0.64 ± 4% perf-sched.wait_and_delay.avg.ms.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 474.17 ± 3% +18.8% 563.18 ± 5% perf-sched.wait_and_delay.avg.ms.worker_thread.kthread.ret_from_fork.ret_from_fork_asm 1.50 ± 74% +322.2% 6.33 ± 23% perf-sched.wait_and_delay.count.__cond_resched.__alloc_pages.__folio_alloc.vma_alloc_folio.shmem_alloc_folio 2.67 ± 63% +731.2% 22.17 ± 14% perf-sched.wait_and_delay.count.__cond_resched.generic_perform_write.generic_file_write_iter.vfs_write.ksys_write 1.00 ± 81% +666.7% 7.67 ± 32% perf-sched.wait_and_delay.count.__cond_resched.mutex_lock.perf_poll.do_poll.constprop 337.67 +62.6% 549.17 ± 2% perf-sched.wait_and_delay.count.schedule_hrtimeout_range_clock.do_poll.constprop.0.do_sys_poll 734.00 ± 3% +77846.9% 572130 perf-sched.wait_and_delay.count.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 1491 ± 32% -33.0% 1000 perf-sched.wait_and_delay.max.ms.do_task_dead.do_exit.do_group_exit.__x64_sys_exit_group.do_syscall_64 0.08 ± 44% -94.7% 0.00 ± 17% perf-sched.wait_time.avg.ms.__cond_resched.aa_sk_perm.security_socket_sendmsg.sock_sendmsg.__sys_sendto 0.07 ± 28% -87.0% 0.01 ± 15% perf-sched.wait_time.avg.ms.__cond_resched.kmem_cache_alloc_node.__alloc_skb.alloc_skb_with_frags.sock_alloc_send_pskb 273.60 ± 7% -34.3% 179.63 ± 28% perf-sched.wait_time.avg.ms.do_task_dead.do_exit.do_group_exit.__x64_sys_exit_group.do_syscall_64 0.00 ±223% +15780.0% 0.13 ± 26% perf-sched.wait_time.avg.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_exc_page_fault 0.09 ± 42% +2947.0% 2.74 ± 19% perf-sched.wait_time.avg.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_apic_timer_interrupt 0.08 ± 81% +72717.2% 56.43 ± 69% perf-sched.wait_time.avg.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_reschedule_ipi 0.07 ± 30% -92.0% 0.01 ± 44% perf-sched.wait_time.avg.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64 49.49 -43.6% 27.89 ± 3% perf-sched.wait_time.avg.ms.schedule_hrtimeout_range_clock.do_poll.constprop.0.do_sys_poll 0.00 +150.0% 0.01 perf-sched.wait_time.avg.ms.schedule_timeout.__skb_wait_for_more_packets.__skb_recv_udp.udp_recvmsg 0.32 ± 3% -34.2% 0.21 ± 14% perf-sched.wait_time.avg.ms.schedule_timeout.__wait_for_common.wait_for_completion_state.kernel_clone 303.02 ± 4% -99.8% 0.63 ± 4% perf-sched.wait_time.avg.ms.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 0.00 ±223% +1300.0% 0.00 ± 20% perf-sched.wait_time.avg.ms.wait_for_partner.fifo_open.do_dentry_open.do_open 474.16 ± 3% +18.8% 563.18 ± 5% perf-sched.wait_time.avg.ms.worker_thread.kthread.ret_from_fork.ret_from_fork_asm 0.26 ± 25% -97.0% 0.01 ± 80% perf-sched.wait_time.max.ms.__cond_resched.aa_sk_perm.security_socket_sendmsg.sock_sendmsg.__sys_sendto 0.44 ± 55% -91.1% 0.04 ± 76% perf-sched.wait_time.max.ms.__cond_resched.kmem_cache_alloc_node.__alloc_skb.alloc_skb_with_frags.sock_alloc_send_pskb 1491 ± 32% -33.0% 1000.00 perf-sched.wait_time.max.ms.do_task_dead.do_exit.do_group_exit.__x64_sys_exit_group.do_syscall_64 0.00 ±223% +73360.0% 0.61 ± 6% perf-sched.wait_time.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_exc_page_fault 0.28 ± 35% +6429.9% 18.23 ± 14% perf-sched.wait_time.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_apic_timer_interrupt 0.24 ±113% +4.2e+05% 1000 perf-sched.wait_time.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_reschedule_ipi 3.43 ±180% +19504.1% 672.98 ± 68% perf-sched.wait_time.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64 1.548e+09 ± 2% +18.9% 1.84e+09 perf-stat.i.branch-instructions 22847886 ± 4% +6.2% 24254832 perf-stat.i.branch-misses 2.69 ± 6% +0.4 3.06 ± 3% perf-stat.i.cache-miss-rate% 77034877 ± 3% -5.8% 72570665 perf-stat.i.cache-references 431302 ± 3% +199.0% 1289755 perf-stat.i.context-switches 8.536e+09 +4.6% 8.93e+09 perf-stat.i.cpu-cycles 99.38 +247.5% 345.39 ± 4% perf-stat.i.cpu-migrations 14408 ± 11% +133.1% 33584 ± 11% perf-stat.i.cycles-between-cache-misses 2.218e+09 +11.8% 2.481e+09 perf-stat.i.dTLB-loads 1.366e+09 ± 2% +8.2% 1.477e+09 perf-stat.i.dTLB-stores 91.20 -1.8 89.40 perf-stat.i.iTLB-load-miss-rate% 11898638 -33.9% 7865700 perf-stat.i.iTLB-load-misses 998370 ± 7% -15.0% 848296 ± 7% perf-stat.i.iTLB-loads 8.146e+09 ± 2% +12.6% 9.171e+09 perf-stat.i.instructions 848.55 ± 4% +55.5% 1319 perf-stat.i.instructions-per-iTLB-miss 0.95 +8.1% 1.02 perf-stat.i.ipc 0.31 ± 44% -84.8% 0.05 ± 82% perf-stat.i.major-faults 0.24 +4.6% 0.25 perf-stat.i.metric.GHz 144.65 ± 2% +12.7% 163.06 perf-stat.i.metric.M/sec 2104 ± 2% +19.6% 2516 perf-stat.i.minor-faults 221343 ± 3% -18.6% 180275 ± 2% perf-stat.i.node-stores 2104 ± 2% +19.6% 2516 perf-stat.i.page-faults 9.46 ± 2% -16.3% 7.91 ± 2% perf-stat.overall.MPKI 1.48 ± 3% -0.2 1.32 perf-stat.overall.branch-miss-rate% 2.26 ± 4% +0.2 2.50 ± 3% perf-stat.overall.cache-miss-rate% 1.05 -7.1% 0.97 perf-stat.overall.cpi 92.26 -2.0 90.27 perf-stat.overall.iTLB-load-miss-rate% 684.71 +70.3% 1166 perf-stat.overall.instructions-per-iTLB-miss 0.95 +7.6% 1.03 perf-stat.overall.ipc 1.524e+09 ± 2% +18.9% 1.811e+09 perf-stat.ps.branch-instructions 22493006 ± 4% +6.1% 23874609 perf-stat.ps.branch-misses 75835384 ± 3% -5.8% 71429667 perf-stat.ps.cache-references 424565 ± 3% +199.0% 1269435 perf-stat.ps.context-switches 8.403e+09 +4.6% 8.79e+09 perf-stat.ps.cpu-cycles 97.83 +247.5% 339.96 ± 4% perf-stat.ps.cpu-migrations 2.184e+09 +11.8% 2.442e+09 perf-stat.ps.dTLB-loads 1.345e+09 +8.1% 1.454e+09 perf-stat.ps.dTLB-stores 11713146 -33.9% 7742064 perf-stat.ps.iTLB-load-misses 982805 ± 7% -15.0% 834974 ± 7% perf-stat.ps.iTLB-loads 8.019e+09 ± 2% +12.6% 9.027e+09 perf-stat.ps.instructions 0.31 ± 44% -84.8% 0.05 ± 82% perf-stat.ps.major-faults 2071 ± 2% +19.6% 2477 perf-stat.ps.minor-faults 217934 ± 3% -18.5% 177518 ± 2% perf-stat.ps.node-stores 2072 ± 2% +19.6% 2477 perf-stat.ps.page-faults 5.177e+11 +11.4% 5.769e+11 perf-stat.total.instructions 32.52 ± 6% -20.3 12.19 ± 2% perf-profile.calltrace.cycles-pp.__x64_sys_sendto.do_syscall_64.entry_SYSCALL_64_after_hwframe.sendto 32.28 ± 6% -20.2 12.05 ± 2% perf-profile.calltrace.cycles-pp.__sys_sendto.__x64_sys_sendto.do_syscall_64.entry_SYSCALL_64_after_hwframe.sendto 30.73 ± 6% -19.6 11.12 ± 2% perf-profile.calltrace.cycles-pp.sock_sendmsg.__sys_sendto.__x64_sys_sendto.do_syscall_64.entry_SYSCALL_64_after_hwframe 30.02 ± 6% -19.2 10.82 ± 2% perf-profile.calltrace.cycles-pp.udp_sendmsg.sock_sendmsg.__sys_sendto.__x64_sys_sendto.do_syscall_64 33.44 ± 6% -17.6 15.84 ± 2% perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.sendto 33.10 ± 6% -17.5 15.60 ± 2% perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.sendto 34.40 ± 6% -16.8 17.62 ± 2% perf-profile.calltrace.cycles-pp.sendto 14.33 ± 6% -14.3 0.00 perf-profile.calltrace.cycles-pp.__local_bh_enable_ip.__dev_queue_xmit.ip_finish_output2.ip_send_skb.udp_send_skb 14.25 ± 6% -14.2 0.00 perf-profile.calltrace.cycles-pp.do_softirq.__local_bh_enable_ip.__dev_queue_xmit.ip_finish_output2.ip_send_skb 18.23 ± 6% -14.2 4.02 ± 3% perf-profile.calltrace.cycles-pp.udp_send_skb.udp_sendmsg.sock_sendmsg.__sys_sendto.__x64_sys_sendto 14.11 ± 6% -14.1 0.00 perf-profile.calltrace.cycles-pp.__do_softirq.do_softirq.__local_bh_enable_ip.__dev_queue_xmit.ip_finish_output2 17.78 ± 6% -13.9 3.85 ± 4% perf-profile.calltrace.cycles-pp.ip_send_skb.udp_send_skb.udp_sendmsg.sock_sendmsg.__sys_sendto 16.84 ± 6% -13.4 3.39 ± 4% perf-profile.calltrace.cycles-pp.ip_finish_output2.ip_send_skb.udp_send_skb.udp_sendmsg.sock_sendmsg 16.36 ± 6% -13.2 3.19 ± 4% perf-profile.calltrace.cycles-pp.__dev_queue_xmit.ip_finish_output2.ip_send_skb.udp_send_skb.udp_sendmsg 13.08 ± 7% -13.1 0.00 perf-profile.calltrace.cycles-pp.net_rx_action.__do_softirq.do_softirq.__local_bh_enable_ip.__dev_queue_xmit 12.78 ± 7% -12.8 0.00 perf-profile.calltrace.cycles-pp.__napi_poll.net_rx_action.__do_softirq.do_softirq.__local_bh_enable_ip 12.74 ± 7% -12.7 0.00 perf-profile.calltrace.cycles-pp.process_backlog.__napi_poll.net_rx_action.__do_softirq.do_softirq 11.96 ± 6% -12.0 0.00 perf-profile.calltrace.cycles-pp.__netif_receive_skb_one_core.process_backlog.__napi_poll.net_rx_action.__do_softirq 11.06 ± 6% -11.1 0.00 perf-profile.calltrace.cycles-pp.ip_local_deliver_finish.__netif_receive_skb_one_core.process_backlog.__napi_poll.net_rx_action 8.47 ± 6% -3.4 5.02 perf-profile.calltrace.cycles-pp.ip_make_skb.udp_sendmsg.sock_sendmsg.__sys_sendto.__x64_sys_sendto 5.81 ± 7% -2.4 3.37 ± 2% perf-profile.calltrace.cycles-pp.__ip_append_data.ip_make_skb.udp_sendmsg.sock_sendmsg.__sys_sendto 10.99 ± 6% -2.4 8.57 ± 5% perf-profile.calltrace.cycles-pp.ip_protocol_deliver_rcu.ip_local_deliver_finish.__netif_receive_skb_one_core.process_backlog.__napi_poll 10.64 ± 6% -2.2 8.41 ± 4% perf-profile.calltrace.cycles-pp.__udp4_lib_rcv.ip_protocol_deliver_rcu.ip_local_deliver_finish.__netif_receive_skb_one_core.process_backlog 4.35 ± 10% -2.0 2.37 ± 6% perf-profile.calltrace.cycles-pp.ioctl 9.63 ± 6% -1.8 7.87 ± 4% perf-profile.calltrace.cycles-pp.udp_unicast_rcv_skb.__udp4_lib_rcv.ip_protocol_deliver_rcu.ip_local_deliver_finish.__netif_receive_skb_one_core 3.48 ± 10% -1.7 1.82 ± 4% perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.ioctl 3.37 ± 9% -1.6 1.75 ± 5% perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.ioctl 9.38 ± 7% -1.6 7.78 ± 4% perf-profile.calltrace.cycles-pp.udp_queue_rcv_one_skb.udp_unicast_rcv_skb.__udp4_lib_rcv.ip_protocol_deliver_rcu.ip_local_deliver_finish 3.19 ± 10% -1.6 1.63 ± 4% perf-profile.calltrace.cycles-pp.__x64_sys_ioctl.do_syscall_64.entry_SYSCALL_64_after_hwframe.ioctl 1.83 ± 12% -1.6 0.27 ±100% perf-profile.calltrace.cycles-pp.sk_ioctl.inet_ioctl.sock_do_ioctl.sock_ioctl.do_vfs_ioctl 2.23 ± 12% -1.4 0.78 ± 9% perf-profile.calltrace.cycles-pp.sock_do_ioctl.sock_ioctl.do_vfs_ioctl.__x64_sys_ioctl.do_syscall_64 2.84 ± 11% -1.4 1.42 ± 6% perf-profile.calltrace.cycles-pp.do_vfs_ioctl.__x64_sys_ioctl.do_syscall_64.entry_SYSCALL_64_after_hwframe.ioctl 2.10 ± 12% -1.4 0.71 ± 10% perf-profile.calltrace.cycles-pp.inet_ioctl.sock_do_ioctl.sock_ioctl.do_vfs_ioctl.__x64_sys_ioctl 2.45 ± 12% -1.4 1.08 ± 26% perf-profile.calltrace.cycles-pp.sock_ioctl.do_vfs_ioctl.__x64_sys_ioctl.do_syscall_64.entry_SYSCALL_64_after_hwframe 3.02 ± 8% -1.3 1.76 ± 4% perf-profile.calltrace.cycles-pp.sock_alloc_send_pskb.__ip_append_data.ip_make_skb.udp_sendmsg.sock_sendmsg 1.58 ± 13% -1.0 0.62 ± 10% perf-profile.calltrace.cycles-pp.udp_rmem_release.__skb_recv_udp.udp_recvmsg.inet_recvmsg.sock_recvmsg 2.24 ± 5% -1.0 1.29 ± 5% perf-profile.calltrace.cycles-pp.ip_generic_getfrag.__ip_append_data.ip_make_skb.udp_sendmsg.sock_sendmsg 2.89 ± 7% -0.9 1.96 ± 6% perf-profile.calltrace.cycles-pp._copy_to_iter.udp_recvmsg.inet_recvmsg.sock_recvmsg.__sys_recvfrom 2.70 ± 7% -0.9 1.80 ± 6% perf-profile.calltrace.cycles-pp.copyout._copy_to_iter.udp_recvmsg.inet_recvmsg.sock_recvmsg 1.97 ± 4% -0.9 1.08 ± 4% perf-profile.calltrace.cycles-pp.ip_route_output_flow.udp_sendmsg.sock_sendmsg.__sys_sendto.__x64_sys_sendto 2.35 ± 7% -0.9 1.47 ± 3% perf-profile.calltrace.cycles-pp.__ip_make_skb.ip_make_skb.udp_sendmsg.sock_sendmsg.__sys_sendto 7.34 ± 7% -0.8 6.49 ± 4% perf-profile.calltrace.cycles-pp.__udp_enqueue_schedule_skb.udp_queue_rcv_one_skb.udp_unicast_rcv_skb.__udp4_lib_rcv.ip_protocol_deliver_rcu 2.58 ± 7% -0.8 1.74 ± 7% perf-profile.calltrace.cycles-pp.rep_movs_alternative.copyout._copy_to_iter.udp_recvmsg.inet_recvmsg 1.87 ± 7% -0.8 1.07 ± 6% perf-profile.calltrace.cycles-pp.alloc_skb_with_frags.sock_alloc_send_pskb.__ip_append_data.ip_make_skb.udp_sendmsg 1.67 ± 5% -0.8 0.92 ± 3% perf-profile.calltrace.cycles-pp.__mkroute_output.ip_route_output_flow.udp_sendmsg.sock_sendmsg.__sys_sendto 1.78 ± 7% -0.8 1.03 ± 5% perf-profile.calltrace.cycles-pp.__alloc_skb.alloc_skb_with_frags.sock_alloc_send_pskb.__ip_append_data.ip_make_skb 3.44 ± 10% -0.7 2.76 ± 5% perf-profile.calltrace.cycles-pp.asm_sysvec_apic_timer_interrupt.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle 1.76 ± 8% -0.6 1.10 ± 2% perf-profile.calltrace.cycles-pp.__ip_select_ident.__ip_make_skb.ip_make_skb.udp_sendmsg.sock_sendmsg 3.19 ± 10% -0.6 2.54 ± 5% perf-profile.calltrace.cycles-pp.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call 1.43 ± 6% -0.6 0.80 ± 7% perf-profile.calltrace.cycles-pp.__check_object_size.ip_generic_getfrag.__ip_append_data.ip_make_skb.udp_sendmsg 1.07 ± 11% -0.6 0.46 ± 71% perf-profile.calltrace.cycles-pp.__irq_exit_rcu.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.cpuidle_enter_state.cpuidle_enter 1.02 ± 11% -0.6 0.42 ± 72% perf-profile.calltrace.cycles-pp.__do_softirq.__irq_exit_rcu.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.cpuidle_enter_state 1.07 ± 7% -0.6 0.49 ± 45% perf-profile.calltrace.cycles-pp.check_heap_object.__check_object_size.ip_generic_getfrag.__ip_append_data.ip_make_skb 1.54 ± 7% -0.6 0.98 ± 9% perf-profile.calltrace.cycles-pp.__consume_stateless_skb.udp_recvmsg.inet_recvmsg.sock_recvmsg.__sys_recvfrom 1.51 ± 7% -0.5 0.97 ± 9% perf-profile.calltrace.cycles-pp.skb_release_data.__consume_stateless_skb.udp_recvmsg.inet_recvmsg.sock_recvmsg 1.02 ± 11% -0.4 0.61 ± 6% perf-profile.calltrace.cycles-pp.skb_set_owner_w.sock_alloc_send_pskb.__ip_append_data.ip_make_skb.udp_sendmsg 1.10 ± 8% -0.4 0.70 ± 9% perf-profile.calltrace.cycles-pp.__slab_free.skb_release_data.__consume_stateless_skb.udp_recvmsg.inet_recvmsg 0.98 ± 8% -0.4 0.60 ± 12% perf-profile.calltrace.cycles-pp.ipv4_pktinfo_prepare.udp_queue_rcv_one_skb.udp_unicast_rcv_skb.__udp4_lib_rcv.ip_protocol_deliver_rcu 0.85 ± 9% -0.2 0.61 ± 8% perf-profile.calltrace.cycles-pp.move_addr_to_user.__sys_recvfrom.__x64_sys_recvfrom.do_syscall_64.entry_SYSCALL_64_after_hwframe 0.74 ± 13% +0.2 0.92 ± 9% perf-profile.calltrace.cycles-pp.enqueue_entity.enqueue_task_fair.activate_task.ttwu_do_activate.sched_ttwu_pending 0.73 ± 15% +0.2 0.98 ± 12% perf-profile.calltrace.cycles-pp.asm_sysvec_call_function_single.poll_idle.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call 0.48 ± 47% +0.3 0.75 ± 14% perf-profile.calltrace.cycles-pp.sysvec_call_function_single.asm_sysvec_call_function_single.poll_idle.cpuidle_enter_state.cpuidle_enter 0.96 ± 12% +0.3 1.28 ± 8% perf-profile.calltrace.cycles-pp.enqueue_task_fair.activate_task.ttwu_do_activate.sched_ttwu_pending.__flush_smp_call_function_queue 1.06 ± 12% +0.3 1.39 ± 8% perf-profile.calltrace.cycles-pp.ttwu_do_activate.sched_ttwu_pending.__flush_smp_call_function_queue.flush_smp_call_function_queue.do_idle 0.99 ± 12% +0.3 1.33 ± 8% perf-profile.calltrace.cycles-pp.activate_task.ttwu_do_activate.sched_ttwu_pending.__flush_smp_call_function_queue.flush_smp_call_function_queue 0.18 ±141% +0.4 0.56 ± 4% perf-profile.calltrace.cycles-pp._raw_spin_lock_irqsave.__wake_up_common_lock.sock_def_readable.__udp_enqueue_schedule_skb.udp_queue_rcv_one_skb 0.19 ±142% +0.5 0.65 ± 14% perf-profile.calltrace.cycles-pp.__sysvec_call_function_single.sysvec_call_function_single.asm_sysvec_call_function_single.poll_idle.cpuidle_enter_state 1.43 ± 7% +0.5 1.90 ± 6% perf-profile.calltrace.cycles-pp.__schedule.schedule_idle.do_idle.cpu_startup_entry.start_secondary 1.52 ± 8% +0.5 2.00 ± 6% perf-profile.calltrace.cycles-pp.schedule_idle.do_idle.cpu_startup_entry.start_secondary.secondary_startup_64_no_verify 0.10 ±223% +0.5 0.64 ± 15% perf-profile.calltrace.cycles-pp.__flush_smp_call_function_queue.__sysvec_call_function_single.sysvec_call_function_single.asm_sysvec_call_function_single.poll_idle 1.00 ± 9% +0.5 1.54 ± 5% perf-profile.calltrace.cycles-pp.dequeue_entity.dequeue_task_fair.__schedule.schedule.schedule_timeout 1.76 ± 11% +0.6 2.34 ± 13% perf-profile.calltrace.cycles-pp.sched_ttwu_pending.__flush_smp_call_function_queue.flush_smp_call_function_queue.do_idle.cpu_startup_entry 0.00 +0.6 0.59 ± 6% perf-profile.calltrace.cycles-pp.enqueue_entity.enqueue_task_fair.activate_task.ttwu_do_activate.try_to_wake_up 0.00 +0.6 0.60 ± 5% perf-profile.calltrace.cycles-pp.set_next_entity.pick_next_task_fair.__schedule.schedule.smpboot_thread_fn 1.14 ± 9% +0.6 1.75 ± 5% perf-profile.calltrace.cycles-pp.dequeue_task_fair.__schedule.schedule.schedule_timeout.__skb_wait_for_more_packets 2.36 ± 10% +0.7 3.02 ± 9% perf-profile.calltrace.cycles-pp.__flush_smp_call_function_queue.flush_smp_call_function_queue.do_idle.cpu_startup_entry.start_secondary 0.00 +0.7 0.69 ± 7% perf-profile.calltrace.cycles-pp.dequeue_task_fair.__schedule.schedule.smpboot_thread_fn.kthread 2.58 ± 10% +0.7 3.32 ± 9% perf-profile.calltrace.cycles-pp.flush_smp_call_function_queue.do_idle.cpu_startup_entry.start_secondary.secondary_startup_64_no_verify 0.00 +0.8 0.79 ± 7% perf-profile.calltrace.cycles-pp.__switch_to_asm 0.00 +0.8 0.81 ± 7% perf-profile.calltrace.cycles-pp.put_prev_entity.pick_next_task_fair.__schedule.schedule.exit_to_user_mode_loop 0.00 +0.8 0.84 ± 7% perf-profile.calltrace.cycles-pp.enqueue_task_fair.activate_task.ttwu_do_activate.try_to_wake_up.enqueue_to_backlog 0.00 +0.9 0.86 ± 7% perf-profile.calltrace.cycles-pp.update_sg_lb_stats.update_sd_lb_stats.find_busiest_group.load_balance.newidle_balance 0.00 +0.9 0.88 ± 7% perf-profile.calltrace.cycles-pp.activate_task.ttwu_do_activate.try_to_wake_up.enqueue_to_backlog.netif_rx_internal 0.00 +0.9 0.92 ± 6% perf-profile.calltrace.cycles-pp.update_sd_lb_stats.find_busiest_group.load_balance.newidle_balance.pick_next_task_fair 0.00 +0.9 0.94 ± 6% perf-profile.calltrace.cycles-pp.find_busiest_group.load_balance.newidle_balance.pick_next_task_fair.__schedule 0.00 +0.9 0.94 ± 4% perf-profile.calltrace.cycles-pp.pick_next_task_fair.__schedule.schedule.smpboot_thread_fn.kthread 0.00 +1.1 1.06 ± 7% perf-profile.calltrace.cycles-pp.load_balance.newidle_balance.pick_next_task_fair.__schedule.schedule 0.65 ± 10% +1.1 1.72 ± 2% perf-profile.calltrace.cycles-pp.clock_nanosleep 0.47 ± 45% +1.2 1.63 ± 2% perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.clock_nanosleep 0.48 ± 45% +1.2 1.64 ± 2% perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.clock_nanosleep 0.00 +1.2 1.19 ± 6% perf-profile.calltrace.cycles-pp.newidle_balance.pick_next_task_fair.__schedule.schedule.do_nanosleep 0.00 +1.2 1.20 ± 6% perf-profile.calltrace.cycles-pp.pick_next_task_fair.__schedule.schedule.do_nanosleep.hrtimer_nanosleep 0.37 ± 71% +1.3 1.62 ± 2% perf-profile.calltrace.cycles-pp.__x64_sys_clock_nanosleep.do_syscall_64.entry_SYSCALL_64_after_hwframe.clock_nanosleep 2.29 ± 7% +1.3 3.57 ± 5% perf-profile.calltrace.cycles-pp.__schedule.schedule.schedule_timeout.__skb_wait_for_more_packets.__skb_recv_udp 0.00 +1.3 1.29 ± 5% perf-profile.calltrace.cycles-pp.pick_next_task_fair.__schedule.schedule.exit_to_user_mode_loop.exit_to_user_mode_prepare 0.27 ±100% +1.3 1.59 ± 2% perf-profile.calltrace.cycles-pp.common_nsleep.__x64_sys_clock_nanosleep.do_syscall_64.entry_SYSCALL_64_after_hwframe.clock_nanosleep 0.27 ±100% +1.3 1.59 ± 2% perf-profile.calltrace.cycles-pp.hrtimer_nanosleep.common_nsleep.__x64_sys_clock_nanosleep.do_syscall_64.entry_SYSCALL_64_after_hwframe 0.00 +1.3 1.32 ± 5% perf-profile.calltrace.cycles-pp.ttwu_do_activate.try_to_wake_up.enqueue_to_backlog.netif_rx_internal.__netif_rx 2.37 ± 8% +1.4 3.72 ± 5% perf-profile.calltrace.cycles-pp.schedule.schedule_timeout.__skb_wait_for_more_packets.__skb_recv_udp.udp_recvmsg 0.00 +1.4 1.43 ± 3% perf-profile.calltrace.cycles-pp.__schedule.schedule.do_nanosleep.hrtimer_nanosleep.common_nsleep 0.00 +1.4 1.44 ± 3% perf-profile.calltrace.cycles-pp.schedule.do_nanosleep.hrtimer_nanosleep.common_nsleep.__x64_sys_clock_nanosleep 0.09 ±223% +1.5 1.57 ± 3% perf-profile.calltrace.cycles-pp.do_nanosleep.hrtimer_nanosleep.common_nsleep.__x64_sys_clock_nanosleep.do_syscall_64 1.19 ± 8% +1.5 2.68 ± 3% perf-profile.calltrace.cycles-pp.dev_hard_start_xmit.__dev_queue_xmit.ip_finish_output2.ip_send_skb.udp_send_skb 1.06 ± 7% +1.5 2.60 ± 3% perf-profile.calltrace.cycles-pp.loopback_xmit.dev_hard_start_xmit.__dev_queue_xmit.ip_finish_output2.ip_send_skb 2.82 ± 6% +1.6 4.39 ± 5% perf-profile.calltrace.cycles-pp.schedule_timeout.__skb_wait_for_more_packets.__skb_recv_udp.udp_recvmsg.inet_recvmsg 4.30 ± 7% +1.9 6.15 ± 4% perf-profile.calltrace.cycles-pp.__skb_wait_for_more_packets.__skb_recv_udp.udp_recvmsg.inet_recvmsg.sock_recvmsg 0.00 +2.0 1.95 ± 4% perf-profile.calltrace.cycles-pp.try_to_wake_up.enqueue_to_backlog.netif_rx_internal.__netif_rx.loopback_xmit 0.00 +2.2 2.17 ± 3% perf-profile.calltrace.cycles-pp.enqueue_to_backlog.netif_rx_internal.__netif_rx.loopback_xmit.dev_hard_start_xmit 0.00 +2.2 2.19 ± 3% perf-profile.calltrace.cycles-pp.netif_rx_internal.__netif_rx.loopback_xmit.dev_hard_start_xmit.__dev_queue_xmit 0.00 +2.2 2.20 ± 3% perf-profile.calltrace.cycles-pp.__netif_rx.loopback_xmit.dev_hard_start_xmit.__dev_queue_xmit.ip_finish_output2 32.32 ± 2% +2.3 34.61 ± 2% perf-profile.calltrace.cycles-pp.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle.cpu_startup_entry 0.00 +2.5 2.45 ± 3% perf-profile.calltrace.cycles-pp.__schedule.schedule.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode 0.00 +2.6 2.55 ± 3% perf-profile.calltrace.cycles-pp.schedule.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64 3.23 ± 10% +2.6 5.82 ± 7% perf-profile.calltrace.cycles-pp.poll_idle.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle 0.00 +2.7 2.72 ± 3% perf-profile.calltrace.cycles-pp.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe 0.00 +3.0 3.00 ± 3% perf-profile.calltrace.cycles-pp.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe.sendto 0.00 +3.0 3.04 ± 4% perf-profile.calltrace.cycles-pp.__schedule.schedule.smpboot_thread_fn.kthread.ret_from_fork 0.00 +3.2 3.16 ± 3% perf-profile.calltrace.cycles-pp.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe.sendto 0.00 +3.2 3.20 ± 4% perf-profile.calltrace.cycles-pp.schedule.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 28.90 ± 6% +3.4 32.30 ± 5% perf-profile.calltrace.cycles-pp.cpuidle_enter.cpuidle_idle_call.do_idle.cpu_startup_entry.start_secondary 40.00 ± 2% +4.9 44.94 perf-profile.calltrace.cycles-pp.secondary_startup_64_no_verify 35.98 ± 5% +5.3 41.24 ± 5% perf-profile.calltrace.cycles-pp.do_idle.cpu_startup_entry.start_secondary.secondary_startup_64_no_verify 36.05 ± 5% +5.3 41.34 ± 5% perf-profile.calltrace.cycles-pp.cpu_startup_entry.start_secondary.secondary_startup_64_no_verify 36.06 ± 5% +5.3 41.36 ± 5% perf-profile.calltrace.cycles-pp.start_secondary.secondary_startup_64_no_verify 0.00 +8.6 8.61 ± 4% perf-profile.calltrace.cycles-pp.ip_local_deliver_finish.__netif_receive_skb_one_core.process_backlog.__napi_poll.napi_threaded_poll_loop 0.00 +9.1 9.13 ± 4% perf-profile.calltrace.cycles-pp.__netif_receive_skb_one_core.process_backlog.__napi_poll.napi_threaded_poll_loop.smpboot_thread_fn 0.00 +9.6 9.60 ± 4% perf-profile.calltrace.cycles-pp.process_backlog.__napi_poll.napi_threaded_poll_loop.smpboot_thread_fn.kthread 0.00 +9.6 9.63 ± 4% perf-profile.calltrace.cycles-pp.__napi_poll.napi_threaded_poll_loop.smpboot_thread_fn.kthread.ret_from_fork 0.00 +9.8 9.84 ± 4% perf-profile.calltrace.cycles-pp.napi_threaded_poll_loop.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 0.00 +14.1 14.09 ± 4% perf-profile.calltrace.cycles-pp.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 0.00 +14.2 14.16 ± 3% perf-profile.calltrace.cycles-pp.ret_from_fork_asm 0.00 +14.2 14.16 ± 3% perf-profile.calltrace.cycles-pp.ret_from_fork.ret_from_fork_asm 0.00 +14.2 14.16 ± 3% perf-profile.calltrace.cycles-pp.kthread.ret_from_fork.ret_from_fork_asm 32.55 ± 6% -20.4 12.20 ± 2% perf-profile.children.cycles-pp.__x64_sys_sendto 32.31 ± 6% -20.3 12.06 ± 2% perf-profile.children.cycles-pp.__sys_sendto 54.70 -20.2 34.52 perf-profile.children.cycles-pp.entry_SYSCALL_64_after_hwframe 54.00 -20.0 34.04 perf-profile.children.cycles-pp.do_syscall_64 30.75 ± 6% -19.6 11.13 ± 2% perf-profile.children.cycles-pp.sock_sendmsg 30.07 ± 6% -19.2 10.83 ± 2% perf-profile.children.cycles-pp.udp_sendmsg 34.63 ± 6% -16.9 17.77 ± 2% perf-profile.children.cycles-pp.sendto 15.74 ± 5% -14.6 1.10 ± 10% perf-profile.children.cycles-pp.__do_softirq 14.47 ± 6% -14.3 0.17 ± 29% perf-profile.children.cycles-pp.__local_bh_enable_ip 14.26 ± 6% -14.3 0.01 ±223% perf-profile.children.cycles-pp.do_softirq 18.24 ± 6% -14.2 4.03 ± 3% perf-profile.children.cycles-pp.udp_send_skb 17.80 ± 6% -13.9 3.86 ± 4% perf-profile.children.cycles-pp.ip_send_skb 16.84 ± 6% -13.5 3.39 ± 4% perf-profile.children.cycles-pp.ip_finish_output2 16.38 ± 6% -13.2 3.20 ± 4% perf-profile.children.cycles-pp.__dev_queue_xmit 13.10 ± 7% -13.1 0.00 perf-profile.children.cycles-pp.net_rx_action 8.49 ± 6% -3.5 5.03 perf-profile.children.cycles-pp.ip_make_skb 12.78 ± 7% -3.1 9.64 ± 4% perf-profile.children.cycles-pp.__napi_poll 12.74 ± 7% -3.1 9.61 ± 4% perf-profile.children.cycles-pp.process_backlog 11.98 ± 6% -2.8 9.14 ± 4% perf-profile.children.cycles-pp.__netif_receive_skb_one_core 11.06 ± 6% -2.5 8.61 ± 4% perf-profile.children.cycles-pp.ip_local_deliver_finish 5.82 ± 6% -2.4 3.37 ± 2% perf-profile.children.cycles-pp.__ip_append_data 11.00 ± 6% -2.4 8.58 ± 5% perf-profile.children.cycles-pp.ip_protocol_deliver_rcu 10.66 ± 6% -2.2 8.42 ± 5% perf-profile.children.cycles-pp.__udp4_lib_rcv 4.58 ± 10% -2.1 2.53 ± 6% perf-profile.children.cycles-pp.ioctl 9.64 ± 6% -1.8 7.88 ± 4% perf-profile.children.cycles-pp.udp_unicast_rcv_skb 9.42 ± 7% -1.6 7.80 ± 4% perf-profile.children.cycles-pp.udp_queue_rcv_one_skb 3.19 ± 10% -1.6 1.63 ± 4% perf-profile.children.cycles-pp.__x64_sys_ioctl 2.26 ± 12% -1.4 0.81 ± 9% perf-profile.children.cycles-pp.sock_do_ioctl 2.84 ± 11% -1.4 1.42 ± 6% perf-profile.children.cycles-pp.do_vfs_ioctl 2.13 ± 12% -1.4 0.72 ± 10% perf-profile.children.cycles-pp.inet_ioctl 2.49 ± 11% -1.4 1.10 ± 25% perf-profile.children.cycles-pp.sock_ioctl 1.85 ± 12% -1.3 0.52 ± 9% perf-profile.children.cycles-pp.sk_ioctl 3.03 ± 8% -1.3 1.76 ± 5% perf-profile.children.cycles-pp.sock_alloc_send_pskb 1.53 ± 11% -1.2 0.35 ± 13% perf-profile.children.cycles-pp.udp_ioctl 1.48 ± 11% -1.2 0.31 ± 14% perf-profile.children.cycles-pp.first_packet_length 3.86 ± 8% -1.1 2.73 ± 5% perf-profile.children.cycles-pp.sysvec_apic_timer_interrupt 4.14 ± 8% -1.1 3.03 ± 5% perf-profile.children.cycles-pp.asm_sysvec_apic_timer_interrupt 3.11 ± 6% -1.0 2.08 ± 5% perf-profile.children.cycles-pp.rep_movs_alternative 1.58 ± 13% -1.0 0.62 ± 10% perf-profile.children.cycles-pp.udp_rmem_release 2.25 ± 6% -1.0 1.30 ± 5% perf-profile.children.cycles-pp.ip_generic_getfrag 2.90 ± 7% -0.9 1.96 ± 6% perf-profile.children.cycles-pp._copy_to_iter 2.78 ± 7% -0.9 1.85 ± 7% perf-profile.children.cycles-pp.copyout 2.38 ± 7% -0.9 1.50 ± 3% perf-profile.children.cycles-pp.__ip_make_skb 1.98 ± 4% -0.9 1.09 ± 4% perf-profile.children.cycles-pp.ip_route_output_flow 2.05 ± 5% -0.9 1.18 ± 6% perf-profile.children.cycles-pp.__check_object_size 1.62 ± 6% -0.9 0.75 ± 14% perf-profile.children.cycles-pp.__irq_exit_rcu 7.35 ± 7% -0.9 6.49 ± 4% perf-profile.children.cycles-pp.__udp_enqueue_schedule_skb 2.10 ± 7% -0.8 1.28 ± 9% perf-profile.children.cycles-pp.__slab_free 1.88 ± 7% -0.8 1.07 ± 6% perf-profile.children.cycles-pp.alloc_skb_with_frags 1.56 ± 6% -0.8 0.77 ± 8% perf-profile.children.cycles-pp.rcu_do_batch 1.48 ± 6% -0.8 0.72 ± 8% perf-profile.children.cycles-pp.dst_destroy 1.59 ± 7% -0.8 0.84 ± 8% perf-profile.children.cycles-pp.rcu_core 1.79 ± 8% -0.8 1.04 ± 5% perf-profile.children.cycles-pp.__alloc_skb 1.67 ± 5% -0.8 0.92 ± 3% perf-profile.children.cycles-pp.__mkroute_output 1.76 ± 8% -0.7 1.11 ± 3% perf-profile.children.cycles-pp.__ip_select_ident 1.28 ± 6% -0.6 0.69 ± 7% perf-profile.children.cycles-pp.check_heap_object 1.54 ± 7% -0.6 0.98 ± 9% perf-profile.children.cycles-pp.__consume_stateless_skb 1.51 ± 7% -0.5 0.97 ± 9% perf-profile.children.cycles-pp.skb_release_data 0.62 ± 4% -0.5 0.14 ± 11% perf-profile.children.cycles-pp.irqtime_account_irq 1.40 ± 8% -0.4 0.97 ± 11% perf-profile.children.cycles-pp.__entry_text_start 1.02 ± 11% -0.4 0.61 ± 6% perf-profile.children.cycles-pp.skb_set_owner_w 1.23 ± 11% -0.4 0.82 ± 9% perf-profile.children.cycles-pp._raw_spin_lock_bh 0.99 ± 8% -0.4 0.60 ± 11% perf-profile.children.cycles-pp.ipv4_pktinfo_prepare 0.84 ± 7% -0.4 0.47 ± 7% perf-profile.children.cycles-pp.rt_dst_alloc 0.72 ± 10% -0.4 0.35 ± 15% perf-profile.children.cycles-pp.__udp4_lib_lookup 0.82 ± 14% -0.4 0.47 ± 11% perf-profile.children.cycles-pp.kmalloc_reserve 0.76 ± 7% -0.3 0.43 ± 7% perf-profile.children.cycles-pp.dst_alloc 0.74 ± 10% -0.3 0.45 ± 6% perf-profile.children.cycles-pp._copy_from_iter 0.34 ± 20% -0.3 0.05 ± 51% perf-profile.children.cycles-pp.__first_packet_length 0.56 ± 10% -0.3 0.28 ± 11% perf-profile.children.cycles-pp.kmem_cache_alloc 0.77 ± 8% -0.3 0.49 ± 6% perf-profile.children.cycles-pp.entry_SYSRETQ_unsafe_stack 0.65 ± 14% -0.3 0.39 ± 9% perf-profile.children.cycles-pp.stress_udp_client 0.67 ± 3% -0.3 0.40 ± 4% perf-profile.children.cycles-pp.kmem_cache_alloc_node 0.49 ± 11% -0.2 0.25 ± 18% perf-profile.children.cycles-pp.udp4_lib_lookup2 0.63 ± 9% -0.2 0.39 ± 6% perf-profile.children.cycles-pp.copyin 0.86 ± 9% -0.2 0.62 ± 9% perf-profile.children.cycles-pp.move_addr_to_user 0.54 ± 5% -0.2 0.30 ± 7% perf-profile.children.cycles-pp.rt_set_nexthop 0.51 ± 9% -0.2 0.28 ± 7% perf-profile.children.cycles-pp.ip_rcv 0.53 ± 8% -0.2 0.30 ± 23% perf-profile.children.cycles-pp.aa_sk_perm 0.52 ± 18% -0.2 0.30 ± 14% perf-profile.children.cycles-pp.__kmalloc_node_track_caller 0.40 ± 7% -0.2 0.18 ± 10% perf-profile.children.cycles-pp.ipv4_dst_destroy 0.51 ± 12% -0.2 0.30 ± 8% perf-profile.children.cycles-pp.move_addr_to_kernel 0.44 ± 13% -0.2 0.23 ± 14% perf-profile.children.cycles-pp.dst_release 0.42 ± 9% -0.2 0.22 ± 12% perf-profile.children.cycles-pp.___slab_alloc 0.45 ± 20% -0.2 0.26 ± 16% perf-profile.children.cycles-pp.__kmem_cache_alloc_node 0.46 ± 10% -0.2 0.26 ± 13% perf-profile.children.cycles-pp.validate_xmit_skb 0.33 ± 6% -0.2 0.15 ± 28% perf-profile.children.cycles-pp.security_socket_sendmsg 0.55 ± 8% -0.2 0.37 ± 10% perf-profile.children.cycles-pp.__call_rcu_common 0.38 ± 8% -0.2 0.20 ± 10% perf-profile.children.cycles-pp.sock_wfree 0.48 ± 12% -0.2 0.31 ± 13% perf-profile.children.cycles-pp.__fget_light 0.40 ± 12% -0.2 0.23 ± 11% perf-profile.children.cycles-pp._copy_from_user 0.35 ± 13% -0.2 0.19 ± 9% perf-profile.children.cycles-pp.kmem_cache_free 0.43 ± 7% -0.2 0.27 ± 10% perf-profile.children.cycles-pp.__check_heap_object 0.36 ± 16% -0.2 0.20 ± 22% perf-profile.children.cycles-pp.native_queued_spin_lock_slowpath 0.26 ± 20% -0.2 0.12 ± 54% perf-profile.children.cycles-pp.compute_score 0.36 ± 17% -0.1 0.22 ± 13% perf-profile.children.cycles-pp.security_socket_recvmsg 0.32 ± 17% -0.1 0.18 ± 14% perf-profile.children.cycles-pp.ip_output 0.40 ± 10% -0.1 0.27 ± 9% perf-profile.children.cycles-pp.syscall_return_via_sysret 0.38 ± 14% -0.1 0.26 ± 13% perf-profile.children.cycles-pp.sockfd_lookup_light 0.26 ± 11% -0.1 0.14 ± 12% perf-profile.children.cycles-pp.__ip_local_out 0.16 ± 9% -0.1 0.04 ± 75% perf-profile.children.cycles-pp.allocate_slab 0.28 ± 18% -0.1 0.17 ± 14% perf-profile.children.cycles-pp.netif_skb_features 0.23 ± 18% -0.1 0.12 ± 23% perf-profile.children.cycles-pp.rcuref_put_slowpath 0.29 ± 9% -0.1 0.18 ± 17% perf-profile.children.cycles-pp.siphash_3u32 0.24 ± 10% -0.1 0.14 ± 11% perf-profile.children.cycles-pp.ip_rcv_core 0.32 ± 12% -0.1 0.22 ± 6% perf-profile.children.cycles-pp.__list_del_entry_valid 0.21 ± 17% -0.1 0.12 ± 10% perf-profile.children.cycles-pp.__put_user_4 0.18 ± 25% -0.1 0.09 ± 9% perf-profile.children.cycles-pp.sk_filter_trim_cap 0.22 ± 10% -0.1 0.13 ± 18% perf-profile.children.cycles-pp.__cond_resched 0.28 ± 9% -0.1 0.19 ± 12% perf-profile.children.cycles-pp.__netif_receive_skb_core 0.19 ± 18% -0.1 0.11 ± 8% perf-profile.children.cycles-pp.ip_rcv_finish_core 0.18 ± 11% -0.1 0.10 ± 12% perf-profile.children.cycles-pp.entry_SYSCALL_64_safe_stack 0.23 ± 13% -0.1 0.16 ± 14% perf-profile.children.cycles-pp._copy_to_user 0.18 ± 12% -0.1 0.10 ± 16% perf-profile.children.cycles-pp.ip_send_check 0.20 ± 8% -0.1 0.13 ± 24% perf-profile.children.cycles-pp.__get_user_4 0.10 ± 13% -0.1 0.03 ±100% perf-profile.children.cycles-pp.ip_route_output_key_hash_rcu 0.21 ± 15% -0.1 0.14 ± 19% perf-profile.children.cycles-pp.__put_user_nocheck_4 0.18 ± 15% -0.1 0.11 ± 26% perf-profile.children.cycles-pp.__virt_addr_valid 0.13 ± 20% -0.1 0.06 ± 46% perf-profile.children.cycles-pp.xfrm_lookup_route 0.11 ± 32% -0.1 0.05 ± 46% perf-profile.children.cycles-pp.memcg_slab_post_alloc_hook 0.15 ± 13% -0.1 0.08 ± 14% perf-profile.children.cycles-pp.ipv4_mtu 0.14 ± 15% -0.1 0.08 ± 17% perf-profile.children.cycles-pp.ip_setup_cork 0.14 ± 27% -0.1 0.08 ± 8% perf-profile.children.cycles-pp.syscall_enter_from_user_mode 0.08 ± 33% -0.1 0.03 ±100% perf-profile.children.cycles-pp.udp4_hwcsum 0.08 ± 23% -0.1 0.03 ±100% perf-profile.children.cycles-pp.__build_skb_around 0.20 ± 8% -0.1 0.14 ± 17% perf-profile.children.cycles-pp.percpu_counter_add_batch 0.10 ± 26% -0.1 0.05 ± 47% perf-profile.children.cycles-pp.xfrm_lookup_with_ifid 0.14 ± 15% -0.1 0.08 ± 25% perf-profile.children.cycles-pp.rcu_all_qs 0.12 ± 18% -0.1 0.07 ± 22% perf-profile.children.cycles-pp.import_single_range 0.16 ± 16% -0.1 0.11 ± 9% perf-profile.children.cycles-pp.udp4_csum_init 0.08 ± 12% -0.1 0.03 ±100% perf-profile.children.cycles-pp.nf_hook_slow 0.14 ± 9% -0.1 0.09 ± 10% perf-profile.children.cycles-pp.__ip_finish_output 0.14 ± 18% -0.1 0.08 ± 16% perf-profile.children.cycles-pp.syscall_exit_to_user_mode_prepare 0.09 ± 17% -0.1 0.04 ± 73% perf-profile.children.cycles-pp.kmalloc_slab 0.17 ± 17% +0.0 0.22 ± 6% perf-profile.children.cycles-pp.local_clock_noinstr 0.00 +0.1 0.05 ± 13% perf-profile.children.cycles-pp.__update_blocked_fair 0.48 ± 4% +0.1 0.54 ± 6% perf-profile.children.cycles-pp.ktime_get 0.06 ± 51% +0.1 0.12 ± 19% perf-profile.children.cycles-pp.rcu_note_context_switch 0.18 ± 11% +0.1 0.24 ± 8% perf-profile.children.cycles-pp.reweight_entity 0.00 +0.1 0.06 ± 11% perf-profile.children.cycles-pp.perf_exclude_event 0.02 ±141% +0.1 0.08 ± 14% perf-profile.children.cycles-pp.rb_next 0.09 ± 17% +0.1 0.16 ± 25% perf-profile.children.cycles-pp.__list_add_valid 0.06 ± 48% +0.1 0.13 ± 17% perf-profile.children.cycles-pp.update_blocked_averages 0.07 ± 19% +0.1 0.14 ± 19% perf-profile.children.cycles-pp.nr_iowait_cpu 0.00 +0.1 0.07 ± 21% perf-profile.children.cycles-pp.rb_insert_color 0.04 ± 73% +0.1 0.13 ± 8% perf-profile.children.cycles-pp.check_spread 0.00 +0.1 0.08 ± 29% perf-profile.children.cycles-pp.clear_buddies 0.13 ± 17% +0.1 0.22 ± 12% perf-profile.children.cycles-pp.place_entity 0.00 +0.1 0.09 ± 19% perf-profile.children.cycles-pp.intel_idle_irq 0.00 +0.1 0.09 ± 10% perf-profile.children.cycles-pp.check_cfs_rq_runtime 0.00 +0.1 0.09 ± 5% perf-profile.children.cycles-pp._find_next_and_bit 0.02 ±141% +0.1 0.13 ± 18% perf-profile.children.cycles-pp.rb_erase 0.24 ± 15% +0.1 0.36 ± 11% perf-profile.children.cycles-pp.tick_nohz_idle_enter 0.22 ± 12% +0.1 0.34 ± 12% perf-profile.children.cycles-pp.update_cfs_group 0.05 ± 47% +0.1 0.17 ± 22% perf-profile.children.cycles-pp.update_min_vruntime 0.00 +0.1 0.12 ± 22% perf-profile.children.cycles-pp.backlog_napi_should_run 0.00 +0.1 0.12 ± 22% perf-profile.children.cycles-pp.idle_cpu 0.34 ± 9% +0.1 0.48 ± 6% perf-profile.children.cycles-pp.llist_reverse_order 0.00 +0.1 0.14 ± 16% perf-profile.children.cycles-pp.resched_curr 0.12 ± 6% +0.1 0.26 ± 12% perf-profile.children.cycles-pp.__calc_delta 0.17 ± 14% +0.1 0.32 ± 5% perf-profile.children.cycles-pp.switch_fpu_return 0.61 ± 10% +0.2 0.76 ± 6% perf-profile.children.cycles-pp.select_task_rq 0.06 ± 46% +0.2 0.21 ± 9% perf-profile.children.cycles-pp.pick_next_entity 0.09 ± 22% +0.2 0.26 ± 8% perf-profile.children.cycles-pp.switch_mm_irqs_off 0.10 ± 15% +0.2 0.28 ± 11% perf-profile.children.cycles-pp.__rdgsbase_inactive 0.00 +0.2 0.18 ± 12% perf-profile.children.cycles-pp.cpu_util 0.17 ± 6% +0.2 0.35 ± 8% perf-profile.children.cycles-pp.update_rq_clock_task 1.31 ± 6% +0.2 1.50 ± 4% perf-profile.children.cycles-pp.menu_select 0.00 +0.2 0.21 ± 22% perf-profile.children.cycles-pp.cpuacct_charge 0.21 ± 14% +0.3 0.46 ± 8% perf-profile.children.cycles-pp.available_idle_cpu 0.16 ± 19% +0.3 0.50 ± 8% perf-profile.children.cycles-pp.__wrgsbase_inactive 0.00 +0.4 0.35 ± 10% perf-profile.children.cycles-pp.check_preempt_wakeup 0.35 ± 8% +0.4 0.72 ± 16% perf-profile.children.cycles-pp.nohz_run_idle_balance 0.06 ± 55% +0.4 0.43 ± 15% perf-profile.children.cycles-pp.run_ksoftirqd 0.19 ± 15% +0.4 0.57 ± 6% perf-profile.children.cycles-pp.os_xsave 1.53 ± 4% +0.4 1.92 perf-profile.children.cycles-pp._raw_spin_lock_irqsave 0.62 ± 17% +0.4 1.05 ± 15% perf-profile.children.cycles-pp.__sysvec_call_function_single 0.20 ± 21% +0.4 0.64 ± 13% perf-profile.children.cycles-pp.finish_task_switch 0.06 ± 47% +0.4 0.51 ± 13% perf-profile.children.cycles-pp.check_preempt_curr 0.00 +0.5 0.47 ± 10% perf-profile.children.cycles-pp.wake_affine 0.72 ± 18% +0.5 1.21 ± 15% perf-profile.children.cycles-pp.sysvec_call_function_single 0.42 ± 10% +0.5 0.93 ± 6% perf-profile.children.cycles-pp.update_rq_clock 0.30 ± 11% +0.5 0.85 ± 6% perf-profile.children.cycles-pp.___perf_sw_event 0.40 ± 11% +0.6 1.01 ± 5% perf-profile.children.cycles-pp.__update_load_avg_cfs_rq 0.36 ± 14% +0.6 0.97 ± 5% perf-profile.children.cycles-pp.__update_load_avg_se 0.97 ± 18% +0.6 1.62 ± 14% perf-profile.children.cycles-pp.asm_sysvec_call_function_single 1.58 ± 6% +0.7 2.25 ± 5% perf-profile.children.cycles-pp.schedule_idle 0.42 ± 5% +0.7 1.16 ± 4% perf-profile.children.cycles-pp.prepare_task_switch 0.39 ± 8% +0.8 1.22 ± 7% perf-profile.children.cycles-pp.update_curr 0.09 ± 19% +0.9 0.99 ± 6% perf-profile.children.cycles-pp.put_prev_entity 0.62 ± 15% +0.9 1.56 ± 7% perf-profile.children.cycles-pp.__switch_to 0.08 ± 80% +0.9 1.02 ± 5% perf-profile.children.cycles-pp.update_sg_lb_stats 1.06 ± 6% +1.0 2.04 ± 2% perf-profile.children.cycles-pp.enqueue_entity 2.31 ± 9% +1.0 3.31 ± 5% perf-profile.children.cycles-pp.sched_ttwu_pending 0.12 ± 44% +1.0 1.12 ± 5% perf-profile.children.cycles-pp.update_sd_lb_stats 0.29 ± 16% +1.0 1.30 ± 3% perf-profile.children.cycles-pp.set_next_entity 0.13 ± 41% +1.0 1.14 ± 5% perf-profile.children.cycles-pp.find_busiest_group 2.70 ± 11% +1.0 3.71 ± 6% perf-profile.children.cycles-pp.flush_smp_call_function_queue 0.57 ± 9% +1.0 1.62 ± 3% perf-profile.children.cycles-pp.__switch_to_asm 0.66 ± 11% +1.1 1.74 ± 2% perf-profile.children.cycles-pp.clock_nanosleep 0.48 ± 12% +1.1 1.59 ± 2% perf-profile.children.cycles-pp.hrtimer_nanosleep 0.50 ± 12% +1.1 1.60 ± 2% perf-profile.children.cycles-pp.common_nsleep 1.14 ± 9% +1.1 2.25 ± 3% perf-profile.children.cycles-pp.dequeue_entity 0.52 ± 11% +1.1 1.62 ± 2% perf-profile.children.cycles-pp.__x64_sys_clock_nanosleep 0.46 ± 13% +1.1 1.57 ± 3% perf-profile.children.cycles-pp.do_nanosleep 0.17 ± 35% +1.1 1.31 ± 7% perf-profile.children.cycles-pp.load_balance 1.29 ± 9% +1.3 2.59 ± 2% perf-profile.children.cycles-pp.dequeue_task_fair 0.10 ± 23% +1.3 1.43 ± 4% perf-profile.children.cycles-pp.newidle_balance 3.08 ± 8% +1.3 4.40 ± 4% perf-profile.children.cycles-pp.__flush_smp_call_function_queue 1.35 ± 7% +1.5 2.82 perf-profile.children.cycles-pp.enqueue_task_fair 1.20 ± 8% +1.5 2.68 ± 3% perf-profile.children.cycles-pp.dev_hard_start_xmit 1.09 ± 8% +1.5 2.61 ± 3% perf-profile.children.cycles-pp.loopback_xmit 1.38 ± 7% +1.5 2.92 perf-profile.children.cycles-pp.activate_task 2.92 ± 7% +1.6 4.54 ± 5% perf-profile.children.cycles-pp.schedule_timeout 1.02 ± 10% +1.8 2.81 perf-profile.children.cycles-pp.update_load_avg 0.38 ± 9% +1.8 2.20 ± 4% perf-profile.children.cycles-pp.__netif_rx 0.37 ± 11% +1.8 2.19 ± 3% perf-profile.children.cycles-pp.netif_rx_internal 0.34 ± 9% +1.8 2.17 ± 3% perf-profile.children.cycles-pp.enqueue_to_backlog 4.30 ± 7% +1.9 6.16 ± 4% perf-profile.children.cycles-pp.__skb_wait_for_more_packets 1.49 ± 8% +2.0 3.53 ± 2% perf-profile.children.cycles-pp.ttwu_do_activate 32.57 ± 2% +2.3 34.84 ± 2% perf-profile.children.cycles-pp.cpuidle_enter 32.55 ± 2% +2.3 34.82 ± 2% perf-profile.children.cycles-pp.cpuidle_enter_state 34.42 ± 2% +2.5 36.94 ± 2% perf-profile.children.cycles-pp.cpuidle_idle_call 3.54 ± 10% +2.6 6.09 ± 3% perf-profile.children.cycles-pp.try_to_wake_up 3.59 ± 8% +2.6 6.24 ± 6% perf-profile.children.cycles-pp.poll_idle 0.00 +2.7 2.73 ± 3% perf-profile.children.cycles-pp.exit_to_user_mode_loop 0.67 ± 7% +2.9 3.58 perf-profile.children.cycles-pp.syscall_exit_to_user_mode 0.32 ± 9% +3.0 3.32 ± 2% perf-profile.children.cycles-pp.exit_to_user_mode_prepare 0.63 ± 7% +3.7 4.37 perf-profile.children.cycles-pp.pick_next_task_fair 39.95 ± 2% +4.9 44.84 perf-profile.children.cycles-pp.do_idle 40.00 ± 2% +4.9 44.94 perf-profile.children.cycles-pp.secondary_startup_64_no_verify 40.00 ± 2% +4.9 44.94 perf-profile.children.cycles-pp.cpu_startup_entry 36.06 ± 5% +5.3 41.36 ± 5% perf-profile.children.cycles-pp.start_secondary 2.72 ± 8% +8.3 10.98 perf-profile.children.cycles-pp.schedule 4.13 ± 7% +8.6 12.74 perf-profile.children.cycles-pp.__schedule 0.00 +9.8 9.85 ± 4% perf-profile.children.cycles-pp.napi_threaded_poll_loop 0.13 ± 23% +14.0 14.16 ± 3% perf-profile.children.cycles-pp.kthread 0.13 ± 21% +14.0 14.16 ± 3% perf-profile.children.cycles-pp.ret_from_fork 0.13 ± 21% +14.0 14.16 ± 3% perf-profile.children.cycles-pp.ret_from_fork_asm 0.07 ± 52% +14.0 14.10 ± 4% perf-profile.children.cycles-pp.smpboot_thread_fn 2.94 ± 6% -1.0 1.98 ± 5% perf-profile.self.cycles-pp.rep_movs_alternative 1.48 ± 12% -0.9 0.61 ± 10% perf-profile.self.cycles-pp.udp_rmem_release 2.10 ± 7% -0.8 1.27 ± 9% perf-profile.self.cycles-pp.__slab_free 1.22 ± 7% -0.6 0.57 ± 5% perf-profile.self.cycles-pp.__udp_enqueue_schedule_skb 1.30 ± 10% -0.6 0.72 ± 11% perf-profile.self.cycles-pp.sock_def_readable 1.17 ± 8% -0.6 0.58 ± 6% perf-profile.self.cycles-pp.udp_sendmsg 1.46 ± 9% -0.5 0.92 ± 2% perf-profile.self.cycles-pp.__ip_select_ident 1.06 ± 7% -0.5 0.57 ± 5% perf-profile.self.cycles-pp.check_heap_object 1.21 ± 11% -0.4 0.81 ± 9% perf-profile.self.cycles-pp._raw_spin_lock_bh 1.00 ± 12% -0.4 0.61 ± 6% perf-profile.self.cycles-pp.skb_set_owner_w 0.41 ± 19% -0.3 0.09 ± 30% perf-profile.self.cycles-pp.first_packet_length 0.34 ± 20% -0.3 0.05 ± 49% perf-profile.self.cycles-pp.__first_packet_length 0.73 ± 7% -0.3 0.46 ± 2% perf-profile.self.cycles-pp.__sys_sendto 0.70 ± 20% -0.3 0.42 ± 20% perf-profile.self.cycles-pp.udp_recvmsg 0.74 ± 9% -0.3 0.48 ± 6% perf-profile.self.cycles-pp.entry_SYSRETQ_unsafe_stack 0.61 ± 17% -0.2 0.37 ± 7% perf-profile.self.cycles-pp.stress_udp_client 0.40 ± 8% -0.2 0.16 ± 18% perf-profile.self.cycles-pp.ip_finish_output2 0.35 ± 9% -0.2 0.13 ± 14% perf-profile.self.cycles-pp.udp_send_skb 0.46 ± 9% -0.2 0.25 ± 25% perf-profile.self.cycles-pp.aa_sk_perm 0.70 ± 3% -0.2 0.49 ± 7% perf-profile.self.cycles-pp.entry_SYSCALL_64_after_hwframe 0.51 ± 6% -0.2 0.30 ± 8% perf-profile.self.cycles-pp.__ip_append_data 0.32 ± 5% -0.2 0.12 ± 19% perf-profile.self.cycles-pp.sock_sendmsg 0.72 ± 15% -0.2 0.54 ± 14% perf-profile.self.cycles-pp.__entry_text_start 0.51 ± 13% -0.2 0.33 ± 12% perf-profile.self.cycles-pp.__ip_make_skb 0.33 ± 6% -0.2 0.16 ± 9% perf-profile.self.cycles-pp.process_backlog 0.37 ± 8% -0.2 0.20 ± 10% perf-profile.self.cycles-pp.sock_wfree 0.47 ± 12% -0.2 0.31 ± 13% perf-profile.self.cycles-pp.__fget_light 0.34 ± 12% -0.2 0.18 ± 10% perf-profile.self.cycles-pp.kmem_cache_free 0.43 ± 7% -0.2 0.27 ± 10% perf-profile.self.cycles-pp.__check_heap_object 0.36 ± 12% -0.2 0.20 ± 12% perf-profile.self.cycles-pp._copy_from_user 0.35 ± 16% -0.2 0.20 ± 22% perf-profile.self.cycles-pp.native_queued_spin_lock_slowpath 0.26 ± 20% -0.2 0.12 ± 54% perf-profile.self.cycles-pp.compute_score 0.39 ± 8% -0.1 0.25 ± 10% perf-profile.self.cycles-pp.kmem_cache_alloc_node 0.31 ± 15% -0.1 0.16 ± 13% perf-profile.self.cycles-pp.kmem_cache_alloc 0.31 ± 24% -0.1 0.17 ± 26% perf-profile.self.cycles-pp.udp_queue_rcv_one_skb 0.30 ± 12% -0.1 0.16 ± 11% perf-profile.self.cycles-pp.__mkroute_output 0.34 ± 15% -0.1 0.20 ± 7% perf-profile.self.cycles-pp.__alloc_skb 0.34 ± 5% -0.1 0.21 ± 13% perf-profile.self.cycles-pp.__call_rcu_common 0.22 ± 13% -0.1 0.09 ± 27% perf-profile.self.cycles-pp.dst_destroy 0.30 ± 10% -0.1 0.18 ± 26% perf-profile.self.cycles-pp.__dev_queue_xmit 0.22 ± 14% -0.1 0.10 ± 24% perf-profile.self.cycles-pp.__udp4_lib_lookup 0.38 ± 11% -0.1 0.26 ± 10% perf-profile.self.cycles-pp.syscall_return_via_sysret 0.27 ± 20% -0.1 0.16 ± 21% perf-profile.self.cycles-pp.__kmem_cache_alloc_node 0.32 ± 13% -0.1 0.22 ± 4% perf-profile.self.cycles-pp.__list_del_entry_valid 0.24 ± 11% -0.1 0.13 ± 13% perf-profile.self.cycles-pp.ip_rcv_core 0.22 ± 20% -0.1 0.12 ± 21% perf-profile.self.cycles-pp.rcuref_put_slowpath 0.65 ± 7% -0.1 0.55 ± 8% perf-profile.self.cycles-pp.__skb_recv_udp 0.29 ± 12% -0.1 0.20 ± 16% perf-profile.self.cycles-pp.sendto 0.23 ± 13% -0.1 0.13 ± 14% perf-profile.self.cycles-pp.copyout 0.27 ± 8% -0.1 0.18 ± 15% perf-profile.self.cycles-pp.siphash_3u32 0.23 ± 14% -0.1 0.14 ± 13% perf-profile.self.cycles-pp.__x64_sys_sendto 0.22 ± 15% -0.1 0.13 ± 25% perf-profile.self.cycles-pp.__check_object_size 0.23 ± 23% -0.1 0.14 ± 15% perf-profile.self.cycles-pp.ip_output 0.26 ± 14% -0.1 0.17 ± 14% perf-profile.self.cycles-pp.copyin 0.21 ± 18% -0.1 0.12 ± 10% perf-profile.self.cycles-pp.__put_user_4 0.27 ± 10% -0.1 0.19 ± 14% perf-profile.self.cycles-pp.__netif_receive_skb_core 0.19 ± 18% -0.1 0.11 ± 8% perf-profile.self.cycles-pp.ip_rcv_finish_core 0.12 ± 33% -0.1 0.04 ± 72% perf-profile.self.cycles-pp.sk_filter_trim_cap 0.18 ± 11% -0.1 0.10 ± 12% perf-profile.self.cycles-pp.entry_SYSCALL_64_safe_stack 0.28 ± 12% -0.1 0.20 ± 20% perf-profile.self.cycles-pp.inet_ioctl 0.16 ± 18% -0.1 0.09 ± 17% perf-profile.self.cycles-pp.__udp4_lib_rcv 0.11 ± 10% -0.1 0.03 ±100% perf-profile.self.cycles-pp.rt_set_nexthop 0.19 ± 13% -0.1 0.11 ± 20% perf-profile.self.cycles-pp.dst_release 0.16 ± 12% -0.1 0.09 ± 12% perf-profile.self.cycles-pp.netif_skb_features 0.23 ± 12% -0.1 0.16 ± 13% perf-profile.self.cycles-pp.___slab_alloc 0.23 ± 18% -0.1 0.15 ± 9% perf-profile.self.cycles-pp.skb_release_data 0.22 ± 11% -0.1 0.14 ± 7% perf-profile.self.cycles-pp.loopback_xmit 0.20 ± 8% -0.1 0.13 ± 25% perf-profile.self.cycles-pp.__get_user_4 0.20 ± 19% -0.1 0.13 ± 13% perf-profile.self.cycles-pp.ip_route_output_flow 0.19 ± 15% -0.1 0.12 ± 11% perf-profile.self.cycles-pp.udp4_lib_lookup2 0.17 ± 17% -0.1 0.10 ± 24% perf-profile.self.cycles-pp.__virt_addr_valid 0.10 ± 9% -0.1 0.03 ±100% perf-profile.self.cycles-pp.ip_protocol_deliver_rcu 0.20 ± 16% -0.1 0.13 ± 17% perf-profile.self.cycles-pp.__local_bh_enable_ip 0.21 ± 12% -0.1 0.14 ± 18% perf-profile.self.cycles-pp.__put_user_nocheck_4 0.17 ± 8% -0.1 0.10 ± 19% perf-profile.self.cycles-pp.ip_send_check 0.16 ± 10% -0.1 0.10 ± 15% perf-profile.self.cycles-pp.validate_xmit_skb 0.15 ± 19% -0.1 0.09 ± 12% perf-profile.self.cycles-pp.ip_make_skb 0.14 ± 11% -0.1 0.07 ± 16% perf-profile.self.cycles-pp.ipv4_mtu 0.10 ± 12% -0.1 0.03 ±100% perf-profile.self.cycles-pp.kmalloc_reserve 0.19 ± 10% -0.1 0.13 ± 21% perf-profile.self.cycles-pp.percpu_counter_add_batch 0.12 ± 24% -0.1 0.06 ± 11% perf-profile.self.cycles-pp.enqueue_to_backlog 0.09 ± 36% -0.1 0.04 ± 73% perf-profile.self.cycles-pp.memcg_slab_post_alloc_hook 0.12 ± 19% -0.1 0.06 ± 49% perf-profile.self.cycles-pp.rcu_all_qs 0.09 ± 24% -0.1 0.04 ± 71% perf-profile.self.cycles-pp.ip_setup_cork 0.08 ± 17% -0.1 0.03 ±100% perf-profile.self.cycles-pp.__build_skb_around 0.10 ± 26% -0.1 0.05 ± 47% perf-profile.self.cycles-pp.xfrm_lookup_with_ifid 0.16 ± 16% -0.0 0.11 ± 9% perf-profile.self.cycles-pp.udp4_csum_init 0.12 ± 18% -0.0 0.07 ± 17% perf-profile.self.cycles-pp.dev_hard_start_xmit 0.12 ± 16% -0.0 0.08 ± 8% perf-profile.self.cycles-pp.sock_do_ioctl 0.13 ± 9% -0.0 0.08 ± 14% perf-profile.self.cycles-pp.sock_alloc_send_pskb 0.10 ± 19% -0.0 0.06 ± 19% perf-profile.self.cycles-pp.import_single_range 0.08 ± 8% -0.0 0.04 ± 73% perf-profile.self.cycles-pp.ip_generic_getfrag 0.11 ± 18% -0.0 0.07 ± 21% perf-profile.self.cycles-pp.__x64_sys_ioctl 0.12 ± 14% -0.0 0.09 ± 18% perf-profile.self.cycles-pp.skb_consume_udp 0.06 ± 51% +0.0 0.11 ± 18% perf-profile.self.cycles-pp.rcu_note_context_switch 0.00 +0.1 0.06 ± 19% perf-profile.self.cycles-pp.tick_nohz_idle_enter 0.18 ± 13% +0.1 0.24 ± 7% perf-profile.self.cycles-pp.reweight_entity 0.08 ± 26% +0.1 0.14 ± 16% perf-profile.self.cycles-pp.newidle_balance 0.02 ±141% +0.1 0.08 ± 16% perf-profile.self.cycles-pp.rb_next 0.08 ± 24% +0.1 0.15 ± 24% perf-profile.self.cycles-pp.__list_add_valid 0.00 +0.1 0.08 ± 22% perf-profile.self.cycles-pp.update_sd_lb_stats 0.00 +0.1 0.08 ± 14% perf-profile.self.cycles-pp.check_cfs_rq_runtime 0.13 ± 18% +0.1 0.20 ± 13% perf-profile.self.cycles-pp.place_entity 0.03 ±102% +0.1 0.11 ± 6% perf-profile.self.cycles-pp.check_spread 0.06 ± 48% +0.1 0.14 ± 17% perf-profile.self.cycles-pp.nr_iowait_cpu 0.00 +0.1 0.08 ± 20% perf-profile.self.cycles-pp.intel_idle_irq 0.06 ± 50% +0.1 0.15 ± 10% perf-profile.self.cycles-pp.select_task_rq 0.00 +0.1 0.08 ± 8% perf-profile.self.cycles-pp.activate_task 0.00 +0.1 0.09 ± 7% perf-profile.self.cycles-pp._find_next_and_bit 0.02 ±142% +0.1 0.11 ± 17% perf-profile.self.cycles-pp.ttwu_do_activate 0.02 ±141% +0.1 0.11 ± 17% perf-profile.self.cycles-pp.check_preempt_curr 0.36 ± 3% +0.1 0.46 ± 12% perf-profile.self.cycles-pp.do_idle 0.21 ± 10% +0.1 0.32 ± 12% perf-profile.self.cycles-pp.update_cfs_group 0.17 ± 10% +0.1 0.28 ± 6% perf-profile.self.cycles-pp.exit_to_user_mode_prepare 0.05 ± 47% +0.1 0.15 ± 25% perf-profile.self.cycles-pp.update_min_vruntime 0.00 +0.1 0.11 ± 13% perf-profile.self.cycles-pp.rb_erase 0.23 ± 13% +0.1 0.34 ± 7% perf-profile.self.cycles-pp.flush_smp_call_function_queue 0.00 +0.1 0.11 ± 24% perf-profile.self.cycles-pp.backlog_napi_should_run 0.00 +0.1 0.12 ± 21% perf-profile.self.cycles-pp.idle_cpu 0.34 ± 9% +0.1 0.48 ± 6% perf-profile.self.cycles-pp.llist_reverse_order 0.12 ± 6% +0.1 0.26 ± 12% perf-profile.self.cycles-pp.__calc_delta 0.00 +0.1 0.14 ± 18% perf-profile.self.cycles-pp.resched_curr 0.05 ± 45% +0.1 0.19 ± 9% perf-profile.self.cycles-pp.pick_next_entity 0.03 ±101% +0.1 0.18 ± 12% perf-profile.self.cycles-pp.put_prev_entity 0.00 +0.2 0.15 ± 7% perf-profile.self.cycles-pp.napi_threaded_poll_loop 0.61 ± 9% +0.2 0.78 ± 4% perf-profile.self.cycles-pp.__skb_wait_for_more_packets 0.00 +0.2 0.16 ± 14% perf-profile.self.cycles-pp.exit_to_user_mode_loop 0.20 ± 12% +0.2 0.37 ± 17% perf-profile.self.cycles-pp.update_rq_clock 0.09 ± 15% +0.2 0.26 ± 9% perf-profile.self.cycles-pp.update_rq_clock_task 0.68 ± 9% +0.2 0.86 ± 14% perf-profile.self.cycles-pp.try_to_wake_up 0.00 +0.2 0.18 ± 12% perf-profile.self.cycles-pp.cpu_util 0.09 ± 22% +0.2 0.26 ± 8% perf-profile.self.cycles-pp.switch_mm_irqs_off 0.12 ± 23% +0.2 0.30 ± 6% perf-profile.self.cycles-pp.switch_fpu_return 0.10 ± 15% +0.2 0.28 ± 11% perf-profile.self.cycles-pp.__rdgsbase_inactive 0.15 ± 7% +0.2 0.33 ± 10% perf-profile.self.cycles-pp.dequeue_task_fair 0.12 ± 14% +0.2 0.30 ± 8% perf-profile.self.cycles-pp.prepare_task_switch 0.43 ± 8% +0.2 0.62 ± 8% perf-profile.self.cycles-pp.__flush_smp_call_function_queue 0.00 +0.2 0.19 ± 13% perf-profile.self.cycles-pp.check_preempt_wakeup 0.37 ± 21% +0.2 0.57 ± 6% perf-profile.self.cycles-pp.ttwu_queue_wakelist 0.07 ± 17% +0.2 0.28 ± 17% perf-profile.self.cycles-pp.set_next_entity 0.00 +0.2 0.21 ± 22% perf-profile.self.cycles-pp.cpuacct_charge 0.16 ± 18% +0.2 0.39 ± 13% perf-profile.self.cycles-pp.dequeue_entity 0.54 ± 10% +0.2 0.78 ± 5% perf-profile.self.cycles-pp.schedule_timeout 0.30 ± 7% +0.2 0.54 ± 13% perf-profile.self.cycles-pp.nohz_run_idle_balance 0.21 ± 14% +0.3 0.46 ± 8% perf-profile.self.cycles-pp.available_idle_cpu 0.11 ± 25% +0.3 0.38 ± 5% perf-profile.self.cycles-pp.pick_next_task_fair 0.09 ± 14% +0.3 0.38 ± 7% perf-profile.self.cycles-pp.schedule 0.22 ± 18% +0.3 0.52 ± 9% perf-profile.self.cycles-pp.enqueue_entity 0.14 ± 15% +0.3 0.45 ± 9% perf-profile.self.cycles-pp.finish_task_switch 0.16 ± 19% +0.3 0.50 ± 8% perf-profile.self.cycles-pp.__wrgsbase_inactive 0.16 ± 17% +0.4 0.52 ± 12% perf-profile.self.cycles-pp.update_curr 0.18 ± 16% +0.4 0.56 ± 6% perf-profile.self.cycles-pp.os_xsave 0.00 +0.4 0.39 ± 7% perf-profile.self.cycles-pp.smpboot_thread_fn 1.35 ± 6% +0.4 1.76 ± 3% perf-profile.self.cycles-pp._raw_spin_lock_irqsave 0.29 ± 15% +0.5 0.74 ± 4% perf-profile.self.cycles-pp.enqueue_task_fair 0.27 ± 13% +0.5 0.76 ± 6% perf-profile.self.cycles-pp.___perf_sw_event 0.27 ± 8% +0.6 0.83 ± 4% perf-profile.self.cycles-pp.update_load_avg 0.40 ± 11% +0.6 1.00 ± 5% perf-profile.self.cycles-pp.__update_load_avg_cfs_rq 0.36 ± 13% +0.6 0.96 ± 5% perf-profile.self.cycles-pp.__update_load_avg_se 0.04 ±104% +0.7 0.70 ± 6% perf-profile.self.cycles-pp.update_sg_lb_stats 0.60 ± 15% +0.9 1.53 ± 7% perf-profile.self.cycles-pp.__switch_to 0.49 ± 12% +1.0 1.49 ± 6% perf-profile.self.cycles-pp.__schedule 0.56 ± 10% +1.0 1.61 ± 3% perf-profile.self.cycles-pp.__switch_to_asm 2.80 ± 11% +2.3 5.11 ± 6% perf-profile.self.cycles-pp.poll_idle *************************************************************************************************** lkp-hsw-d04: 8 threads 1 sockets Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz (Haswell) with 8G memory ========================================================================================= cluster/compiler/cpufreq_governor/kconfig/rootfs/runtime/tbox_group/testcase: cs-localhost/gcc-12/performance/x86_64-rhel-8.3/debian-11.1-x86_64-20220510.cgz/600s/lkp-hsw-d04/qperf commit: 83b5f0253b ("net: phy: Introduce PSGMII PHY interface mode") e9dc861c8b ("net: Use SMP threads for backlog NAPI.") 83b5f0253b1ef352 e9dc861c8b3c291826d6cc1a867 ---------------- --------------------------- %stddev %change %stddev \ | \ 38.66 ± 5% -5.6% 36.47 boot-time.boot 3575 +14.2% 4083 uptime.idle 592566 +20.9% 716486 meminfo.Active 592534 +20.9% 716422 meminfo.Active(anon) 962633 +13.1% 1088738 meminfo.Committed_AS 599330 +20.9% 724793 meminfo.Shmem 70.30 +10.8 81.10 mpstat.cpu.all.idle% 9.87 ± 3% -9.9 0.02 mpstat.cpu.all.iowait% 1.41 +0.2 1.60 mpstat.cpu.all.irq% 3.21 -3.1 0.06 mpstat.cpu.all.soft% 13.42 +1.9 15.34 mpstat.cpu.all.sys% 69.67 +16.3% 81.00 vmstat.cpu.id 9.33 ± 5% -100.0% 0.00 vmstat.cpu.wa 1.00 -100.0% 0.00 vmstat.procs.b 346923 +101.0% 697484 vmstat.system.cs 22035 ± 2% +4.0% 22906 ± 2% vmstat.system.in 5757 ± 2% +11.4% 6412 qperf.sctp.latency 8.812e+09 -10.7% 7.867e+09 qperf.tcp.bw 3817 +17.3% 4478 qperf.tcp.latency 9251 +7.3e+05% 67524707 qperf.time.involuntary_context_switches 57.00 -16.4% 47.67 qperf.time.percent_of_cpu_this_job_got 311.63 -18.7% 253.38 qperf.time.system_time 38933889 -11.7% 34386047 qperf.time.voluntary_context_switches 2944 +11.7% 3289 qperf.udp.latency 1.031e+10 -24.2% 7.813e+09 qperf.udp.recv_bw 1.031e+10 -24.2% 7.813e+09 qperf.udp.send_bw 148133 +20.9% 179105 proc-vmstat.nr_active_anon 104164 -2.9% 101127 proc-vmstat.nr_dirty_background_threshold 208585 -2.9% 202504 proc-vmstat.nr_dirty_threshold 818642 +3.9% 850179 proc-vmstat.nr_file_pages 1076298 -2.8% 1045877 proc-vmstat.nr_free_pages 4474 -3.3% 4325 proc-vmstat.nr_kernel_stack 149842 +20.9% 181203 proc-vmstat.nr_shmem 9672 -3.3% 9354 proc-vmstat.nr_slab_unreclaimable 148133 +20.9% 179105 proc-vmstat.nr_zone_active_anon 74838089 -12.9% 65171973 proc-vmstat.numa_hit 74917869 -13.1% 65109537 proc-vmstat.numa_local 197378 +21.0% 238779 proc-vmstat.pgactivate 7.196e+08 -9.9% 6.481e+08 proc-vmstat.pgalloc_normal 688531 +2.2% 703483 proc-vmstat.pgfault 7.194e+08 -9.9% 6.479e+08 proc-vmstat.pgfree 35496 +2.6% 36415 ± 2% proc-vmstat.pgreuse 11521778 ± 3% +81.6% 20920988 turbostat.C1 1.10 ± 7% +1.4 2.45 turbostat.C1% 845181 ± 3% +13.4% 958085 turbostat.C1E 1.10 ± 3% +0.1 1.23 turbostat.C1E% 550023 ± 2% -64.9% 193246 ± 5% turbostat.C3 9.50 ± 3% -8.7 0.80 ± 4% turbostat.C3% 34350 ± 3% +152.0% 86567 ± 2% turbostat.C6 0.33 ± 4% +0.4 0.77 ± 2% turbostat.C6% 3142398 +14.0% 3583310 turbostat.C7s 63.05 +7.9 70.99 turbostat.C7s% 11.56 ± 4% -93.0% 0.81 ± 7% turbostat.CPU%c3 0.28 ± 7% +17.9% 0.33 ± 2% turbostat.CPU%c6 36.51 +26.8% 46.27 turbostat.CPU%c7 21.04 -1.7% 20.69 turbostat.CorWatt 0.19 +10.5% 0.21 turbostat.IPC 79969004 ± 2% -11.9% 70429254 ± 2% turbostat.POLL 3.15 -0.4 2.75 turbostat.POLL% 1015 ± 88% +526.8% 6363 ± 7% sched_debug.cfs_rq:/.MIN_vruntime.avg 8122 ± 88% +526.8% 50910 ± 7% sched_debug.cfs_rq:/.MIN_vruntime.max 2686 ± 88% +526.8% 16837 ± 7% sched_debug.cfs_rq:/.MIN_vruntime.stddev 1.30 ± 6% +30.2% 1.70 ± 6% sched_debug.cfs_rq:/.h_nr_running.max 0.54 ± 6% +20.6% 0.65 ± 6% sched_debug.cfs_rq:/.h_nr_running.stddev 141566 ± 11% +47.6% 208983 ± 4% sched_debug.cfs_rq:/.load.avg 419639 ± 5% +86.8% 783786 ± 2% sched_debug.cfs_rq:/.load.max 172078 +63.6% 281551 ± 3% sched_debug.cfs_rq:/.load.stddev 157.27 ± 5% +31.4% 206.72 ± 6% sched_debug.cfs_rq:/.load_avg.avg 568.97 ± 4% +14.3% 650.15 ± 4% sched_debug.cfs_rq:/.load_avg.max 10.27 ± 3% +54.3% 15.85 ± 18% sched_debug.cfs_rq:/.load_avg.min 201.87 ± 3% +10.4% 222.90 ± 5% sched_debug.cfs_rq:/.load_avg.stddev 1015 ± 88% +526.8% 6363 ± 7% sched_debug.cfs_rq:/.max_vruntime.avg 8122 ± 88% +526.8% 50910 ± 7% sched_debug.cfs_rq:/.max_vruntime.max 2686 ± 88% +526.8% 16837 ± 7% sched_debug.cfs_rq:/.max_vruntime.stddev 118822 -11.5% 105134 sched_debug.cfs_rq:/.min_vruntime.avg 157741 ± 2% -20.0% 126190 ± 3% sched_debug.cfs_rq:/.min_vruntime.max 22839 ± 9% -47.6% 11957 ± 19% sched_debug.cfs_rq:/.min_vruntime.stddev 0.44 ± 8% +17.4% 0.51 sched_debug.cfs_rq:/.nr_running.avg 1.00 +36.4% 1.36 ± 5% sched_debug.cfs_rq:/.nr_running.max 0.44 ± 4% +20.4% 0.53 ± 4% sched_debug.cfs_rq:/.nr_running.stddev 376.66 +11.8% 421.23 ± 3% sched_debug.cfs_rq:/.runnable_avg.avg 907.15 ± 3% +15.7% 1049 ± 4% sched_debug.cfs_rq:/.runnable_avg.max 52787 ± 35% -45.1% 28955 ± 46% sched_debug.cfs_rq:/.spread0.max 22839 ± 9% -47.6% 11957 ± 19% sched_debug.cfs_rq:/.spread0.stddev 840.12 ± 2% -9.4% 761.42 sched_debug.cfs_rq:/.util_avg.max 310.09 ± 3% -13.4% 268.50 sched_debug.cfs_rq:/.util_avg.stddev 648.39 ± 10% -13.0% 564.21 ± 6% sched_debug.cfs_rq:/.util_est_enqueued.max 621193 ± 3% -10.2% 557626 ± 3% sched_debug.cpu.avg_idle.avg 1384 ± 29% -54.5% 629.33 ± 15% sched_debug.cpu.clock_task.stddev 0.00 ± 19% +31.3% 0.00 ± 2% sched_debug.cpu.next_balance.stddev 12671402 ± 2% +107.0% 26235293 ± 2% sched_debug.cpu.nr_switches.avg 17842961 ± 5% +64.5% 29353353 ± 4% sched_debug.cpu.nr_switches.max 9669269 ± 5% +138.8% 23086217 sched_debug.cpu.nr_switches.min 0.31 ± 8% -79.3% 0.06 ± 22% sched_debug.cpu.nr_uninterruptible.avg 1.95 -0.2 1.75 perf-stat.i.branch-miss-rate% 19679514 ± 2% -8.8% 17950299 perf-stat.i.branch-misses 2.17 ± 16% +2.0 4.20 ± 7% perf-stat.i.cache-miss-rate% 2501274 ± 19% +123.6% 5593037 ± 7% perf-stat.i.cache-misses 83314250 -9.1% 75711656 perf-stat.i.cache-references 348365 +101.1% 700470 perf-stat.i.context-switches 1.64 -7.5% 1.52 perf-stat.i.cpi 7.816e+09 -9.4% 7.084e+09 perf-stat.i.cpu-cycles 56.47 +146.7% 139.33 perf-stat.i.cpu-migrations 25094 ± 4% -26.5% 18434 ± 2% perf-stat.i.cycles-between-cache-misses 0.17 ± 4% -0.0 0.14 perf-stat.i.dTLB-load-miss-rate% 2595591 ± 5% -21.6% 2035642 perf-stat.i.dTLB-load-misses 1.677e+09 -2.1% 1.641e+09 perf-stat.i.dTLB-loads 0.06 -0.0 0.05 ± 2% perf-stat.i.dTLB-store-miss-rate% 629940 -8.8% 574319 ± 2% perf-stat.i.dTLB-store-misses 1.14e+09 +1.7% 1.16e+09 perf-stat.i.dTLB-stores 41.52 -2.6 38.90 perf-stat.i.iTLB-load-miss-rate% 1085663 -11.4% 961971 perf-stat.i.iTLB-load-misses 1910535 ± 3% +16.1% 2217887 perf-stat.i.iTLB-loads 5366 ± 2% +5.4% 5655 perf-stat.i.instructions-per-iTLB-miss 0.66 +10.2% 0.73 perf-stat.i.ipc 0.06 ± 56% +185.7% 0.17 ± 56% perf-stat.i.major-faults 0.98 -9.4% 0.89 perf-stat.i.metric.GHz 396.87 +20.5% 478.42 perf-stat.i.metric.K/sec 1077 +1.9% 1097 perf-stat.i.minor-faults 2086591 ± 22% +137.6% 4958478 ± 7% perf-stat.i.node-loads 105179 ± 13% +101.1% 211467 ± 5% perf-stat.i.node-stores 1077 +1.9% 1097 perf-stat.i.page-faults 15.69 -8.5% 14.37 perf-stat.overall.MPKI 1.85 -0.2 1.66 perf-stat.overall.branch-miss-rate% 3.01 ± 20% +4.4 7.39 ± 7% perf-stat.overall.cache-miss-rate% 1.47 -8.7% 1.34 perf-stat.overall.cpi 3283 ± 24% -61.2% 1273 ± 8% perf-stat.overall.cycles-between-cache-misses 0.15 ± 4% -0.0 0.12 perf-stat.overall.dTLB-load-miss-rate% 0.06 -0.0 0.05 perf-stat.overall.dTLB-store-miss-rate% 36.26 ± 2% -6.0 30.25 perf-stat.overall.iTLB-load-miss-rate% 4891 ± 2% +12.0% 5479 perf-stat.overall.instructions-per-iTLB-miss 0.68 +9.5% 0.74 perf-stat.overall.ipc 19646658 ± 2% -8.8% 17920681 perf-stat.ps.branch-misses 2497231 ± 19% +123.6% 5583672 ± 7% perf-stat.ps.cache-misses 83175281 -9.1% 75585970 perf-stat.ps.cache-references 347785 +101.1% 699305 perf-stat.ps.context-switches 7.803e+09 -9.4% 7.072e+09 perf-stat.ps.cpu-cycles 56.37 +146.7% 139.10 perf-stat.ps.cpu-migrations 2591259 ± 5% -21.6% 2032256 perf-stat.ps.dTLB-load-misses 1.674e+09 -2.1% 1.639e+09 perf-stat.ps.dTLB-loads 628893 -8.8% 573359 ± 2% perf-stat.ps.dTLB-store-misses 1.138e+09 +1.7% 1.158e+09 perf-stat.ps.dTLB-stores 1083855 -11.4% 960366 perf-stat.ps.iTLB-load-misses 1907339 ± 3% +16.1% 2214176 perf-stat.ps.iTLB-loads 0.06 ± 56% +185.8% 0.17 ± 56% perf-stat.ps.major-faults 1075 +1.9% 1095 perf-stat.ps.minor-faults 2083234 ± 22% +137.6% 4950171 ± 7% perf-stat.ps.node-loads 105007 ± 13% +101.0% 211114 ± 5% perf-stat.ps.node-stores 1075 +1.9% 1095 perf-stat.ps.page-faults 0.00 ± 20% -100.0% 0.00 perf-sched.sch_delay.avg.ms.__cond_resched.__release_sock.release_sock.tcp_sendmsg.sock_write_iter 0.02 ± 24% -95.7% 0.00 ±141% perf-sched.sch_delay.avg.ms.__cond_resched.__skb_datagram_iter.skb_copy_datagram_iter.tcp_recvmsg_locked.tcp_recvmsg 0.01 ± 22% -100.0% 0.00 perf-sched.sch_delay.avg.ms.__cond_resched.__wait_for_common.ata_exec_internal_sg.ata_dev_read_id.ata_dev_reread_id 0.01 ± 29% -100.0% 0.00 perf-sched.sch_delay.avg.ms.__cond_resched.__wait_for_common.ata_exec_internal_sg.ata_exec_internal.atapi_eh_tur 0.00 ± 47% -100.0% 0.00 perf-sched.sch_delay.avg.ms.__cond_resched.aa_sk_perm.security_socket_recvmsg.sock_recvmsg.sock_read_iter 0.01 ± 14% -70.0% 0.00 ± 98% perf-sched.sch_delay.avg.ms.__cond_resched.aa_sk_perm.security_socket_sendmsg.sock_write_iter.vfs_write 0.00 -100.0% 0.00 perf-sched.sch_delay.avg.ms.__cond_resched.task_work_run.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode 0.01 ± 4% -29.0% 0.01 ± 12% perf-sched.sch_delay.avg.ms.do_task_dead.do_exit.do_group_exit.__x64_sys_exit_group.do_syscall_64 0.01 ± 59% -100.0% 0.00 perf-sched.sch_delay.avg.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_reschedule_ipi 0.01 ± 6% -72.7% 0.00 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 ± 11% -100.0% 0.00 perf-sched.sch_delay.avg.ms.futex_wait_queue.futex_wait.do_futex.__x64_sys_futex 0.00 +133.3% 0.00 ± 20% perf-sched.sch_delay.avg.ms.pipe_read.vfs_read.ksys_read.do_syscall_64 0.01 ± 10% -100.0% 0.00 perf-sched.sch_delay.avg.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.ata_wait_register 0.01 ± 8% -100.0% 0.00 perf-sched.sch_delay.avg.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.sata_link_debounce 0.00 -100.0% 0.00 perf-sched.sch_delay.avg.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.sata_link_hardreset 0.01 ± 25% -100.0% 0.00 perf-sched.sch_delay.avg.ms.schedule_timeout.__wait_for_common.__wait_rcu_gp.synchronize_rcu 0.00 ± 25% -100.0% 0.00 perf-sched.sch_delay.avg.ms.schedule_timeout.__wait_for_common.ata_exec_internal_sg.ata_dev_read_id 0.01 ± 21% -100.0% 0.00 perf-sched.sch_delay.avg.ms.schedule_timeout.__wait_for_common.ata_exec_internal_sg.ata_dev_set_mode 0.01 ± 15% -25.0% 0.01 ± 10% perf-sched.sch_delay.avg.ms.schedule_timeout.io_schedule_timeout.__wait_for_common.blk_execute_rq 0.00 -100.0% 0.00 perf-sched.sch_delay.avg.ms.schedule_timeout.msleep.ata_msleep.sata_link_resume 0.00 -100.0% 0.00 perf-sched.sch_delay.avg.ms.schedule_timeout.wait_woken.sk_wait_data.tcp_recvmsg_locked 0.01 ± 24% -100.0% 0.00 perf-sched.sch_delay.avg.ms.scsi_error_handler.kthread.ret_from_fork.ret_from_fork_asm 0.02 ± 30% -80.9% 0.00 perf-sched.sch_delay.avg.ms.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 0.11 ± 3% -66.4% 0.04 ± 6% perf-sched.sch_delay.avg.ms.worker_thread.kthread.ret_from_fork.ret_from_fork_asm 0.00 ± 27% -100.0% 0.00 perf-sched.sch_delay.max.ms.__cond_resched.__release_sock.release_sock.tcp_sendmsg.sock_write_iter 0.02 ± 6% -96.7% 0.00 ±141% perf-sched.sch_delay.max.ms.__cond_resched.__skb_datagram_iter.skb_copy_datagram_iter.tcp_recvmsg_locked.tcp_recvmsg 0.02 ± 51% -100.0% 0.00 perf-sched.sch_delay.max.ms.__cond_resched.__wait_for_common.ata_exec_internal_sg.ata_dev_read_id.ata_dev_reread_id 0.03 ± 32% -100.0% 0.00 perf-sched.sch_delay.max.ms.__cond_resched.__wait_for_common.ata_exec_internal_sg.ata_exec_internal.atapi_eh_tur 0.01 ± 92% -100.0% 0.00 perf-sched.sch_delay.max.ms.__cond_resched.aa_sk_perm.security_socket_recvmsg.sock_recvmsg.sock_read_iter 0.02 ± 4% -78.7% 0.00 ±110% perf-sched.sch_delay.max.ms.__cond_resched.aa_sk_perm.security_socket_sendmsg.sock_write_iter.vfs_write 0.00 -100.0% 0.00 perf-sched.sch_delay.max.ms.__cond_resched.task_work_run.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode 0.04 ± 23% -41.7% 0.02 ± 36% perf-sched.sch_delay.max.ms.devkmsg_read.vfs_read.ksys_read.do_syscall_64 0.03 ± 3% +26.3% 0.03 ± 11% perf-sched.sch_delay.max.ms.do_wait.kernel_wait4.__do_sys_wait4.do_syscall_64 0.02 ± 47% -100.0% 0.00 perf-sched.sch_delay.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_reschedule_ipi 0.04 ± 3% +1509.3% 0.57 ± 85% perf-sched.sch_delay.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64 0.03 ± 13% -100.0% 0.00 perf-sched.sch_delay.max.ms.futex_wait_queue.futex_wait.do_futex.__x64_sys_futex 0.03 ± 32% -53.4% 0.01 ± 17% perf-sched.sch_delay.max.ms.rcu_gp_kthread.kthread.ret_from_fork.ret_from_fork_asm 0.02 ± 12% -37.0% 0.01 ± 25% perf-sched.sch_delay.max.ms.schedule_hrtimeout_range_clock.do_poll.constprop.0.do_sys_poll 0.04 ± 7% -45.4% 0.02 ± 38% perf-sched.sch_delay.max.ms.schedule_hrtimeout_range_clock.ep_poll.do_epoll_wait.__x64_sys_epoll_wait 0.05 ± 26% -100.0% 0.00 perf-sched.sch_delay.max.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.ata_wait_register 0.03 ± 3% -100.0% 0.00 perf-sched.sch_delay.max.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.sata_link_debounce 0.01 ± 14% -100.0% 0.00 perf-sched.sch_delay.max.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.sata_link_hardreset 0.03 ± 90% -100.0% 0.00 perf-sched.sch_delay.max.ms.schedule_timeout.__wait_for_common.__wait_rcu_gp.synchronize_rcu 0.02 ± 17% -100.0% 0.00 perf-sched.sch_delay.max.ms.schedule_timeout.__wait_for_common.ata_exec_internal_sg.ata_dev_read_id 0.05 ± 71% -100.0% 0.00 perf-sched.sch_delay.max.ms.schedule_timeout.__wait_for_common.ata_exec_internal_sg.ata_dev_set_mode 0.02 ± 10% -44.3% 0.01 ± 22% perf-sched.sch_delay.max.ms.schedule_timeout.io_schedule_timeout.__wait_for_common.blk_execute_rq 0.01 ± 8% -100.0% 0.00 perf-sched.sch_delay.max.ms.schedule_timeout.msleep.ata_msleep.sata_link_resume 0.89 ± 10% -99.8% 0.00 perf-sched.sch_delay.max.ms.schedule_timeout.wait_woken.sk_wait_data.tcp_recvmsg_locked 0.02 ± 12% -100.0% 0.00 perf-sched.sch_delay.max.ms.scsi_error_handler.kthread.ret_from_fork.ret_from_fork_asm 0.04 ± 13% -49.2% 0.02 ± 24% perf-sched.sch_delay.max.ms.syslog_print.do_syslog.kmsg_read.vfs_read 0.35 -49.3% 0.18 perf-sched.total_wait_and_delay.average.ms 705805 +90.1% 1341585 perf-sched.total_wait_and_delay.count.ms 0.35 -49.6% 0.18 perf-sched.total_wait_time.average.ms 17.56 ± 9% -100.0% 0.00 perf-sched.wait_and_delay.avg.ms.__cond_resched.__alloc_pages.__folio_alloc.vma_alloc_folio.shmem_alloc_folio 5.07 -100.0% 0.00 perf-sched.wait_and_delay.avg.ms.__cond_resched.__wait_for_common.ata_exec_internal_sg.ata_dev_read_id.ata_dev_reread_id 18.73 ± 28% -73.5% 4.96 ± 70% perf-sched.wait_and_delay.avg.ms.__cond_resched.generic_perform_write.generic_file_write_iter.vfs_write.ksys_write 150.40 ± 3% -98.7% 1.90 ± 14% perf-sched.wait_and_delay.avg.ms.devkmsg_read.vfs_read.ksys_read.do_syscall_64 209.60 -100.0% 0.00 perf-sched.wait_and_delay.avg.ms.futex_wait_queue.futex_wait.do_futex.__x64_sys_futex 23.15 ± 10% +30.3% 30.16 ± 4% perf-sched.wait_and_delay.avg.ms.pipe_read.vfs_read.ksys_read.do_syscall_64 41.98 ± 2% -14.7% 35.81 perf-sched.wait_and_delay.avg.ms.schedule_hrtimeout_range_clock.do_poll.constprop.0.do_sys_poll 205.40 +82.7% 375.37 perf-sched.wait_and_delay.avg.ms.schedule_hrtimeout_range_clock.ep_poll.do_epoll_wait.__x64_sys_epoll_wait 10.37 -100.0% 0.00 perf-sched.wait_and_delay.avg.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.ata_wait_register 14.61 ± 2% -100.0% 0.00 perf-sched.wait_and_delay.avg.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.sata_link_debounce 1.06 -100.0% 0.00 perf-sched.wait_and_delay.avg.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.sata_link_hardreset 228.86 ± 4% -100.0% 0.00 perf-sched.wait_and_delay.avg.ms.schedule_timeout.__wait_for_common.__wait_rcu_gp.synchronize_rcu 1.06 -100.0% 0.00 perf-sched.wait_and_delay.avg.ms.schedule_timeout.msleep.ata_msleep.sata_link_resume 24.89 ± 2% +81.1% 45.08 ± 7% perf-sched.wait_and_delay.avg.ms.schedule_timeout.rcu_gp_fqs_loop.rcu_gp_kthread.kthread 0.01 -42.9% 0.00 perf-sched.wait_and_delay.avg.ms.schedule_timeout.wait_woken.sk_wait_data.tcp_recvmsg_locked 154.39 -99.9% 0.20 perf-sched.wait_and_delay.avg.ms.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 153.91 -98.8% 1.91 ± 13% perf-sched.wait_and_delay.avg.ms.syslog_print.do_syslog.kmsg_read.vfs_read 259.59 ± 3% +28.0% 332.24 ± 5% perf-sched.wait_and_delay.avg.ms.worker_thread.kthread.ret_from_fork.ret_from_fork_asm 1.00 -100.0% 0.00 perf-sched.wait_and_delay.count.__cond_resched.__alloc_pages.__folio_alloc.vma_alloc_folio.shmem_alloc_folio 14.67 ± 3% -100.0% 0.00 perf-sched.wait_and_delay.count.__cond_resched.__wait_for_common.ata_exec_internal_sg.ata_dev_read_id.ata_dev_reread_id 31.67 -93.7% 2.00 perf-sched.wait_and_delay.count.devkmsg_read.vfs_read.ksys_read.do_syscall_64 22.33 ± 4% -100.0% 0.00 perf-sched.wait_and_delay.count.futex_wait_queue.futex_wait.do_futex.__x64_sys_futex 2135 ± 9% -31.5% 1463 ± 4% perf-sched.wait_and_delay.count.pipe_read.vfs_read.ksys_read.do_syscall_64 58.67 ± 5% -48.9% 30.00 ± 7% perf-sched.wait_and_delay.count.rcu_gp_kthread.kthread.ret_from_fork.ret_from_fork_asm 390.67 +19.7% 467.67 perf-sched.wait_and_delay.count.schedule_hrtimeout_range_clock.do_poll.constprop.0.do_sys_poll 45.00 -71.1% 13.00 perf-sched.wait_and_delay.count.schedule_hrtimeout_range_clock.ep_poll.do_epoll_wait.__x64_sys_epoll_wait 30.00 -100.0% 0.00 perf-sched.wait_and_delay.count.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.ata_wait_register 293.33 ± 3% -100.0% 0.00 perf-sched.wait_and_delay.count.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.sata_link_debounce 15.00 -100.0% 0.00 perf-sched.wait_and_delay.count.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.sata_link_hardreset 15.00 -100.0% 0.00 perf-sched.wait_and_delay.count.schedule_timeout.__wait_for_common.__wait_rcu_gp.synchronize_rcu 17.67 ± 2% -84.9% 2.67 ± 17% perf-sched.wait_and_delay.count.schedule_timeout.io_schedule_timeout.__wait_for_common.blk_execute_rq 15.00 -100.0% 0.00 perf-sched.wait_and_delay.count.schedule_timeout.msleep.ata_msleep.sata_link_resume 189.67 ± 2% -42.7% 108.67 ± 7% perf-sched.wait_and_delay.count.schedule_timeout.rcu_gp_fqs_loop.rcu_gp_kthread.kthread 701375 -36.4% 446163 perf-sched.wait_and_delay.count.schedule_timeout.wait_woken.sk_wait_data.tcp_recvmsg_locked 381.67 +1.2e+05% 446519 perf-sched.wait_and_delay.count.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 31.67 -93.7% 2.00 perf-sched.wait_and_delay.count.syslog_print.do_syslog.kmsg_read.vfs_read 172.00 -34.3% 113.00 ± 2% perf-sched.wait_and_delay.count.worker_thread.kthread.ret_from_fork.ret_from_fork_asm 17.56 ± 9% -100.0% 0.00 perf-sched.wait_and_delay.max.ms.__cond_resched.__alloc_pages.__folio_alloc.vma_alloc_folio.shmem_alloc_folio 5.09 -100.0% 0.00 perf-sched.wait_and_delay.max.ms.__cond_resched.__wait_for_common.ata_exec_internal_sg.ata_dev_read_id.ata_dev_reread_id 25.21 ± 28% -70.6% 7.41 ± 81% perf-sched.wait_and_delay.max.ms.__cond_resched.generic_perform_write.generic_file_write_iter.vfs_write.ksys_write 349.75 -98.9% 3.79 ± 14% perf-sched.wait_and_delay.max.ms.devkmsg_read.vfs_read.ksys_read.do_syscall_64 352.11 -100.0% 0.00 perf-sched.wait_and_delay.max.ms.futex_wait_queue.futex_wait.do_futex.__x64_sys_futex 30.49 ± 5% -100.0% 0.00 perf-sched.wait_and_delay.max.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.ata_wait_register 208.80 -100.0% 0.00 perf-sched.wait_and_delay.max.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.sata_link_debounce 1.07 -100.0% 0.00 perf-sched.wait_and_delay.max.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.sata_link_hardreset 338.85 -100.0% 0.00 perf-sched.wait_and_delay.max.ms.schedule_timeout.__wait_for_common.__wait_rcu_gp.synchronize_rcu 1.07 -100.0% 0.00 perf-sched.wait_and_delay.max.ms.schedule_timeout.msleep.ata_msleep.sata_link_resume 322.33 +52.6% 492.00 perf-sched.wait_and_delay.max.ms.schedule_timeout.rcu_gp_fqs_loop.rcu_gp_kthread.kthread 1.78 ± 10% -97.5% 0.04 perf-sched.wait_and_delay.max.ms.schedule_timeout.wait_woken.sk_wait_data.tcp_recvmsg_locked 349.73 -98.9% 3.81 ± 13% perf-sched.wait_and_delay.max.ms.syslog_print.do_syslog.kmsg_read.vfs_read 17.56 ± 9% -100.0% 0.00 perf-sched.wait_time.avg.ms.__cond_resched.__alloc_pages.__folio_alloc.vma_alloc_folio.shmem_alloc_folio 0.00 ± 10% -100.0% 0.00 perf-sched.wait_time.avg.ms.__cond_resched.__release_sock.release_sock.tcp_sendmsg.sock_write_iter 0.02 ± 19% -88.5% 0.00 ±141% perf-sched.wait_time.avg.ms.__cond_resched.__skb_datagram_iter.skb_copy_datagram_iter.tcp_recvmsg_locked.tcp_recvmsg 5.06 -100.0% 0.00 perf-sched.wait_time.avg.ms.__cond_resched.__wait_for_common.ata_exec_internal_sg.ata_dev_read_id.ata_dev_reread_id 0.07 ± 5% -100.0% 0.00 perf-sched.wait_time.avg.ms.__cond_resched.__wait_for_common.ata_exec_internal_sg.ata_exec_internal.atapi_eh_tur 0.01 ± 35% -84.6% 0.00 ±141% perf-sched.wait_time.avg.ms.__cond_resched.aa_sk_perm.security_socket_recvmsg.sock_recvmsg.sock_read_iter 18.73 ± 28% -73.5% 4.96 ± 70% perf-sched.wait_time.avg.ms.__cond_resched.generic_perform_write.generic_file_write_iter.vfs_write.ksys_write 0.00 ± 12% -100.0% 0.00 perf-sched.wait_time.avg.ms.__cond_resched.task_work_run.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode 150.39 ± 3% -98.7% 1.88 ± 14% perf-sched.wait_time.avg.ms.devkmsg_read.vfs_read.ksys_read.do_syscall_64 0.00 ± 81% +233.3% 0.00 ± 14% perf-sched.wait_time.avg.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_apic_timer_interrupt 22.48 ±141% -100.0% 0.00 perf-sched.wait_time.avg.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_reschedule_ipi 0.01 ± 8% -34.4% 0.01 perf-sched.wait_time.avg.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64 209.59 -100.0% 0.00 perf-sched.wait_time.avg.ms.futex_wait_queue.futex_wait.do_futex.__x64_sys_futex 23.15 ± 10% +30.3% 30.16 ± 4% perf-sched.wait_time.avg.ms.pipe_read.vfs_read.ksys_read.do_syscall_64 41.98 ± 2% -14.7% 35.81 perf-sched.wait_time.avg.ms.schedule_hrtimeout_range_clock.do_poll.constprop.0.do_sys_poll 205.39 +82.8% 375.36 perf-sched.wait_time.avg.ms.schedule_hrtimeout_range_clock.ep_poll.do_epoll_wait.__x64_sys_epoll_wait 10.37 -100.0% 0.00 perf-sched.wait_time.avg.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.ata_wait_register 14.60 ± 2% -100.0% 0.00 perf-sched.wait_time.avg.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.sata_link_debounce 1.06 -100.0% 0.00 perf-sched.wait_time.avg.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.sata_link_hardreset 228.86 ± 4% -100.0% 0.00 perf-sched.wait_time.avg.ms.schedule_timeout.__wait_for_common.__wait_rcu_gp.synchronize_rcu 0.03 ± 5% -100.0% 0.00 perf-sched.wait_time.avg.ms.schedule_timeout.__wait_for_common.ata_exec_internal_sg.ata_dev_read_id 0.06 ± 7% -100.0% 0.00 perf-sched.wait_time.avg.ms.schedule_timeout.__wait_for_common.ata_exec_internal_sg.ata_dev_set_mode 0.01 ± 7% -100.0% 0.00 perf-sched.wait_time.avg.ms.schedule_timeout.__wait_for_common.ata_exec_internal_sg.ata_exec_internal 1.06 -100.0% 0.00 perf-sched.wait_time.avg.ms.schedule_timeout.msleep.ata_msleep.sata_link_resume 24.88 ± 2% +81.1% 45.08 ± 7% perf-sched.wait_time.avg.ms.schedule_timeout.rcu_gp_fqs_loop.rcu_gp_kthread.kthread 0.05 ± 7% -100.0% 0.00 perf-sched.wait_time.avg.ms.scsi_error_handler.kthread.ret_from_fork.ret_from_fork_asm 154.38 -99.9% 0.20 perf-sched.wait_time.avg.ms.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 153.90 -98.8% 1.89 ± 13% perf-sched.wait_time.avg.ms.syslog_print.do_syslog.kmsg_read.vfs_read 259.48 ± 3% +28.0% 332.21 ± 5% perf-sched.wait_time.avg.ms.worker_thread.kthread.ret_from_fork.ret_from_fork_asm 17.56 ± 9% -100.0% 0.00 perf-sched.wait_time.max.ms.__cond_resched.__alloc_pages.__folio_alloc.vma_alloc_folio.shmem_alloc_folio 0.01 ± 35% -100.0% 0.00 perf-sched.wait_time.max.ms.__cond_resched.__release_sock.release_sock.tcp_sendmsg.sock_write_iter 0.02 ± 3% -90.9% 0.00 ±141% perf-sched.wait_time.max.ms.__cond_resched.__skb_datagram_iter.skb_copy_datagram_iter.tcp_recvmsg_locked.tcp_recvmsg 5.07 -100.0% 0.00 perf-sched.wait_time.max.ms.__cond_resched.__wait_for_common.ata_exec_internal_sg.ata_dev_read_id.ata_dev_reread_id 0.09 ± 7% -100.0% 0.00 perf-sched.wait_time.max.ms.__cond_resched.__wait_for_common.ata_exec_internal_sg.ata_exec_internal.atapi_eh_tur 0.03 ± 20% -95.9% 0.00 ±141% perf-sched.wait_time.max.ms.__cond_resched.aa_sk_perm.security_socket_recvmsg.sock_recvmsg.sock_read_iter 25.21 ± 28% -70.6% 7.41 ± 81% perf-sched.wait_time.max.ms.__cond_resched.generic_perform_write.generic_file_write_iter.vfs_write.ksys_write 0.00 ± 12% -100.0% 0.00 perf-sched.wait_time.max.ms.__cond_resched.task_work_run.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode 349.72 -98.9% 3.76 ± 14% perf-sched.wait_time.max.ms.devkmsg_read.vfs_read.ksys_read.do_syscall_64 0.00 ± 81% +200.0% 0.01 perf-sched.wait_time.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_apic_timer_interrupt 112.33 ±141% -100.0% 0.00 perf-sched.wait_time.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_reschedule_ipi 0.05 ± 15% +5840.9% 3.15 ±133% perf-sched.wait_time.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64 352.10 -100.0% 0.00 perf-sched.wait_time.max.ms.futex_wait_queue.futex_wait.do_futex.__x64_sys_futex 30.48 ± 5% -100.0% 0.00 perf-sched.wait_time.max.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.ata_wait_register 208.79 -100.0% 0.00 perf-sched.wait_time.max.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.sata_link_debounce 1.07 -100.0% 0.00 perf-sched.wait_time.max.ms.schedule_hrtimeout_range_clock.usleep_range_state.ata_msleep.sata_link_hardreset 338.84 -100.0% 0.00 perf-sched.wait_time.max.ms.schedule_timeout.__wait_for_common.__wait_rcu_gp.synchronize_rcu 0.07 ± 5% -100.0% 0.00 perf-sched.wait_time.max.ms.schedule_timeout.__wait_for_common.ata_exec_internal_sg.ata_dev_read_id 0.11 ± 36% -100.0% 0.00 perf-sched.wait_time.max.ms.schedule_timeout.__wait_for_common.ata_exec_internal_sg.ata_dev_set_mode 0.01 ± 9% -100.0% 0.00 perf-sched.wait_time.max.ms.schedule_timeout.__wait_for_common.ata_exec_internal_sg.ata_exec_internal 1.07 -100.0% 0.00 perf-sched.wait_time.max.ms.schedule_timeout.msleep.ata_msleep.sata_link_resume 322.32 +52.6% 491.99 perf-sched.wait_time.max.ms.schedule_timeout.rcu_gp_fqs_loop.rcu_gp_kthread.kthread 0.93 ± 8% -95.2% 0.04 perf-sched.wait_time.max.ms.schedule_timeout.wait_woken.sk_wait_data.tcp_recvmsg_locked 0.07 ± 14% -100.0% 0.00 perf-sched.wait_time.max.ms.scsi_error_handler.kthread.ret_from_fork.ret_from_fork_asm 349.71 -98.9% 3.79 ± 13% perf-sched.wait_time.max.ms.syslog_print.do_syslog.kmsg_read.vfs_read 8.91 ± 2% -8.9 0.00 perf-profile.calltrace.cycles-pp.__local_bh_enable_ip.__dev_queue_xmit.ip_finish_output2.ip_send_skb.udp_send_skb 8.76 ± 2% -8.8 0.00 perf-profile.calltrace.cycles-pp.do_softirq.__local_bh_enable_ip.__dev_queue_xmit.ip_finish_output2.ip_send_skb 8.61 ± 2% -8.6 0.00 perf-profile.calltrace.cycles-pp.__do_softirq.do_softirq.__local_bh_enable_ip.__dev_queue_xmit.ip_finish_output2 7.90 ± 2% -7.9 0.00 perf-profile.calltrace.cycles-pp.net_rx_action.__do_softirq.do_softirq.__local_bh_enable_ip.__dev_queue_xmit 7.52 ± 2% -7.5 0.00 perf-profile.calltrace.cycles-pp.__napi_poll.net_rx_action.__do_softirq.do_softirq.__local_bh_enable_ip 7.47 ± 2% -7.5 0.00 perf-profile.calltrace.cycles-pp.process_backlog.__napi_poll.net_rx_action.__do_softirq.do_softirq 10.66 ± 2% -7.3 3.34 ± 4% perf-profile.calltrace.cycles-pp.__dev_queue_xmit.ip_finish_output2.ip_send_skb.udp_send_skb.udp_sendmsg 6.89 -6.9 0.00 perf-profile.calltrace.cycles-pp.__netif_receive_skb_one_core.process_backlog.__napi_poll.net_rx_action.__do_softirq 6.09 -6.1 0.00 perf-profile.calltrace.cycles-pp.ip_local_deliver_finish.__netif_receive_skb_one_core.process_backlog.__napi_poll.net_rx_action 9.74 ± 7% -4.8 4.95 ± 2% perf-profile.calltrace.cycles-pp.__x64_sys_sendto.do_syscall_64.entry_SYSCALL_64_after_hwframe.sendto 9.66 ± 8% -4.8 4.89 ± 3% perf-profile.calltrace.cycles-pp.__sys_sendto.__x64_sys_sendto.do_syscall_64.entry_SYSCALL_64_after_hwframe.sendto 9.19 ± 8% -4.7 4.47 ± 3% perf-profile.calltrace.cycles-pp.sock_sendmsg.__sys_sendto.__x64_sys_sendto.do_syscall_64.entry_SYSCALL_64_after_hwframe 9.33 ± 9% -4.7 4.64 ± 3% perf-profile.calltrace.cycles-pp.ksys_write.do_syscall_64.entry_SYSCALL_64_after_hwframe.write 9.14 ± 8% -4.7 4.48 ± 3% perf-profile.calltrace.cycles-pp.vfs_write.ksys_write.do_syscall_64.entry_SYSCALL_64_after_hwframe.write 8.94 ± 8% -4.7 4.28 perf-profile.calltrace.cycles-pp.udp_sendmsg.sock_sendmsg.__sys_sendto.__x64_sys_sendto.do_syscall_64 8.73 ± 8% -4.5 4.18 ± 3% perf-profile.calltrace.cycles-pp.sock_write_iter.vfs_write.ksys_write.do_syscall_64.entry_SYSCALL_64_after_hwframe 8.26 ± 8% -4.5 3.81 ± 4% perf-profile.calltrace.cycles-pp.udp_sendmsg.sock_write_iter.vfs_write.ksys_write.do_syscall_64 6.18 ± 9% -4.0 2.17 ± 9% perf-profile.calltrace.cycles-pp.udp_send_skb.udp_sendmsg.sock_write_iter.vfs_write.ksys_write 6.04 ± 9% -3.9 2.09 ± 9% perf-profile.calltrace.cycles-pp.ip_send_skb.udp_send_skb.udp_sendmsg.sock_write_iter.vfs_write 6.04 ± 7% -3.9 2.16 ± 2% perf-profile.calltrace.cycles-pp.udp_send_skb.udp_sendmsg.sock_sendmsg.__sys_sendto.__x64_sys_sendto 5.62 ± 9% -3.8 1.77 ± 9% perf-profile.calltrace.cycles-pp.ip_finish_output2.ip_send_skb.udp_send_skb.udp_sendmsg.sock_write_iter 5.92 ± 7% -3.8 2.11 ± 2% perf-profile.calltrace.cycles-pp.ip_send_skb.udp_send_skb.udp_sendmsg.sock_sendmsg.__sys_sendto 11.16 ± 7% -3.7 7.48 ± 2% perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.sendto 5.47 ± 6% -3.6 1.84 ± 2% perf-profile.calltrace.cycles-pp.ip_finish_output2.ip_send_skb.udp_send_skb.udp_sendmsg.sock_sendmsg 11.02 ± 7% -3.6 7.40 ± 3% perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.sendto 10.70 ± 8% -3.6 7.12 ± 3% perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.write 10.81 ± 9% -3.6 7.23 ± 2% perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.write 12.09 ± 9% -3.4 8.64 ± 2% perf-profile.calltrace.cycles-pp.write 12.36 ± 7% -3.4 8.94 ± 2% perf-profile.calltrace.cycles-pp.sendto 6.72 ± 3% -1.9 4.78 ± 4% perf-profile.calltrace.cycles-pp.__skb_wait_for_more_packets.__skb_recv_udp.udp_recvmsg.inet_recvmsg.sock_recvmsg 8.68 ± 6% -1.8 6.86 perf-profile.calltrace.cycles-pp.recvfrom 5.27 ± 5% -1.8 3.48 ± 6% perf-profile.calltrace.cycles-pp.schedule.schedule_timeout.__skb_wait_for_more_packets.__skb_recv_udp.udp_recvmsg 5.63 ± 4% -1.8 3.85 ± 5% perf-profile.calltrace.cycles-pp.schedule_timeout.__skb_wait_for_more_packets.__skb_recv_udp.udp_recvmsg.inet_recvmsg 5.12 ± 4% -1.7 3.38 ± 6% perf-profile.calltrace.cycles-pp.__schedule.schedule.schedule_timeout.__skb_wait_for_more_packets.__skb_recv_udp 9.18 ± 7% -1.7 7.45 perf-profile.calltrace.cycles-pp.read 7.07 ± 6% -1.6 5.52 perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.recvfrom 6.05 -1.5 4.54 ± 2% perf-profile.calltrace.cycles-pp.ip_protocol_deliver_rcu.ip_local_deliver_finish.__netif_receive_skb_one_core.process_backlog.__napi_poll 6.93 ± 6% -1.5 5.44 perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.recvfrom 7.50 ± 8% -1.4 6.05 perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.read 7.37 ± 8% -1.4 5.96 perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.read 5.78 ± 2% -1.4 4.38 perf-profile.calltrace.cycles-pp.__udp4_lib_rcv.ip_protocol_deliver_rcu.ip_local_deliver_finish.__netif_receive_skb_one_core.process_backlog 5.79 ± 5% -1.4 4.40 perf-profile.calltrace.cycles-pp.__sys_recvfrom.__x64_sys_recvfrom.do_syscall_64.entry_SYSCALL_64_after_hwframe.recvfrom 5.84 ± 6% -1.4 4.46 perf-profile.calltrace.cycles-pp.__x64_sys_recvfrom.do_syscall_64.entry_SYSCALL_64_after_hwframe.recvfrom 6.26 ± 9% -1.4 4.91 perf-profile.calltrace.cycles-pp.ksys_read.do_syscall_64.entry_SYSCALL_64_after_hwframe.read 6.06 ± 9% -1.3 4.74 ± 2% perf-profile.calltrace.cycles-pp.vfs_read.ksys_read.do_syscall_64.entry_SYSCALL_64_after_hwframe.read 5.18 ± 2% -1.3 3.89 ± 2% perf-profile.calltrace.cycles-pp.udp_unicast_rcv_skb.__udp4_lib_rcv.ip_protocol_deliver_rcu.ip_local_deliver_finish.__netif_receive_skb_one_core 5.23 ± 6% -1.3 3.98 perf-profile.calltrace.cycles-pp.sock_recvmsg.__sys_recvfrom.__x64_sys_recvfrom.do_syscall_64.entry_SYSCALL_64_after_hwframe 5.08 ± 6% -1.3 3.83 perf-profile.calltrace.cycles-pp.inet_recvmsg.sock_recvmsg.__sys_recvfrom.__x64_sys_recvfrom.do_syscall_64 5.07 ± 6% -1.2 3.82 perf-profile.calltrace.cycles-pp.udp_recvmsg.inet_recvmsg.sock_recvmsg.__sys_recvfrom.__x64_sys_recvfrom 5.58 ± 9% -1.2 4.36 perf-profile.calltrace.cycles-pp.sock_read_iter.vfs_read.ksys_read.do_syscall_64.entry_SYSCALL_64_after_hwframe 5.01 ± 2% -1.2 3.80 ± 2% perf-profile.calltrace.cycles-pp.udp_queue_rcv_one_skb.udp_unicast_rcv_skb.__udp4_lib_rcv.ip_protocol_deliver_rcu.ip_local_deliver_finish 5.38 ± 9% -1.2 4.18 ± 2% perf-profile.calltrace.cycles-pp.sock_recvmsg.sock_read_iter.vfs_read.ksys_read.do_syscall_64 5.14 ± 9% -1.2 3.97 ± 2% perf-profile.calltrace.cycles-pp.inet_recvmsg.sock_recvmsg.sock_read_iter.vfs_read.ksys_read 5.11 ± 9% -1.2 3.95 ± 2% perf-profile.calltrace.cycles-pp.udp_recvmsg.inet_recvmsg.sock_recvmsg.sock_read_iter.vfs_read 4.14 ± 5% -1.1 3.02 perf-profile.calltrace.cycles-pp.__skb_recv_udp.udp_recvmsg.inet_recvmsg.sock_recvmsg.__sys_recvfrom 4.50 -1.1 3.44 ± 2% perf-profile.calltrace.cycles-pp.__udp_enqueue_schedule_skb.udp_queue_rcv_one_skb.udp_unicast_rcv_skb.__udp4_lib_rcv.ip_protocol_deliver_rcu 4.20 ± 10% -1.1 3.13 ± 2% perf-profile.calltrace.cycles-pp.__skb_recv_udp.udp_recvmsg.inet_recvmsg.sock_recvmsg.sock_read_iter 4.06 -0.9 3.11 perf-profile.calltrace.cycles-pp.sock_def_readable.__udp_enqueue_schedule_skb.udp_queue_rcv_one_skb.udp_unicast_rcv_skb.__udp4_lib_rcv 3.63 ± 3% -0.9 2.77 ± 12% perf-profile.calltrace.cycles-pp.flush_smp_call_function_queue.do_idle.cpu_startup_entry.start_secondary.secondary_startup_64_no_verify 2.50 ± 3% -0.8 1.70 ± 6% perf-profile.calltrace.cycles-pp.dequeue_task_fair.__schedule.schedule.schedule_timeout.__skb_wait_for_more_packets 3.65 -0.8 2.86 perf-profile.calltrace.cycles-pp.__wake_up_common_lock.sock_def_readable.__udp_enqueue_schedule_skb.udp_queue_rcv_one_skb.udp_unicast_rcv_skb 3.37 ± 4% -0.8 2.58 ± 11% perf-profile.calltrace.cycles-pp.__flush_smp_call_function_queue.flush_smp_call_function_queue.do_idle.cpu_startup_entry.start_secondary 3.20 -0.7 2.51 ± 2% perf-profile.calltrace.cycles-pp.__wake_up_common.__wake_up_common_lock.sock_def_readable.__udp_enqueue_schedule_skb.udp_queue_rcv_one_skb 2.03 ± 7% -0.6 1.41 ± 6% perf-profile.calltrace.cycles-pp.ttwu_do_activate.sched_ttwu_pending.__flush_smp_call_function_queue.flush_smp_call_function_queue.do_idle 2.09 ± 3% -0.6 1.47 ± 8% perf-profile.calltrace.cycles-pp.dequeue_entity.dequeue_task_fair.__schedule.schedule.schedule_timeout 0.95 ± 20% -0.6 0.35 ± 70% perf-profile.calltrace.cycles-pp.alloc_skb_with_frags.sock_alloc_send_pskb.__ip_append_data.ip_make_skb.udp_sendmsg 2.40 ± 3% -0.6 1.80 ± 10% perf-profile.calltrace.cycles-pp.schedule_idle.do_idle.cpu_startup_entry.start_secondary.secondary_startup_64_no_verify 2.78 ± 2% -0.6 2.18 ± 3% perf-profile.calltrace.cycles-pp.autoremove_wake_function.__wake_up_common.__wake_up_common_lock.sock_def_readable.__udp_enqueue_schedule_skb 2.82 ± 3% -0.6 2.24 ± 8% perf-profile.calltrace.cycles-pp.sched_ttwu_pending.__flush_smp_call_function_queue.flush_smp_call_function_queue.do_idle.cpu_startup_entry 1.91 ± 7% -0.6 1.33 ± 7% perf-profile.calltrace.cycles-pp.activate_task.ttwu_do_activate.sched_ttwu_pending.__flush_smp_call_function_queue.flush_smp_call_function_queue 2.65 ± 3% -0.6 2.09 ± 2% perf-profile.calltrace.cycles-pp.try_to_wake_up.autoremove_wake_function.__wake_up_common.__wake_up_common_lock.sock_def_readable 2.21 ± 3% -0.6 1.65 ± 9% perf-profile.calltrace.cycles-pp.__schedule.schedule_idle.do_idle.cpu_startup_entry.start_secondary 1.83 ± 7% -0.5 1.29 ± 8% perf-profile.calltrace.cycles-pp.enqueue_task_fair.activate_task.ttwu_do_activate.sched_ttwu_pending.__flush_smp_call_function_queue 1.93 ± 11% -0.5 1.44 ± 3% perf-profile.calltrace.cycles-pp.ip_make_skb.udp_sendmsg.sock_sendmsg.__sys_sendto.__x64_sys_sendto 2.31 ± 6% -0.4 1.86 ± 13% perf-profile.calltrace.cycles-pp.menu_select.cpuidle_idle_call.do_idle.cpu_startup_entry.start_secondary 1.48 ± 13% -0.4 1.05 ± 4% perf-profile.calltrace.cycles-pp.__ip_append_data.ip_make_skb.udp_sendmsg.sock_sendmsg.__sys_sendto 1.42 ± 4% -0.3 1.09 ± 7% perf-profile.calltrace.cycles-pp.enqueue_entity.enqueue_task_fair.activate_task.ttwu_do_activate.sched_ttwu_pending 1.67 ± 7% -0.3 1.37 ± 2% perf-profile.calltrace.cycles-pp.ip_make_skb.udp_sendmsg.sock_write_iter.vfs_write.ksys_write 0.88 ± 7% -0.2 0.64 ± 9% perf-profile.calltrace.cycles-pp.sock_alloc_send_pskb.__ip_append_data.ip_make_skb.udp_sendmsg.sock_sendmsg 1.38 ± 8% -0.2 1.15 perf-profile.calltrace.cycles-pp.__ip_append_data.ip_make_skb.udp_sendmsg.sock_write_iter.vfs_write 0.84 ± 7% -0.2 0.63 ± 8% perf-profile.calltrace.cycles-pp.pick_next_task_fair.__schedule.schedule_idle.do_idle.cpu_startup_entry 1.22 ± 4% -0.2 1.05 ± 7% perf-profile.calltrace.cycles-pp.ttwu_queue_wakelist.try_to_wake_up.autoremove_wake_function.__wake_up_common.__wake_up_common_lock 0.88 ± 11% -0.1 0.76 ± 3% perf-profile.calltrace.cycles-pp.sock_alloc_send_pskb.__ip_append_data.ip_make_skb.udp_sendmsg.sock_write_iter 0.36 ± 70% +0.2 0.59 perf-profile.calltrace.cycles-pp.select_task_rq.try_to_wake_up.autoremove_wake_function.__wake_up_common.__wake_up_common_lock 0.17 ±141% +0.4 0.56 ± 3% perf-profile.calltrace.cycles-pp.select_task_rq_fair.select_task_rq.try_to_wake_up.autoremove_wake_function.__wake_up_common 0.00 +0.7 0.66 ± 6% perf-profile.calltrace.cycles-pp.__switch_to_asm 0.00 +0.8 0.82 ± 14% perf-profile.calltrace.cycles-pp.dequeue_task_fair.__schedule.schedule.smpboot_thread_fn.kthread 0.00 +0.9 0.90 ± 4% perf-profile.calltrace.cycles-pp.pick_next_task_fair.__schedule.schedule.smpboot_thread_fn.kthread 20.95 +1.0 21.98 perf-profile.calltrace.cycles-pp.poll_idle.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle 1.26 ± 4% +1.1 2.36 ± 4% perf-profile.calltrace.cycles-pp.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe.write 1.17 ± 6% +1.2 2.36 ± 3% perf-profile.calltrace.cycles-pp.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe.sendto 0.00 +1.2 1.25 perf-profile.calltrace.cycles-pp.pick_next_task_fair.__schedule.schedule.exit_to_user_mode_loop.exit_to_user_mode_prepare 0.00 +1.4 1.36 perf-profile.calltrace.cycles-pp.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe.write 0.00 +1.4 1.40 ± 4% perf-profile.calltrace.cycles-pp.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe.sendto 0.00 +1.4 1.44 ± 4% perf-profile.calltrace.cycles-pp.ttwu_do_activate.try_to_wake_up.enqueue_to_backlog.netif_rx_internal.__netif_rx 54.93 +1.6 56.51 perf-profile.calltrace.cycles-pp.secondary_startup_64_no_verify 0.99 ± 29% +1.9 2.93 ± 6% perf-profile.calltrace.cycles-pp.dev_hard_start_xmit.__dev_queue_xmit.ip_finish_output2.ip_send_skb.udp_send_skb 0.00 +2.0 1.99 ± 7% perf-profile.calltrace.cycles-pp.try_to_wake_up.enqueue_to_backlog.netif_rx_internal.__netif_rx.loopback_xmit 0.76 ± 36% +2.1 2.87 ± 5% perf-profile.calltrace.cycles-pp.loopback_xmit.dev_hard_start_xmit.__dev_queue_xmit.ip_finish_output2.ip_send_skb 0.00 +2.2 2.22 ± 6% perf-profile.calltrace.cycles-pp.enqueue_to_backlog.netif_rx_internal.__netif_rx.loopback_xmit.dev_hard_start_xmit 0.00 +2.2 2.23 perf-profile.calltrace.cycles-pp.__schedule.schedule.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode 0.00 +2.3 2.26 ± 6% perf-profile.calltrace.cycles-pp.netif_rx_internal.__netif_rx.loopback_xmit.dev_hard_start_xmit.__dev_queue_xmit 0.00 +2.3 2.27 ± 5% perf-profile.calltrace.cycles-pp.__netif_rx.loopback_xmit.dev_hard_start_xmit.__dev_queue_xmit.ip_finish_output2 0.00 +2.3 2.34 perf-profile.calltrace.cycles-pp.schedule.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64 0.00 +2.5 2.50 perf-profile.calltrace.cycles-pp.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe 20.35 +2.7 23.05 perf-profile.calltrace.cycles-pp.intel_idle.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle 0.00 +3.0 3.04 ± 6% perf-profile.calltrace.cycles-pp.__schedule.schedule.smpboot_thread_fn.kthread.ret_from_fork 0.00 +3.2 3.20 ± 6% perf-profile.calltrace.cycles-pp.schedule.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 2.71 ± 16% +3.3 5.98 ± 41% perf-profile.calltrace.cycles-pp.cpuidle_enter.cpuidle_idle_call.do_idle.cpu_startup_entry.rest_init 2.92 ± 16% +3.4 6.29 ± 41% perf-profile.calltrace.cycles-pp.cpuidle_idle_call.do_idle.cpu_startup_entry.rest_init.arch_call_rest_init 3.55 ± 15% +3.6 7.16 ± 42% perf-profile.calltrace.cycles-pp.do_idle.cpu_startup_entry.rest_init.arch_call_rest_init.start_kernel 3.56 ± 15% +3.6 7.17 ± 42% perf-profile.calltrace.cycles-pp.cpu_startup_entry.rest_init.arch_call_rest_init.start_kernel.x86_64_start_reservations 3.56 ± 15% +3.6 7.18 ± 42% perf-profile.calltrace.cycles-pp.x86_64_start_kernel.secondary_startup_64_no_verify 3.56 ± 15% +3.6 7.18 ± 42% perf-profile.calltrace.cycles-pp.x86_64_start_reservations.x86_64_start_kernel.secondary_startup_64_no_verify 3.56 ± 15% +3.6 7.18 ± 42% perf-profile.calltrace.cycles-pp.start_kernel.x86_64_start_reservations.x86_64_start_kernel.secondary_startup_64_no_verify 3.56 ± 15% +3.6 7.18 ± 42% perf-profile.calltrace.cycles-pp.arch_call_rest_init.start_kernel.x86_64_start_reservations.x86_64_start_kernel.secondary_startup_64_no_verify 3.56 ± 15% +3.6 7.18 ± 42% perf-profile.calltrace.cycles-pp.rest_init.arch_call_rest_init.start_kernel.x86_64_start_reservations.x86_64_start_kernel 42.83 +3.8 46.63 perf-profile.calltrace.cycles-pp.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle.cpu_startup_entry 0.00 +4.6 4.55 ± 2% perf-profile.calltrace.cycles-pp.ip_local_deliver_finish.__netif_receive_skb_one_core.process_backlog.__napi_poll.napi_threaded_poll_loop 0.00 +5.1 5.14 perf-profile.calltrace.cycles-pp.__netif_receive_skb_one_core.process_backlog.__napi_poll.napi_threaded_poll_loop.smpboot_thread_fn 0.00 +5.6 5.61 perf-profile.calltrace.cycles-pp.process_backlog.__napi_poll.napi_threaded_poll_loop.smpboot_thread_fn.kthread 0.00 +5.6 5.64 perf-profile.calltrace.cycles-pp.__napi_poll.napi_threaded_poll_loop.smpboot_thread_fn.kthread.ret_from_fork 0.00 +5.7 5.70 perf-profile.calltrace.cycles-pp.napi_threaded_poll_loop.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 1.37 ± 27% +8.2 9.58 ± 2% perf-profile.calltrace.cycles-pp.ret_from_fork_asm 1.37 ± 27% +8.2 9.58 ± 2% perf-profile.calltrace.cycles-pp.ret_from_fork.ret_from_fork_asm 1.37 ± 27% +8.2 9.58 ± 2% perf-profile.calltrace.cycles-pp.kthread.ret_from_fork.ret_from_fork_asm 0.00 +9.6 9.56 ± 2% perf-profile.calltrace.cycles-pp.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 36.67 -10.2 26.50 perf-profile.children.cycles-pp.entry_SYSCALL_64_after_hwframe 36.16 -10.0 26.13 perf-profile.children.cycles-pp.do_syscall_64 17.24 ± 2% -9.1 8.10 ± 2% perf-profile.children.cycles-pp.udp_sendmsg 8.96 ± 2% -8.9 0.06 ± 7% perf-profile.children.cycles-pp.__local_bh_enable_ip 8.77 ± 2% -8.8 0.00 perf-profile.children.cycles-pp.do_softirq 8.72 ± 2% -8.6 0.10 ± 8% perf-profile.children.cycles-pp.__do_softirq 7.91 ± 2% -7.9 0.00 perf-profile.children.cycles-pp.net_rx_action 12.23 ± 2% -7.9 4.33 ± 5% perf-profile.children.cycles-pp.udp_send_skb 11.97 -7.8 4.21 ± 5% perf-profile.children.cycles-pp.ip_send_skb 11.09 ± 2% -7.5 3.61 ± 5% perf-profile.children.cycles-pp.ip_finish_output2 10.67 ± 2% -7.3 3.34 ± 4% perf-profile.children.cycles-pp.__dev_queue_xmit 9.74 ± 7% -4.8 4.96 ± 2% perf-profile.children.cycles-pp.__x64_sys_sendto 9.67 ± 7% -4.8 4.89 ± 3% perf-profile.children.cycles-pp.__sys_sendto 9.19 ± 8% -4.7 4.48 ± 3% perf-profile.children.cycles-pp.sock_sendmsg 9.34 ± 9% -4.7 4.66 ± 3% perf-profile.children.cycles-pp.ksys_write 9.16 ± 8% -4.7 4.50 ± 3% perf-profile.children.cycles-pp.vfs_write 8.73 ± 8% -4.5 4.18 ± 3% perf-profile.children.cycles-pp.sock_write_iter 12.46 ± 7% -3.4 9.03 ± 2% perf-profile.children.cycles-pp.sendto 12.16 ± 9% -3.4 8.73 ± 2% perf-profile.children.cycles-pp.write 10.63 -2.4 8.18 perf-profile.children.cycles-pp.sock_recvmsg 10.22 -2.4 7.81 perf-profile.children.cycles-pp.inet_recvmsg 10.18 -2.4 7.77 perf-profile.children.cycles-pp.udp_recvmsg 8.36 ± 2% -2.2 6.17 ± 2% perf-profile.children.cycles-pp.__skb_recv_udp 6.73 ± 3% -2.0 4.77 ± 4% perf-profile.children.cycles-pp.__skb_wait_for_more_packets 7.52 ± 2% -1.9 5.64 perf-profile.children.cycles-pp.__napi_poll 7.48 ± 2% -1.9 5.62 perf-profile.children.cycles-pp.process_backlog 8.76 ± 6% -1.8 6.93 perf-profile.children.cycles-pp.recvfrom 9.29 ± 7% -1.8 7.52 perf-profile.children.cycles-pp.read 6.91 -1.8 5.14 perf-profile.children.cycles-pp.__netif_receive_skb_one_core 5.66 ± 4% -1.8 3.91 ± 5% perf-profile.children.cycles-pp.schedule_timeout 6.09 -1.5 4.55 ± 2% perf-profile.children.cycles-pp.ip_local_deliver_finish 6.05 -1.5 4.54 ± 2% perf-profile.children.cycles-pp.ip_protocol_deliver_rcu 5.79 ± 2% -1.4 4.39 ± 2% perf-profile.children.cycles-pp.__udp4_lib_rcv 5.80 ± 5% -1.4 4.41 perf-profile.children.cycles-pp.__sys_recvfrom 5.85 ± 6% -1.4 4.47 perf-profile.children.cycles-pp.__x64_sys_recvfrom 6.26 ± 9% -1.4 4.91 perf-profile.children.cycles-pp.ksys_read 1.54 ± 16% -1.3 0.22 ± 87% perf-profile.children.cycles-pp._printk 1.54 ± 16% -1.3 0.22 ± 87% perf-profile.children.cycles-pp.vprintk_emit 1.54 ± 16% -1.3 0.22 ± 87% perf-profile.children.cycles-pp.console_unlock 1.54 ± 16% -1.3 0.22 ± 87% perf-profile.children.cycles-pp.console_flush_all 6.06 ± 9% -1.3 4.74 ± 2% perf-profile.children.cycles-pp.vfs_read 5.19 ± 2% -1.3 3.89 ± 2% perf-profile.children.cycles-pp.udp_unicast_rcv_skb 1.44 ± 16% -1.2 0.21 ± 85% perf-profile.children.cycles-pp.serial8250_console_write 5.58 ± 9% -1.2 4.36 perf-profile.children.cycles-pp.sock_read_iter 1.41 ± 16% -1.2 0.20 ± 86% perf-profile.children.cycles-pp.wait_for_lsr 5.03 ± 2% -1.2 3.83 ± 2% perf-profile.children.cycles-pp.udp_queue_rcv_one_skb 4.51 -1.1 3.44 perf-profile.children.cycles-pp.__udp_enqueue_schedule_skb 4.06 -0.9 3.12 ± 2% perf-profile.children.cycles-pp.sock_def_readable 3.66 -0.8 2.86 perf-profile.children.cycles-pp.__wake_up_common_lock 3.62 ± 3% -0.8 2.82 perf-profile.children.cycles-pp.ip_make_skb 0.83 ± 17% -0.7 0.12 ± 92% perf-profile.children.cycles-pp.io_serial_in 3.21 -0.7 2.51 ± 2% perf-profile.children.cycles-pp.__wake_up_common 3.89 ± 5% -0.7 3.21 ± 6% perf-profile.children.cycles-pp.flush_smp_call_function_queue 2.87 ± 4% -0.7 2.21 ± 2% perf-profile.children.cycles-pp.__ip_append_data 3.02 ± 5% -0.6 2.38 ± 5% perf-profile.children.cycles-pp.sched_ttwu_pending 3.61 ± 6% -0.6 3.00 ± 5% perf-profile.children.cycles-pp.__flush_smp_call_function_queue 2.79 ± 2% -0.6 2.19 ± 3% perf-profile.children.cycles-pp.autoremove_wake_function 2.66 ± 4% -0.6 2.06 ± 3% perf-profile.children.cycles-pp.schedule_idle 0.57 ± 17% -0.5 0.08 ± 83% perf-profile.children.cycles-pp.delay_tsc 2.49 ± 5% -0.4 2.10 ± 8% perf-profile.children.cycles-pp.menu_select 1.76 ± 2% -0.4 1.41 ± 5% perf-profile.children.cycles-pp.sock_alloc_send_pskb 0.81 ± 5% -0.2 0.57 ± 2% perf-profile.children.cycles-pp.select_task_rq_fair 1.01 ± 5% -0.2 0.78 ± 11% perf-profile.children.cycles-pp.__smp_call_single_queue 1.10 ± 3% -0.2 0.87 ± 9% perf-profile.children.cycles-pp.alloc_skb_with_frags 1.76 ± 4% -0.2 1.56 ± 4% perf-profile.children.cycles-pp.syscall_return_via_sysret 0.78 ± 17% -0.2 0.59 ± 13% perf-profile.children.cycles-pp.ip_generic_getfrag 0.86 ± 5% -0.2 0.67 perf-profile.children.cycles-pp.select_task_rq 1.04 ± 5% -0.2 0.86 ± 8% perf-profile.children.cycles-pp.__check_object_size 0.40 ± 5% -0.2 0.23 ± 7% perf-profile.children.cycles-pp.put_prev_task_fair 0.48 ± 20% -0.2 0.31 ± 13% perf-profile.children.cycles-pp.ip_route_output_key_hash_rcu 0.65 ± 7% -0.2 0.48 ± 10% perf-profile.children.cycles-pp.llist_add_batch 0.56 ± 7% -0.2 0.40 ± 5% perf-profile.children.cycles-pp.prepare_to_wait_exclusive 0.63 ± 13% -0.2 0.47 ± 9% perf-profile.children.cycles-pp.ip_route_output_flow 0.96 -0.2 0.81 ± 7% perf-profile.children.cycles-pp.__alloc_skb 0.41 ± 19% -0.1 0.27 ± 20% perf-profile.children.cycles-pp.fib_table_lookup 0.33 ± 13% -0.1 0.20 ± 6% perf-profile.children.cycles-pp.__netif_receive_skb_core 1.03 ± 3% -0.1 0.90 perf-profile.children.cycles-pp.native_sched_clock 1.22 ± 4% -0.1 1.09 ± 7% perf-profile.children.cycles-pp.ttwu_queue_wakelist 0.40 ± 5% -0.1 0.28 ± 19% perf-profile.children.cycles-pp.sock_wfree 0.55 ± 5% -0.1 0.43 ± 11% perf-profile.children.cycles-pp.tick_nohz_next_event 0.46 ± 2% -0.1 0.35 ± 14% perf-profile.children.cycles-pp.update_cfs_group 0.61 ± 4% -0.1 0.51 ± 4% perf-profile.children.cycles-pp.kmem_cache_alloc_node 0.49 ± 6% -0.1 0.40 ± 8% perf-profile.children.cycles-pp.__ip_make_skb 0.31 ± 5% -0.1 0.21 ± 5% perf-profile.children.cycles-pp.entry_SYSRETQ_unsafe_stack 0.61 ± 3% -0.1 0.52 perf-profile.children.cycles-pp.skb_release_data 0.32 ± 9% -0.1 0.23 ± 2% perf-profile.children.cycles-pp.update_rq_clock_task 0.19 ± 19% -0.1 0.10 ± 31% perf-profile.children.cycles-pp.netif_skb_features 0.71 ± 2% -0.1 0.62 perf-profile.children.cycles-pp.sched_clock_cpu 0.67 ± 4% -0.1 0.58 ± 2% perf-profile.children.cycles-pp.local_clock_noinstr 0.62 ± 3% -0.1 0.53 perf-profile.children.cycles-pp.__consume_stateless_skb 0.31 ± 9% -0.1 0.23 ± 14% perf-profile.children.cycles-pp.ip_output 0.36 ± 15% -0.1 0.28 ± 2% perf-profile.children.cycles-pp.security_file_permission 0.28 ± 15% -0.1 0.20 ± 24% perf-profile.children.cycles-pp.security_socket_sendmsg 0.35 -0.1 0.27 ± 3% perf-profile.children.cycles-pp.__check_heap_object 0.29 ± 15% -0.1 0.22 ± 18% perf-profile.children.cycles-pp.validate_xmit_skb 0.36 ± 4% -0.1 0.29 ± 7% perf-profile.children.cycles-pp.get_next_timer_interrupt 0.17 ± 14% -0.1 0.10 ± 16% perf-profile.children.cycles-pp.__ip_finish_output 0.41 -0.1 0.34 ± 8% perf-profile.children.cycles-pp.ip_rcv 0.16 -0.1 0.10 ± 21% perf-profile.children.cycles-pp.nohz_run_idle_balance 0.46 ± 7% -0.1 0.39 ± 3% perf-profile.children.cycles-pp.skb_set_owner_w 0.17 ± 19% -0.1 0.11 ± 8% perf-profile.children.cycles-pp.__xfrm_policy_check2 0.62 -0.1 0.56 perf-profile.children.cycles-pp.sched_clock 0.34 ± 5% -0.1 0.28 perf-profile.children.cycles-pp.kmalloc_reserve 0.17 ± 7% -0.1 0.12 ± 21% perf-profile.children.cycles-pp.ip_rcv_core 0.15 ± 26% -0.1 0.09 perf-profile.children.cycles-pp.pick_next_task_idle 0.23 ± 7% -0.1 0.18 ± 25% perf-profile.children.cycles-pp.menu_reflect 0.56 ± 6% -0.1 0.51 ± 3% perf-profile.children.cycles-pp.entry_SYSCALL_64_safe_stack 0.18 ± 11% -0.0 0.13 ± 20% perf-profile.children.cycles-pp.ct_kernel_exit_state 0.18 ± 14% -0.0 0.13 ± 14% perf-profile.children.cycles-pp.nf_hook_slow 0.12 ± 33% -0.0 0.07 perf-profile.children.cycles-pp.__update_idle_core 0.13 ± 15% -0.0 0.09 ± 10% perf-profile.children.cycles-pp.move_addr_to_user 0.18 ± 15% -0.0 0.14 ± 11% perf-profile.children.cycles-pp.ct_idle_exit 0.12 ± 23% -0.0 0.08 ± 10% perf-profile.children.cycles-pp.apparmor_ip_postroute 0.08 ± 10% -0.0 0.04 ± 71% perf-profile.children.cycles-pp._copy_from_iter 0.18 ± 12% -0.0 0.14 ± 20% perf-profile.children.cycles-pp.tick_nohz_tick_stopped 0.38 ± 5% -0.0 0.34 ± 4% perf-profile.children.cycles-pp.__udp4_lib_lookup 0.14 ± 18% -0.0 0.10 ± 8% perf-profile.children.cycles-pp.ct_kernel_enter 0.35 ± 2% -0.0 0.31 perf-profile.children.cycles-pp.__x86_indirect_thunk_rax 0.14 ± 6% -0.0 0.11 ± 7% perf-profile.children.cycles-pp.ip_setup_cork 0.13 ± 16% -0.0 0.09 ± 13% perf-profile.children.cycles-pp.udp4_csum_init 0.09 ± 5% -0.0 0.06 ± 14% perf-profile.children.cycles-pp.ip_skb_dst_mtu 0.09 ± 9% -0.0 0.06 ± 7% perf-profile.children.cycles-pp.ipv4_mtu 0.09 ± 5% -0.0 0.07 ± 18% perf-profile.children.cycles-pp.__build_skb_around 0.10 ± 4% -0.0 0.08 ± 16% perf-profile.children.cycles-pp.receiver_wake_function 0.12 ± 3% -0.0 0.10 ± 9% perf-profile.children.cycles-pp.call_cpuidle 0.10 ± 12% +0.0 0.13 ± 6% perf-profile.children.cycles-pp.__mkroute_output 0.24 ± 6% +0.0 0.28 ± 5% perf-profile.children.cycles-pp.rep_movs_alternative 0.02 ±141% +0.0 0.06 ± 8% perf-profile.children.cycles-pp.rebalance_domains 0.22 ± 9% +0.0 0.26 ± 4% perf-profile.children.cycles-pp.__calc_delta 0.18 ± 2% +0.0 0.22 ± 11% perf-profile.children.cycles-pp.copyout 0.08 ± 17% +0.1 0.14 ± 6% perf-profile.children.cycles-pp.__list_add_valid 0.14 ± 8% +0.1 0.20 ± 12% perf-profile.children.cycles-pp.__rdgsbase_inactive 0.07 ± 7% +0.1 0.13 ± 21% perf-profile.children.cycles-pp.rcu_note_context_switch 0.00 +0.1 0.06 ± 14% perf-profile.children.cycles-pp.update_sd_lb_stats 0.00 +0.1 0.07 ± 11% perf-profile.children.cycles-pp.find_busiest_group 0.14 ± 12% +0.1 0.21 ± 19% perf-profile.children.cycles-pp.cpuacct_charge 0.05 ± 70% +0.1 0.12 ± 11% perf-profile.children.cycles-pp.rb_erase 0.11 +0.1 0.20 ± 13% perf-profile.children.cycles-pp.nr_iowait_cpu 0.00 +0.1 0.09 ± 14% perf-profile.children.cycles-pp.load_balance 0.14 ± 19% +0.1 0.23 ± 12% perf-profile.children.cycles-pp.switch_fpu_return 0.00 +0.1 0.09 ± 5% perf-profile.children.cycles-pp.run_backlog_napi 0.09 ± 14% +0.1 0.18 ± 16% perf-profile.children.cycles-pp.tick_nohz_stop_idle 0.00 +0.1 0.10 ± 8% perf-profile.children.cycles-pp.check_cfs_rq_runtime 0.08 ± 14% +0.1 0.19 ± 10% perf-profile.children.cycles-pp.mm_cid_get 0.13 ± 6% +0.1 0.25 ± 18% perf-profile.children.cycles-pp.switch_mm_irqs_off 0.16 ± 13% +0.1 0.30 ± 8% perf-profile.children.cycles-pp.pick_next_entity 0.24 ± 9% +0.1 0.39 ± 5% perf-profile.children.cycles-pp.available_idle_cpu 0.11 ± 19% +0.2 0.26 ± 5% perf-profile.children.cycles-pp.update_min_vruntime 0.30 ± 8% +0.2 0.47 ± 10% perf-profile.children.cycles-pp.__wrgsbase_inactive 0.73 +0.2 0.96 ± 13% perf-profile.children.cycles-pp.___perf_sw_event 0.00 +0.2 0.23 ± 12% perf-profile.children.cycles-pp.backlog_napi_should_run 0.43 ± 8% +0.2 0.66 ± 5% perf-profile.children.cycles-pp.update_rq_clock 0.46 ± 3% +0.3 0.74 ± 3% perf-profile.children.cycles-pp.__update_load_avg_se 0.87 +0.3 1.16 ± 10% perf-profile.children.cycles-pp.prepare_task_switch 0.09 ± 32% +0.3 0.40 ± 6% perf-profile.children.cycles-pp.wake_affine 0.58 ± 7% +0.3 0.92 ± 3% perf-profile.children.cycles-pp.__update_load_avg_cfs_rq 1.56 ± 7% +0.4 1.93 ± 3% perf-profile.children.cycles-pp.enqueue_entity 0.00 +0.4 0.40 ± 15% perf-profile.children.cycles-pp.check_preempt_wakeup 2.00 ± 8% +0.4 2.43 perf-profile.children.cycles-pp.enqueue_task_fair 0.83 ± 3% +0.4 1.25 ± 2% perf-profile.children.cycles-pp.__switch_to 2.07 ± 8% +0.4 2.51 perf-profile.children.cycles-pp.activate_task 0.06 ± 7% +0.4 0.51 ± 12% perf-profile.children.cycles-pp.check_preempt_curr 0.87 ± 3% +0.5 1.38 ± 6% perf-profile.children.cycles-pp.__switch_to_asm 0.80 ± 8% +0.5 1.31 ± 5% perf-profile.children.cycles-pp.update_curr 0.21 ± 7% +0.7 0.89 ± 3% perf-profile.children.cycles-pp.put_prev_entity 0.59 ± 6% +0.7 1.31 ± 3% perf-profile.children.cycles-pp.set_next_entity 2.19 ± 9% +0.9 3.09 ± 2% perf-profile.children.cycles-pp.ttwu_do_activate 1.45 ± 4% +1.0 2.41 ± 4% perf-profile.children.cycles-pp.update_load_avg 21.07 +1.0 22.11 perf-profile.children.cycles-pp.poll_idle 2.67 ± 3% +1.4 4.10 ± 4% perf-profile.children.cycles-pp.try_to_wake_up 54.93 +1.6 56.51 perf-profile.children.cycles-pp.secondary_startup_64_no_verify 54.93 +1.6 56.51 perf-profile.children.cycles-pp.cpu_startup_entry 54.80 +1.6 56.41 perf-profile.children.cycles-pp.do_idle 1.15 ± 6% +1.8 2.94 ± 6% perf-profile.children.cycles-pp.dev_hard_start_xmit 1.08 ± 6% +1.8 2.89 ± 5% perf-profile.children.cycles-pp.loopback_xmit 1.25 ± 6% +1.9 3.15 ± 3% perf-profile.children.cycles-pp.pick_next_task_fair 0.29 ± 20% +2.0 2.27 ± 5% perf-profile.children.cycles-pp.__netif_rx 0.26 ± 15% +2.0 2.23 ± 6% perf-profile.children.cycles-pp.enqueue_to_backlog 0.28 ± 17% +2.0 2.26 ± 6% perf-profile.children.cycles-pp.netif_rx_internal 4.48 +2.1 6.61 perf-profile.children.cycles-pp.syscall_exit_to_user_mode 0.00 +2.5 2.51 perf-profile.children.cycles-pp.exit_to_user_mode_loop 20.35 +2.7 23.05 perf-profile.children.cycles-pp.intel_idle 0.20 ± 16% +2.7 2.90 perf-profile.children.cycles-pp.exit_to_user_mode_prepare 7.64 ± 4% +3.0 10.64 ± 3% perf-profile.children.cycles-pp.__schedule 46.39 +3.2 49.59 perf-profile.children.cycles-pp.cpuidle_idle_call 3.56 ± 15% +3.6 7.18 ± 42% perf-profile.children.cycles-pp.x86_64_start_kernel 3.56 ± 15% +3.6 7.18 ± 42% perf-profile.children.cycles-pp.x86_64_start_reservations 3.56 ± 15% +3.6 7.18 ± 42% perf-profile.children.cycles-pp.start_kernel 3.56 ± 15% +3.6 7.18 ± 42% perf-profile.children.cycles-pp.arch_call_rest_init 3.56 ± 15% +3.6 7.18 ± 42% perf-profile.children.cycles-pp.rest_init 5.29 ± 5% +3.8 9.05 ± 4% perf-profile.children.cycles-pp.schedule 42.90 +3.8 46.70 perf-profile.children.cycles-pp.cpuidle_enter_state 42.93 +3.8 46.74 perf-profile.children.cycles-pp.cpuidle_enter 0.00 +5.7 5.70 perf-profile.children.cycles-pp.napi_threaded_poll_loop 1.37 ± 27% +8.2 9.58 ± 2% perf-profile.children.cycles-pp.ret_from_fork_asm 1.37 ± 27% +8.2 9.58 ± 2% perf-profile.children.cycles-pp.ret_from_fork 1.37 ± 27% +8.2 9.58 ± 2% perf-profile.children.cycles-pp.kthread 0.00 +9.6 9.57 ± 2% perf-profile.children.cycles-pp.smpboot_thread_fn 0.83 ± 17% -0.7 0.12 ± 92% perf-profile.self.cycles-pp.io_serial_in 4.20 -0.5 3.66 ± 2% perf-profile.self.cycles-pp.syscall_exit_to_user_mode 0.57 ± 17% -0.5 0.08 ± 83% perf-profile.self.cycles-pp.delay_tsc 0.56 ± 5% -0.2 0.33 ± 11% perf-profile.self.cycles-pp.udp_sendmsg 1.75 ± 3% -0.2 1.56 ± 4% perf-profile.self.cycles-pp.syscall_return_via_sysret 1.04 ± 8% -0.2 0.87 ± 3% perf-profile.self.cycles-pp.menu_select 0.65 ± 6% -0.2 0.48 ± 9% perf-profile.self.cycles-pp.llist_add_batch 0.26 ± 25% -0.2 0.11 ± 19% perf-profile.self.cycles-pp.__dev_queue_xmit 0.53 ± 10% -0.1 0.38 ± 2% perf-profile.self.cycles-pp.entry_SYSCALL_64_after_hwframe 0.35 ± 20% -0.1 0.20 ± 20% perf-profile.self.cycles-pp.fib_table_lookup 0.56 ± 9% -0.1 0.42 ± 21% perf-profile.self.cycles-pp.do_idle 1.00 ± 4% -0.1 0.86 perf-profile.self.cycles-pp.native_sched_clock 0.37 ± 18% -0.1 0.24 ± 17% perf-profile.self.cycles-pp.ip_finish_output2 0.23 ± 20% -0.1 0.09 ± 9% perf-profile.self.cycles-pp.udp_send_skb 0.39 ± 28% -0.1 0.26 ± 6% perf-profile.self.cycles-pp.sock_def_readable 0.19 ± 5% -0.1 0.06 ± 13% perf-profile.self.cycles-pp.__local_bh_enable_ip 0.39 ± 6% -0.1 0.26 ± 16% perf-profile.self.cycles-pp.__udp_enqueue_schedule_skb 0.32 ± 13% -0.1 0.20 ± 6% perf-profile.self.cycles-pp.__netif_receive_skb_core 0.44 ± 2% -0.1 0.32 ± 15% perf-profile.self.cycles-pp.update_cfs_group 0.24 ± 9% -0.1 0.12 ± 18% perf-profile.self.cycles-pp.newidle_balance 0.39 ± 7% -0.1 0.28 ± 19% perf-profile.self.cycles-pp.sock_wfree 0.14 ± 10% -0.1 0.04 ± 71% perf-profile.self.cycles-pp.udp_unicast_rcv_skb 0.31 ± 7% -0.1 0.22 ± 15% perf-profile.self.cycles-pp.__ip_append_data 0.25 ± 12% -0.1 0.16 ± 13% perf-profile.self.cycles-pp.__skb_recv_udp 0.27 ± 4% -0.1 0.19 ± 4% perf-profile.self.cycles-pp.entry_SYSRETQ_unsafe_stack 0.14 ± 14% -0.1 0.06 ± 72% perf-profile.self.cycles-pp.alloc_skb_with_frags 0.17 ± 16% -0.1 0.09 ± 9% perf-profile.self.cycles-pp.__check_object_size 0.35 -0.1 0.27 ± 3% perf-profile.self.cycles-pp.__check_heap_object 0.24 ± 12% -0.1 0.16 ± 11% perf-profile.self.cycles-pp.__sys_recvfrom 0.40 ± 5% -0.1 0.34 ± 3% perf-profile.self.cycles-pp.kmem_cache_alloc_node 0.21 ± 6% -0.1 0.14 ± 5% perf-profile.self.cycles-pp.sock_alloc_send_pskb 0.45 ± 7% -0.1 0.39 ± 4% perf-profile.self.cycles-pp.skb_set_owner_w 0.12 ± 15% -0.1 0.06 ± 19% perf-profile.self.cycles-pp.skb_release_data 0.15 ± 3% -0.1 0.09 ± 22% perf-profile.self.cycles-pp.nohz_run_idle_balance 0.19 ± 10% -0.1 0.14 ± 9% perf-profile.self.cycles-pp.put_prev_task_fair 0.17 ± 10% -0.1 0.11 ± 22% perf-profile.self.cycles-pp.ct_kernel_exit_state 0.16 ± 17% -0.1 0.11 ± 8% perf-profile.self.cycles-pp.__xfrm_policy_check2 0.32 ± 9% -0.1 0.27 ± 12% perf-profile.self.cycles-pp.do_syscall_64 0.18 ± 17% -0.1 0.13 ± 12% perf-profile.self.cycles-pp.prepare_to_wait_exclusive 0.18 ± 12% -0.1 0.13 ± 25% perf-profile.self.cycles-pp.tick_nohz_tick_stopped 0.17 ± 10% -0.1 0.12 ± 21% perf-profile.self.cycles-pp.ip_rcv_core 0.21 ± 12% -0.0 0.17 ± 7% perf-profile.self.cycles-pp.vfs_read 0.09 ± 9% -0.0 0.04 ± 71% perf-profile.self.cycles-pp.get_next_timer_interrupt 0.12 ± 21% -0.0 0.07 perf-profile.self.cycles-pp.apparmor_ip_postroute 0.32 ± 3% -0.0 0.28 ± 14% perf-profile.self.cycles-pp.call_function_single_prep_ipi 0.69 ± 4% -0.0 0.65 ± 2% perf-profile.self.cycles-pp.__slab_free 0.08 ± 22% -0.0 0.04 ± 70% perf-profile.self.cycles-pp.sched_clock_cpu 0.20 ± 6% -0.0 0.16 ± 15% perf-profile.self.cycles-pp.sock_read_iter 0.11 ± 4% -0.0 0.07 ± 25% perf-profile.self.cycles-pp.tick_nohz_next_event 0.12 ± 13% -0.0 0.08 ± 14% perf-profile.self.cycles-pp.__udp4_lib_lookup 0.13 ± 13% -0.0 0.09 ± 10% perf-profile.self.cycles-pp.read 0.13 ± 16% -0.0 0.09 ± 13% perf-profile.self.cycles-pp.udp4_csum_init 0.09 ± 5% -0.0 0.06 ± 13% perf-profile.self.cycles-pp.ip_skb_dst_mtu 0.10 ± 8% -0.0 0.07 ± 11% perf-profile.self.cycles-pp.ip_setup_cork 0.31 -0.0 0.28 perf-profile.self.cycles-pp.__x86_indirect_thunk_rax 0.08 ± 14% -0.0 0.06 ± 16% perf-profile.self.cycles-pp.autoremove_wake_function 0.12 ± 3% -0.0 0.10 ± 8% perf-profile.self.cycles-pp.call_cpuidle 0.10 ± 17% -0.0 0.07 ± 6% perf-profile.self.cycles-pp.sock_recvmsg 0.08 ± 11% -0.0 0.06 ± 7% perf-profile.self.cycles-pp.ipv4_mtu 0.05 ± 8% +0.0 0.07 ± 17% perf-profile.self.cycles-pp.select_task_rq 0.10 ± 4% +0.0 0.12 ± 3% perf-profile.self.cycles-pp.put_prev_entity 0.09 ± 5% +0.0 0.12 ± 6% perf-profile.self.cycles-pp.__mkroute_output 0.03 ± 70% +0.0 0.07 ± 11% perf-profile.self.cycles-pp.__x64_sys_recvfrom 0.21 ± 7% +0.1 0.26 ± 3% perf-profile.self.cycles-pp.rep_movs_alternative 0.05 ± 8% +0.1 0.11 ± 15% perf-profile.self.cycles-pp.check_preempt_curr 0.07 ± 23% +0.1 0.13 ± 7% perf-profile.self.cycles-pp.__list_add_valid 0.06 ± 7% +0.1 0.12 ± 18% perf-profile.self.cycles-pp.rcu_note_context_switch 0.00 +0.1 0.06 ± 8% perf-profile.self.cycles-pp.napi_threaded_poll_loop 0.14 ± 8% +0.1 0.20 ± 12% perf-profile.self.cycles-pp.__rdgsbase_inactive 0.14 ± 12% +0.1 0.21 ± 21% perf-profile.self.cycles-pp.cpuacct_charge 0.14 ± 6% +0.1 0.21 ± 3% perf-profile.self.cycles-pp.prepare_task_switch 0.04 ± 71% +0.1 0.11 ± 8% perf-profile.self.cycles-pp.rb_erase 0.00 +0.1 0.08 ± 20% perf-profile.self.cycles-pp.check_cfs_rq_runtime 0.00 +0.1 0.08 ± 10% perf-profile.self.cycles-pp.run_backlog_napi 0.35 ± 7% +0.1 0.44 ± 12% perf-profile.self.cycles-pp.dequeue_task_fair 0.13 ± 18% +0.1 0.22 ± 14% perf-profile.self.cycles-pp.switch_fpu_return 0.10 ± 4% +0.1 0.20 ± 13% perf-profile.self.cycles-pp.nr_iowait_cpu 0.16 ± 3% +0.1 0.26 ± 10% perf-profile.self.cycles-pp.ttwu_queue_wakelist 0.21 ± 4% +0.1 0.31 ± 12% perf-profile.self.cycles-pp.finish_task_switch 0.08 ± 14% +0.1 0.19 ± 10% perf-profile.self.cycles-pp.mm_cid_get 0.07 ± 18% +0.1 0.18 ± 4% perf-profile.self.cycles-pp.exit_to_user_mode_prepare 0.13 ± 6% +0.1 0.25 ± 19% perf-profile.self.cycles-pp.switch_mm_irqs_off 0.09 ± 28% +0.1 0.22 ± 3% perf-profile.self.cycles-pp.update_min_vruntime 0.15 ± 8% +0.1 0.28 ± 8% perf-profile.self.cycles-pp.pick_next_entity 0.00 +0.2 0.16 ± 6% perf-profile.self.cycles-pp.exit_to_user_mode_loop 0.22 ± 5% +0.2 0.38 ± 5% perf-profile.self.cycles-pp.available_idle_cpu 0.30 ± 9% +0.2 0.46 ± 10% perf-profile.self.cycles-pp.__wrgsbase_inactive 0.14 ± 8% +0.2 0.31 ± 6% perf-profile.self.cycles-pp.set_next_entity 0.15 ± 13% +0.2 0.33 ± 5% perf-profile.self.cycles-pp.pick_next_task_fair 0.67 ± 3% +0.2 0.84 ± 12% perf-profile.self.cycles-pp.___perf_sw_event 0.14 ± 30% +0.2 0.33 ± 7% perf-profile.self.cycles-pp.schedule 0.00 +0.2 0.22 ± 15% perf-profile.self.cycles-pp.backlog_napi_should_run 0.00 +0.2 0.24 ± 19% perf-profile.self.cycles-pp.check_preempt_wakeup 0.46 ± 4% +0.3 0.72 ± 4% perf-profile.self.cycles-pp.__update_load_avg_se 0.25 ± 21% +0.3 0.52 ± 6% perf-profile.self.cycles-pp.update_curr 0.00 +0.3 0.27 ± 15% perf-profile.self.cycles-pp.smpboot_thread_fn 0.57 ± 6% +0.3 0.90 ± 3% perf-profile.self.cycles-pp.__update_load_avg_cfs_rq 0.41 ± 9% +0.3 0.74 ± 10% perf-profile.self.cycles-pp.update_load_avg 0.84 ± 12% +0.4 1.24 ± 2% perf-profile.self.cycles-pp.__schedule 0.82 ± 3% +0.4 1.25 ± 2% perf-profile.self.cycles-pp.__switch_to 0.87 ± 4% +0.5 1.36 ± 5% perf-profile.self.cycles-pp.__switch_to_asm 20.66 +1.1 21.71 perf-profile.self.cycles-pp.poll_idle 20.35 +2.7 23.05 perf-profile.self.cycles-pp.intel_idle *************************************************************************************************** lkp-icl-2sp9: 64 threads 2 sockets Intel(R) Xeon(R) Gold 6346 CPU @ 3.10GHz (Ice Lake) with 256G memory ========================================================================================= cluster/compiler/cpufreq_governor/datasize/kconfig/nr_threads/protocol/rootfs/runtime/tbox_group/testcase/winsize: cs-localhost/gcc-12/performance/64/x86_64-rhel-8.3/1/UDP/debian-11.1-x86_64-20220510.cgz/30s/lkp-icl-2sp9/uperf/32k commit: 83b5f0253b ("net: phy: Introduce PSGMII PHY interface mode") e9dc861c8b ("net: Use SMP threads for backlog NAPI.") 83b5f0253b1ef352 e9dc861c8b3c291826d6cc1a867 ---------------- --------------------------- %stddev %change %stddev \ | \ 9008437 -11.7% 7958274 cpuidle..usage 148752 ± 8% +83.9% 273556 ± 20% numa-numastat.node0.numa_hit 377578 +60.9% 607490 ± 4% vmstat.system.cs 256190 -14.5% 219130 ± 3% vmstat.system.in 0.29 -0.3 0.03 ± 5% mpstat.cpu.all.soft% 0.95 ± 3% +0.2 1.13 ± 6% mpstat.cpu.all.sys% 0.66 ± 5% +0.1 0.79 ± 4% mpstat.cpu.all.usr% 8973056 -11.6% 7933641 turbostat.C1 0.36 ± 4% +16.6% 0.42 ± 4% turbostat.IPC 9276844 -11.5% 8213432 turbostat.IRQ 14235 ± 5% -18.1% 11654 ± 2% turbostat.POLL 502369 +39.1% 699008 ± 2% meminfo.Active 502289 +39.1% 698928 ± 2% meminfo.Active(anon) 1143243 +10.8% 1266813 meminfo.Committed_AS 453349 ± 2% -15.5% 382956 meminfo.Inactive 453153 ± 2% -15.5% 382760 meminfo.Inactive(anon) 610710 +20.8% 737539 ± 2% meminfo.Shmem 154.79 -16.5% 129.28 uperf.Netstat_lo_in_Mbps 154.79 -16.5% 129.28 uperf.Netstat_lo_out_Mbps 107.68 -16.5% 89.93 uperf.Runstat_127.0.0.1_Mbps 107.68 -16.5% 89.93 uperf.Runstat_master_Mbps 372.17 ± 3% +7.6e+05% 2838502 uperf.time.involuntary_context_switches 3399305 -16.5% 2839422 uperf.time.voluntary_context_switches 1297 ± 49% +26455.4% 344423 ± 46% numa-meminfo.node0.Active(anon) 12288 ± 56% +83.3% 22524 ± 23% numa-meminfo.node0.AnonHugePages 5413 ± 14% +6557.4% 360421 ± 45% numa-meminfo.node0.Shmem 275637 ± 14% -43.8% 154876 ± 19% numa-meminfo.node1.Inactive 275539 ± 14% -43.9% 154681 ± 19% numa-meminfo.node1.Inactive(anon) 6538 ± 5% +16.5% 7619 ± 5% numa-meminfo.node1.KernelStack 107211 ± 71% +1246.5% 1443603 ± 87% numa-meminfo.node1.Unevictable 323.83 ± 49% +26490.4% 86108 ± 46% numa-vmstat.node0.nr_active_anon 1353 ± 14% +6559.8% 90106 ± 45% numa-vmstat.node0.nr_shmem 323.83 ± 49% +26490.4% 86108 ± 46% numa-vmstat.node0.nr_zone_active_anon 148760 ± 8% +83.9% 273535 ± 20% numa-vmstat.node0.numa_hit 68899 ± 14% -43.9% 38681 ± 19% numa-vmstat.node1.nr_inactive_anon 6541 ± 5% +16.5% 7619 ± 5% numa-vmstat.node1.nr_kernel_stack 26802 ± 71% +1246.5% 360900 ± 87% numa-vmstat.node1.nr_unevictable 68899 ± 14% -43.9% 38681 ± 19% numa-vmstat.node1.nr_zone_inactive_anon 26802 ± 71% +1246.5% 360900 ± 87% numa-vmstat.node1.nr_zone_unevictable 125572 +39.2% 174744 ± 2% proc-vmstat.nr_active_anon 829950 +3.8% 861684 proc-vmstat.nr_file_pages 113307 ± 2% -15.5% 95696 proc-vmstat.nr_inactive_anon 14124 +7.8% 15225 proc-vmstat.nr_kernel_stack 152687 +20.8% 184396 ± 2% proc-vmstat.nr_shmem 125572 +39.2% 174744 ± 2% proc-vmstat.nr_zone_active_anon 113307 ± 2% -15.5% 95696 proc-vmstat.nr_zone_inactive_anon 13015 ± 54% +142.4% 31549 ± 14% proc-vmstat.numa_hint_faults 540311 +7.6% 581575 proc-vmstat.numa_hit 474106 +8.7% 515374 proc-vmstat.numa_local 213704 -62.0% 81170 ± 7% proc-vmstat.pgactivate 570252 +7.0% 609921 proc-vmstat.pgalloc_normal 293333 ± 4% +11.2% 326321 proc-vmstat.pgfault 0.00 ± 22% -100.0% 0.00 perf-sched.sch_delay.avg.ms.__cond_resched.aa_sk_perm.security_socket_sendmsg.sock_sendmsg.__sys_sendto 0.00 -72.2% 0.00 ± 44% perf-sched.sch_delay.avg.ms.do_task_dead.do_exit.do_group_exit.__x64_sys_exit_group.do_syscall_64 0.00 ± 19% -100.0% 0.00 perf-sched.sch_delay.avg.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_reschedule_ipi 0.01 -40.0% 0.00 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.00 -100.0% 0.00 perf-sched.sch_delay.avg.ms.schedule_timeout.__skb_wait_for_more_packets.__skb_recv_udp.udpv6_recvmsg 0.00 ± 24% -40.7% 0.00 ± 17% perf-sched.sch_delay.avg.ms.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 0.00 ± 74% -100.0% 0.00 perf-sched.sch_delay.max.ms.__cond_resched.aa_sk_perm.security_socket_sendmsg.sock_sendmsg.__sys_sendto 0.00 ± 45% -100.0% 0.00 perf-sched.sch_delay.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_reschedule_ipi 0.01 ± 5% +11583.5% 1.54 ± 73% perf-sched.sch_delay.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64 1.54 ± 84% -99.3% 0.01 ± 22% perf-sched.sch_delay.max.ms.schedule_timeout.__skb_wait_for_more_packets.__skb_recv_udp.udpv6_recvmsg 0.00 -33.3% 0.00 perf-sched.total_sch_delay.average.ms 0.90 ± 2% -36.4% 0.58 ± 2% perf-sched.total_wait_and_delay.average.ms 790959 +82.6% 1444641 perf-sched.total_wait_and_delay.count.ms 4022 ± 6% -13.4% 3481 ± 12% perf-sched.total_wait_and_delay.max.ms 0.90 ± 2% -36.4% 0.57 ± 2% perf-sched.total_wait_time.average.ms 4022 ± 6% -13.4% 3481 ± 12% perf-sched.total_wait_time.max.ms 224.93 ± 2% -49.9% 112.72 ± 14% perf-sched.wait_and_delay.avg.ms.do_task_dead.do_exit.do_group_exit.__x64_sys_exit_group.do_syscall_64 60.49 +96.1% 118.62 ± 8% perf-sched.wait_and_delay.avg.ms.schedule_hrtimeout_range_clock.do_poll.constprop.0.do_sys_poll 0.01 -64.8% 0.00 ± 11% perf-sched.wait_and_delay.avg.ms.schedule_timeout.__skb_wait_for_more_packets.__skb_recv_udp.udpv6_recvmsg 425.27 ± 8% -99.8% 0.94 ± 5% perf-sched.wait_and_delay.avg.ms.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 406.83 -56.0% 179.00 ± 9% perf-sched.wait_and_delay.count.schedule_hrtimeout_range_clock.do_poll.constprop.0.do_sys_poll 784366 -38.8% 480361 perf-sched.wait_and_delay.count.schedule_timeout.__skb_wait_for_more_packets.__skb_recv_udp.udpv6_recvmsg 767.33 ± 5% +62580.4% 480967 perf-sched.wait_and_delay.count.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 1.56 ± 82% -93.3% 0.10 ±127% perf-sched.wait_and_delay.max.ms.schedule_timeout.__skb_wait_for_more_packets.__skb_recv_udp.udpv6_recvmsg 0.01 ± 9% -100.0% 0.00 perf-sched.wait_time.avg.ms.__cond_resched.aa_sk_perm.security_socket_sendmsg.sock_sendmsg.__sys_sendto 224.93 ± 2% -49.9% 112.71 ± 14% perf-sched.wait_time.avg.ms.do_task_dead.do_exit.do_group_exit.__x64_sys_exit_group.do_syscall_64 0.04 ±180% +17278.2% 6.11 ± 42% perf-sched.wait_time.avg.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_apic_timer_interrupt 0.01 ± 24% +54058.8% 3.07 ± 98% perf-sched.wait_time.avg.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_reschedule_ipi 60.49 +96.1% 118.62 ± 8% perf-sched.wait_time.avg.ms.schedule_hrtimeout_range_clock.do_poll.constprop.0.do_sys_poll 0.01 -47.2% 0.00 ± 11% perf-sched.wait_time.avg.ms.schedule_timeout.__skb_wait_for_more_packets.__skb_recv_udp.udpv6_recvmsg 425.27 ± 8% -99.8% 0.94 ± 5% perf-sched.wait_time.avg.ms.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 0.01 ± 40% -100.0% 0.00 perf-sched.wait_time.max.ms.__cond_resched.aa_sk_perm.security_socket_sendmsg.sock_sendmsg.__sys_sendto 1497 ± 33% -33.2% 1000 perf-sched.wait_time.max.ms.do_task_dead.do_exit.do_group_exit.__x64_sys_exit_group.do_syscall_64 0.10 ±193% +12202.9% 12.10 ± 31% perf-sched.wait_time.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_apic_timer_interrupt 0.01 ± 39% +60486.7% 4.54 ± 78% perf-sched.wait_time.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_reschedule_ipi 0.03 ± 41% +26760.0% 6.94 ± 97% perf-sched.wait_time.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64 5.33 ± 2% -18.9% 4.32 ± 2% perf-stat.i.MPKI 1.469e+09 ± 4% +17.6% 1.727e+09 perf-stat.i.branch-instructions 1.42 -0.2 1.21 ± 4% perf-stat.i.branch-miss-rate% 4.40 ± 4% +2.8 7.16 ± 9% perf-stat.i.cache-miss-rate% 1666058 +57.2% 2618874 ± 10% perf-stat.i.cache-misses 34535681 ± 2% -6.6% 32270735 ± 3% perf-stat.i.cache-references 415718 ± 2% +61.8% 672627 ± 4% perf-stat.i.context-switches 1.22 -13.4% 1.06 ± 2% perf-stat.i.cpi 133.38 ± 2% +25.9% 167.93 ± 2% perf-stat.i.cpu-migrations 18722 ± 7% -20.6% 14861 ± 3% perf-stat.i.cycles-between-cache-misses 0.02 ± 15% -0.0 0.01 ± 8% perf-stat.i.dTLB-load-miss-rate% 1.839e+09 ± 2% +21.7% 2.237e+09 perf-stat.i.dTLB-loads 9.513e+08 ± 2% +25.3% 1.192e+09 ± 2% perf-stat.i.dTLB-stores 7.334e+09 ± 3% +16.6% 8.551e+09 perf-stat.i.instructions 0.90 +16.3% 1.04 ± 3% perf-stat.i.ipc 66.54 ± 3% +21.0% 80.55 perf-stat.i.metric.M/sec 5641 ± 7% +15.0% 6485 ± 3% perf-stat.i.minor-faults 153120 ± 10% +245.2% 528535 ± 19% perf-stat.i.node-load-misses 113594 ± 9% -38.1% 70359 ± 6% perf-stat.i.node-loads 44891 ± 19% +140.5% 107942 ± 20% perf-stat.i.node-store-misses 255691 ± 10% +85.2% 473432 ± 7% perf-stat.i.node-stores 5641 ± 7% +15.0% 6485 ± 3% perf-stat.i.page-faults 4.71 ± 3% -19.9% 3.77 ± 2% perf-stat.overall.MPKI 1.52 -0.3 1.25 ± 2% perf-stat.overall.branch-miss-rate% 4.82 ± 3% +3.3 8.11 ± 9% perf-stat.overall.cache-miss-rate% 1.08 -14.2% 0.93 ± 2% perf-stat.overall.cpi 4777 ± 2% -35.7% 3070 ± 10% perf-stat.overall.cycles-between-cache-misses 0.02 ± 11% -0.0 0.02 ± 6% perf-stat.overall.dTLB-load-miss-rate% 0.00 ± 2% -0.0 0.00 ± 5% perf-stat.overall.dTLB-store-miss-rate% 0.92 +16.6% 1.08 ± 2% perf-stat.overall.ipc 57.35 ± 7% +30.6 87.91 ± 2% perf-stat.overall.node-load-miss-rate% 1.425e+09 ± 4% +17.7% 1.678e+09 perf-stat.ps.branch-instructions 1615384 +57.5% 2544001 ± 10% perf-stat.ps.cache-misses 33513906 ± 2% -6.5% 31341570 ± 3% perf-stat.ps.cache-references 403480 ± 2% +61.9% 653109 ± 4% perf-stat.ps.context-switches 129.49 ± 2% +25.9% 163.08 ± 2% perf-stat.ps.cpu-migrations 1.784e+09 ± 2% +21.8% 2.173e+09 perf-stat.ps.dTLB-loads 9.23e+08 ± 2% +25.4% 1.157e+09 ± 2% perf-stat.ps.dTLB-stores 7.116e+09 ± 3% +16.7% 8.306e+09 perf-stat.ps.instructions 5470 ± 7% +15.1% 6298 ± 3% perf-stat.ps.minor-faults 148524 ± 10% +245.7% 513437 ± 19% perf-stat.ps.node-load-misses 110108 ± 9% -37.9% 68336 ± 6% perf-stat.ps.node-loads 43541 ± 19% +140.8% 104863 ± 20% perf-stat.ps.node-store-misses 247950 ± 10% +85.5% 459944 ± 7% perf-stat.ps.node-stores 5470 ± 7% +15.1% 6298 ± 3% perf-stat.ps.page-faults 2.415e+11 ± 2% +20.1% 2.9e+11 ± 4% perf-stat.total.instructions 19.24 ± 2% -8.6 10.69 ± 2% perf-profile.calltrace.cycles-pp.__x64_sys_sendto.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_sendto 19.12 ± 2% -8.5 10.60 ± 2% perf-profile.calltrace.cycles-pp.__sys_sendto.__x64_sys_sendto.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_sendto 8.48 ± 2% -8.5 0.00 perf-profile.calltrace.cycles-pp.__local_bh_enable_ip.__dev_queue_xmit.ip_finish_output2.ip_send_skb.udp_send_skb 18.01 ± 2% -8.4 9.57 ± 2% perf-profile.calltrace.cycles-pp.sock_sendmsg.__sys_sendto.__x64_sys_sendto.do_syscall_64.entry_SYSCALL_64_after_hwframe 8.35 ± 2% -8.4 0.00 perf-profile.calltrace.cycles-pp.do_softirq.__local_bh_enable_ip.__dev_queue_xmit.ip_finish_output2.ip_send_skb 17.69 ± 2% -8.3 9.35 ± 2% perf-profile.calltrace.cycles-pp.udpv6_sendmsg.sock_sendmsg.__sys_sendto.__x64_sys_sendto.do_syscall_64 8.24 ± 2% -8.2 0.00 perf-profile.calltrace.cycles-pp.__do_softirq.do_softirq.__local_bh_enable_ip.__dev_queue_xmit.ip_finish_output2 17.20 ± 2% -8.2 9.00 ± 2% perf-profile.calltrace.cycles-pp.udp_sendmsg.udpv6_sendmsg.sock_sendmsg.__sys_sendto.__x64_sys_sendto 7.63 ± 3% -7.6 0.00 perf-profile.calltrace.cycles-pp.net_rx_action.__do_softirq.do_softirq.__local_bh_enable_ip.__dev_queue_xmit 11.38 ± 2% -7.4 3.97 ± 2% perf-profile.calltrace.cycles-pp.udp_send_skb.udp_sendmsg.udpv6_sendmsg.sock_sendmsg.__sys_sendto 7.32 ± 3% -7.3 0.00 perf-profile.calltrace.cycles-pp.__napi_poll.net_rx_action.__do_softirq.do_softirq.__local_bh_enable_ip 11.10 ± 2% -7.3 3.84 ± 2% perf-profile.calltrace.cycles-pp.ip_send_skb.udp_send_skb.udp_sendmsg.udpv6_sendmsg.sock_sendmsg 7.24 ± 3% -7.2 0.00 perf-profile.calltrace.cycles-pp.process_backlog.__napi_poll.net_rx_action.__do_softirq.do_softirq 10.61 ± 2% -7.1 3.47 ± 2% perf-profile.calltrace.cycles-pp.ip_finish_output2.ip_send_skb.udp_send_skb.udp_sendmsg.udpv6_sendmsg 10.33 ± 2% -7.0 3.35 ± 2% perf-profile.calltrace.cycles-pp.__dev_queue_xmit.ip_finish_output2.ip_send_skb.udp_send_skb.udp_sendmsg 6.96 ± 3% -7.0 0.00 perf-profile.calltrace.cycles-pp.__netif_receive_skb_one_core.process_backlog.__napi_poll.net_rx_action.__do_softirq 6.44 ± 3% -6.4 0.00 perf-profile.calltrace.cycles-pp.ip_local_deliver_finish.__netif_receive_skb_one_core.process_backlog.__napi_poll.net_rx_action 19.76 ± 2% -5.3 14.49 ± 2% perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.__libc_sendto 19.55 ± 2% -5.3 14.28 ± 2% perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_sendto 56.13 ± 3% -4.9 51.27 ± 3% perf-profile.calltrace.cycles-pp.asm_sysvec_call_function_single.acpi_safe_halt.acpi_idle_enter.cpuidle_enter_state.cpuidle_enter 20.38 ± 2% -4.4 15.93 ± 2% perf-profile.calltrace.cycles-pp.__libc_sendto 58.25 -4.0 54.23 perf-profile.calltrace.cycles-pp.secondary_startup_64_no_verify 4.04 ± 73% -3.6 0.42 ±223% perf-profile.calltrace.cycles-pp.cpu_startup_entry.rest_init.arch_call_rest_init.start_kernel.x86_64_start_reservations 4.04 ± 73% -3.6 0.42 ±223% perf-profile.calltrace.cycles-pp.x86_64_start_kernel.secondary_startup_64_no_verify 4.04 ± 73% -3.6 0.42 ±223% perf-profile.calltrace.cycles-pp.x86_64_start_reservations.x86_64_start_kernel.secondary_startup_64_no_verify 4.04 ± 73% -3.6 0.42 ±223% perf-profile.calltrace.cycles-pp.start_kernel.x86_64_start_reservations.x86_64_start_kernel.secondary_startup_64_no_verify 4.04 ± 73% -3.6 0.42 ±223% perf-profile.calltrace.cycles-pp.arch_call_rest_init.start_kernel.x86_64_start_reservations.x86_64_start_kernel.secondary_startup_64_no_verify 4.04 ± 73% -3.6 0.42 ±223% perf-profile.calltrace.cycles-pp.rest_init.arch_call_rest_init.start_kernel.x86_64_start_reservations.x86_64_start_kernel 4.02 ± 73% -3.6 0.41 ±223% perf-profile.calltrace.cycles-pp.do_idle.cpu_startup_entry.rest_init.arch_call_rest_init.start_kernel 51.35 -3.3 48.06 perf-profile.calltrace.cycles-pp.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle.cpu_startup_entry 50.36 -3.2 47.12 perf-profile.calltrace.cycles-pp.acpi_idle_enter.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle 15.60 ± 4% -2.0 13.63 perf-profile.calltrace.cycles-pp.__libc_recvfrom 13.92 ± 5% -1.7 12.26 perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.__libc_recvfrom 13.74 ± 5% -1.6 12.10 perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_recvfrom 13.35 ± 4% -1.6 11.74 perf-profile.calltrace.cycles-pp.__x64_sys_recvfrom.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_recvfrom 13.27 ± 5% -1.6 11.68 perf-profile.calltrace.cycles-pp.__sys_recvfrom.__x64_sys_recvfrom.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_recvfrom 12.03 ± 5% -1.4 10.66 ± 2% perf-profile.calltrace.cycles-pp.sock_recvmsg.__sys_recvfrom.__x64_sys_recvfrom.do_syscall_64.entry_SYSCALL_64_after_hwframe 11.90 ± 5% -1.4 10.55 ± 2% perf-profile.calltrace.cycles-pp.inet6_recvmsg.sock_recvmsg.__sys_recvfrom.__x64_sys_recvfrom.do_syscall_64 11.84 ± 5% -1.3 10.51 ± 2% perf-profile.calltrace.cycles-pp.udpv6_recvmsg.inet6_recvmsg.sock_recvmsg.__sys_recvfrom.__x64_sys_recvfrom 1.52 ± 6% -0.6 0.93 ± 9% perf-profile.calltrace.cycles-pp.dequeue_task_fair.__schedule.schedule.schedule_timeout.__skb_wait_for_more_packets 1.31 ± 6% -0.5 0.79 ± 10% perf-profile.calltrace.cycles-pp.dequeue_entity.dequeue_task_fair.__schedule.schedule.schedule_timeout 4.01 ± 4% -0.3 3.66 ± 3% perf-profile.calltrace.cycles-pp.ip_make_skb.udp_sendmsg.udpv6_sendmsg.sock_sendmsg.__sys_sendto 2.72 ± 5% -0.2 2.48 ± 4% perf-profile.calltrace.cycles-pp.__ip_append_data.ip_make_skb.udp_sendmsg.udpv6_sendmsg.sock_sendmsg 1.70 ± 5% -0.2 1.52 ± 5% perf-profile.calltrace.cycles-pp.sock_alloc_send_pskb.__ip_append_data.ip_make_skb.udp_sendmsg.udpv6_sendmsg 1.06 ± 9% -0.2 0.90 ± 2% perf-profile.calltrace.cycles-pp._copy_to_iter.udpv6_recvmsg.inet6_recvmsg.sock_recvmsg.__sys_recvfrom 1.54 ± 5% -0.2 1.37 ± 6% perf-profile.calltrace.cycles-pp.ttwu_queue_wakelist.try_to_wake_up.autoremove_wake_function.__wake_up_common.__wake_up_common_lock 1.00 ± 8% -0.2 0.84 ± 3% perf-profile.calltrace.cycles-pp.copyout._copy_to_iter.udpv6_recvmsg.inet6_recvmsg.sock_recvmsg 0.94 ± 5% -0.2 0.78 ± 7% perf-profile.calltrace.cycles-pp.ip_route_output_flow.udp_sendmsg.udpv6_sendmsg.sock_sendmsg.__sys_sendto 0.83 ± 11% -0.1 0.71 ± 6% perf-profile.calltrace.cycles-pp._raw_spin_lock_bh.__skb_recv_udp.udpv6_recvmsg.inet6_recvmsg.sock_recvmsg 0.70 ± 3% -0.1 0.59 ± 3% perf-profile.calltrace.cycles-pp.txn_execute_once 1.14 ± 8% -0.1 1.04 ± 4% perf-profile.calltrace.cycles-pp.__ip_make_skb.ip_make_skb.udp_sendmsg.udpv6_sendmsg.sock_sendmsg 0.91 ± 3% -0.1 0.82 ± 8% perf-profile.calltrace.cycles-pp.__alloc_skb.alloc_skb_with_frags.sock_alloc_send_pskb.__ip_append_data.ip_make_skb 0.64 ± 7% +0.1 0.74 ± 4% perf-profile.calltrace.cycles-pp.tick_irq_enter.irq_enter_rcu.sysvec_call_function_single.asm_sysvec_call_function_single.acpi_safe_halt 0.73 ± 8% +0.1 0.87 ± 6% perf-profile.calltrace.cycles-pp.check_preempt_curr.ttwu_do_activate.sched_ttwu_pending.__flush_smp_call_function_queue.__sysvec_call_function_single 1.30 ± 6% +0.2 1.46 ± 5% perf-profile.calltrace.cycles-pp.enqueue_task_fair.activate_task.ttwu_do_activate.sched_ttwu_pending.__flush_smp_call_function_queue 1.35 ± 6% +0.2 1.53 ± 5% perf-profile.calltrace.cycles-pp.activate_task.ttwu_do_activate.sched_ttwu_pending.__flush_smp_call_function_queue.__sysvec_call_function_single 1.00 ± 8% +0.2 1.22 ± 7% perf-profile.calltrace.cycles-pp.enqueue_entity.enqueue_task_fair.activate_task.ttwu_do_activate.sched_ttwu_pending 0.49 ± 45% +0.2 0.71 ± 10% perf-profile.calltrace.cycles-pp.update_load_avg.enqueue_entity.enqueue_task_fair.activate_task.ttwu_do_activate 0.00 +0.6 0.58 ± 5% perf-profile.calltrace.cycles-pp.update_load_avg.put_prev_entity.pick_next_task_fair.__schedule.schedule 0.00 +0.6 0.58 ± 8% perf-profile.calltrace.cycles-pp.enqueue_entity.enqueue_task_fair.activate_task.ttwu_do_activate.try_to_wake_up 0.00 +0.6 0.59 ± 7% perf-profile.calltrace.cycles-pp.cpuacct_charge.update_curr.put_prev_entity.pick_next_task_fair.__schedule 0.00 +0.7 0.68 ± 8% perf-profile.calltrace.cycles-pp.available_idle_cpu.wake_affine.select_task_rq_fair.select_task_rq.try_to_wake_up 0.00 +0.7 0.70 ± 6% perf-profile.calltrace.cycles-pp.update_curr.put_prev_entity.pick_next_task_fair.__schedule.schedule 0.00 +0.7 0.72 ± 9% perf-profile.calltrace.cycles-pp.wake_affine.select_task_rq_fair.select_task_rq.try_to_wake_up.autoremove_wake_function 0.00 +0.7 0.74 ± 4% perf-profile.calltrace.cycles-pp.enqueue_task_fair.activate_task.ttwu_do_activate.try_to_wake_up.enqueue_to_backlog 0.00 +0.8 0.79 ± 3% perf-profile.calltrace.cycles-pp.activate_task.ttwu_do_activate.try_to_wake_up.enqueue_to_backlog.netif_rx_internal 0.84 ± 42% +0.8 1.66 ± 13% perf-profile.calltrace.cycles-pp.newidle_balance.pick_next_task_fair.__schedule.schedule.schedule_timeout 0.00 +0.8 0.81 ± 7% perf-profile.calltrace.cycles-pp.pick_next_task_fair.__schedule.schedule.smpboot_thread_fn.kthread 0.90 ± 40% +0.8 1.72 ± 13% perf-profile.calltrace.cycles-pp.pick_next_task_fair.__schedule.schedule.schedule_timeout.__skb_wait_for_more_packets 0.00 +1.1 1.11 ± 3% perf-profile.calltrace.cycles-pp.ttwu_do_activate.try_to_wake_up.enqueue_to_backlog.netif_rx_internal.__netif_rx 0.00 +1.4 1.42 ± 4% perf-profile.calltrace.cycles-pp.put_prev_entity.pick_next_task_fair.__schedule.schedule.exit_to_user_mode_loop 1.33 ± 4% +1.7 3.04 ± 2% perf-profile.calltrace.cycles-pp.dev_hard_start_xmit.__dev_queue_xmit.ip_finish_output2.ip_send_skb.udp_send_skb 1.24 ± 4% +1.7 2.96 ± 2% perf-profile.calltrace.cycles-pp.loopback_xmit.dev_hard_start_xmit.__dev_queue_xmit.ip_finish_output2.ip_send_skb 0.00 +1.8 1.76 ± 4% perf-profile.calltrace.cycles-pp.try_to_wake_up.enqueue_to_backlog.netif_rx_internal.__netif_rx.loopback_xmit 0.00 +1.9 1.86 ± 4% perf-profile.calltrace.cycles-pp.pick_next_task_fair.__schedule.schedule.exit_to_user_mode_loop.exit_to_user_mode_prepare 0.00 +2.0 1.95 ± 3% perf-profile.calltrace.cycles-pp.enqueue_to_backlog.netif_rx_internal.__netif_rx.loopback_xmit.dev_hard_start_xmit 0.00 +2.0 1.98 ± 3% perf-profile.calltrace.cycles-pp.netif_rx_internal.__netif_rx.loopback_xmit.dev_hard_start_xmit.__dev_queue_xmit 0.00 +2.0 2.00 ± 3% perf-profile.calltrace.cycles-pp.__netif_rx.loopback_xmit.dev_hard_start_xmit.__dev_queue_xmit.ip_finish_output2 0.00 +2.5 2.45 ± 7% perf-profile.calltrace.cycles-pp.__schedule.schedule.smpboot_thread_fn.kthread.ret_from_fork 0.00 +2.6 2.62 ± 6% perf-profile.calltrace.cycles-pp.schedule.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 0.00 +2.8 2.78 ± 3% perf-profile.calltrace.cycles-pp.__schedule.schedule.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode 0.00 +2.8 2.84 ± 3% perf-profile.calltrace.cycles-pp.schedule.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64 0.00 +3.0 3.00 ± 3% perf-profile.calltrace.cycles-pp.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe 0.00 +3.2 3.23 ± 3% perf-profile.calltrace.cycles-pp.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_sendto 0.00 +3.4 3.37 ± 3% perf-profile.calltrace.cycles-pp.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe.__libc_sendto 0.00 +6.0 6.00 ± 4% perf-profile.calltrace.cycles-pp.ip_local_deliver_finish.__netif_receive_skb_one_core.process_backlog.__napi_poll.napi_threaded_poll_loop 0.00 +6.5 6.50 ± 4% perf-profile.calltrace.cycles-pp.__netif_receive_skb_one_core.process_backlog.__napi_poll.napi_threaded_poll_loop.smpboot_thread_fn 0.00 +6.8 6.76 ± 4% perf-profile.calltrace.cycles-pp.process_backlog.__napi_poll.napi_threaded_poll_loop.smpboot_thread_fn.kthread 0.00 +6.8 6.82 ± 4% perf-profile.calltrace.cycles-pp.__napi_poll.napi_threaded_poll_loop.smpboot_thread_fn.kthread.ret_from_fork 0.00 +7.0 7.02 ± 4% perf-profile.calltrace.cycles-pp.napi_threaded_poll_loop.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 0.00 +10.1 10.12 ± 5% perf-profile.calltrace.cycles-pp.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 0.00 +10.4 10.36 ± 5% perf-profile.calltrace.cycles-pp.ret_from_fork_asm 0.00 +10.4 10.36 ± 5% perf-profile.calltrace.cycles-pp.ret_from_fork.ret_from_fork_asm 0.00 +10.4 10.36 ± 5% perf-profile.calltrace.cycles-pp.kthread.ret_from_fork.ret_from_fork_asm 19.27 ± 2% -8.6 10.71 ± 2% perf-profile.children.cycles-pp.__x64_sys_sendto 19.15 ± 2% -8.5 10.62 ± 2% perf-profile.children.cycles-pp.__sys_sendto 18.04 ± 2% -8.4 9.59 ± 2% perf-profile.children.cycles-pp.sock_sendmsg 8.54 ± 2% -8.4 0.12 ± 17% perf-profile.children.cycles-pp.__local_bh_enable_ip 8.37 ± 2% -8.4 0.00 perf-profile.children.cycles-pp.do_softirq 17.72 ± 2% -8.3 9.38 ± 2% perf-profile.children.cycles-pp.udpv6_sendmsg 17.24 ± 2% -8.2 9.02 ± 2% perf-profile.children.cycles-pp.udp_sendmsg 8.99 ± 2% -8.2 0.78 ± 13% perf-profile.children.cycles-pp.__do_softirq 7.64 ± 3% -7.6 0.00 perf-profile.children.cycles-pp.net_rx_action 11.40 ± 2% -7.4 3.98 ± 2% perf-profile.children.cycles-pp.udp_send_skb 11.12 ± 2% -7.3 3.86 ± 2% perf-profile.children.cycles-pp.ip_send_skb 10.62 ± 2% -7.2 3.47 ± 3% perf-profile.children.cycles-pp.ip_finish_output2 10.36 ± 2% -7.0 3.37 ± 2% perf-profile.children.cycles-pp.__dev_queue_xmit 34.63 ± 2% -6.9 27.78 perf-profile.children.cycles-pp.entry_SYSCALL_64_after_hwframe 34.26 ± 2% -6.8 27.44 perf-profile.children.cycles-pp.do_syscall_64 20.56 ± 2% -4.5 16.10 ± 2% perf-profile.children.cycles-pp.__libc_sendto 58.25 -4.0 54.23 perf-profile.children.cycles-pp.secondary_startup_64_no_verify 58.25 -4.0 54.23 perf-profile.children.cycles-pp.cpu_startup_entry 58.16 -4.0 54.16 perf-profile.children.cycles-pp.do_idle 54.41 -3.4 50.99 perf-profile.children.cycles-pp.cpuidle_idle_call 51.50 -3.2 48.30 perf-profile.children.cycles-pp.cpuidle_enter_state 51.76 -3.2 48.57 perf-profile.children.cycles-pp.cpuidle_enter 50.47 -3.2 47.32 ± 2% perf-profile.children.cycles-pp.acpi_idle_enter 50.40 -3.1 47.27 ± 2% perf-profile.children.cycles-pp.acpi_safe_halt 32.12 ± 3% -2.5 29.60 ± 2% perf-profile.children.cycles-pp.asm_sysvec_call_function_single 15.77 ± 4% -2.0 13.77 perf-profile.children.cycles-pp.__libc_recvfrom 13.39 ± 4% -1.6 11.77 perf-profile.children.cycles-pp.__x64_sys_recvfrom 13.30 ± 5% -1.6 11.70 perf-profile.children.cycles-pp.__sys_recvfrom 12.04 ± 5% -1.4 10.66 ± 2% perf-profile.children.cycles-pp.sock_recvmsg 11.91 ± 5% -1.4 10.55 ± 2% perf-profile.children.cycles-pp.inet6_recvmsg 11.86 ± 4% -1.3 10.52 ± 2% perf-profile.children.cycles-pp.udpv6_recvmsg 0.71 ± 11% -0.7 0.05 ± 47% perf-profile.children.cycles-pp.select_idle_sibling 5.66 ± 3% -0.5 5.18 ± 5% perf-profile.children.cycles-pp.udp_queue_rcv_one_skb 0.81 ± 3% -0.4 0.40 ± 5% perf-profile.children.cycles-pp.irqtime_account_irq 2.52 ± 6% -0.4 2.11 ± 3% perf-profile.children.cycles-pp.schedule_idle 4.02 ± 4% -0.4 3.67 ± 3% perf-profile.children.cycles-pp.ip_make_skb 2.74 ± 5% -0.2 2.49 ± 4% perf-profile.children.cycles-pp.__ip_append_data 1.72 ± 6% -0.2 1.54 ± 5% perf-profile.children.cycles-pp.sock_alloc_send_pskb 1.08 ± 9% -0.2 0.90 ± 3% perf-profile.children.cycles-pp._copy_to_iter 1.03 ± 9% -0.2 0.86 ± 3% perf-profile.children.cycles-pp.copyout 0.94 ± 5% -0.2 0.79 ± 8% perf-profile.children.cycles-pp.ip_route_output_flow 1.56 ± 5% -0.1 1.42 ± 5% perf-profile.children.cycles-pp.ttwu_queue_wakelist 0.84 ± 11% -0.1 0.72 ± 7% perf-profile.children.cycles-pp._raw_spin_lock_bh 0.63 ± 9% -0.1 0.52 ± 5% perf-profile.children.cycles-pp.move_addr_to_user 0.54 ± 4% -0.1 0.44 ± 5% perf-profile.children.cycles-pp.__entry_text_start 0.58 ± 7% -0.1 0.49 ± 6% perf-profile.children.cycles-pp.native_apic_msr_eoi_write 0.72 ± 3% -0.1 0.63 ± 3% perf-profile.children.cycles-pp.txn_execute_once 0.24 ± 12% -0.1 0.18 ± 16% perf-profile.children.cycles-pp.prepare_to_wait_exclusive 0.29 ± 9% -0.1 0.22 ± 6% perf-profile.children.cycles-pp.stats_update 0.19 ± 12% -0.1 0.14 ± 13% perf-profile.children.cycles-pp.__pthread_enable_asynccancel 0.09 ± 26% -0.1 0.04 ± 71% perf-profile.children.cycles-pp.pick_next_task_idle 0.29 ± 3% -0.0 0.24 ± 5% perf-profile.children.cycles-pp._copy_from_user 0.12 ± 13% -0.0 0.08 ± 13% perf-profile.children.cycles-pp.dst_release 0.16 ± 7% -0.0 0.12 ± 13% perf-profile.children.cycles-pp.ip_rcv_core 0.05 ± 46% +0.0 0.10 ± 13% perf-profile.children.cycles-pp.check_spread 0.03 ±100% +0.0 0.08 ± 14% perf-profile.children.cycles-pp.rcu_note_context_switch 0.09 ± 14% +0.0 0.14 ± 16% perf-profile.children.cycles-pp.__list_del_entry_valid 0.04 ± 71% +0.0 0.08 ± 16% perf-profile.children.cycles-pp.trigger_load_balance 0.10 ± 20% +0.1 0.16 ± 7% perf-profile.children.cycles-pp.rb_erase 0.08 ± 20% +0.1 0.14 ± 12% perf-profile.children.cycles-pp.__list_add_valid 0.10 ± 23% +0.1 0.16 ± 12% perf-profile.children.cycles-pp.update_min_vruntime 0.04 ± 73% +0.1 0.10 ± 13% perf-profile.children.cycles-pp.clear_buddies 0.12 ± 15% +0.1 0.18 ± 9% perf-profile.children.cycles-pp.__calc_delta 0.00 +0.1 0.09 ± 24% perf-profile.children.cycles-pp.check_cfs_rq_runtime 0.10 ± 22% +0.1 0.19 ± 10% perf-profile.children.cycles-pp.switch_fpu_return 0.09 ± 11% +0.1 0.19 ± 14% perf-profile.children.cycles-pp.pick_next_entity 0.02 ±141% +0.1 0.13 ± 19% perf-profile.children.cycles-pp.raw_spin_rq_lock_nested 0.18 ± 8% +0.1 0.30 ± 11% perf-profile.children.cycles-pp.__rdgsbase_inactive 0.13 ± 7% +0.1 0.26 ± 11% perf-profile.children.cycles-pp.__update_blocked_fair 0.27 ± 9% +0.2 0.43 ± 10% perf-profile.children.cycles-pp.finish_task_switch 0.26 ± 10% +0.2 0.42 ± 7% perf-profile.children.cycles-pp.os_xsave 0.32 ± 8% +0.2 0.55 ± 7% perf-profile.children.cycles-pp.__wrgsbase_inactive 0.65 ± 7% +0.2 0.89 ± 9% perf-profile.children.cycles-pp.___perf_sw_event 0.00 +0.2 0.24 ± 7% perf-profile.children.cycles-pp.check_preempt_wakeup 0.73 ± 6% +0.3 1.00 ± 4% perf-profile.children.cycles-pp._raw_spin_lock 0.85 ± 11% +0.3 1.16 ± 2% perf-profile.children.cycles-pp.update_rq_clock 0.33 ± 5% +0.3 0.68 ± 7% perf-profile.children.cycles-pp.update_blocked_averages 0.84 ± 13% +0.4 1.19 ± 7% perf-profile.children.cycles-pp.check_preempt_curr 0.52 +0.4 0.89 ± 3% perf-profile.children.cycles-pp.__switch_to_asm 0.30 ± 23% +0.4 0.71 ± 8% perf-profile.children.cycles-pp.available_idle_cpu 0.73 ± 8% +0.4 1.18 ± 6% perf-profile.children.cycles-pp.__update_load_avg_cfs_rq 0.75 ± 8% +0.5 1.21 ± 5% perf-profile.children.cycles-pp.prepare_task_switch 0.84 ± 4% +0.5 1.36 ± 6% perf-profile.children.cycles-pp.__switch_to 0.07 ± 23% +0.6 0.66 ± 6% perf-profile.children.cycles-pp.cpuacct_charge 0.42 ± 11% +0.7 1.08 ± 4% perf-profile.children.cycles-pp.set_next_entity 0.35 ± 8% +0.7 1.02 ± 3% perf-profile.children.cycles-pp.__update_load_avg_se 0.06 ± 18% +0.7 0.72 ± 9% perf-profile.children.cycles-pp.wake_affine 1.25 ± 11% +0.7 1.93 ± 5% perf-profile.children.cycles-pp.enqueue_entity 0.59 ± 7% +0.8 1.36 ± 3% perf-profile.children.cycles-pp.update_curr 1.49 ± 10% +0.8 2.28 ± 4% perf-profile.children.cycles-pp.enqueue_task_fair 1.54 ± 11% +0.8 2.37 ± 3% perf-profile.children.cycles-pp.activate_task 0.89 ± 40% +0.9 1.76 ± 12% perf-profile.children.cycles-pp.newidle_balance 2.42 ± 11% +1.2 3.64 ± 4% perf-profile.children.cycles-pp.ttwu_do_activate 1.35 ± 7% +1.4 2.75 ± 2% perf-profile.children.cycles-pp.update_load_avg 0.10 ± 24% +1.5 1.55 ± 4% perf-profile.children.cycles-pp.put_prev_entity 3.50 ± 4% +1.5 4.99 ± 3% perf-profile.children.cycles-pp.try_to_wake_up 1.34 ± 4% +1.7 3.05 ± 2% perf-profile.children.cycles-pp.dev_hard_start_xmit 1.27 ± 4% +1.7 2.99 ± 2% perf-profile.children.cycles-pp.loopback_xmit 0.23 ± 5% +1.7 1.97 ± 3% perf-profile.children.cycles-pp.enqueue_to_backlog 0.26 ± 6% +1.7 2.00 ± 3% perf-profile.children.cycles-pp.__netif_rx 0.25 ± 8% +1.7 1.99 ± 3% perf-profile.children.cycles-pp.netif_rx_internal 0.00 +3.0 3.03 ± 3% perf-profile.children.cycles-pp.exit_to_user_mode_loop 0.21 ± 14% +3.2 3.38 ± 2% perf-profile.children.cycles-pp.exit_to_user_mode_prepare 0.38 ± 5% +3.2 3.62 ± 3% perf-profile.children.cycles-pp.syscall_exit_to_user_mode 1.58 ± 22% +3.5 5.04 ± 5% perf-profile.children.cycles-pp.pick_next_task_fair 6.38 ± 6% +4.7 11.09 ± 4% perf-profile.children.cycles-pp.__schedule 4.20 ± 11% +5.2 9.45 ± 5% perf-profile.children.cycles-pp.schedule 0.00 +7.0 7.04 ± 4% perf-profile.children.cycles-pp.napi_threaded_poll_loop 0.24 ± 7% +10.1 10.37 ± 5% perf-profile.children.cycles-pp.ret_from_fork 0.24 ± 7% +10.1 10.37 ± 5% perf-profile.children.cycles-pp.ret_from_fork_asm 0.23 ± 7% +10.1 10.36 ± 5% perf-profile.children.cycles-pp.kthread 0.00 +10.2 10.16 ± 5% perf-profile.children.cycles-pp.smpboot_thread_fn 34.07 ± 2% -2.5 31.56 ± 2% perf-profile.self.cycles-pp.acpi_safe_halt 0.69 ± 7% -0.2 0.50 ± 8% perf-profile.self.cycles-pp.udp_sendmsg 0.92 ± 8% -0.2 0.75 ± 4% perf-profile.self.cycles-pp.__skb_recv_udp 1.02 ± 9% -0.2 0.86 ± 3% perf-profile.self.cycles-pp.copyout 0.23 ± 13% -0.2 0.07 ± 17% perf-profile.self.cycles-pp.ip_finish_output2 0.22 ± 7% -0.1 0.08 ± 16% perf-profile.self.cycles-pp.__dev_queue_xmit 0.23 ± 13% -0.1 0.09 ± 14% perf-profile.self.cycles-pp.udp_send_skb 0.83 ± 11% -0.1 0.70 ± 6% perf-profile.self.cycles-pp._raw_spin_lock_bh 0.47 ± 9% -0.1 0.35 ± 8% perf-profile.self.cycles-pp.udpv6_sendmsg 0.20 ± 15% -0.1 0.10 ± 13% perf-profile.self.cycles-pp.irqtime_account_irq 0.57 ± 7% -0.1 0.48 ± 6% perf-profile.self.cycles-pp.native_apic_msr_eoi_write 0.68 ± 3% -0.1 0.60 ± 4% perf-profile.self.cycles-pp.txn_execute_once 0.28 ± 10% -0.1 0.20 ± 12% perf-profile.self.cycles-pp.schedule_timeout 0.28 ± 10% -0.1 0.21 ± 4% perf-profile.self.cycles-pp.stats_update 0.18 ± 10% -0.1 0.11 ± 12% perf-profile.self.cycles-pp.sock_sendmsg 0.16 ± 9% -0.1 0.10 ± 21% perf-profile.self.cycles-pp.__local_bh_enable_ip 0.60 ± 6% -0.1 0.53 ± 6% perf-profile.self.cycles-pp.menu_select 0.29 ± 8% -0.1 0.23 ± 13% perf-profile.self.cycles-pp.udpv6_recvmsg 0.30 ± 4% -0.1 0.24 ± 5% perf-profile.self.cycles-pp.__sys_recvfrom 0.42 ± 8% -0.1 0.36 ± 8% perf-profile.self.cycles-pp.kmem_cache_alloc_node 0.18 ± 13% -0.1 0.13 ± 11% perf-profile.self.cycles-pp.__pthread_enable_asynccancel 0.28 ± 3% -0.0 0.23 ± 4% perf-profile.self.cycles-pp._copy_from_user 0.20 ± 5% -0.0 0.16 ± 7% perf-profile.self.cycles-pp.__entry_text_start 0.12 ± 11% -0.0 0.09 ± 21% perf-profile.self.cycles-pp.__x64_sys_sendto 0.08 ± 15% +0.0 0.10 ± 10% perf-profile.self.cycles-pp.__list_del_entry_valid 0.08 ± 21% +0.0 0.12 ± 12% perf-profile.self.cycles-pp.rb_erase 0.28 ± 6% +0.0 0.32 ± 4% perf-profile.self.cycles-pp.do_syscall_64 0.02 ± 99% +0.0 0.06 ± 11% perf-profile.self.cycles-pp.rcu_note_context_switch 0.03 ±100% +0.0 0.07 ± 5% perf-profile.self.cycles-pp.check_spread 0.05 ± 50% +0.0 0.10 ± 8% perf-profile.self.cycles-pp.ttwu_do_activate 0.09 ± 22% +0.1 0.14 ± 15% perf-profile.self.cycles-pp.update_min_vruntime 0.02 ±141% +0.1 0.07 ± 20% perf-profile.self.cycles-pp.trigger_load_balance 0.06 ± 49% +0.1 0.12 ± 5% perf-profile.self.cycles-pp.__list_add_valid 0.01 ±223% +0.1 0.07 ± 21% perf-profile.self.cycles-pp.find_busiest_group 0.00 +0.1 0.06 ± 28% perf-profile.self.cycles-pp.check_cfs_rq_runtime 0.28 ± 14% +0.1 0.34 ± 5% perf-profile.self.cycles-pp.update_curr 0.10 ± 18% +0.1 0.17 ± 18% perf-profile.self.cycles-pp.syscall_exit_to_user_mode 0.11 ± 16% +0.1 0.18 ± 8% perf-profile.self.cycles-pp.__calc_delta 0.08 ± 19% +0.1 0.16 ± 18% perf-profile.self.cycles-pp.load_balance 0.01 ±223% +0.1 0.08 ± 21% perf-profile.self.cycles-pp.activate_task 0.04 ± 72% +0.1 0.11 ± 26% perf-profile.self.cycles-pp.__update_blocked_fair 0.11 ± 14% +0.1 0.18 ± 15% perf-profile.self.cycles-pp.update_sd_lb_stats 0.03 ±100% +0.1 0.11 ± 13% perf-profile.self.cycles-pp.update_blocked_averages 0.08 ± 11% +0.1 0.17 ± 16% perf-profile.self.cycles-pp.pick_next_entity 0.10 ± 24% +0.1 0.18 ± 13% perf-profile.self.cycles-pp.switch_fpu_return 0.22 ± 18% +0.1 0.31 ± 9% perf-profile.self.cycles-pp.enqueue_task_fair 0.08 ± 19% +0.1 0.17 ± 12% perf-profile.self.cycles-pp.exit_to_user_mode_prepare 0.00 +0.1 0.09 ± 5% perf-profile.self.cycles-pp.check_preempt_wakeup 0.18 ± 7% +0.1 0.28 ± 11% perf-profile.self.cycles-pp.__rdgsbase_inactive 0.04 ± 71% +0.1 0.16 ± 20% perf-profile.self.cycles-pp.put_prev_entity 0.11 ± 15% +0.1 0.25 ± 7% perf-profile.self.cycles-pp.set_next_entity 0.23 ± 10% +0.1 0.38 ± 13% perf-profile.self.cycles-pp.finish_task_switch 0.00 +0.2 0.15 ± 14% perf-profile.self.cycles-pp.exit_to_user_mode_loop 0.30 ± 14% +0.2 0.45 ± 10% perf-profile.self.cycles-pp.enqueue_entity 0.26 ± 11% +0.2 0.42 ± 6% perf-profile.self.cycles-pp.os_xsave 0.18 ± 18% +0.2 0.34 ± 8% perf-profile.self.cycles-pp.schedule 0.00 +0.2 0.16 ± 18% perf-profile.self.cycles-pp.napi_threaded_poll_loop 0.58 ± 6% +0.2 0.78 ± 10% perf-profile.self.cycles-pp.___perf_sw_event 0.16 ± 12% +0.2 0.36 ± 8% perf-profile.self.cycles-pp.pick_next_task_fair 0.32 ± 6% +0.2 0.54 ± 6% perf-profile.self.cycles-pp.__wrgsbase_inactive 0.11 ± 20% +0.2 0.33 ± 11% perf-profile.self.cycles-pp.prepare_task_switch 0.68 ± 5% +0.3 0.94 ± 4% perf-profile.self.cycles-pp._raw_spin_lock 0.52 +0.4 0.88 ± 3% perf-profile.self.cycles-pp.__switch_to_asm 0.00 +0.4 0.36 ± 11% perf-profile.self.cycles-pp.smpboot_thread_fn 0.32 ± 12% +0.4 0.68 ± 6% perf-profile.self.cycles-pp.update_load_avg 0.69 ± 5% +0.4 1.07 ± 6% perf-profile.self.cycles-pp.__schedule 0.28 ± 24% +0.4 0.70 ± 9% perf-profile.self.cycles-pp.available_idle_cpu 0.70 ± 8% +0.4 1.13 ± 6% perf-profile.self.cycles-pp.__update_load_avg_cfs_rq 0.82 ± 5% +0.5 1.30 ± 6% perf-profile.self.cycles-pp.__switch_to 0.07 ± 23% +0.6 0.66 ± 6% perf-profile.self.cycles-pp.cpuacct_charge 0.31 ± 7% +0.6 0.92 ± 3% perf-profile.self.cycles-pp.__update_load_avg_se *************************************************************************************************** lkp-csl-d02: 36 threads 1 sockets Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz (Cascade Lake) with 128G memory ========================================================================================= class/compiler/cpufreq_governor/disk/fs/kconfig/nr_threads/rootfs/tbox_group/test/testcase/testtime: os/gcc-12/performance/1HDD/ext4/x86_64-rhel-8.3/1/debian-11.1-x86_64-20220510.cgz/lkp-csl-d02/dccp/stress-ng/60s commit: 83b5f0253b ("net: phy: Introduce PSGMII PHY interface mode") e9dc861c8b ("net: Use SMP threads for backlog NAPI.") 83b5f0253b1ef352 e9dc861c8b3c291826d6cc1a867 ---------------- --------------------------- %stddev %change %stddev \ | \ 5871892 ± 2% +18.5% 6957517 ± 2% cpuidle..usage 3.59 -7.8% 3.31 ± 2% iostat.cpu.system 643.03 ± 5% -23.5% 492.14 ± 17% sched_debug.cfs_rq:/.min_vruntime.min 111973 ± 4% +143.4% 272574 ± 4% vmstat.system.cs 0.33 ± 2% -0.3 0.04 ± 7% mpstat.cpu.all.soft% 0.32 +0.0 0.36 ± 2% mpstat.cpu.all.usr% 45636 ± 3% +517.7% 281909 turbostat.C1 0.14 ± 5% +0.2 0.31 ± 4% turbostat.C1% 4.78 ± 2% -0.3 4.49 ± 2% turbostat.C1E% 2544029 ± 6% +35.4% 3445596 ± 4% turbostat.POLL 0.10 ± 5% +0.1 0.22 ± 4% turbostat.POLL% 156618 ± 5% +149.8% 391188 meminfo.Active 140656 ± 6% +166.8% 375277 meminfo.Active(anon) 66148 ± 12% -17.1% 54847 ± 11% meminfo.AnonHugePages 661727 +39.5% 922917 meminfo.Committed_AS 43445 +24.5% 54073 ± 8% meminfo.Mapped 154214 ± 5% +168.1% 413503 meminfo.Shmem 77137 ± 2% -16.0% 64808 ± 4% stress-ng.dccp.messages_per_sec 73462 ± 2% -16.0% 61719 ± 4% stress-ng.dccp.ops 1224 ± 2% -16.0% 1028 ± 4% stress-ng.dccp.ops_per_sec 832.67 ± 3% +5e+05% 4159259 ± 4% stress-ng.time.involuntary_context_switches 95.00 -14.9% 80.83 ± 5% stress-ng.time.percent_of_cpu_this_job_got 58.88 -15.8% 49.55 ± 5% stress-ng.time.system_time 2727584 ± 5% +41.9% 3870138 ± 4% stress-ng.time.voluntary_context_switches 35165 ± 6% +166.8% 93819 proc-vmstat.nr_active_anon 754437 +8.6% 819232 proc-vmstat.nr_file_pages 79513 +7.6% 85594 proc-vmstat.nr_inactive_anon 8763 +6.8% 9356 proc-vmstat.nr_kernel_stack 10863 +24.5% 13522 ± 8% proc-vmstat.nr_mapped 38558 ± 5% +168.1% 103378 proc-vmstat.nr_shmem 23483 +3.3% 24247 proc-vmstat.nr_slab_unreclaimable 35165 ± 6% +166.8% 93819 proc-vmstat.nr_zone_active_anon 79513 +7.6% 85594 proc-vmstat.nr_zone_inactive_anon 443490 +15.7% 513117 proc-vmstat.numa_hit 445922 ± 2% +15.0% 512943 proc-vmstat.numa_local 52965 ± 5% +168.2% 142076 proc-vmstat.pgactivate 1505891 -6.2% 1412250 ± 2% proc-vmstat.pgalloc_normal 212490 +8.2% 229851 proc-vmstat.pgfault 1425607 -13.0% 1239802 ± 3% proc-vmstat.pgfree 17.80 ± 7% -13.7% 15.37 ± 7% perf-stat.i.MPKI 11245386 +6.4% 11967086 ± 2% perf-stat.i.branch-misses 1.46 ± 6% +0.7 2.16 ± 7% perf-stat.i.cache-miss-rate% 828103 ± 4% +56.9% 1299520 ± 2% perf-stat.i.cache-misses 1.027e+08 ± 2% -14.3% 88075829 ± 4% perf-stat.i.cache-references 117427 ± 4% +143.8% 286319 ± 4% perf-stat.i.context-switches 59.68 ± 2% +1659.6% 1050 ± 8% perf-stat.i.cpu-migrations 39134 ± 22% -55.6% 17366 ± 5% perf-stat.i.cycles-between-cache-misses 106602 ± 16% +48.6% 158428 ± 17% perf-stat.i.dTLB-load-misses 84.77 -4.0 80.77 perf-stat.i.iTLB-load-miss-rate% 3709152 ± 2% -14.1% 3186224 ± 5% perf-stat.i.iTLB-load-misses 584638 ± 4% +12.1% 655260 ± 2% perf-stat.i.iTLB-loads 1964 +13.0% 2221 ± 2% perf-stat.i.instructions-per-iTLB-miss 1864 +15.4% 2152 perf-stat.i.minor-faults 88295 ± 6% +70.7% 150709 ± 3% perf-stat.i.node-loads 137528 ± 7% +30.7% 179725 ± 5% perf-stat.i.node-stores 1864 +15.4% 2152 perf-stat.i.page-faults 16.23 -15.6% 13.71 perf-stat.overall.MPKI 0.81 ± 6% +0.7 1.48 ± 4% perf-stat.overall.cache-miss-rate% 6907 ± 5% -35.3% 4467 ± 3% perf-stat.overall.cycles-between-cache-misses 0.01 ± 18% +0.0 0.01 ± 22% perf-stat.overall.dTLB-load-miss-rate% 86.38 -3.5 82.92 perf-stat.overall.iTLB-load-miss-rate% 1705 +18.3% 2017 perf-stat.overall.instructions-per-iTLB-miss 11070217 +6.4% 11778477 ± 2% perf-stat.ps.branch-misses 815402 ± 4% +56.9% 1279495 ± 2% perf-stat.ps.cache-misses 1.011e+08 ± 2% -14.3% 86684499 ± 4% perf-stat.ps.cache-references 115587 ± 4% +143.8% 281791 ± 4% perf-stat.ps.context-switches 58.75 ± 2% +1659.1% 1033 ± 8% perf-stat.ps.cpu-migrations 104986 ± 16% +48.6% 156010 ± 17% perf-stat.ps.dTLB-load-misses 3651135 ± 2% -14.1% 3135989 ± 5% perf-stat.ps.iTLB-load-misses 575492 ± 4% +12.1% 644966 ± 2% perf-stat.ps.iTLB-loads 1835 +15.4% 2119 perf-stat.ps.minor-faults 86937 ± 6% +70.7% 148402 ± 3% perf-stat.ps.node-loads 135391 ± 7% +30.7% 176929 ± 5% perf-stat.ps.node-stores 1835 +15.4% 2119 perf-stat.ps.page-faults 0.00 ± 13% -100.0% 0.00 perf-sched.sch_delay.avg.ms.__cond_resched.__release_sock.release_sock.dccp_sendmsg.sock_sendmsg 0.00 ± 31% -100.0% 0.00 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.00 -50.0% 0.00 perf-sched.sch_delay.avg.ms.schedule_timeout.inet_csk_accept.inet_accept.do_accept 0.00 +100.0% 0.00 perf-sched.sch_delay.avg.ms.schedule_timeout.wait_woken.sk_wait_data.dccp_recvmsg 0.00 -25.0% 0.00 perf-sched.sch_delay.avg.ms.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 0.00 ±223% +19800.0% 0.10 ±109% perf-sched.sch_delay.max.ms.__cond_resched.__release_sock.release_sock.dccp_recvmsg.sock_common_recvmsg 0.01 ± 43% -100.0% 0.00 perf-sched.sch_delay.max.ms.__cond_resched.__release_sock.release_sock.dccp_sendmsg.sock_sendmsg 0.00 ± 95% +450.0% 0.02 ± 26% perf-sched.sch_delay.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_reschedule_ipi 0.00 ± 11% +6389.5% 0.21 ±101% perf-sched.sch_delay.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64 0.05 ±129% +2212.4% 1.18 ± 85% perf-sched.sch_delay.max.ms.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 0.00 +100.0% 0.00 perf-sched.total_sch_delay.average.ms 2.39 ± 5% -69.4% 0.73 perf-sched.total_wait_and_delay.average.ms 194690 ± 5% +286.0% 751492 perf-sched.total_wait_and_delay.count.ms 2.39 ± 5% -69.5% 0.73 perf-sched.total_wait_time.average.ms 783.24 ± 4% -19.2% 633.25 ± 14% perf-sched.wait_and_delay.avg.ms.__x64_sys_pause.do_syscall_64.entry_SYSCALL_64_after_hwframe.[unknown] 147.40 ± 5% -61.4% 56.84 ± 2% perf-sched.wait_and_delay.avg.ms.schedule_hrtimeout_range_clock.do_poll.constprop.0.do_sys_poll 0.00 ± 22% +170.0% 0.01 perf-sched.wait_and_delay.avg.ms.schedule_timeout.wait_woken.sk_wait_data.dccp_recvmsg 454.52 ± 9% -99.7% 1.31 ± 2% perf-sched.wait_and_delay.avg.ms.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 456.60 ± 4% +16.0% 529.45 ± 2% perf-sched.wait_and_delay.avg.ms.worker_thread.kthread.ret_from_fork.ret_from_fork_asm 0.33 ±141% +2200.0% 7.67 ± 23% perf-sched.wait_and_delay.count.__cond_resched.__alloc_pages.__folio_alloc.vma_alloc_folio.shmem_alloc_folio 2.00 ± 50% +1025.0% 22.50 ± 20% perf-sched.wait_and_delay.count.__cond_resched.generic_perform_write.generic_file_write_iter.vfs_write.ksys_write 0.17 ±223% +6000.0% 10.17 ± 18% perf-sched.wait_and_delay.count.__cond_resched.mutex_lock.perf_poll.do_poll.constprop 1.00 ±223% +2.2e+07% 216471 perf-sched.wait_and_delay.count.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64 113.67 ± 5% +143.0% 276.17 perf-sched.wait_and_delay.count.schedule_hrtimeout_range_clock.do_poll.constprop.0.do_sys_poll 9952 ± 2% -32.4% 6730 perf-sched.wait_and_delay.count.schedule_timeout.inet_csk_accept.inet_accept.do_accept 104457 ± 9% +106.7% 215888 perf-sched.wait_and_delay.count.schedule_timeout.wait_woken.sk_wait_data.dccp_recvmsg 486.17 ± 9% +46231.5% 225248 perf-sched.wait_and_delay.count.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 4.62 ±223% +4350.7% 205.65 ±173% perf-sched.wait_and_delay.max.ms.__cond_resched.mutex_lock.perf_poll.do_poll.constprop 19.40 ±223% +4222.6% 838.77 ± 43% perf-sched.wait_and_delay.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64 6.33 ± 47% -73.0% 1.71 ± 54% perf-sched.wait_and_delay.max.ms.schedule_timeout.wait_woken.sk_wait_data.dccp_recvmsg 0.00 ± 81% +969.2% 0.02 ± 73% perf-sched.wait_time.avg.ms.__cond_resched.__release_sock.release_sock.dccp_recvmsg.sock_common_recvmsg 783.24 ± 4% -19.2% 633.24 ± 14% perf-sched.wait_time.avg.ms.__x64_sys_pause.do_syscall_64.entry_SYSCALL_64_after_hwframe.[unknown] 147.40 ± 5% -61.4% 56.84 ± 2% perf-sched.wait_time.avg.ms.schedule_hrtimeout_range_clock.do_poll.constprop.0.do_sys_poll 0.00 ± 22% +105.0% 0.01 ± 5% perf-sched.wait_time.avg.ms.schedule_timeout.wait_woken.sk_wait_data.dccp_recvmsg 454.52 ± 9% -99.7% 1.31 ± 2% perf-sched.wait_time.avg.ms.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 456.59 ± 4% +16.0% 529.45 ± 2% perf-sched.wait_time.avg.ms.worker_thread.kthread.ret_from_fork.ret_from_fork_asm 0.01 ± 70% +168.6% 0.02 ± 6% perf-sched.wait_time.max.ms.__cond_resched.__kmem_cache_alloc_node.kmalloc_trace.dccp_feat_entry_new.dccp_feat_signal_nn_change 0.00 ± 88% +1e+05% 2.43 ± 85% perf-sched.wait_time.max.ms.__cond_resched.__release_sock.release_sock.dccp_recvmsg.sock_common_recvmsg 0.00 ±101% +443.5% 0.02 ± 8% perf-sched.wait_time.max.ms.__cond_resched.dput.__fput.task_work_run.exit_to_user_mode_loop 4.62 ±223% +4350.7% 205.64 ±173% perf-sched.wait_time.max.ms.__cond_resched.mutex_lock.perf_poll.do_poll.constprop 166.68 ±223% +400.9% 834.86 ± 44% perf-sched.wait_time.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.irqentry_exit_to_user_mode.asm_sysvec_reschedule_ipi 23.59 ±177% +3455.0% 838.76 ± 43% perf-sched.wait_time.max.ms.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64 6.32 ± 47% -73.4% 1.68 ± 55% perf-sched.wait_time.max.ms.schedule_timeout.wait_woken.sk_wait_data.dccp_recvmsg 42.69 ± 7% -7.7 34.98 ± 3% perf-profile.calltrace.cycles-pp.__inet_stream_connect.inet_stream_connect.__sys_connect.__x64_sys_connect.do_syscall_64 42.69 ± 7% -7.7 34.98 ± 3% perf-profile.calltrace.cycles-pp.inet_stream_connect.__sys_connect.__x64_sys_connect.do_syscall_64.entry_SYSCALL_64_after_hwframe 42.70 ± 7% -7.7 35.00 ± 3% perf-profile.calltrace.cycles-pp.__x64_sys_connect.do_syscall_64.entry_SYSCALL_64_after_hwframe.connect 42.70 ± 7% -7.7 35.00 ± 3% perf-profile.calltrace.cycles-pp.__sys_connect.__x64_sys_connect.do_syscall_64.entry_SYSCALL_64_after_hwframe.connect 42.71 ± 7% -7.7 35.01 ± 3% perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.connect 42.71 ± 7% -7.7 35.01 ± 3% perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.connect 42.72 ± 7% -7.7 35.02 ± 3% perf-profile.calltrace.cycles-pp.connect 42.12 ± 7% -7.2 34.92 ± 3% perf-profile.calltrace.cycles-pp.dccp_v4_connect.__inet_stream_connect.inet_stream_connect.__sys_connect.__x64_sys_connect 41.08 ± 7% -6.9 34.22 ± 3% perf-profile.calltrace.cycles-pp.__inet_hash_connect.dccp_v4_connect.__inet_stream_connect.inet_stream_connect.__sys_connect 28.16 ± 8% -4.7 23.48 ± 3% perf-profile.calltrace.cycles-pp.__inet_check_established.__inet_hash_connect.dccp_v4_connect.__inet_stream_connect.inet_stream_connect 5.44 ± 19% -3.8 1.64 ± 2% perf-profile.calltrace.cycles-pp.dccp_write_xmit.dccp_sendmsg.sock_sendmsg.__sys_sendto.__x64_sys_sendto 5.39 ± 19% -3.8 1.62 ± 2% perf-profile.calltrace.cycles-pp.dccp_xmit_packet.dccp_write_xmit.dccp_sendmsg.sock_sendmsg.__sys_sendto 8.41 ± 15% -3.7 4.69 ± 12% perf-profile.calltrace.cycles-pp.dccp_sendmsg.sock_sendmsg.__sys_sendto.__x64_sys_sendto.do_syscall_64 8.55 ± 14% -3.6 4.90 ± 13% perf-profile.calltrace.cycles-pp.sock_sendmsg.__sys_sendto.__x64_sys_sendto.do_syscall_64.entry_SYSCALL_64_after_hwframe 8.79 ± 14% -3.4 5.36 ± 13% perf-profile.calltrace.cycles-pp.__sys_sendto.__x64_sys_sendto.do_syscall_64.entry_SYSCALL_64_after_hwframe.__send 8.83 ± 15% -3.4 5.41 ± 13% perf-profile.calltrace.cycles-pp.__x64_sys_sendto.do_syscall_64.entry_SYSCALL_64_after_hwframe.__send 3.54 ± 17% -2.7 0.86 ± 5% perf-profile.calltrace.cycles-pp.ip_finish_output2.__ip_queue_xmit.dccp_transmit_skb.dccp_xmit_packet.dccp_write_xmit 3.50 ± 17% -2.7 0.83 ± 6% perf-profile.calltrace.cycles-pp.__dev_queue_xmit.ip_finish_output2.__ip_queue_xmit.dccp_transmit_skb.dccp_xmit_packet 3.74 ± 18% -2.7 1.08 ± 5% perf-profile.calltrace.cycles-pp.__ip_queue_xmit.dccp_transmit_skb.dccp_xmit_packet.dccp_write_xmit.dccp_sendmsg 8.95 ± 14% -2.6 6.32 ± 12% perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.__send 9.04 ± 15% -2.6 6.43 ± 12% perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.__send 3.91 ± 18% -2.5 1.38 ± 4% perf-profile.calltrace.cycles-pp.dccp_transmit_skb.dccp_xmit_packet.dccp_write_xmit.dccp_sendmsg.sock_sendmsg 9.29 ± 14% -2.1 7.15 ± 12% perf-profile.calltrace.cycles-pp.__send 5.09 ± 7% -1.6 3.51 ± 6% perf-profile.calltrace.cycles-pp.__sys_recvfrom.__x64_sys_recvfrom.do_syscall_64.entry_SYSCALL_64_after_hwframe.recv 5.10 ± 6% -1.6 3.53 ± 6% perf-profile.calltrace.cycles-pp.__x64_sys_recvfrom.do_syscall_64.entry_SYSCALL_64_after_hwframe.recv 4.93 ± 6% -1.5 3.38 ± 7% perf-profile.calltrace.cycles-pp.sock_recvmsg.__sys_recvfrom.__x64_sys_recvfrom.do_syscall_64.entry_SYSCALL_64_after_hwframe 5.19 ± 6% -1.5 3.66 ± 6% perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.recv 5.22 ± 6% -1.5 3.69 ± 6% perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.recv 5.56 ± 6% -1.5 4.04 ± 6% perf-profile.calltrace.cycles-pp.recv 4.81 ± 6% -1.5 3.30 ± 7% perf-profile.calltrace.cycles-pp.dccp_recvmsg.sock_common_recvmsg.sock_recvmsg.__sys_recvfrom.__x64_sys_recvfrom 4.82 ± 6% -1.5 3.32 ± 7% perf-profile.calltrace.cycles-pp.sock_common_recvmsg.sock_recvmsg.__sys_recvfrom.__x64_sys_recvfrom.do_syscall_64 6.63 ± 8% -1.2 5.41 ± 6% perf-profile.calltrace.cycles-pp._raw_spin_lock_bh.__inet_hash_connect.dccp_v4_connect.__inet_stream_connect.inet_stream_connect 3.82 ± 8% -0.7 3.14 ± 6% perf-profile.calltrace.cycles-pp._raw_spin_lock.__inet_check_established.__inet_hash_connect.dccp_v4_connect.__inet_stream_connect 2.98 ± 10% -0.4 2.56 ± 6% perf-profile.calltrace.cycles-pp.inet_ehashfn.__inet_check_established.__inet_hash_connect.dccp_v4_connect.__inet_stream_connect 1.25 ± 9% -0.2 1.10 ± 6% perf-profile.calltrace.cycles-pp.__cond_resched.__inet_hash_connect.dccp_v4_connect.__inet_stream_connect.inet_stream_connect 0.65 ± 13% +0.2 0.86 ± 8% perf-profile.calltrace.cycles-pp.schedule.schedule_timeout.wait_woken.sk_wait_data.dccp_recvmsg 0.69 ± 13% +0.2 0.92 ± 8% perf-profile.calltrace.cycles-pp.schedule_timeout.wait_woken.sk_wait_data.dccp_recvmsg.sock_common_recvmsg 0.54 ± 46% +0.3 0.82 ± 7% perf-profile.calltrace.cycles-pp.__schedule.schedule.schedule_timeout.wait_woken.sk_wait_data 1.03 ± 26% +0.4 1.39 ± 6% perf-profile.calltrace.cycles-pp.__ip_queue_xmit.dccp_transmit_skb.ccid2_hc_rx_packet_recv.dccp_deliver_input_to_ccids.dccp_rcv_established 0.91 ± 15% +0.4 1.31 ± 8% perf-profile.calltrace.cycles-pp.wait_woken.sk_wait_data.dccp_recvmsg.sock_common_recvmsg.sock_recvmsg 0.80 ± 26% +0.4 1.21 ± 7% perf-profile.calltrace.cycles-pp.__dev_queue_xmit.ip_finish_output2.__ip_queue_xmit.dccp_transmit_skb.ccid2_hc_rx_packet_recv 0.83 ± 25% +0.4 1.24 ± 7% perf-profile.calltrace.cycles-pp.ip_finish_output2.__ip_queue_xmit.dccp_transmit_skb.ccid2_hc_rx_packet_recv.dccp_deliver_input_to_ccids 0.58 ± 51% +0.4 1.00 ± 10% perf-profile.calltrace.cycles-pp.dccp_write_space.sock_wfree.loopback_xmit.dev_hard_start_xmit.__dev_queue_xmit 0.61 ± 51% +0.4 1.06 ± 9% perf-profile.calltrace.cycles-pp.sock_wfree.loopback_xmit.dev_hard_start_xmit.__dev_queue_xmit.ip_finish_output2 0.45 ± 74% +0.4 0.90 ± 11% perf-profile.calltrace.cycles-pp.__wake_up_common_lock.dccp_write_space.sock_wfree.loopback_xmit.dev_hard_start_xmit 0.65 ± 9% +0.5 1.11 ± 23% perf-profile.calltrace.cycles-pp.sock_alloc_send_pskb.dccp_sendmsg.sock_sendmsg.__sys_sendto.__x64_sys_sendto 0.00 +0.6 0.57 ± 9% perf-profile.calltrace.cycles-pp.dccp_rcv_state_process.dccp_v4_do_rcv.__sk_receive_skb.ip_protocol_deliver_rcu.ip_local_deliver_finish 0.22 ±143% +0.6 0.80 ± 13% perf-profile.calltrace.cycles-pp.__wake_up_common.__wake_up_common_lock.dccp_write_space.sock_wfree.loopback_xmit 0.10 ±223% +0.6 0.68 ± 12% perf-profile.calltrace.cycles-pp.try_to_wake_up.__wake_up_common.__wake_up_common_lock.dccp_write_space.sock_wfree 0.00 +0.6 0.58 ± 8% perf-profile.calltrace.cycles-pp.__schedule.schedule.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode 0.00 +0.6 0.62 ± 9% perf-profile.calltrace.cycles-pp.schedule.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64 0.68 ± 12% +0.6 1.31 ± 11% perf-profile.calltrace.cycles-pp.clock_nanosleep 0.00 +0.7 0.65 ± 9% perf-profile.calltrace.cycles-pp.exit_to_user_mode_loop.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe 0.18 ±141% +0.7 0.90 ± 24% perf-profile.calltrace.cycles-pp.alloc_skb_with_frags.sock_alloc_send_pskb.dccp_sendmsg.sock_sendmsg.__sys_sendto 0.00 +0.7 0.74 ± 9% perf-profile.calltrace.cycles-pp.__dccp_rcv_established.dccp_v4_do_rcv.__sk_receive_skb.ip_protocol_deliver_rcu.ip_local_deliver_finish 0.00 +0.7 0.74 ± 10% perf-profile.calltrace.cycles-pp.exit_to_user_mode_prepare.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe.__send 0.40 ± 71% +0.7 1.14 ± 12% perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.clock_nanosleep 0.38 ± 71% +0.8 1.13 ± 12% perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.clock_nanosleep 0.09 ±223% +0.8 0.86 ± 24% perf-profile.calltrace.cycles-pp.__alloc_skb.alloc_skb_with_frags.sock_alloc_send_pskb.dccp_sendmsg.sock_sendmsg 0.26 ±100% +0.8 1.03 ± 12% perf-profile.calltrace.cycles-pp.hrtimer_nanosleep.common_nsleep.__x64_sys_clock_nanosleep.do_syscall_64.entry_SYSCALL_64_after_hwframe 0.27 ±100% +0.8 1.04 ± 12% perf-profile.calltrace.cycles-pp.common_nsleep.__x64_sys_clock_nanosleep.do_syscall_64.entry_SYSCALL_64_after_hwframe.clock_nanosleep 0.00 +0.8 0.79 ± 11% perf-profile.calltrace.cycles-pp.__schedule.schedule.do_nanosleep.hrtimer_nanosleep.common_nsleep 0.00 +0.8 0.80 ± 12% perf-profile.calltrace.cycles-pp.schedule.do_nanosleep.hrtimer_nanosleep.common_nsleep.__x64_sys_clock_nanosleep 0.00 +0.8 0.80 ± 8% perf-profile.calltrace.cycles-pp.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe.__send 0.28 ±100% +0.8 1.10 ± 12% perf-profile.calltrace.cycles-pp.__x64_sys_clock_nanosleep.do_syscall_64.entry_SYSCALL_64_after_hwframe.clock_nanosleep 0.09 ±223% +0.9 0.98 ± 12% perf-profile.calltrace.cycles-pp.do_nanosleep.hrtimer_nanosleep.common_nsleep.__x64_sys_clock_nanosleep.do_syscall_64 1.66 ± 23% +0.9 2.59 ± 7% perf-profile.calltrace.cycles-pp.dccp_rcv_established.dccp_v4_do_rcv.__sk_receive_skb.ip_protocol_deliver_rcu.ip_local_deliver_finish 0.00 +0.9 0.93 ± 6% perf-profile.calltrace.cycles-pp.__schedule.schedule.smpboot_thread_fn.kthread.ret_from_fork 0.00 +1.0 0.97 ± 6% perf-profile.calltrace.cycles-pp.schedule.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 0.64 ± 50% +1.1 1.72 ± 5% perf-profile.calltrace.cycles-pp.loopback_xmit.dev_hard_start_xmit.__dev_queue_xmit.ip_finish_output2.__ip_queue_xmit 0.65 ± 51% +1.1 1.76 ± 5% perf-profile.calltrace.cycles-pp.dev_hard_start_xmit.__dev_queue_xmit.ip_finish_output2.__ip_queue_xmit.dccp_transmit_skb 2.36 ± 20% +1.8 4.14 ± 6% perf-profile.calltrace.cycles-pp.__sk_receive_skb.ip_protocol_deliver_rcu.ip_local_deliver_finish.__netif_receive_skb_one_core.process_backlog 2.05 ± 21% +1.9 3.92 ± 5% perf-profile.calltrace.cycles-pp.dccp_v4_do_rcv.__sk_receive_skb.ip_protocol_deliver_rcu.ip_local_deliver_finish.__netif_receive_skb_one_core 1.63 ± 14% +1.9 3.56 ± 4% perf-profile.calltrace.cycles-pp.poll_idle.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle 3.16 ± 19% +2.0 5.14 ± 6% perf-profile.calltrace.cycles-pp.ip_protocol_deliver_rcu.ip_local_deliver_finish.__netif_receive_skb_one_core.process_backlog.__napi_poll 40.13 ± 6% +3.6 43.69 ± 4% perf-profile.calltrace.cycles-pp.secondary_startup_64_no_verify 0.00 +5.2 5.16 ± 6% perf-profile.calltrace.cycles-pp.ip_local_deliver_finish.__netif_receive_skb_one_core.process_backlog.__napi_poll.napi_threaded_poll_loop 0.00 +5.5 5.46 ± 5% perf-profile.calltrace.cycles-pp.__netif_receive_skb_one_core.process_backlog.__napi_poll.napi_threaded_poll_loop.smpboot_thread_fn 0.00 +5.6 5.60 ± 5% perf-profile.calltrace.cycles-pp.process_backlog.__napi_poll.napi_threaded_poll_loop.smpboot_thread_fn.kthread 0.00 +5.6 5.62 ± 5% perf-profile.calltrace.cycles-pp.__napi_poll.napi_threaded_poll_loop.smpboot_thread_fn.kthread.ret_from_fork 0.00 +5.7 5.66 ± 5% perf-profile.calltrace.cycles-pp.napi_threaded_poll_loop.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 0.00 +6.8 6.80 ± 5% perf-profile.calltrace.cycles-pp.smpboot_thread_fn.kthread.ret_from_fork.ret_from_fork_asm 0.00 +6.9 6.87 ± 5% perf-profile.calltrace.cycles-pp.ret_from_fork_asm 0.00 +6.9 6.87 ± 5% perf-profile.calltrace.cycles-pp.ret_from_fork.ret_from_fork_asm 0.00 +6.9 6.87 ± 5% perf-profile.calltrace.cycles-pp.kthread.ret_from_fork.ret_from_fork_asm 58.36 ± 4% -11.2 47.14 ± 3% perf-profile.children.cycles-pp.do_syscall_64 58.49 ± 4% -11.2 47.32 ± 3% perf-profile.children.cycles-pp.entry_SYSCALL_64_after_hwframe 42.69 ± 7% -7.7 34.98 ± 3% perf-profile.children.cycles-pp.__inet_stream_connect 42.69 ± 7% -7.7 34.98 ± 3% perf-profile.children.cycles-pp.inet_stream_connect 42.70 ± 7% -7.7 35.00 ± 3% perf-profile.children.cycles-pp.__x64_sys_connect 42.70 ± 7% -7.7 35.00 ± 3% perf-profile.children.cycles-pp.__sys_connect 42.72 ± 7% -7.7 35.02 ± 3% perf-profile.children.cycles-pp.connect 42.12 ± 7% -7.2 34.92 ± 3% perf-profile.children.cycles-pp.dccp_v4_connect 41.64 ± 7% -6.9 34.70 ± 3% perf-profile.children.cycles-pp.__inet_hash_connect 6.16 ± 10% -5.1 1.04 ± 12% perf-profile.children.cycles-pp.__local_bh_enable_ip 5.63 ± 15% -5.1 0.56 ± 18% perf-profile.children.cycles-pp.__do_softirq 5.04 ± 13% -5.0 0.04 ± 75% perf-profile.children.cycles-pp.do_softirq 28.38 ± 8% -4.7 23.67 ± 3% perf-profile.children.cycles-pp.__inet_check_established 5.46 ± 19% -3.8 1.66 ± 3% perf-profile.children.cycles-pp.dccp_write_xmit 5.39 ± 19% -3.8 1.63 ± 3% perf-profile.children.cycles-pp.dccp_xmit_packet 8.42 ± 15% -3.7 4.71 ± 12% perf-profile.children.cycles-pp.dccp_sendmsg 8.55 ± 14% -3.6 4.90 ± 13% perf-profile.children.cycles-pp.sock_sendmsg 6.19 ± 13% -3.5 2.69 ± 4% perf-profile.children.cycles-pp.__ip_queue_xmit 6.80 ± 12% -3.4 3.36 ± 5% perf-profile.children.cycles-pp.dccp_transmit_skb 5.73 ± 12% -3.4 2.30 ± 3% perf-profile.children.cycles-pp.ip_finish_output2 8.80 ± 14% -3.4 5.37 ± 13% perf-profile.children.cycles-pp.__sys_sendto 8.84 ± 14% -3.4 5.41 ± 13% perf-profile.children.cycles-pp.__x64_sys_sendto 5.64 ± 12% -3.4 2.22 ± 3% perf-profile.children.cycles-pp.__dev_queue_xmit 2.92 ± 5% -2.7 0.26 ± 15% perf-profile.children.cycles-pp.__release_sock 3.25 ± 5% -2.7 0.60 ± 12% perf-profile.children.cycles-pp.release_sock 9.37 ± 14% -2.1 7.31 ± 12% perf-profile.children.cycles-pp.__send 5.09 ± 6% -1.6 3.51 ± 6% perf-profile.children.cycles-pp.__sys_recvfrom 5.10 ± 6% -1.6 3.53 ± 6% perf-profile.children.cycles-pp.__x64_sys_recvfrom 4.93 ± 6% -1.5 3.38 ± 7% perf-profile.children.cycles-pp.sock_recvmsg 5.61 ± 6% -1.5 4.07 ± 6% perf-profile.children.cycles-pp.recv 4.81 ± 6% -1.5 3.30 ± 7% perf-profile.children.cycles-pp.dccp_recvmsg 4.82 ± 6% -1.5 3.32 ± 7% perf-profile.children.cycles-pp.sock_common_recvmsg 7.76 ± 7% -1.5 6.28 ± 6% perf-profile.children.cycles-pp._raw_spin_lock_bh 5.18 ± 8% -1.1 4.12 ± 6% perf-profile.children.cycles-pp.dccp_v4_do_rcv 3.36 ± 10% -0.6 2.77 ± 7% perf-profile.children.cycles-pp.dccp_rcv_established 4.47 ± 7% -0.6 3.90 ± 4% perf-profile.children.cycles-pp._raw_spin_lock 0.96 ± 9% -0.4 0.60 ± 6% perf-profile.children.cycles-pp.dccp_rcv_state_process 0.44 ± 15% -0.3 0.13 ± 14% perf-profile.children.cycles-pp.native_queued_spin_lock_slowpath 0.50 ± 13% -0.3 0.20 ± 14% perf-profile.children.cycles-pp.dccp_rcv_request_sent_state_process 0.41 ± 18% -0.2 0.16 ± 12% perf-profile.children.cycles-pp.dccp_connect 1.14 ± 7% -0.2 0.91 ± 9% perf-profile.children.cycles-pp.dccp_v4_rcv 0.60 ± 13% -0.2 0.44 ± 10% perf-profile.children.cycles-pp.lock_sock_nested 0.27 ± 12% -0.2 0.11 ± 28% perf-profile.children.cycles-pp.irqtime_account_irq 0.62 ± 8% -0.2 0.46 ± 9% perf-profile.children.cycles-pp.__inet_lookup_skb 0.58 ± 10% -0.2 0.42 ± 11% perf-profile.children.cycles-pp.__inet_lookup_established 0.46 ± 11% -0.2 0.31 ± 12% perf-profile.children.cycles-pp.__slab_free 0.68 ± 7% -0.1 0.54 ± 10% perf-profile.children.cycles-pp.__kfree_skb 0.56 ± 10% -0.1 0.42 ± 14% perf-profile.children.cycles-pp.__skb_datagram_iter 0.56 ± 10% -0.1 0.43 ± 14% perf-profile.children.cycles-pp.skb_copy_datagram_iter 0.26 ± 25% -0.1 0.14 ± 23% perf-profile.children.cycles-pp.dccp_ackvec_clear_state 0.16 ± 17% -0.1 0.04 ± 45% perf-profile.children.cycles-pp.dccp_finish_passive_close 0.15 ± 22% -0.1 0.05 ± 73% perf-profile.children.cycles-pp.dccp_close 0.16 ± 20% -0.1 0.05 ± 74% perf-profile.children.cycles-pp.inet_release 0.18 ± 23% -0.1 0.08 ± 22% perf-profile.children.cycles-pp.dccp_check_seqno 0.16 ± 22% -0.1 0.06 ± 52% perf-profile.children.cycles-pp.__sock_release 0.16 ± 22% -0.1 0.06 ± 52% perf-profile.children.cycles-pp.sock_close 0.22 ± 11% -0.1 0.14 ± 21% perf-profile.children.cycles-pp.dccp_enqueue_skb 0.21 ± 15% -0.1 0.14 ± 11% perf-profile.children.cycles-pp.dccp_v4_send_check 0.25 ± 13% -0.1 0.20 ± 9% perf-profile.children.cycles-pp.dccp_feat_activate_values 0.18 ± 15% -0.0 0.14 ± 7% perf-profile.children.cycles-pp.ccid_new 0.17 ± 16% -0.0 0.13 ± 15% perf-profile.children.cycles-pp.__x64_sys_socket 0.17 ± 16% -0.0 0.13 ± 15% perf-profile.children.cycles-pp.__sys_socket 0.16 ± 14% -0.0 0.12 ± 12% perf-profile.children.cycles-pp.ccid2_hc_tx_init 0.08 ± 18% +0.0 0.10 ± 9% perf-profile.children.cycles-pp.local_clock_noinstr 0.08 ± 12% +0.0 0.11 ± 8% perf-profile.children.cycles-pp.tick_nohz_idle_exit 0.04 ± 71% +0.0 0.08 ± 19% perf-profile.children.cycles-pp.place_entity 0.02 ±142% +0.1 0.07 ± 26% perf-profile.children.cycles-pp.do_user_addr_fault 0.10 ± 17% +0.1 0.15 ± 24% perf-profile.children.cycles-pp.__fget_light 0.02 ±141% +0.1 0.08 ± 17% perf-profile.children.cycles-pp.tick_nohz_stop_idle 0.04 ± 71% +0.1 0.10 ± 17% perf-profile.children.cycles-pp.idle_cpu 0.12 ± 14% +0.1 0.18 ± 26% perf-profile.children.cycles-pp.sockfd_lookup_light 0.02 ±144% +0.1 0.08 ± 24% perf-profile.children.cycles-pp.__rdgsbase_inactive 0.07 ± 53% +0.1 0.13 ± 44% perf-profile.children.cycles-pp.security_socket_sendmsg 0.00 +0.1 0.07 ± 7% perf-profile.children.cycles-pp.cpuacct_charge 0.01 ±223% +0.1 0.08 ± 25% perf-profile.children.cycles-pp.pick_next_entity 0.07 ± 51% +0.1 0.14 ± 6% perf-profile.children.cycles-pp.__wrgsbase_inactive 0.05 ± 45% +0.1 0.12 ± 22% perf-profile.children.cycles-pp.switch_fpu_return 0.02 ±142% +0.1 0.09 ± 17% perf-profile.children.cycles-pp.nr_iowait_cpu 0.13 ± 30% +0.1 0.21 ± 11% perf-profile.children.cycles-pp.entry_SYSRETQ_unsafe_stack 0.00 +0.1 0.08 ± 32% perf-profile.children.cycles-pp.switch_mm_irqs_off 0.00 +0.1 0.09 ± 20% perf-profile.children.cycles-pp.check_preempt_wakeup 0.08 ± 21% +0.1 0.18 ± 15% perf-profile.children.cycles-pp.os_xsave 0.00 +0.1 0.11 ± 22% perf-profile.children.cycles-pp.cpu_util 0.17 ± 21% +0.1 0.28 ± 12% perf-profile.children.cycles-pp.select_task_rq_fair 0.11 ± 19% +0.1 0.22 ± 14% perf-profile.children.cycles-pp.__update_load_avg_se 0.10 ± 37% +0.1 0.21 ± 13% perf-profile.children.cycles-pp.available_idle_cpu 0.09 ± 36% +0.1 0.22 ± 15% perf-profile.children.cycles-pp.wake_affine 0.35 ± 10% +0.1 0.48 ± 16% perf-profile.children.cycles-pp.kmalloc_reserve 0.00 +0.1 0.14 ± 12% perf-profile.children.cycles-pp.check_preempt_curr 0.17 ± 28% +0.1 0.32 ± 18% perf-profile.children.cycles-pp.update_rq_clock 0.12 ± 18% +0.2 0.28 ± 16% perf-profile.children.cycles-pp.___perf_sw_event 0.18 ± 26% +0.2 0.34 ± 13% perf-profile.children.cycles-pp.select_task_rq 0.28 ± 20% +0.2 0.44 ± 16% perf-profile.children.cycles-pp.ttwu_queue_wakelist 0.16 ± 9% +0.2 0.35 ± 12% perf-profile.children.cycles-pp.prepare_task_switch 0.12 ± 24% +0.2 0.32 ± 7% perf-profile.children.cycles-pp.__update_load_avg_cfs_rq 0.66 ± 11% +0.2 0.86 ± 5% perf-profile.children.cycles-pp.sched_ttwu_pending 0.17 ± 38% +0.2 0.37 ± 14% perf-profile.children.cycles-pp.accept 0.14 ± 39% +0.2 0.35 ± 14% perf-profile.children.cycles-pp.__x64_sys_accept 0.14 ± 39% +0.2 0.35 ± 14% perf-profile.children.cycles-pp.__sys_accept4 0.14 ± 43% +0.2 0.35 ± 15% perf-profile.children.cycles-pp.do_accept 0.10 ± 64% +0.2 0.31 ± 14% perf-profile.children.cycles-pp.inet_csk_accept 0.10 ± 61% +0.2 0.32 ± 14% perf-profile.children.cycles-pp.inet_accept 0.17 ± 9% +0.2 0.39 ± 10% perf-profile.children.cycles-pp.__switch_to 0.14 ± 17% +0.2 0.38 ± 11% perf-profile.children.cycles-pp.update_curr 0.22 ± 22% +0.2 0.46 ± 7% perf-profile.children.cycles-pp.__switch_to_asm 0.00 +0.2 0.25 ± 5% perf-profile.children.cycles-pp.put_prev_entity 0.40 ± 12% +0.3 0.66 ± 4% perf-profile.children.cycles-pp.dequeue_entity 0.11 ± 30% +0.3 0.38 ± 10% perf-profile.children.cycles-pp.set_next_entity 0.18 ± 34% +0.3 0.44 ± 23% perf-profile.children.cycles-pp.kfree_skb_reason 0.88 ± 8% +0.3 1.16 ± 4% perf-profile.children.cycles-pp.__flush_smp_call_function_queue 0.96 ± 9% +0.3 1.26 ± 4% perf-profile.children.cycles-pp.flush_smp_call_function_queue 0.46 ± 13% +0.3 0.76 ± 5% perf-profile.children.cycles-pp.dequeue_task_fair 0.36 ± 5% +0.3 0.70 ± 5% perf-profile.children.cycles-pp.enqueue_entity 0.66 ± 9% +0.4 1.02 ± 18% perf-profile.children.cycles-pp.__alloc_skb 0.01 ±223% +0.4 0.37 ± 15% perf-profile.children.cycles-pp.intel_idle_irq 0.78 ± 21% +0.4 1.16 ± 10% perf-profile.children.cycles-pp.__wake_up_common 0.78 ± 22% +0.4 1.17 ± 8% perf-profile.children.cycles-pp.dccp_write_space 0.94 ± 21% +0.4 1.34 ± 7% perf-profile.children.cycles-pp.__wake_up_common_lock 0.49 ± 10% +0.4 0.90 ± 24% perf-profile.children.cycles-pp.alloc_skb_with_frags 0.91 ± 15% +0.4 1.35 ± 8% perf-profile.children.cycles-pp.wait_woken 0.44 ± 7% +0.5 0.90 ± 4% perf-profile.children.cycles-pp.enqueue_task_fair 0.65 ± 9% +0.5 1.12 ± 23% perf-profile.children.cycles-pp.sock_alloc_send_pskb 0.31 ± 8% +0.5 0.78 ± 4% perf-profile.children.cycles-pp.update_load_avg 0.45 ± 7% +0.5 0.92 ± 4% perf-profile.children.cycles-pp.activate_task 0.75 ± 11% +0.5 1.22 ± 6% perf-profile.children.cycles-pp.schedule_timeout 0.97 ± 19% +0.5 1.44 ± 7% perf-profile.children.cycles-pp.sock_wfree 0.12 ± 12% +0.5 0.64 ± 8% perf-profile.children.cycles-pp.__netif_rx 0.11 ± 16% +0.5 0.64 ± 7% perf-profile.children.cycles-pp.netif_rx_internal 0.10 ± 22% +0.5 0.63 ± 8% perf-profile.children.cycles-pp.enqueue_to_backlog 0.44 ± 13% +0.5 0.99 ± 12% perf-profile.children.cycles-pp.do_nanosleep 0.13 ± 30% +0.5 0.68 ± 7% perf-profile.children.cycles-pp.update_sg_lb_stats 0.48 ± 12% +0.6 1.03 ± 12% perf-profile.children.cycles-pp.hrtimer_nanosleep 0.48 ± 12% +0.6 1.05 ± 12% perf-profile.children.cycles-pp.common_nsleep 0.19 ± 34% +0.6 0.77 ± 8% perf-profile.children.cycles-pp.update_sd_lb_stats 0.52 ± 10% +0.6 1.10 ± 12% perf-profile.children.cycles-pp.__x64_sys_clock_nanosleep 0.27 ± 24% +0.6 0.85 ± 7% perf-profile.children.cycles-pp.exit_to_user_mode_loop 0.49 ± 7% +0.6 1.09 ± 6% perf-profile.children.cycles-pp.ttwu_do_activate 0.20 ± 34% +0.6 0.80 ± 7% perf-profile.children.cycles-pp.find_busiest_group 0.69 ± 12% +0.6 1.33 ± 11% perf-profile.children.cycles-pp.clock_nanosleep 0.37 ± 18% +0.7 1.02 ± 7% perf-profile.children.cycles-pp.exit_to_user_mode_prepare 0.28 ± 34% +0.7 0.94 ± 7% perf-profile.children.cycles-pp.load_balance 0.44 ± 19% +0.7 1.12 ± 5% perf-profile.children.cycles-pp.syscall_exit_to_user_mode 1.08 ± 18% +0.8 1.91 ± 3% perf-profile.children.cycles-pp.dev_hard_start_xmit 1.05 ± 17% +0.8 1.88 ± 3% perf-profile.children.cycles-pp.loopback_xmit 0.03 ±101% +0.8 0.87 ± 6% perf-profile.children.cycles-pp.newidle_balance 0.81 ± 18% +1.0 1.77 ± 3% perf-profile.children.cycles-pp.try_to_wake_up 4.47 ± 13% +1.0 5.46 ± 5% perf-profile.children.cycles-pp.__netif_receive_skb_one_core 4.16 ± 12% +1.0 5.16 ± 6% perf-profile.children.cycles-pp.ip_local_deliver_finish 4.13 ± 12% +1.0 5.14 ± 6% perf-profile.children.cycles-pp.ip_protocol_deliver_rcu 2.88 ± 16% +1.3 4.15 ± 6% perf-profile.children.cycles-pp.__sk_receive_skb 0.23 ± 15% +1.5 1.74 ± 4% perf-profile.children.cycles-pp.pick_next_task_fair 1.69 ± 10% +2.0 3.69 ± 4% perf-profile.children.cycles-pp.poll_idle 1.00 ± 5% +2.6 3.58 ± 2% perf-profile.children.cycles-pp.schedule 1.49 ± 8% +2.6 4.12 perf-profile.children.cycles-pp.__schedule 40.12 ± 6% +3.5 43.66 ± 4% perf-profile.children.cycles-pp.do_idle 40.13 ± 6% +3.6 43.69 ± 4% perf-profile.children.cycles-pp.secondary_startup_64_no_verify 40.13 ± 6% +3.6 43.69 ± 4% perf-profile.children.cycles-pp.cpu_startup_entry 0.00 +5.7 5.67 ± 5% perf-profile.children.cycles-pp.napi_threaded_poll_loop 0.08 ± 58% +6.8 6.87 ± 5% perf-profile.children.cycles-pp.ret_from_fork_asm 0.08 ± 58% +6.8 6.87 ± 5% perf-profile.children.cycles-pp.ret_from_fork 0.07 ± 58% +6.8 6.87 ± 5% perf-profile.children.cycles-pp.kthread 0.00 +6.8 6.80 ± 5% perf-profile.children.cycles-pp.smpboot_thread_fn 21.29 ± 8% -3.6 17.73 ± 2% perf-profile.self.cycles-pp.__inet_check_established 7.13 ± 7% -1.1 5.99 ± 6% perf-profile.self.cycles-pp._raw_spin_lock_bh 4.16 ± 7% -0.7 3.48 ± 3% perf-profile.self.cycles-pp.__inet_hash_connect 4.42 ± 7% -0.6 3.85 ± 4% perf-profile.self.cycles-pp._raw_spin_lock 0.44 ± 15% -0.3 0.12 ± 14% perf-profile.self.cycles-pp.native_queued_spin_lock_slowpath 0.55 ± 10% -0.2 0.38 ± 13% perf-profile.self.cycles-pp.__inet_lookup_established 0.28 ± 17% -0.2 0.12 ± 26% perf-profile.self.cycles-pp.__sk_receive_skb 0.46 ± 11% -0.1 0.31 ± 12% perf-profile.self.cycles-pp.__slab_free 0.18 ± 23% -0.1 0.08 ± 22% perf-profile.self.cycles-pp.dccp_check_seqno 0.21 ± 12% -0.1 0.11 ± 19% perf-profile.self.cycles-pp.dccp_transmit_skb 0.22 ± 11% -0.1 0.14 ± 20% perf-profile.self.cycles-pp.dccp_enqueue_skb 0.09 ± 31% -0.1 0.03 ±100% perf-profile.self.cycles-pp.dccp_ackvec_parsed_add 0.18 ± 15% -0.1 0.12 ± 21% perf-profile.self.cycles-pp.ccid2_hc_tx_packet_recv 0.07 ± 9% +0.0 0.12 ± 20% perf-profile.self.cycles-pp.do_syscall_64 0.04 ± 71% +0.0 0.08 ± 20% perf-profile.self.cycles-pp.place_entity 0.12 ± 10% +0.0 0.17 ± 16% perf-profile.self.cycles-pp.__flush_smp_call_function_queue 0.01 ±223% +0.1 0.06 ± 11% perf-profile.self.cycles-pp.newidle_balance 0.06 ± 52% +0.1 0.12 ± 19% perf-profile.self.cycles-pp.update_rq_clock 0.09 ± 22% +0.1 0.15 ± 24% perf-profile.self.cycles-pp.__fget_light 0.05 ± 45% +0.1 0.11 ± 20% perf-profile.self.cycles-pp.switch_fpu_return 0.04 ±101% +0.1 0.10 ± 14% perf-profile.self.cycles-pp.dequeue_task_fair 0.02 ±146% +0.1 0.08 ± 22% perf-profile.self.cycles-pp.update_rq_clock_task 0.02 ±141% +0.1 0.08 ± 11% perf-profile.self.cycles-pp.prepare_task_switch 0.02 ±142% +0.1 0.08 ± 17% perf-profile.self.cycles-pp.nr_iowait_cpu 0.02 ±144% +0.1 0.08 ± 24% perf-profile.self.cycles-pp.__rdgsbase_inactive 0.12 ± 22% +0.1 0.19 ± 12% perf-profile.self.cycles-pp.dccp_sendmsg 0.00 +0.1 0.07 ± 7% perf-profile.self.cycles-pp.cpuacct_charge 0.07 ± 51% +0.1 0.14 ± 6% perf-profile.self.cycles-pp.__wrgsbase_inactive 0.00 +0.1 0.07 ± 21% perf-profile.self.cycles-pp.pick_next_entity 0.10 ± 48% +0.1 0.18 ± 23% perf-profile.self.cycles-pp.__entry_text_start 0.27 ± 14% +0.1 0.35 ± 10% perf-profile.self.cycles-pp.__kmem_cache_alloc_node 0.12 ± 31% +0.1 0.20 ± 11% perf-profile.self.cycles-pp.entry_SYSRETQ_unsafe_stack 0.03 ±100% +0.1 0.11 ± 18% perf-profile.self.cycles-pp.schedule 0.00 +0.1 0.08 ± 32% perf-profile.self.cycles-pp.switch_mm_irqs_off 0.01 ±223% +0.1 0.10 ± 14% perf-profile.self.cycles-pp.idle_cpu 0.08 ± 23% +0.1 0.17 ± 14% perf-profile.self.cycles-pp.os_xsave 0.01 ±223% +0.1 0.10 ± 21% perf-profile.self.cycles-pp.set_next_entity 0.04 ±101% +0.1 0.14 ± 34% perf-profile.self.cycles-pp.ttwu_queue_wakelist 0.09 ± 32% +0.1 0.19 ± 19% perf-profile.self.cycles-pp.enqueue_entity 0.08 ± 28% +0.1 0.18 ± 9% perf-profile.self.cycles-pp.enqueue_task_fair 0.04 ± 45% +0.1 0.15 ± 15% perf-profile.self.cycles-pp.update_curr 0.12 ± 31% +0.1 0.23 ± 19% perf-profile.self.cycles-pp.__send 0.00 +0.1 0.11 ± 22% perf-profile.self.cycles-pp.cpu_util 0.12 ± 22% +0.1 0.22 ± 11% perf-profile.self.cycles-pp.dccp_write_space 0.13 ± 19% +0.1 0.24 ± 23% perf-profile.self.cycles-pp.__alloc_skb 0.11 ± 20% +0.1 0.22 ± 14% perf-profile.self.cycles-pp.__update_load_avg_se 0.03 ±100% +0.1 0.14 ± 11% perf-profile.self.cycles-pp.pick_next_task_fair 0.00 +0.1 0.12 ± 10% perf-profile.self.cycles-pp.smpboot_thread_fn 0.10 ± 37% +0.1 0.21 ± 13% perf-profile.self.cycles-pp.available_idle_cpu 0.21 ± 22% +0.1 0.34 ± 20% perf-profile.self.cycles-pp.wait_woken 0.10 ± 13% +0.1 0.24 ± 18% perf-profile.self.cycles-pp.___perf_sw_event 0.10 ± 10% +0.2 0.26 ± 10% perf-profile.self.cycles-pp.update_load_avg 0.12 ± 27% +0.2 0.32 ± 7% perf-profile.self.cycles-pp.__update_load_avg_cfs_rq 0.17 ± 11% +0.2 0.38 ± 10% perf-profile.self.cycles-pp.__switch_to 0.18 ± 20% +0.2 0.40 ± 11% perf-profile.self.cycles-pp.__schedule 0.22 ± 22% +0.2 0.46 ± 7% perf-profile.self.cycles-pp.__switch_to_asm 0.01 ±223% +0.3 0.34 ± 15% perf-profile.self.cycles-pp.intel_idle_irq 0.08 ± 48% +0.4 0.45 ± 12% perf-profile.self.cycles-pp.update_sg_lb_stats 1.64 ± 11% +2.0 3.64 ± 4% perf-profile.self.cycles-pp.poll_idle 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. -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH net-next 1/2] net: Use SMP threads for backlog NAPI. 2023-08-14 9:35 ` [RFC PATCH net-next 1/2] " Sebastian Andrzej Siewior 2023-08-21 8:32 ` kernel test robot @ 2023-08-23 13:35 ` Paolo Abeni 2023-09-20 15:57 ` Sebastian Andrzej Siewior 1 sibling, 1 reply; 26+ messages in thread From: Paolo Abeni @ 2023-08-23 13:35 UTC (permalink / raw) To: Sebastian Andrzej Siewior, linux-kernel, netdev Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa On Mon, 2023-08-14 at 11:35 +0200, Sebastian Andrzej Siewior wrote: > @@ -4781,7 +4733,7 @@ static int enqueue_to_backlog(struct sk_buff *skb, int cpu, > * We can use non atomic operation since we own the queue lock > */ > if (!__test_and_set_bit(NAPI_STATE_SCHED, &sd->backlog.state)) > - napi_schedule_rps(sd); > + __napi_schedule_irqoff(&sd->backlog); > goto enqueue; > } > reason = SKB_DROP_REASON_CPU_BACKLOG; I *think* that the above could be quite dangerous when cpu == smp_processor_id() - that is, with plain veth usage. Currently, each packet runs into the rx path just after enqueue_to_backlog()/tx completes. With this patch there will be a burst effect, where the backlog thread will run after a few (several) packets will be enqueued, when the process scheduler will decide - note that the current CPU is already hosting a running process, the tx thread. The above can cause packet drops (due to limited buffering) or very high latency (due to long burst), even in non overload situation, quite hard to debug. I think the above needs to be an opt-in, but I guess that even RT deployments doing some packet forwarding will not be happy with this on. Cheers, Paolo ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH net-next 1/2] net: Use SMP threads for backlog NAPI. 2023-08-23 13:35 ` Paolo Abeni @ 2023-09-20 15:57 ` Sebastian Andrzej Siewior 2023-09-21 10:41 ` Ferenc Fejes 2023-09-22 9:38 ` Paolo Abeni 0 siblings, 2 replies; 26+ messages in thread From: Sebastian Andrzej Siewior @ 2023-09-20 15:57 UTC (permalink / raw) To: Paolo Abeni Cc: linux-kernel, netdev, David S. Miller, Eric Dumazet, Jakub Kicinski, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa On 2023-08-23 15:35:41 [+0200], Paolo Abeni wrote: > On Mon, 2023-08-14 at 11:35 +0200, Sebastian Andrzej Siewior wrote: > > @@ -4781,7 +4733,7 @@ static int enqueue_to_backlog(struct sk_buff *skb, int cpu, > > * We can use non atomic operation since we own the queue lock > > */ > > if (!__test_and_set_bit(NAPI_STATE_SCHED, &sd->backlog.state)) > > - napi_schedule_rps(sd); > > + __napi_schedule_irqoff(&sd->backlog); > > goto enqueue; > > } > > reason = SKB_DROP_REASON_CPU_BACKLOG; > > I *think* that the above could be quite dangerous when cpu == > smp_processor_id() - that is, with plain veth usage. > > Currently, each packet runs into the rx path just after > enqueue_to_backlog()/tx completes. > > With this patch there will be a burst effect, where the backlog thread > will run after a few (several) packets will be enqueued, when the > process scheduler will decide - note that the current CPU is already > hosting a running process, the tx thread. > > The above can cause packet drops (due to limited buffering) or very > high latency (due to long burst), even in non overload situation, quite > hard to debug. > > I think the above needs to be an opt-in, but I guess that even RT > deployments doing some packet forwarding will not be happy with this > on. I've been looking at this again and have been thinking what you said here. I think part of the problem is that we lack a policy/ mechanism when a DoS is happening and what to do. Before commit d15121be74856 ("Revert "softirq: Let ksoftirqd do its job"") when a lot of network packets are processed then processing is moved to ksoftirqd and continues based on how the scheduler schedules the SCHED_OTHER ksoftirqd task. This avoids lock-ups of the system and it can do something else in between. Any interrupt will not continue the outstanding softirq backlog but wait for ksoftirqd. So it basically avoids the networking overload. It throttles the throughput if needed. This isn't the case after that commit. Now, the CPU can be stuck with processing networking packets if the packets come in fast enough. Even if ksoftirqd is woken up, the next interrupt (say the timer) will continue with at least one round. By using NAPI-threads it is possible to give the control back to the scheduler which can throttle the NAPI processing in favour of other threads that ask for CPU. As you pointed out, waking the thread does not guarantee that it will immediately do the NAPI work. It can be delayed based on current load on the system. This could be influenced by assigning the NAPI-thread a SCHED_FIFO priority. Based on the priority it could be ensured that the thread starts right away or "later" if something else is more important. However, this opens the DoS window again: The scheduler will put the NAPI thread on CPU as long as it asks for it with no throttling. If we could somehow define a DoS condition once we are overwhelmed with packets, then we could act on it and throttle it. This in turn would allow a SCHED_FIFO priority without the fear of a lockup if the system is flooded with packets. > Cheers, > > Paolo Sebastian ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH net-next 1/2] net: Use SMP threads for backlog NAPI. 2023-09-20 15:57 ` Sebastian Andrzej Siewior @ 2023-09-21 10:41 ` Ferenc Fejes 2023-09-22 7:26 ` Sebastian Andrzej Siewior 2023-09-22 9:38 ` Paolo Abeni 1 sibling, 1 reply; 26+ messages in thread From: Ferenc Fejes @ 2023-09-21 10:41 UTC (permalink / raw) To: Sebastian Andrzej Siewior, Paolo Abeni Cc: linux-kernel, netdev, David S. Miller, Eric Dumazet, Jakub Kicinski, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa Hi! On Wed, 2023-09-20 at 17:57 +0200, Sebastian Andrzej Siewior wrote: > On 2023-08-23 15:35:41 [+0200], Paolo Abeni wrote: > > On Mon, 2023-08-14 at 11:35 +0200, Sebastian Andrzej Siewior wrote: > > > @@ -4781,7 +4733,7 @@ static int enqueue_to_backlog(struct > > > sk_buff *skb, int cpu, > > > * We can use non atomic operation since we own > > > the queue lock > > > */ > > > if (!__test_and_set_bit(NAPI_STATE_SCHED, &sd- > > > >backlog.state)) > > > - napi_schedule_rps(sd); > > > + __napi_schedule_irqoff(&sd->backlog); > > > goto enqueue; > > > } > > > reason = SKB_DROP_REASON_CPU_BACKLOG; > > > > I *think* that the above could be quite dangerous when cpu == > > smp_processor_id() - that is, with plain veth usage. > > > > Currently, each packet runs into the rx path just after > > enqueue_to_backlog()/tx completes. > > > > With this patch there will be a burst effect, where the backlog > > thread > > will run after a few (several) packets will be enqueued, when the > > process scheduler will decide - note that the current CPU is > > already > > hosting a running process, the tx thread. > > > > The above can cause packet drops (due to limited buffering) or very > > high latency (due to long burst), even in non overload situation, > > quite > > hard to debug. > > > > I think the above needs to be an opt-in, but I guess that even RT > > deployments doing some packet forwarding will not be happy with > > this > > on. > > I've been looking at this again and have been thinking what you said > here. I think part of the problem is that we lack a policy/ mechanism > when a DoS is happening and what to do. > > Before commit d15121be74856 ("Revert "softirq: Let ksoftirqd do its > job"") when a lot of network packets are processed then processing is > moved to ksoftirqd and continues based on how the scheduler schedules > the SCHED_OTHER ksoftirqd task. This avoids lock-ups of the system > and > it can do something else in between. Any interrupt will not continue > the > outstanding softirq backlog but wait for ksoftirqd. So it basically > avoids the networking overload. It throttles the throughput if > needed. > > This isn't the case after that commit. Now, the CPU can be stuck with > processing networking packets if the packets come in fast enough. > Even > if ksoftirqd is woken up, the next interrupt (say the timer) will > continue with at least one round. > By using NAPI-threads it is possible to give the control back to the > scheduler which can throttle the NAPI processing in favour of other > threads that ask for CPU. As you pointed out, waking the thread does > not > guarantee that it will immediately do the NAPI work. It can be > delayed > based on current load on the system. > > This could be influenced by assigning the NAPI-thread a SCHED_FIFO > priority. Based on the priority it could be ensured that the thread > starts right away or "later" if something else is more important. > However, this opens the DoS window again: The scheduler will put the > NAPI thread on CPU as long as it asks for it with no throttling. > > If we could somehow define a DoS condition once we are overwhelmed > with > packets, then we could act on it and throttle it. This in turn would > allow a SCHED_FIFO priority without the fear of a lockup if the > system > is flooded with packets. Can this be avoided if we reuse gro_flush_timeout as the maximum time the NAPI thread can be scheduled? > > > Cheers, > > > > Paolo > > Sebastian Ferenc ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH net-next 1/2] net: Use SMP threads for backlog NAPI. 2023-09-21 10:41 ` Ferenc Fejes @ 2023-09-22 7:26 ` Sebastian Andrzej Siewior 0 siblings, 0 replies; 26+ messages in thread From: Sebastian Andrzej Siewior @ 2023-09-22 7:26 UTC (permalink / raw) To: Ferenc Fejes Cc: Paolo Abeni, linux-kernel, netdev, David S. Miller, Eric Dumazet, Jakub Kicinski, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa On 2023-09-21 12:41:33 [+0200], Ferenc Fejes wrote: > Hi! Hi, > > If we could somehow define a DoS condition once we are overwhelmed > > with > > packets, then we could act on it and throttle it. This in turn would > > allow a SCHED_FIFO priority without the fear of a lockup if the > > system > > is flooded with packets. > > Can this be avoided if we reuse gro_flush_timeout as the maximum time > the NAPI thread can be scheduled? First your run time needs to be accounted somehow. I observed that some cards/ systems tend pull often a few packets on each interrupt and others pull more packets at a time. So probably packets in a time frame would make sense. Maybe even plus packet size assuming larger packets require more processing time. If you run at SCHED_OTHER you don't care, you can keep it running. With SCHED_FIFO you would need to decide: - how much is too much - what to do once you reach too much Once you reach too much you could: - change the scheduling policy to SCHED_OTHER and keep going until it is no longer "too much in a given period" so you can flip it back. - stop processing for a period of time and risk packet loss which is defined as better than to continue. - pulling packets and dropping them instead of injecting into the stack. Using xdp/ebpf might be easy since there is an API for that. One could even peek at packets to decide if some can be kept. This would rely on the fact that the system can do this quick enough under a DoS condition. > > Ferenc Sebastian ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH net-next 1/2] net: Use SMP threads for backlog NAPI. 2023-09-20 15:57 ` Sebastian Andrzej Siewior 2023-09-21 10:41 ` Ferenc Fejes @ 2023-09-22 9:38 ` Paolo Abeni 1 sibling, 0 replies; 26+ messages in thread From: Paolo Abeni @ 2023-09-22 9:38 UTC (permalink / raw) To: Sebastian Andrzej Siewior Cc: linux-kernel, netdev, David S. Miller, Eric Dumazet, Jakub Kicinski, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa On Wed, 2023-09-20 at 17:57 +0200, Sebastian Andrzej Siewior wrote: > On 2023-08-23 15:35:41 [+0200], Paolo Abeni wrote: > > On Mon, 2023-08-14 at 11:35 +0200, Sebastian Andrzej Siewior wrote: > > > @@ -4781,7 +4733,7 @@ static int enqueue_to_backlog(struct sk_buff *skb, int cpu, > > > * We can use non atomic operation since we own the queue lock > > > */ > > > if (!__test_and_set_bit(NAPI_STATE_SCHED, &sd->backlog.state)) > > > - napi_schedule_rps(sd); > > > + __napi_schedule_irqoff(&sd->backlog); > > > goto enqueue; > > > } > > > reason = SKB_DROP_REASON_CPU_BACKLOG; > > > > I *think* that the above could be quite dangerous when cpu == > > smp_processor_id() - that is, with plain veth usage. > > > > Currently, each packet runs into the rx path just after > > enqueue_to_backlog()/tx completes. > > > > With this patch there will be a burst effect, where the backlog thread > > will run after a few (several) packets will be enqueued, when the > > process scheduler will decide - note that the current CPU is already > > hosting a running process, the tx thread. > > > > The above can cause packet drops (due to limited buffering) or very > > high latency (due to long burst), even in non overload situation, quite > > hard to debug. > > > > I think the above needs to be an opt-in, but I guess that even RT > > deployments doing some packet forwarding will not be happy with this > > on. > > I've been looking at this again and have been thinking what you said > here. I think part of the problem is that we lack a policy/ mechanism > when a DoS is happening and what to do. > > Before commit d15121be74856 ("Revert "softirq: Let ksoftirqd do its > job"") when a lot of network packets are processed then processing is > moved to ksoftirqd and continues based on how the scheduler schedules > the SCHED_OTHER ksoftirqd task. This avoids lock-ups of the system and > it can do something else in between. Any interrupt will not continue the > outstanding softirq backlog but wait for ksoftirqd. So it basically > avoids the networking overload. It throttles the throughput if needed. > > This isn't the case after that commit. Now, the CPU can be stuck with > processing networking packets if the packets come in fast enough. Even > if ksoftirqd is woken up, the next interrupt (say the timer) will > continue with at least one round. > By using NAPI-threads it is possible to give the control back to the > scheduler which can throttle the NAPI processing in favour of other > threads that ask for CPU. As you pointed out, waking the thread does not > guarantee that it will immediately do the NAPI work. It can be delayed > based on current load on the system. > > This could be influenced by assigning the NAPI-thread a SCHED_FIFO > priority. Based on the priority it could be ensured that the thread > starts right away or "later" if something else is more important. > However, this opens the DoS window again: The scheduler will put the > NAPI thread on CPU as long as it asks for it with no throttling. > > If we could somehow define a DoS condition once we are overwhelmed with > packets, then we could act on it and throttle it. This in turn would > allow a SCHED_FIFO priority without the fear of a lockup if the system > is flooded with packets. I declare ENOCOFFEE before starting, be warned! I fear this is becoming a bit too theoretical, but we can infer a DoS condition if the napi thread enqueues somewhere (socket buffer, qdisc, tx ring, ???) a packet and the queue utilization is "high" (say > 75% of max). I have no idea how to throttle a FIFO thread retaining its priority. More importantly, this kind of configuration is not really viable for a generic !PREEMPT_RT build, while the concern I have with napi threaded backlog/serving the backlog with ksoftirqd applies there. Cheers, Paolo ^ permalink raw reply [flat|nested] 26+ messages in thread
* [RFC PATCH 2/2] softirq: Drop the warning from do_softirq_post_smp_call_flush(). 2023-08-14 9:35 [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI Sebastian Andrzej Siewior 2023-08-14 9:35 ` [RFC PATCH net-next 1/2] " Sebastian Andrzej Siewior @ 2023-08-14 9:35 ` Sebastian Andrzej Siewior 2023-08-15 12:08 ` Jesper Dangaard Brouer 2023-08-14 18:24 ` [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI Jakub Kicinski 2 siblings, 1 reply; 26+ messages in thread From: Sebastian Andrzej Siewior @ 2023-08-14 9:35 UTC (permalink / raw) To: linux-kernel, netdev Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, Sebastian Andrzej Siewior Once ksoftirqd become active, all softirqs which were raised, would not be processed immediately but delayed to ksoftirqd. On PREEMPT_RT this means softirqs, which were raised in a threaded interrupt (at elevated process priority), would not be served after the interrupt handler completed its work but will wait until ksoftirqd (normal priority) becomes running on the CPU. On a busy system with plenty of RT tasks this could be delayed for quite some time and leads to problems in general. This is an undesired situation and it has been attempted to avoid the situation in which ksoftirqd becomes scheduled. This changed since commit d15121be74856 ("Revert "softirq: Let ksoftirqd do its job"") and now a threaded interrupt handler will handle soft interrupts at its end even if ksoftirqd is pending. That means that they will be processed in the context in which they were raised. Unfortunately also all other soft interrupts which were raised (or enqueued) earlier and are not yet handled. This happens if a thread with higher priority is raised and has to catch up. This isn't a new problem and the new high priority thread will PI-boost the current sofitrq owner or start from scratch if ksoftirqd wasn't running yet. Since pending ksoftirqd no longer blocks other interrupt threads from handling soft interrupts I belive the warning can be disabled. The pending softirq work has to be solved differently. Remove the warning and update the comment. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- include/linux/interrupt.h | 4 ++-- kernel/smp.c | 4 +--- kernel/softirq.c | 12 +++++------- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index a92bce40b04b3..5143ae0ea9356 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -590,9 +590,9 @@ asmlinkage void do_softirq(void); asmlinkage void __do_softirq(void); #ifdef CONFIG_PREEMPT_RT -extern void do_softirq_post_smp_call_flush(unsigned int was_pending); +extern void do_softirq_post_smp_call_flush(void); #else -static inline void do_softirq_post_smp_call_flush(unsigned int unused) +static inline void do_softirq_post_smp_call_flush(void) { do_softirq(); } diff --git a/kernel/smp.c b/kernel/smp.c index 385179dae360e..cd7db5ffe95ab 100644 --- a/kernel/smp.c +++ b/kernel/smp.c @@ -554,7 +554,6 @@ static void __flush_smp_call_function_queue(bool warn_cpu_offline) */ void flush_smp_call_function_queue(void) { - unsigned int was_pending; unsigned long flags; if (llist_empty(this_cpu_ptr(&call_single_queue))) @@ -562,10 +561,9 @@ void flush_smp_call_function_queue(void) local_irq_save(flags); /* Get the already pending soft interrupts for RT enabled kernels */ - was_pending = local_softirq_pending(); __flush_smp_call_function_queue(true); if (local_softirq_pending()) - do_softirq_post_smp_call_flush(was_pending); + do_softirq_post_smp_call_flush(); local_irq_restore(flags); } diff --git a/kernel/softirq.c b/kernel/softirq.c index 807b34ccd7973..aa299cb3ff47b 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -281,15 +281,13 @@ static inline void invoke_softirq(void) /* * flush_smp_call_function_queue() can raise a soft interrupt in a function - * call. On RT kernels this is undesired and the only known functionality - * in the block layer which does this is disabled on RT. If soft interrupts - * get raised which haven't been raised before the flush, warn so it can be - * investigated. + * call. On RT kernels this is undesired because the work is no longer processed + * in the context where it originated. It is not especially harmfull but best to + * be avoided. */ -void do_softirq_post_smp_call_flush(unsigned int was_pending) +void do_softirq_post_smp_call_flush(void) { - if (WARN_ON_ONCE(was_pending != local_softirq_pending())) - invoke_softirq(); + invoke_softirq(); } #else /* CONFIG_PREEMPT_RT */ -- 2.40.1 ^ permalink raw reply related [flat|nested] 26+ messages in thread
* Re: [RFC PATCH 2/2] softirq: Drop the warning from do_softirq_post_smp_call_flush(). 2023-08-14 9:35 ` [RFC PATCH 2/2] softirq: Drop the warning from do_softirq_post_smp_call_flush() Sebastian Andrzej Siewior @ 2023-08-15 12:08 ` Jesper Dangaard Brouer 2023-08-15 22:31 ` Yan Zhai 2023-08-16 14:48 ` Jesper Dangaard Brouer 0 siblings, 2 replies; 26+ messages in thread From: Jesper Dangaard Brouer @ 2023-08-15 12:08 UTC (permalink / raw) To: Sebastian Andrzej Siewior, linux-kernel, netdev Cc: hawk, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, kernel-team, Yan Zhai On 14/08/2023 11.35, Sebastian Andrzej Siewior wrote: > This is an undesired situation and it has been attempted to avoid the > situation in which ksoftirqd becomes scheduled. This changed since > commit d15121be74856 ("Revert "softirq: Let ksoftirqd do its job"") > and now a threaded interrupt handler will handle soft interrupts at its > end even if ksoftirqd is pending. That means that they will be processed > in the context in which they were raised. $ git describe --contains d15121be74856 v6.5-rc1~232^2~4 That revert basically removes the "overload" protection that was added to cope with DDoS situations in Aug 2016 (Cc. Cloudflare). As described in https://git.kernel.org/torvalds/c/4cd13c21b207 ("softirq: Let ksoftirqd do its job") in UDP overload situations when UDP socket receiver runs on same CPU as ksoftirqd it "falls-off-an-edge" and almost doesn't process packets (because softirq steals CPU/sched time from UDP pid). Warning Cloudflare (Cc) as this might affect their production use-cases, and I recommend getting involved to evaluate the effect of these changes. I do realize/acknowledge that the reverted patch caused other latency issues, given it was a "big-hammer" approach affecting other softirq processing (as can be seen by e.g. the watchdog fixes patches). Thus, the revert makes sense, but how to regain the "overload" protection such that RX networking cannot starve processes reading from the socket? (is this what Sebastian's patchset does?) --Jesper Thread link for people Cc'ed: https://lore.kernel.org/all/20230814093528.117342-1-bigeasy@linutronix.de/#r ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH 2/2] softirq: Drop the warning from do_softirq_post_smp_call_flush(). 2023-08-15 12:08 ` Jesper Dangaard Brouer @ 2023-08-15 22:31 ` Yan Zhai 2023-08-16 14:48 ` Jesper Dangaard Brouer 1 sibling, 0 replies; 26+ messages in thread From: Yan Zhai @ 2023-08-15 22:31 UTC (permalink / raw) To: Jesper Dangaard Brouer Cc: Sebastian Andrzej Siewior, linux-kernel, netdev, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, kernel-team On Tue, Aug 15, 2023 at 7:08 AM Jesper Dangaard Brouer <hawk@kernel.org> wrote: > > > > On 14/08/2023 11.35, Sebastian Andrzej Siewior wrote: > > This is an undesired situation and it has been attempted to avoid the > > situation in which ksoftirqd becomes scheduled. This changed since > > commit d15121be74856 ("Revert "softirq: Let ksoftirqd do its job"") > > and now a threaded interrupt handler will handle soft interrupts at its > > end even if ksoftirqd is pending. That means that they will be processed > > in the context in which they were raised. > > $ git describe --contains d15121be74856 > v6.5-rc1~232^2~4 > > That revert basically removes the "overload" protection that was added > to cope with DDoS situations in Aug 2016 (Cc. Cloudflare). As described > in https://git.kernel.org/torvalds/c/4cd13c21b207 ("softirq: Let > ksoftirqd do its job") in UDP overload situations when UDP socket > receiver runs on same CPU as ksoftirqd it "falls-off-an-edge" and almost > doesn't process packets (because softirq steals CPU/sched time from UDP > pid). Warning Cloudflare (Cc) as this might affect their production > use-cases, and I recommend getting involved to evaluate the effect of > these changes. > > I do realize/acknowledge that the reverted patch caused other latency > issues, given it was a "big-hammer" approach affecting other softirq > processing (as can be seen by e.g. the watchdog fixes patches). > Thus, the revert makes sense, but how to regain the "overload" > protection such that RX networking cannot starve processes reading from > the socket? (is this what Sebastian's patchset does?) > Thanks for notifying us. We will need to evaluate if this is going to change the picture under serious floods. Yan > --Jesper > > Thread link for people Cc'ed: > https://lore.kernel.org/all/20230814093528.117342-1-bigeasy@linutronix.de/#r ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH 2/2] softirq: Drop the warning from do_softirq_post_smp_call_flush(). 2023-08-15 12:08 ` Jesper Dangaard Brouer 2023-08-15 22:31 ` Yan Zhai @ 2023-08-16 14:48 ` Jesper Dangaard Brouer 2023-08-16 15:15 ` Yan Zhai 2023-08-16 15:22 ` Sebastian Andrzej Siewior 1 sibling, 2 replies; 26+ messages in thread From: Jesper Dangaard Brouer @ 2023-08-16 14:48 UTC (permalink / raw) To: Sebastian Andrzej Siewior, netdev, Paolo Abeni Cc: hawk, David S. Miller, Eric Dumazet, Jakub Kicinski, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, linux-kernel, kernel-team, Yan Zhai On 15/08/2023 14.08, Jesper Dangaard Brouer wrote: > > > On 14/08/2023 11.35, Sebastian Andrzej Siewior wrote: >> This is an undesired situation and it has been attempted to avoid the >> situation in which ksoftirqd becomes scheduled. This changed since >> commit d15121be74856 ("Revert "softirq: Let ksoftirqd do its job"") >> and now a threaded interrupt handler will handle soft interrupts at its >> end even if ksoftirqd is pending. That means that they will be processed >> in the context in which they were raised. > > $ git describe --contains d15121be74856 > v6.5-rc1~232^2~4 > > That revert basically removes the "overload" protection that was added > to cope with DDoS situations in Aug 2016 (Cc. Cloudflare). As described > in https://git.kernel.org/torvalds/c/4cd13c21b207 ("softirq: Let > ksoftirqd do its job") in UDP overload situations when UDP socket > receiver runs on same CPU as ksoftirqd it "falls-off-an-edge" and almost > doesn't process packets (because softirq steals CPU/sched time from UDP > pid). Warning Cloudflare (Cc) as this might affect their production > use-cases, and I recommend getting involved to evaluate the effect of > these changes. > I did some testing on net-next (with commit d15121be74856 ("Revert "softirq: Let ksoftirqd do its job"") using UDP pktgen + udp_sink. And I observe the old overload issue occur again, where userspace process (udp_sink) process very few packets when running on *same* CPU as the NAPI-RX/IRQ processing. The perf report "comm" clearly shows that NAPI runs in the context of the "udp_sink" process, stealing its sched time. (Same CPU around 3Kpps and diff CPU 1722Kpps, see details below). What happens are that NAPI takes 64 packets and queue them to the udp_sink process *socket*, the udp_sink process *wakeup* process 1 packet from socket queue and on exit (__local_bh_enable_ip) runs softirq that starts NAPI (to again process 64 packets... repeat). > I do realize/acknowledge that the reverted patch caused other latency > issues, given it was a "big-hammer" approach affecting other softirq > processing (as can be seen by e.g. the watchdog fixes patches). > Thus, the revert makes sense, but how to regain the "overload" > protection such that RX networking cannot starve processes reading from > the socket? (is this what Sebastian's patchset does?) > I'm no expert in sched / softirq area of the kernel, but I'm willing to help out testing different solution that can regain the "overload" protection e.g. avoid packet processing "falls-of-an-edge" (and thus opens the kernel to be DDoS'ed easily). Is this what Sebastian's patchset does? > > Thread link for people Cc'ed: > https://lore.kernel.org/all/20230814093528.117342-1-bigeasy@linutronix.de/#r --Jesper (some testlab results below) [udp_sink] https://github.com/netoptimizer/network-testing/blob/master/src/udp_sink.c When udp_sink runs on same CPU and NAPI/softirq - UdpInDatagrams: 2,948 packets/sec $ nstat -n && sleep 1 && nstat #kernel IpInReceives 2831056 0.0 IpInDelivers 2831053 0.0 UdpInDatagrams 2948 0.0 UdpInErrors 2828118 0.0 UdpRcvbufErrors 2828118 0.0 IpExtInOctets 130206496 0.0 IpExtInNoECTPkts 2830576 0.0 When udp_sink runs on another CPU than NAPI-RX. - UdpInDatagrams: 1,722,307 pps $ nstat -n && sleep 1 && nstat #kernel IpInReceives 2318560 0.0 IpInDelivers 2318562 0.0 UdpInDatagrams 1722307 0.0 UdpInErrors 596280 0.0 UdpRcvbufErrors 596280 0.0 IpExtInOctets 106634256 0.0 IpExtInNoECTPkts 2318136 0.0 ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH 2/2] softirq: Drop the warning from do_softirq_post_smp_call_flush(). 2023-08-16 14:48 ` Jesper Dangaard Brouer @ 2023-08-16 15:15 ` Yan Zhai 2023-08-16 21:02 ` Jesper Dangaard Brouer 2023-08-16 15:22 ` Sebastian Andrzej Siewior 1 sibling, 1 reply; 26+ messages in thread From: Yan Zhai @ 2023-08-16 15:15 UTC (permalink / raw) To: Jesper Dangaard Brouer Cc: Sebastian Andrzej Siewior, netdev, Paolo Abeni, David S. Miller, Eric Dumazet, Jakub Kicinski, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, linux-kernel, kernel-team On Wed, Aug 16, 2023 at 9:49 AM Jesper Dangaard Brouer <hawk@kernel.org> wrote: > > > > On 15/08/2023 14.08, Jesper Dangaard Brouer wrote: > > > > > > On 14/08/2023 11.35, Sebastian Andrzej Siewior wrote: > >> This is an undesired situation and it has been attempted to avoid the > >> situation in which ksoftirqd becomes scheduled. This changed since > >> commit d15121be74856 ("Revert "softirq: Let ksoftirqd do its job"") > >> and now a threaded interrupt handler will handle soft interrupts at its > >> end even if ksoftirqd is pending. That means that they will be processed > >> in the context in which they were raised. > > > > $ git describe --contains d15121be74856 > > v6.5-rc1~232^2~4 > > > > That revert basically removes the "overload" protection that was added > > to cope with DDoS situations in Aug 2016 (Cc. Cloudflare). As described > > in https://git.kernel.org/torvalds/c/4cd13c21b207 ("softirq: Let > > ksoftirqd do its job") in UDP overload situations when UDP socket > > receiver runs on same CPU as ksoftirqd it "falls-off-an-edge" and almost > > doesn't process packets (because softirq steals CPU/sched time from UDP > > pid). Warning Cloudflare (Cc) as this might affect their production > > use-cases, and I recommend getting involved to evaluate the effect of > > these changes. > > > > I did some testing on net-next (with commit d15121be74856 ("Revert > "softirq: Let ksoftirqd do its job"") using UDP pktgen + udp_sink. > > And I observe the old overload issue occur again, where userspace > process (udp_sink) process very few packets when running on *same* CPU > as the NAPI-RX/IRQ processing. The perf report "comm" clearly shows > that NAPI runs in the context of the "udp_sink" process, stealing its > sched time. (Same CPU around 3Kpps and diff CPU 1722Kpps, see details > below). > What happens are that NAPI takes 64 packets and queue them to the > udp_sink process *socket*, the udp_sink process *wakeup* process 1 > packet from socket queue and on exit (__local_bh_enable_ip) runs softirq > that starts NAPI (to again process 64 packets... repeat). > I think there are two scenarios to consider: 1. Actual DoS scenario. In this case, we would drop DoS packets through XDP, which might actually relieve the stress. According to Marek's blog XDP can indeed drop 10M pps [1] so it might not steal too much time. This is also something I would like to validate again since I cannot tell if those tests were performed before or after the reverted commit. 2. Legit elephant flows (so it should not be just dropped). This one is closer to what you tested above, and it is a much harder issue since packets are legit and should not be dropped early at XDP. Let the scheduler move affected processes away seems to be the non-optimal but straight answer for now. However, I suspect this would impose an overload issue for those programmed with RFS or ARFS, since flows would "follow" the processes. They probably have to force threaded NAPI for tuning. [1] https://blog.cloudflare.com/how-to-drop-10-million-packets/ > > > I do realize/acknowledge that the reverted patch caused other latency > > issues, given it was a "big-hammer" approach affecting other softirq > > processing (as can be seen by e.g. the watchdog fixes patches). > > Thus, the revert makes sense, but how to regain the "overload" > > protection such that RX networking cannot starve processes reading from > > the socket? (is this what Sebastian's patchset does?) > > > > I'm no expert in sched / softirq area of the kernel, but I'm willing to > help out testing different solution that can regain the "overload" > protection e.g. avoid packet processing "falls-of-an-edge" (and thus > opens the kernel to be DDoS'ed easily). > Is this what Sebastian's patchset does? > > > > > > Thread link for people Cc'ed: > > https://lore.kernel.org/all/20230814093528.117342-1-bigeasy@linutronix.de/#r > > --Jesper > (some testlab results below) > > [udp_sink] > https://github.com/netoptimizer/network-testing/blob/master/src/udp_sink.c > > > When udp_sink runs on same CPU and NAPI/softirq > - UdpInDatagrams: 2,948 packets/sec > > $ nstat -n && sleep 1 && nstat > #kernel > IpInReceives 2831056 0.0 > IpInDelivers 2831053 0.0 > UdpInDatagrams 2948 0.0 > UdpInErrors 2828118 0.0 > UdpRcvbufErrors 2828118 0.0 > IpExtInOctets 130206496 0.0 > IpExtInNoECTPkts 2830576 0.0 > > When udp_sink runs on another CPU than NAPI-RX. > - UdpInDatagrams: 1,722,307 pps > > $ nstat -n && sleep 1 && nstat > #kernel > IpInReceives 2318560 0.0 > IpInDelivers 2318562 0.0 > UdpInDatagrams 1722307 0.0 > UdpInErrors 596280 0.0 > UdpRcvbufErrors 596280 0.0 > IpExtInOctets 106634256 0.0 > IpExtInNoECTPkts 2318136 0.0 > > -- Yan ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH 2/2] softirq: Drop the warning from do_softirq_post_smp_call_flush(). 2023-08-16 15:15 ` Yan Zhai @ 2023-08-16 21:02 ` Jesper Dangaard Brouer 2023-08-18 15:49 ` Yan Zhai 0 siblings, 1 reply; 26+ messages in thread From: Jesper Dangaard Brouer @ 2023-08-16 21:02 UTC (permalink / raw) To: Yan Zhai, Jesper Dangaard Brouer Cc: brouer, Sebastian Andrzej Siewior, netdev, Paolo Abeni, David S. Miller, Eric Dumazet, Jakub Kicinski, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, linux-kernel, kernel-team On 16/08/2023 17.15, Yan Zhai wrote: > On Wed, Aug 16, 2023 at 9:49 AM Jesper Dangaard Brouer <hawk@kernel.org> wrote: >> >> On 15/08/2023 14.08, Jesper Dangaard Brouer wrote: >>> >>> >>> On 14/08/2023 11.35, Sebastian Andrzej Siewior wrote: >>>> This is an undesired situation and it has been attempted to avoid the >>>> situation in which ksoftirqd becomes scheduled. This changed since >>>> commit d15121be74856 ("Revert "softirq: Let ksoftirqd do its job"") >>>> and now a threaded interrupt handler will handle soft interrupts at its >>>> end even if ksoftirqd is pending. That means that they will be processed >>>> in the context in which they were raised. >>> >>> $ git describe --contains d15121be74856 >>> v6.5-rc1~232^2~4 >>> >>> That revert basically removes the "overload" protection that was added >>> to cope with DDoS situations in Aug 2016 (Cc. Cloudflare). As described >>> in https://git.kernel.org/torvalds/c/4cd13c21b207 ("softirq: Let >>> ksoftirqd do its job") in UDP overload situations when UDP socket >>> receiver runs on same CPU as ksoftirqd it "falls-off-an-edge" and almost >>> doesn't process packets (because softirq steals CPU/sched time from UDP >>> pid). Warning Cloudflare (Cc) as this might affect their production >>> use-cases, and I recommend getting involved to evaluate the effect of >>> these changes. >>> >> >> I did some testing on net-next (with commit d15121be74856 ("Revert >> "softirq: Let ksoftirqd do its job"") using UDP pktgen + udp_sink. >> >> And I observe the old overload issue occur again, where userspace >> process (udp_sink) process very few packets when running on *same* CPU >> as the NAPI-RX/IRQ processing. The perf report "comm" clearly shows >> that NAPI runs in the context of the "udp_sink" process, stealing its >> sched time. (Same CPU around 3Kpps and diff CPU 1722Kpps, see details >> below). >> What happens are that NAPI takes 64 packets and queue them to the >> udp_sink process *socket*, the udp_sink process *wakeup* process 1 >> packet from socket queue and on exit (__local_bh_enable_ip) runs softirq >> that starts NAPI (to again process 64 packets... repeat). >> > I think there are two scenarios to consider: > > 1. Actual DoS scenario. In this case, we would drop DoS packets > through XDP, which might actually relieve the stress. According to > Marek's blog XDP can indeed drop 10M pps [1] so it might not steal too > much time. This is also something I would like to validate again since Yes, using XDP to drop packet will/should relieve the stress, as it basically can discard some of the 64 packets processed by NAPI vs the 1 packet received by userspace (that re-trigger NAPI), giving a better balance. > I cannot tell if those tests were performed before or after the > reverted commit. Marek's tests will likely contain the patch 4cd13c21b207 ("softirq: Let ksoftirqd do its job") as blog is from 2018 and patch from 2016, but shouldn't matter much. > 2. Legit elephant flows (so it should not be just dropped). This one > is closer to what you tested above, and it is a much harder issue > since packets are legit and should not be dropped early at XDP. Let > the scheduler move affected processes away seems to be the non-optimal > but straight answer for now. However, I suspect this would impose an > overload issue for those programmed with RFS or ARFS, since flows > would "follow" the processes. They probably have to force threaded > NAPI for tuning. > True, this is the case I don't know how to solve. For UDP packets it is NOT optimal to let the process "follow"/run on the NAPI-RX CPU. For TCP traffic it is faster to run on same CPU, which could be related to GRO effect, or simply that tcp_recvmsg gets a stream of data (before it invokes __local_bh_enable_ip causing do_softirq). I have also tested with netperf UDP packets[2] in a scenario that doesn't cause "overload" and CPU have idle cycles. When UDP-netserver is running on same CPU as NAPI then I see approx 38% (82020/216362) UdpRcvbufErrors [3] (and separate CPUs 2.8%). Sure, I could increase buffer size, but the point is NAPI can enqueue 64 packet and UDP receiver dequeue 1 packet. This reminded me that kernel have a recvmmsg (extra "m") syscall for multiple packets. I tested this (as udop_sink have support), but no luck. This is because internally in the kernel (do_recvmmsg) is just a loop over ___sys_recvmsg/__skb_recv_udp, which have a BH-spinlock per packet that invokes __local_bh_enable_ip/do_softirq. I guess, we/netdev could fix recvmmsg() to bulk-dequeue from socket queue (BH-socket unlock is triggering __local_bh_enable_ip/do_softirq) and then have a solution for UDP(?). [2] netperf -H 198.18.1.1 -D1 -l 1200 -t UDP_STREAM -T 0,0 -- -m 1472 -N -n [3] $ nstat -n && sleep 1 && nstat #kernel IpInReceives 216362 0.0 IpInDelivers 216354 0.0 UdpInDatagrams 134356 0.0 UdpInErrors 82020 0.0 UdpRcvbufErrors 82020 0.0 IpExtInOctets 324600000 0.0 IpExtInNoECTPkts 216400 0.0 > [1] https://blog.cloudflare.com/how-to-drop-10-million-packets/ > >> >>> I do realize/acknowledge that the reverted patch caused other latency >>> issues, given it was a "big-hammer" approach affecting other softirq >>> processing (as can be seen by e.g. the watchdog fixes patches). >>> Thus, the revert makes sense, but how to regain the "overload" >>> protection such that RX networking cannot starve processes reading from >>> the socket? (is this what Sebastian's patchset does?) >>> >> >> I'm no expert in sched / softirq area of the kernel, but I'm willing to >> help out testing different solution that can regain the "overload" >> protection e.g. avoid packet processing "falls-of-an-edge" (and thus >> opens the kernel to be DDoS'ed easily). >> Is this what Sebastian's patchset does? >> >> >>> >>> Thread link for people Cc'ed: >>> https://lore.kernel.org/all/20230814093528.117342-1-bigeasy@linutronix.de/#r >> >> --Jesper >> (some testlab results below) >> >> [udp_sink] >> https://github.com/netoptimizer/network-testing/blob/master/src/udp_sink.c >> >> >> When udp_sink runs on same CPU and NAPI/softirq >> - UdpInDatagrams: 2,948 packets/sec >> >> $ nstat -n && sleep 1 && nstat >> #kernel >> IpInReceives 2831056 0.0 >> IpInDelivers 2831053 0.0 >> UdpInDatagrams 2948 0.0 >> UdpInErrors 2828118 0.0 >> UdpRcvbufErrors 2828118 0.0 >> IpExtInOctets 130206496 0.0 >> IpExtInNoECTPkts 2830576 0.0 >> >> When udp_sink runs on another CPU than NAPI-RX. >> - UdpInDatagrams: 1,722,307 pps >> >> $ nstat -n && sleep 1 && nstat >> #kernel >> IpInReceives 2318560 0.0 >> IpInDelivers 2318562 0.0 >> UdpInDatagrams 1722307 0.0 >> UdpInErrors 596280 0.0 >> UdpRcvbufErrors 596280 0.0 >> IpExtInOctets 106634256 0.0 >> IpExtInNoECTPkts 2318136 0.0 >> >> > > ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH 2/2] softirq: Drop the warning from do_softirq_post_smp_call_flush(). 2023-08-16 21:02 ` Jesper Dangaard Brouer @ 2023-08-18 15:49 ` Yan Zhai 0 siblings, 0 replies; 26+ messages in thread From: Yan Zhai @ 2023-08-18 15:49 UTC (permalink / raw) To: Jesper Dangaard Brouer Cc: Jesper Dangaard Brouer, brouer, Sebastian Andrzej Siewior, netdev, Paolo Abeni, David S. Miller, Eric Dumazet, Jakub Kicinski, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, linux-kernel, kernel-team On Wed, Aug 16, 2023 at 4:02 PM Jesper Dangaard Brouer <jbrouer@redhat.com> wrote: > > > > On 16/08/2023 17.15, Yan Zhai wrote: > > On Wed, Aug 16, 2023 at 9:49 AM Jesper Dangaard Brouer <hawk@kernel.org> wrote: > >> > >> On 15/08/2023 14.08, Jesper Dangaard Brouer wrote: > >>> > >>> > >>> On 14/08/2023 11.35, Sebastian Andrzej Siewior wrote: > >>>> This is an undesired situation and it has been attempted to avoid the > >>>> situation in which ksoftirqd becomes scheduled. This changed since > >>>> commit d15121be74856 ("Revert "softirq: Let ksoftirqd do its job"") > >>>> and now a threaded interrupt handler will handle soft interrupts at its > >>>> end even if ksoftirqd is pending. That means that they will be processed > >>>> in the context in which they were raised. > >>> > >>> $ git describe --contains d15121be74856 > >>> v6.5-rc1~232^2~4 > >>> > >>> That revert basically removes the "overload" protection that was added > >>> to cope with DDoS situations in Aug 2016 (Cc. Cloudflare). As described > >>> in https://git.kernel.org/torvalds/c/4cd13c21b207 ("softirq: Let > >>> ksoftirqd do its job") in UDP overload situations when UDP socket > >>> receiver runs on same CPU as ksoftirqd it "falls-off-an-edge" and almost > >>> doesn't process packets (because softirq steals CPU/sched time from UDP > >>> pid). Warning Cloudflare (Cc) as this might affect their production > >>> use-cases, and I recommend getting involved to evaluate the effect of > >>> these changes. > >>> > >> > >> I did some testing on net-next (with commit d15121be74856 ("Revert > >> "softirq: Let ksoftirqd do its job"") using UDP pktgen + udp_sink. > >> > >> And I observe the old overload issue occur again, where userspace > >> process (udp_sink) process very few packets when running on *same* CPU > >> as the NAPI-RX/IRQ processing. The perf report "comm" clearly shows > >> that NAPI runs in the context of the "udp_sink" process, stealing its > >> sched time. (Same CPU around 3Kpps and diff CPU 1722Kpps, see details > >> below). > >> What happens are that NAPI takes 64 packets and queue them to the > >> udp_sink process *socket*, the udp_sink process *wakeup* process 1 > >> packet from socket queue and on exit (__local_bh_enable_ip) runs softirq > >> that starts NAPI (to again process 64 packets... repeat). > >> > > I think there are two scenarios to consider: > > > > 1. Actual DoS scenario. In this case, we would drop DoS packets > > through XDP, which might actually relieve the stress. According to > > Marek's blog XDP can indeed drop 10M pps [1] so it might not steal too > > much time. This is also something I would like to validate again since > > Yes, using XDP to drop packet will/should relieve the stress, as it > basically can discard some of the 64 packets processed by NAPI vs the 1 > packet received by userspace (that re-trigger NAPI), giving a better > balance. > > > I cannot tell if those tests were performed before or after the > > reverted commit. > > Marek's tests will likely contain the patch 4cd13c21b207 ("softirq: Let > ksoftirqd do its job") as blog is from 2018 and patch from 2016, but > shouldn't matter much. > > > > 2. Legit elephant flows (so it should not be just dropped). This one > > is closer to what you tested above, and it is a much harder issue > > since packets are legit and should not be dropped early at XDP. Let > > the scheduler move affected processes away seems to be the non-optimal > > but straight answer for now. However, I suspect this would impose an > > overload issue for those programmed with RFS or ARFS, since flows > > would "follow" the processes. They probably have to force threaded > > NAPI for tuning. > > > > True, this is the case I don't know how to solve. > > For UDP packets it is NOT optimal to let the process "follow"/run on the > NAPI-RX CPU. For TCP traffic it is faster to run on same CPU, which > could be related to GRO effect, or simply that tcp_recvmsg gets a stream > of data (before it invokes __local_bh_enable_ip causing do_softirq). > To maximize single flow throughput, it is not optimal to run RX on the same CPU with the receiver, regardless of TCP or UDP. The difference is that TCP does not have tput issue until 10+ Gbps thanks to GRO. In some internal benchmarking effort, I found that pinning iperf server on the same RX would yield ~13-14 Gbps TCP while running on different cores would have 25G NIC saturated (for both same or different NUMA case). Despite single flow throughput upper bound getting hit when running on the same core, CPU cycles to process each packet is actually reduced. So it is likely more friendly to the production environment we are dealing with where there are a lot more smaller flows. It is something I planned to test more (in the past we had major services pinned on dedicated cores, but recently we start to unpin to improve tail latency of other services). But with the protection gone, it adds quite some uncertainty to the picture. > I have also tested with netperf UDP packets[2] in a scenario that > doesn't cause "overload" and CPU have idle cycles. When UDP-netserver > is running on same CPU as NAPI then I see approx 38% (82020/216362) > UdpRcvbufErrors [3] (and separate CPUs 2.8%). Sure, I could increase > buffer size, but the point is NAPI can enqueue 64 packet and UDP > receiver dequeue 1 packet. > > This reminded me that kernel have a recvmmsg (extra "m") syscall for > multiple packets. I tested this (as udop_sink have support), but no > luck. This is because internally in the kernel (do_recvmmsg) is just a > loop over ___sys_recvmsg/__skb_recv_udp, which have a BH-spinlock per > packet that invokes __local_bh_enable_ip/do_softirq. I guess, we/netdev > could fix recvmmsg() to bulk-dequeue from socket queue (BH-socket unlock > is triggering __local_bh_enable_ip/do_softirq) and then have a solution > for UDP(?). > recvmmsg does help getting more packets in a batch, but it has an issue of buffer allocation upfront: when there are millions of connections, preallocate too many buffers can mount up memory pressure a lot. On an alternative view, enable UDP GRO seems a direct help in this context, to bring UDP on par with TCP, and reduce the RX overhead. We already have quite some UDP GRO/GSO use cases for virtual machines and QUIC handling, time to persuade engineers to add more maybe. Yan > > [2] netperf -H 198.18.1.1 -D1 -l 1200 -t UDP_STREAM -T 0,0 -- -m 1472 -N -n > > [3] > $ nstat -n && sleep 1 && nstat > #kernel > IpInReceives 216362 0.0 > IpInDelivers 216354 0.0 > UdpInDatagrams 134356 0.0 > UdpInErrors 82020 0.0 > UdpRcvbufErrors 82020 0.0 > IpExtInOctets 324600000 0.0 > IpExtInNoECTPkts 216400 0.0 > > > > [1] https://blog.cloudflare.com/how-to-drop-10-million-packets/ > > > >> > >>> I do realize/acknowledge that the reverted patch caused other latency > >>> issues, given it was a "big-hammer" approach affecting other softirq > >>> processing (as can be seen by e.g. the watchdog fixes patches). > >>> Thus, the revert makes sense, but how to regain the "overload" > >>> protection such that RX networking cannot starve processes reading from > >>> the socket? (is this what Sebastian's patchset does?) > >>> > >> > >> I'm no expert in sched / softirq area of the kernel, but I'm willing to > >> help out testing different solution that can regain the "overload" > >> protection e.g. avoid packet processing "falls-of-an-edge" (and thus > >> opens the kernel to be DDoS'ed easily). > >> Is this what Sebastian's patchset does? > >> > >> > >>> > >>> Thread link for people Cc'ed: > >>> https://lore.kernel.org/all/20230814093528.117342-1-bigeasy@linutronix.de/#r > >> > >> --Jesper > >> (some testlab results below) > >> > >> [udp_sink] > >> https://github.com/netoptimizer/network-testing/blob/master/src/udp_sink.c > >> > >> > >> When udp_sink runs on same CPU and NAPI/softirq > >> - UdpInDatagrams: 2,948 packets/sec > >> > >> $ nstat -n && sleep 1 && nstat > >> #kernel > >> IpInReceives 2831056 0.0 > >> IpInDelivers 2831053 0.0 > >> UdpInDatagrams 2948 0.0 > >> UdpInErrors 2828118 0.0 > >> UdpRcvbufErrors 2828118 0.0 > >> IpExtInOctets 130206496 0.0 > >> IpExtInNoECTPkts 2830576 0.0 > >> > >> When udp_sink runs on another CPU than NAPI-RX. > >> - UdpInDatagrams: 1,722,307 pps > >> > >> $ nstat -n && sleep 1 && nstat > >> #kernel > >> IpInReceives 2318560 0.0 > >> IpInDelivers 2318562 0.0 > >> UdpInDatagrams 1722307 0.0 > >> UdpInErrors 596280 0.0 > >> UdpRcvbufErrors 596280 0.0 > >> IpExtInOctets 106634256 0.0 > >> IpExtInNoECTPkts 2318136 0.0 > >> > >> > > > > > -- Yan ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH 2/2] softirq: Drop the warning from do_softirq_post_smp_call_flush(). 2023-08-16 14:48 ` Jesper Dangaard Brouer 2023-08-16 15:15 ` Yan Zhai @ 2023-08-16 15:22 ` Sebastian Andrzej Siewior 1 sibling, 0 replies; 26+ messages in thread From: Sebastian Andrzej Siewior @ 2023-08-16 15:22 UTC (permalink / raw) To: Jesper Dangaard Brouer Cc: netdev, Paolo Abeni, David S. Miller, Eric Dumazet, Jakub Kicinski, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, linux-kernel, kernel-team, Yan Zhai On 2023-08-16 16:48:56 [+0200], Jesper Dangaard Brouer wrote: > I'm no expert in sched / softirq area of the kernel, but I'm willing to help > out testing different solution that can regain the "overload" protection > e.g. avoid packet processing "falls-of-an-edge" (and thus opens the kernel > to be DDoS'ed easily). > Is this what Sebastian's patchset does? I was going to respond but didn't know what so far. Can you figure out if you are using backlog or not. If you do, could try my patch. If not could you try to enable napi-thread and see? Either way I will re-read it again. Sebastian ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI. 2023-08-14 9:35 [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI Sebastian Andrzej Siewior 2023-08-14 9:35 ` [RFC PATCH net-next 1/2] " Sebastian Andrzej Siewior 2023-08-14 9:35 ` [RFC PATCH 2/2] softirq: Drop the warning from do_softirq_post_smp_call_flush() Sebastian Andrzej Siewior @ 2023-08-14 18:24 ` Jakub Kicinski 2023-08-17 13:16 ` Sebastian Andrzej Siewior 2 siblings, 1 reply; 26+ messages in thread From: Jakub Kicinski @ 2023-08-14 18:24 UTC (permalink / raw) To: Sebastian Andrzej Siewior Cc: linux-kernel, netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa On Mon, 14 Aug 2023 11:35:26 +0200 Sebastian Andrzej Siewior wrote: > The RPS code and "deferred skb free" both send IPI/ function call > to a remote CPU in which a softirq is raised. This leads to a warning on > PREEMPT_RT because raising softiqrs from function call led to undesired > behaviour in the past. I had duct tape in RT for the "deferred skb free" > and Wander Lairson Costa reported the RPS case. Could you find a less invasive solution? backlog is used by veth == most containerized environments. This change has a very high risk of regression for a lot of people. ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI. 2023-08-14 18:24 ` [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI Jakub Kicinski @ 2023-08-17 13:16 ` Sebastian Andrzej Siewior 2023-08-17 15:30 ` Jakub Kicinski 2023-08-18 14:43 ` Yan Zhai 0 siblings, 2 replies; 26+ messages in thread From: Sebastian Andrzej Siewior @ 2023-08-17 13:16 UTC (permalink / raw) To: Jakub Kicinski Cc: linux-kernel, netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, Yan Zhai, Jesper Dangaard Brouer On 2023-08-14 11:24:21 [-0700], Jakub Kicinski wrote: > On Mon, 14 Aug 2023 11:35:26 +0200 Sebastian Andrzej Siewior wrote: > > The RPS code and "deferred skb free" both send IPI/ function call > > to a remote CPU in which a softirq is raised. This leads to a warning on > > PREEMPT_RT because raising softiqrs from function call led to undesired > > behaviour in the past. I had duct tape in RT for the "deferred skb free" > > and Wander Lairson Costa reported the RPS case. > > Could you find a less invasive solution? > backlog is used by veth == most containerized environments. > This change has a very high risk of regression for a lot of people. Looking at the cloudflare ppl here in the thread, I doubt they use backlog but have proper NAPI so they might not need this. There is no threaded NAPI for backlog and RPS. This was suggested as the mitigation for the highload/ DoS case. Can this become a problem or - backlog is used only by old drivers so they can move to proper NAPI if it becomes a problem. - RPS spreads the load across multiple CPUs so it unlikely to become a problem. Making this either optional in general or mandatory for threaded interrupts or PREEMPT_RT will probably not make the maintenance of this code any simpler. I've been looking at veth. In the xdp case it has its own NAPI instance. In the non-xdp it uses backlog. This should be called from ndo_start_xmit and user's write() so BH is off and interrupts are enabled at this point and it should be kind of rate-limited. Couldn't we bypass backlog in this case and deliver the packet directly to the stack? Sebastian ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI. 2023-08-17 13:16 ` Sebastian Andrzej Siewior @ 2023-08-17 15:30 ` Jakub Kicinski 2023-08-18 9:03 ` Sebastian Andrzej Siewior 2023-08-18 14:43 ` Yan Zhai 1 sibling, 1 reply; 26+ messages in thread From: Jakub Kicinski @ 2023-08-17 15:30 UTC (permalink / raw) To: Sebastian Andrzej Siewior Cc: linux-kernel, netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, Yan Zhai, Jesper Dangaard Brouer, Daniel Borkmann, Martin KaFai Lau On Thu, 17 Aug 2023 15:16:12 +0200 Sebastian Andrzej Siewior wrote: > I've been looking at veth. In the xdp case it has its own NAPI instance. > In the non-xdp it uses backlog. This should be called from > ndo_start_xmit and user's write() so BH is off and interrupts are > enabled at this point and it should be kind of rate-limited. Couldn't we > bypass backlog in this case and deliver the packet directly to the > stack? The backlog in veth eats measurable percentage points of RPS of real workloads, and I think number of people looked at getting rid of it. So worthy goal for sure, but may not be a trivial fix. To my knowledge the two main problems are: - we don't want to charge the sending application the processing for both "sides" of the connection and all the switching costs. - we may get an AA deadlock if the packet ends up looping in any way. Or at least that's what I remember the problem being at 8am in the morning :) Adding Daniel and Martin to CC, Paolo would also know this better than me but I think he's AFK for the rest of the week. ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI. 2023-08-17 15:30 ` Jakub Kicinski @ 2023-08-18 9:03 ` Sebastian Andrzej Siewior 0 siblings, 0 replies; 26+ messages in thread From: Sebastian Andrzej Siewior @ 2023-08-18 9:03 UTC (permalink / raw) To: Jakub Kicinski Cc: linux-kernel, netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, Yan Zhai, Jesper Dangaard Brouer, Daniel Borkmann, Martin KaFai Lau On 2023-08-17 08:30:25 [-0700], Jakub Kicinski wrote: > On Thu, 17 Aug 2023 15:16:12 +0200 Sebastian Andrzej Siewior wrote: > > I've been looking at veth. In the xdp case it has its own NAPI instance. > > In the non-xdp it uses backlog. This should be called from > > ndo_start_xmit and user's write() so BH is off and interrupts are > > enabled at this point and it should be kind of rate-limited. Couldn't we > > bypass backlog in this case and deliver the packet directly to the > > stack? > > The backlog in veth eats measurable percentage points of RPS of real > workloads, and I think number of people looked at getting rid of it. > So worthy goal for sure, but may not be a trivial fix. We could separate RPS from backlog but then we still process RPS after backlog so not sure if this gains anything. Letting veth always use its NAPI in this case would probably do that. Not sure if it helps… > To my knowledge the two main problems are: > - we don't want to charge the sending application the processing for > both "sides" of the connection and all the switching costs. The packet is injected by the user and softirq is served once BH gets back to 0. So it is served within the task's context and might be accounted on softirq/ system (might as I think it needs to be observed by the timer interrupt for the accounting). > - we may get an AA deadlock if the packet ends up looping in any way. Right, forgot about that one. > Or at least that's what I remember the problem being at 8am in the > morning :) Adding Daniel and Martin to CC, Paolo would also know this > better than me but I think he's AFK for the rest of the week. Sebastian ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI. 2023-08-17 13:16 ` Sebastian Andrzej Siewior 2023-08-17 15:30 ` Jakub Kicinski @ 2023-08-18 14:43 ` Yan Zhai 2023-08-18 14:57 ` Sebastian Andrzej Siewior 1 sibling, 1 reply; 26+ messages in thread From: Yan Zhai @ 2023-08-18 14:43 UTC (permalink / raw) To: Sebastian Andrzej Siewior Cc: Jakub Kicinski, linux-kernel, netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, Jesper Dangaard Brouer On Thu, Aug 17, 2023 at 8:16 AM Sebastian Andrzej Siewior <bigeasy@linutronix.de> wrote: > > On 2023-08-14 11:24:21 [-0700], Jakub Kicinski wrote: > > On Mon, 14 Aug 2023 11:35:26 +0200 Sebastian Andrzej Siewior wrote: > > > The RPS code and "deferred skb free" both send IPI/ function call > > > to a remote CPU in which a softirq is raised. This leads to a warning on > > > PREEMPT_RT because raising softiqrs from function call led to undesired > > > behaviour in the past. I had duct tape in RT for the "deferred skb free" > > > and Wander Lairson Costa reported the RPS case. > > > > Could you find a less invasive solution? > > backlog is used by veth == most containerized environments. > > This change has a very high risk of regression for a lot of people. > > Looking at the cloudflare ppl here in the thread, I doubt they use > backlog but have proper NAPI so they might not need this. > Cloudflare does have backlog usage. On some veths we have to turn GRO off to cope with multi-layer encapsulation, and there is also no XDP attached on these interfaces, thus the backlog is used. There are also other usage of backlog, tuntap, loopback and bpf-redirect ingress. Frankly speaking, making a NAPI instance "threaded" itself is not a concern. We have threaded NAPI running on some veth for quite a while, and it performs pretty well. The concern, if any, would be the maturity of new code. I am happy to help derisk with some lab tests and dogfooding if generic agreement is reached to proceed with this idea. Yan > There is no threaded NAPI for backlog and RPS. This was suggested as the > mitigation for the highload/ DoS case. Can this become a problem or > - backlog is used only by old drivers so they can move to proper NAPI if > it becomes a problem. > - RPS spreads the load across multiple CPUs so it unlikely to become a > problem. > > Making this either optional in general or mandatory for threaded > interrupts or PREEMPT_RT will probably not make the maintenance of this > code any simpler. > > I've been looking at veth. In the xdp case it has its own NAPI instance. > In the non-xdp it uses backlog. This should be called from > ndo_start_xmit and user's write() so BH is off and interrupts are > enabled at this point and it should be kind of rate-limited. Couldn't we > bypass backlog in this case and deliver the packet directly to the > stack? > > Sebastian -- Yan ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI. 2023-08-18 14:43 ` Yan Zhai @ 2023-08-18 14:57 ` Sebastian Andrzej Siewior 2023-08-18 16:21 ` Jakub Kicinski 2023-08-18 16:56 ` Yan Zhai 0 siblings, 2 replies; 26+ messages in thread From: Sebastian Andrzej Siewior @ 2023-08-18 14:57 UTC (permalink / raw) To: Yan Zhai Cc: Jakub Kicinski, linux-kernel, netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, Jesper Dangaard Brouer On 2023-08-18 09:43:08 [-0500], Yan Zhai wrote: > > Looking at the cloudflare ppl here in the thread, I doubt they use > > backlog but have proper NAPI so they might not need this. > > > Cloudflare does have backlog usage. On some veths we have to turn GRO Oh. Okay. > off to cope with multi-layer encapsulation, and there is also no XDP > attached on these interfaces, thus the backlog is used. There are also > other usage of backlog, tuntap, loopback and bpf-redirect ingress. > Frankly speaking, making a NAPI instance "threaded" itself is not a > concern. We have threaded NAPI running on some veth for quite a while, > and it performs pretty well. The concern, if any, would be the > maturity of new code. I am happy to help derisk with some lab tests > and dogfooding if generic agreement is reached to proceed with this > idea. If you have threaded NAPI for veth then you wouldn't be affected by this code. However, if you _are_ affected by this and you use veth it would be helpful to figure out if you have problems as of net-next and if this helps or makes it worse. As of now Jakub isn't eager to have it and my testing/ convincing is quite limited. If nobody else yells that something like that would be helpful I would simply go and convince PeterZ/tglx to apply 2/2 of this series. > Yan Sebastian ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI. 2023-08-18 14:57 ` Sebastian Andrzej Siewior @ 2023-08-18 16:21 ` Jakub Kicinski 2023-08-18 16:40 ` Eric Dumazet 2023-08-23 6:57 ` Sebastian Andrzej Siewior 2023-08-18 16:56 ` Yan Zhai 1 sibling, 2 replies; 26+ messages in thread From: Jakub Kicinski @ 2023-08-18 16:21 UTC (permalink / raw) To: Sebastian Andrzej Siewior Cc: Yan Zhai, linux-kernel, netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, Jesper Dangaard Brouer On Fri, 18 Aug 2023 16:57:34 +0200 Sebastian Andrzej Siewior wrote: > As of now Jakub isn't eager to have it and my testing/ convincing is > quite limited. If nobody else yells that something like that would be > helpful I would simply go and convince PeterZ/tglx to apply 2/2 of this > series. As tempting as code removal would be, we can still try to explore the option of letting backlog processing run in threads - as an opt-in on normal kernels and force it on RT? But it would be good to wait ~2 weeks before moving forward, if you don't mind, various core folks keep taking vacations.. ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI. 2023-08-18 16:21 ` Jakub Kicinski @ 2023-08-18 16:40 ` Eric Dumazet 2023-08-23 6:57 ` Sebastian Andrzej Siewior 1 sibling, 0 replies; 26+ messages in thread From: Eric Dumazet @ 2023-08-18 16:40 UTC (permalink / raw) To: Jakub Kicinski Cc: Sebastian Andrzej Siewior, Yan Zhai, linux-kernel, netdev, David S. Miller, Paolo Abeni, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, Jesper Dangaard Brouer On Fri, Aug 18, 2023 at 6:21 PM Jakub Kicinski <kuba@kernel.org> wrote: > > On Fri, 18 Aug 2023 16:57:34 +0200 Sebastian Andrzej Siewior wrote: > > As of now Jakub isn't eager to have it and my testing/ convincing is > > quite limited. If nobody else yells that something like that would be > > helpful I would simply go and convince PeterZ/tglx to apply 2/2 of this > > series. > > As tempting as code removal would be, we can still try to explore the > option of letting backlog processing run in threads - as an opt-in on > normal kernels and force it on RT? +1 Patch 1/2 as presented is really scary, we would need to test it extensively on various platforms. > > But it would be good to wait ~2 weeks before moving forward, if you > don't mind, various core folks keep taking vacations.. ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI. 2023-08-18 16:21 ` Jakub Kicinski 2023-08-18 16:40 ` Eric Dumazet @ 2023-08-23 6:57 ` Sebastian Andrzej Siewior 1 sibling, 0 replies; 26+ messages in thread From: Sebastian Andrzej Siewior @ 2023-08-23 6:57 UTC (permalink / raw) To: Jakub Kicinski Cc: Yan Zhai, linux-kernel, netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, Jesper Dangaard Brouer On 2023-08-18 09:21:11 [-0700], Jakub Kicinski wrote: > As tempting as code removal would be, we can still try to explore the > option of letting backlog processing run in threads - as an opt-in on > normal kernels and force it on RT? > > But it would be good to wait ~2 weeks before moving forward, if you > don't mind, various core folks keep taking vacations.. No problem. Let me repost it then in two weeks as optional and not mandatory. Sebastian ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI. 2023-08-18 14:57 ` Sebastian Andrzej Siewior 2023-08-18 16:21 ` Jakub Kicinski @ 2023-08-18 16:56 ` Yan Zhai 1 sibling, 0 replies; 26+ messages in thread From: Yan Zhai @ 2023-08-18 16:56 UTC (permalink / raw) To: Sebastian Andrzej Siewior Cc: Jakub Kicinski, linux-kernel, netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Peter Zijlstra, Thomas Gleixner, Wander Lairson Costa, Jesper Dangaard Brouer On Fri, Aug 18, 2023 at 9:57 AM Sebastian Andrzej Siewior <bigeasy@linutronix.de> wrote: > > On 2023-08-18 09:43:08 [-0500], Yan Zhai wrote: > > > Looking at the cloudflare ppl here in the thread, I doubt they use > > > backlog but have proper NAPI so they might not need this. > > > > > Cloudflare does have backlog usage. On some veths we have to turn GRO > > Oh. Okay. > > > off to cope with multi-layer encapsulation, and there is also no XDP > > attached on these interfaces, thus the backlog is used. There are also > > other usage of backlog, tuntap, loopback and bpf-redirect ingress. > > Frankly speaking, making a NAPI instance "threaded" itself is not a > > concern. We have threaded NAPI running on some veth for quite a while, > > and it performs pretty well. The concern, if any, would be the > > maturity of new code. I am happy to help derisk with some lab tests > > and dogfooding if generic agreement is reached to proceed with this > > idea. > > If you have threaded NAPI for veth then you wouldn't be affected by this > code. However, if you _are_ affected by this and you use veth it would > be helpful to figure out if you have problems as of net-next and if this > helps or makes it worse. > yes we are still impacted on non-NAPI veths and other scenarios. But net-next sounds good, still plenty of time to evaluate if it has any negative impact. Yan > As of now Jakub isn't eager to have it and my testing/ convincing is > quite limited. If nobody else yells that something like that would be > helpful I would simply go and convince PeterZ/tglx to apply 2/2 of this > series. > > > Yan > > Sebastian ^ permalink raw reply [flat|nested] 26+ messages in thread
end of thread, other threads:[~2023-09-22 9:38 UTC | newest] Thread overview: 26+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-08-14 9:35 [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI Sebastian Andrzej Siewior 2023-08-14 9:35 ` [RFC PATCH net-next 1/2] " Sebastian Andrzej Siewior 2023-08-21 8:32 ` kernel test robot 2023-08-23 13:35 ` Paolo Abeni 2023-09-20 15:57 ` Sebastian Andrzej Siewior 2023-09-21 10:41 ` Ferenc Fejes 2023-09-22 7:26 ` Sebastian Andrzej Siewior 2023-09-22 9:38 ` Paolo Abeni 2023-08-14 9:35 ` [RFC PATCH 2/2] softirq: Drop the warning from do_softirq_post_smp_call_flush() Sebastian Andrzej Siewior 2023-08-15 12:08 ` Jesper Dangaard Brouer 2023-08-15 22:31 ` Yan Zhai 2023-08-16 14:48 ` Jesper Dangaard Brouer 2023-08-16 15:15 ` Yan Zhai 2023-08-16 21:02 ` Jesper Dangaard Brouer 2023-08-18 15:49 ` Yan Zhai 2023-08-16 15:22 ` Sebastian Andrzej Siewior 2023-08-14 18:24 ` [RFC PATCH net-next 0/2] net: Use SMP threads for backlog NAPI Jakub Kicinski 2023-08-17 13:16 ` Sebastian Andrzej Siewior 2023-08-17 15:30 ` Jakub Kicinski 2023-08-18 9:03 ` Sebastian Andrzej Siewior 2023-08-18 14:43 ` Yan Zhai 2023-08-18 14:57 ` Sebastian Andrzej Siewior 2023-08-18 16:21 ` Jakub Kicinski 2023-08-18 16:40 ` Eric Dumazet 2023-08-23 6:57 ` Sebastian Andrzej Siewior 2023-08-18 16:56 ` Yan Zhai
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).