Skip to content

Commit 5493b1b

Browse files
authored
Merge pull request #101 from jean-roland/ft_zpperf_post
Fix zenoh-pico performance post typos
2 parents d17b80a + d8e7072 commit 5493b1b

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

content/blog/2025-04-09-Zenoh-Pico-Performance.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ draft: false
99

1010
# Improving Zenoh-Pico performances
1111

12-
Last year, after the long awaited release of Zenoh 1.0 which included a unified C API with Zenoh-C and Zenoh-Pico, we decided to dedicate some time to measure and improve the performances & efficiency of Zenoh-Pico. These modifications were released with Zenoh 1.1 earlier this year and we're presenting you the results with this blog post.
12+
Last year, after the long awaited release of Zenoh 1.0 which included a unified C API with Zenoh-C and Zenoh-Pico, we decided to dedicate some time to measure and improve the performance & efficiency of Zenoh-Pico. These modifications were released with Zenoh 1.1 earlier this year and we're presenting you the results with this blog post.
1313

1414
## What is Zenoh-Pico?
1515

@@ -19,7 +19,7 @@ Zenoh-Pico is the lightweight, native C implementation of the[ Eclipse Zenoh](ht
1919

2020
To measure performance, we have a standardized throughput test and a latency test which we run on a standardized machine (Intel Xeon E3-1275 @3.6GHzn 32GB DDR4, Ubuntu 22.04). For embedded measurements, we ran those tests on an esp32-wroom32 dev board.
2121

22-
These tests produce a thousand measurements or so per payload size that we use to calculate the median value to then get the following graphs (not that the y axis is log scale):
22+
These tests produce a thousand measurements or so per payload size that we use to calculate the median value to then get the following graphs (note that the y axis is log scale):
2323

2424
### PC throughput client, tcp:
2525

@@ -28,7 +28,7 @@ These tests produce a thousand measurements or so per payload size that we use t
2828
class="figure-inline"
2929
alt="Client throughput" >}}
3030

31-
We see a massive (>50x) improvement in throughput for payloads over 32kiB, this is because packets of these sizes are fragmented on the network and we had an issue where their data was serialized byte per byte.
31+
We see a massive (up to 100x) improvement in throughput for payloads over 32kiB, this is because packets of these sizes are fragmented on the network and we had an issue where their data was serialized byte per byte.
3232

3333
We also see a >10x improvement in throughput for smaller payloads when using manual batching (more info below) introduced in 1.1 as well.
3434

@@ -41,7 +41,7 @@ Other than that there are no significant changes because client performance is l
4141
class="figure-inline"
4242
alt="Peer throughput" >}}
4343

44-
Peer to peer being not limited by router performance, we observe even bigger improvements on smaller payloads with batching (>20x) and on fragmented packets (>100x), which starts at 2kiB on UDP.
44+
Peer to peer being not limited by router performance, we observe a bigger improvement on smaller payloads with batching (>20x), but a smaller one (>10x) for fragmented packets (>2kiB) because of UDP's smaller packet size.
4545

4646
In addition, we observe a 60% throughput increase for the other payload sizes, that results from the many improvements we implemented and that we detail below.
4747

@@ -103,9 +103,9 @@ We do observe a big impact on latency when trying to send fragmented packets whi
103103

104104
## How performance was improved
105105

106-
To improve Zenoh-Pico performance, we traced it on PC using (samply)[https://github.com/mstange/samply] and the Firefox debugger to visualize the traces. That allowed us to detect choke points and part of the code that could be improved.
106+
To improve Zenoh-Pico performance, we traced it on PC using [samply](https://github.com/mstange/samply) and the Firefox debugger to visualize the traces. That allowed us to detect choke points and part of the code that could be improved.
107107

108-
As stated earlier, the changes that had the biggest by far is solving the byte by byte copy issue for fragmented packets and the introduction of the manual batching mechanism.
108+
As stated earlier, the most impactful changes were solving the byte by byte copy issue for fragmented packets and the introduction of the manual batching mechanism.
109109

110110
Beside that, we also streamlined a lot how the stack created, used and destroyed data to avoid redundant operations or needless data copies. We also rationalized heap memory usage and fragmentation although these changes were not quantified.
111111

0 commit comments

Comments
 (0)