> On May 8, 2020, at 12:17 PM, Ananyev, Konstantin > <[email protected]> wrote: > >> Hi Konstantin, >> >>> On May 7, 2020, at 4:50 AM, Ananyev, Konstantin >>> <[email protected]> wrote: >>> >>> >>> >>>> -----Original Message----- >>>> From: dev <[email protected]> On Behalf Of Dharmik Thakkar >>>> Sent: Wednesday, May 6, 2020 10:59 PM >>>> To: Lu, Wenzhuo <[email protected]>; Wu, Jingjing >>>> <[email protected]>; Iremonger, Bernard <[email protected]> >>>> Cc: [email protected]; [email protected]; Dharmik Thakkar <[email protected]> >>>> Subject: [dpdk-dev] [PATCH 2/5] app/testpmd: print fractional part in CPU >>>> cycles >>>> >>>> Change printing of CPU cycles/packet to include fractional part for >>>> accurateness. >>>> >>>> Example: >>>> >>>> Without patch: >>>> CPU cycles/packet=14 >>>> (total cycles=4899533541 / total RX packets=343031966) >>>> >>>> With patch: >>>> CPU cycles/packet=14.28 >>>> (total cycles=4899533541 / total RX packets=343031966) >>>> >>>> Signed-off-by: Dharmik Thakkar <[email protected]> >>>> Reviewed-by: Honnappa Nagarahalli <[email protected]> >>>> Reviewed-by: Phil Yang <[email protected]> >>>> --- >>>> app/test-pmd/testpmd.c | 4 ++-- >>>> 1 file changed, 2 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c >>>> index 9a8cbbd6fc7c..9444a730a153 100644 >>>> --- a/app/test-pmd/testpmd.c >>>> +++ b/app/test-pmd/testpmd.c >>>> @@ -1955,9 +1955,9 @@ fwd_stats_display(void) >>>> #ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES >>>> #define CYC_PER_MHZ 1E6 >>>> if (total_recv > 0) >>>> - printf("\n CPU cycles/packet=%u (total cycles=" >>>> + printf("\n CPU cycles/packet=%.2f (total cycles=" >>>> "%"PRIu64" / total RX packets=%"PRIu64") at %lu MHz >>>> Clock\n", >>>> - (unsigned int)(fwd_cycles / total_recv), >>>> + (double)(fwd_cycles / (double)total_recv), >>> >>> Probably safer long double - to avoid overflow. >> >> Is it possible for a ‘double' to be less than 8 bytes? > > That was my initial thought - that on some 32 bit systems it could be 4B. > Though it seems I was wrong, so feel free to ignore. > BTW, what for double conversion, why not just: > double)(fwd_cycles /total_recv > ?
Without (double) total recv, I will always get the fractional part as .00. For the above example, with (double)(fwd_cycles / total_recv), I see 14.00 instead of 14.28 > > > >> >>> >>>> fwd_cycles, total_recv, (uint64_t)(rte_get_tsc_hz() / >>>> CYC_PER_MHZ)); >>>> #endif >>>> } >>>> -- >>>> 2.20.1

