* [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
* [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 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 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 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 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 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 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 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 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
* 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 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 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
end of thread, other threads:[~2023-09-22 9:39 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).