-
Notifications
You must be signed in to change notification settings - Fork 24
Performance Analyses for DPDK Applications Using the Ethdev Library #83
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Performance Analyses for DPDK Applications Using the Ethdev Library #83
Conversation
MatthewKhouzam
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
minor changes.
...c/org/eclipse/tracecompass/incubator/internal/dpdk/core/ethdev/rate/analysis/Attributes.java
Outdated
Show resolved
Hide resolved
| * | ||
| * @author Adel Belkhiri | ||
| */ | ||
| @SuppressWarnings({ "nls" }) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@NonNullByDefault
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
| try { | ||
| StateSystemBuilderUtils.incrementAttributeLong(ssb, ts, queueQuark, nbPkts); | ||
| } catch (StateValueTypeException e) { | ||
| Activator.getInstance().logWarning(getClass().getName() + ": problem accessing the state of a NIC queue (Quark =" + String.valueOf(queueQuark) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I really like this... can you put it in the activator to have it everywhere?
...e/tracecompass/incubator/internal/dpdk/core/ethdev/rate/analysis/DpdkEthdevEventHandler.java
Outdated
Show resolved
Hide resolved
...e/tracecompass/incubator/internal/dpdk/core/ethdev/rate/analysis/DpdkEthdevEventHandler.java
Outdated
Show resolved
Hide resolved
...se/tracecompass/incubator/internal/dpdk/core/ethdev/rate/analysis/DpdkEthdevEventLayout.java
Outdated
Show resolved
Hide resolved
...se/tracecompass/incubator/internal/dpdk/core/ethdev/rate/analysis/DpdkEthdevEventLayout.java
Outdated
Show resolved
Hide resolved
...racecompass/incubator/internal/dpdk/core/ethdev/rate/analysis/DpdkEtherRateDataProvider.java
Outdated
Show resolved
Hide resolved
...rg/eclipse/tracecompass/incubator/internal/dpdk/core/ethdev/rate/analysis/IODataPalette.java
Outdated
Show resolved
Hide resolved
arfio
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think all the analyses look very interesting but there is a lot of duplicated that can easily be reused throughout. In particular the throughput and rate analysis that are very similar, it could be merged into one analysis with multiple views.
...ss/incubator/internal/dpdk/core/ethdev/poll/distribution/analysis/DpdkEthdevEventLayout.java
Outdated
Show resolved
Hide resolved
...mpass/incubator/internal/dpdk/core/ethdev/poll/distribution/analysis/TmfEtherPollAspect.java
Outdated
Show resolved
Hide resolved
...cecompass/incubator/internal/dpdk/core/ethdev/poll/stats/analysis/DpdkEthdevEventLayout.java
Outdated
Show resolved
Hide resolved
...e/tracecompass/incubator/internal/dpdk/core/ethdev/rate/analysis/DpdkEthdevEventHandler.java
Outdated
Show resolved
Hide resolved
...ecompass/incubator/internal/dpdk/core/ethdev/spin/analysis/DpdkEthdevSpinAnalysisModule.java
Outdated
Show resolved
Hide resolved
...racecompass/incubator/internal/dpdk/core/ethdev/spin/analysis/DpdkEtherSpinDataProvider.java
Show resolved
Hide resolved
0b9fd6f to
d2f9125
Compare
MatthewKhouzam
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Small changes needed
.../internal/dpdk/core/ethdev/throughput/analysis/AbstractDpdkEthdevThroughputDataProvider.java
Outdated
Show resolved
Hide resolved
.../internal/dpdk/core/ethdev/throughput/analysis/AbstractDpdkEthdevThroughputDataProvider.java
Outdated
Show resolved
Hide resolved
...bator/internal/dpdk/core/ethdev/throughput/analysis/DpdkEthdevThroughputBpsDataProvider.java
Outdated
Show resolved
Hide resolved
...bator/internal/dpdk/core/ethdev/throughput/analysis/DpdkEthdevThroughputPpsDataProvider.java
Outdated
Show resolved
Hide resolved
...g/eclipse/tracecompass/incubator/internal/dpdk/core/ethdev/throughput/analysis/Messages.java
Show resolved
Hide resolved
.../src/org/eclipse/tracecompass/incubator/internal/dpdk/ui/ethdev/throughput/bps/Messages.java
Show resolved
Hide resolved
...tracecompass/incubator/internal/dpdk/ui/ethdev/throughput/bps/NicQueueThroughputBpsView.java
Outdated
Show resolved
Hide resolved
.../src/org/eclipse/tracecompass/incubator/internal/dpdk/ui/ethdev/throughput/pps/Messages.java
Show resolved
Hide resolved
d2f9125 to
12cfb9a
Compare
12cfb9a to
7a8e39d
Compare
arfio
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A lot of small comments, once they are fixed, I will be happy to approve !
analyses/org.eclipse.tracecompass.incubator.dpdk.core/META-INF/MANIFEST.MF
Outdated
Show resolved
Hide resolved
...bator/internal/dpdk/core/ethdev/poll/distribution/analysis/DpdkPollDistributionAnalysis.java
Outdated
Show resolved
Hide resolved
tracetypes/org.eclipse.tracecompass.incubator.dpdk.core/META-INF/MANIFEST.MF
Outdated
Show resolved
Hide resolved
tracetypes/org.eclipse.tracecompass.incubator.dpdk.core/META-INF/MANIFEST.MF
Outdated
Show resolved
Hide resolved
...rc/org/eclipse/tracecompass/incubator/internal/dpdk/core/analysis/DpdkEthdevEventLayout.java
Show resolved
Hide resolved
...bator/internal/dpdk/core/ethdev/throughput/analysis/DpdkEthdevThroughputPpsDataProvider.java
Outdated
Show resolved
Hide resolved
...bator/internal/dpdk/core/ethdev/throughput/analysis/DpdkEthdevThroughputPpsDataProvider.java
Outdated
Show resolved
Hide resolved
...rg/eclipse/tracecompass/incubator/internal/dpdk/ui/ethdev/spin/ThreadSpinStatisticsView.java
Outdated
Show resolved
Hide resolved
...tracecompass/incubator/internal/dpdk/ui/ethdev/throughput/bps/NicQueueThroughputBpsView.java
Outdated
Show resolved
Hide resolved
...tracecompass/incubator/internal/dpdk/ui/ethdev/throughput/pps/NicQueueThroughputPpsView.java
Outdated
Show resolved
Hide resolved
451df36 to
d21e82b
Compare
|
I just need a small trace to test the view and the remaining comments to be fixed. |
a36ba23 to
0b0f9b6
Compare
Introduces packet throughput analysis for DPDK applications using the ethdev library. The analysis calculates packet throughput in both bits per second (bps) and packets per second (pps) for transmitted and received Ethernet traffic on a per-queue basis. Note that the calculation of throughput in bps requires the existence of custom profiling events in the trace Signed-off-by: Adel Belkhiri <[email protected]>
PMD threads continuously poll NIC queues, leading to constant 100% CPU usage. This analysis provides a rough estimation of how busy PMD threads are with actual work, by comparing the times they successfully retrieve packets from the NIC queue versus the times they are merely spinning without processing any packets. Signed-off-by: Adel Belkhiri <[email protected]>
Introduce packet distribution analysis for PMD threads based on ethdev library. This analysis computes the distribution of packets retrieved in a single rte_eth_rx_burst() call, on a per-queue basis. Signed-off-by: Adel Belkhiri <[email protected]>
Introduce packet distribution statistics analysis for PMD threads in the ethdev library. This analysis calculates various statistics related to the distribution of packets retrieved in a single rte_eth_rx_burst() call, on a per-thread and per-queue basis. The computed statistics include the minimum, maximum, average number of packets retrieved, as well as the standard deviation. Signed-off-by: Adel Belkhiri <[email protected]>
0b0f9b6 to
422de92
Compare
For anyone who wants to try the analyses, here is a link to download a test trace: https://drive.google.com/file/d/1w9hZUSRihlgyPEBdYDWMZZ10wlYpByUH/view?usp=sharing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perfect for me! Thank you!
Matthew may still have some comments.
MatthewKhouzam
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My issues were addressed. Thank you for the great contribution!
8917c4c
into
eclipse-tracecompass-incubator:master
This PR introduces 5 performance analyses for DPDK applications implemented using the ethdev library. These analyses provide insights into packet distribution, rate, throughput, and PMD thread busyness, thus helping monitor and optimize application performance.
New Features:
Packet Rate Analysis:
Computes the packet rate (in pps) for transmitted and received Ethernet traffic on a per-queue basis. It helps monitor the efficiency of traffic processing by calculating the number of packets received or transmitted in a given period.
Packet Throughput Analysis:
Analyzes packet throughput (in bps) for transmitted and received Ethernet traffic. This is done on a per-queue basis to evaluate bandwidth usage.
Busyness Analysis for PMD Threads:
Estimates how busy PMD threads are by comparing the times they successfully retrieve packets from the NIC queue versus when they are merely spinning without processing any packets. This can be used to evaluate the efficiency of polling operations.
Packet Distribution Analysis:
Analyzes the distribution of packets retrieved in a single rte_eth_rx_burst() call, on a per-thread and per-queue basis. This analysis provides insights into packet retrieval patterns, including how evenly or unevenly the workload is distributed across queues.
Packet Distribution Statistics:
Computes various statistics related to packet retrieval distribution, including the minimum, maximum, average, and standard deviation for packets retrieved in a single rte_eth_rx_burst() call, which offers more granular visibility into traffic distribution patterns.