In dispatch_node, before we call node->function any accumulated clock cycles 
are counted toward idle, after the node->function returns if ( 
(VLIB_NODE_TYPE_PRE_INPUT || VLIB_NODE_TYPE_INPUT) && number of packets 
processed == 0) then we count it as idle, else we count it as busy.

 

 

From: Ramkumar B <ramukmar1...@gmail.com> 
Sent: Wednesday, December 16, 2020 10:27 AM
To: bjerem...@gmail.com
Cc: vpp-dev@lists.fd.io
Subject: Re: [vpp-dev] Core Load Calculation

 

The processing of the rx queue is counted toward IDLE

Please explain what kind of processing. We are not doing any such rx processing 
separately. For us, the ring_dequeue_burst's cycles is negligible compared to 
processing cycles.

 

On Wed, Dec 16, 2020 at 8:54 PM <bjerem...@gmail.com 
<mailto:bjerem...@gmail.com> > wrote:

Nope… the math works out… nothing goes to 0… we are incrementing both IDLE and 
BUSY. The processing of the rx queue is counted toward IDLE… In a completely 
idle system, the cpu usage falls to 0… as traffic ramps up it will go further 
positive based on pps, and as it goes to idle again it will go down to 0…

 

 

From: Damjan Marion <dmar...@me.com <mailto:dmar...@me.com> > 
Sent: Wednesday, December 16, 2020 3:00 AM
To: bjerem...@gmail.com <mailto:bjerem...@gmail.com> 
Cc: Nick Zavaritsky <nick.zavarit...@emnify.com 
<mailto:nick.zavarit...@emnify.com> >; ramukmar1...@gmail.com 
<mailto:ramukmar1...@gmail.com> ; vpp-dev@lists.fd.io 
<mailto:vpp-dev@lists.fd.io> 
Subject: Re: [vpp-dev] Core Load Calculation

 

 

 

On 16.12.2020., at 05:45, bjerem...@gmail.com <mailto:bjerem...@gmail.com>  
wrote:

 

What we did was to count clock cycles (timestamps) spent processing the nodes, 
call this busy, and count the clock cycles spent elsewhere, call this idle. And 
then simply output (busy/(busy + idle). We did this per thread and stored the 
calculations globally. We then outputted the calculations on the ‘vppctl show 
thread’ cli.

 

This doesnt make lot of sense. Each input node is spending cycles to process rx 
queue, and out of that processing there may be zero or non-zero packets. So in 
completelly idle system according to your math result will be far away from 0.

 

 

 

This created a nice cpu usage metric that seems pretty accurate for io and 
worker threads…

 

What do you mean by io threads?

 

We compared this to something like htop for the worker threads and its within 
~1%, the io cores seem the same as we can see the usage go to about 80-90% when 
we start dropping packets. We are able to calculate the approx. PPS for a given 
system configuration.

 

It actually wasn’t a lot of effort. I think only three files were touched. 1. A 
new header file o create the global data structure to hold the clock cycle 
counts and associated macros to init and update the structures. 2. Vlib/main.c 
to instrument the main loop and collect the busy/idle clock cycles 3. Vlib 
threads_cli.c as show threads fn was used to output the cpu usage per thread.

 

From: vpp-dev@lists.fd.io <mailto:vpp-dev@lists.fd.io>  <vpp-dev@lists.fd.io 
<mailto:vpp-dev@lists.fd.io> > On Behalf Of Nick Zavaritsky
Sent: Tuesday, December 15, 2020 1:38 PM
To: ramukmar1...@gmail.com <mailto:ramukmar1...@gmail.com> 
Cc: vpp-dev@lists.fd.io <mailto:vpp-dev@lists.fd.io> 
Subject: Re: [vpp-dev] Core Load Calculation

 

We’ve been using flamegraphs quite successfully to see how much leeway is there.

 

Ex: 
https://gist.githack.com/mejedi/d5d094df63faba66d413a677fcef26e3/raw/95294d36c4b180ba6741d793bf345041b00af48e/g.svg





On 15 Dec 2020, at 19:53, Ramkumar B via lists.fd.io <http://lists.fd.io/>  
<ramukmar1998=gmail....@lists.fd.io <mailto:ramukmar1998=gmail....@lists.fd.io> 
> wrote:
 

Hello All,

 

I'm trying to calculate VPP core's load. I completely understand about the 
polling cores' 100% CPU usage. My requirement is different where I need to 
calculate the core's load based on how much more PPS it can handle before a 
packet drop occurs in the queue.

 

The vec/call is a good indicator of load, but it does not increase linearly 
with PPS. This is because of the VPP's self balancing behaviour where the cost 
per packet reduces as load increases. It would be a great help if anyone can 
point out factors to calculate load.

 

Thanks and regards, 

Ramkumar Balu








 

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#18372): https://lists.fd.io/g/vpp-dev/message/18372
Mute This Topic: https://lists.fd.io/mt/78980301/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to