Comments (6)
Capture without loss should be sustained until you reach approx. 75-90% of disk capacity, at that point it usually starts to degrade (depends on disk format, hardware and RAID configuration). If you're seeing losses after a second, the most likely issue is that your disks are not capable of actually ingesting at that speed, and it only works the first second without lossess because of caches.
Packet loss is usually more dependent on the hardware and configuration than the code itself. With the appropriate hardware we got capture at 40G without losses. Usually, packet loss is either due to a bottleneck either in the writing or the reception.
- Check that the disks are capable of writing at that speed. Check hardware specs, and run some benchmarks (a quick way to check is by using dd, check here for examples) to ensure disks are capable of writing at that rate.
- Make sure that the application can receive the traffic by itself. You can disable capture to disk with the
APP_IO_RX_DROP_ALL_PACKETS
compile-time define and check loss rate.
There are multiple ways to fix the loss, depending on the cause:
- Any of them: ensure proper NUMA core allocation. The best allocation scheme usually is to have network card, DPDK cores and disks in the same core. However, performance in NUMA systems isn't always predictable so you can try with different combinations.
- Disks: Check that the file format is appropriate for high speed capture (XFS has worked well for us).
- Disks: If they exist, RAID configurations should be tuned for high speed writes (for example, high block sizes, RAID0 layouts).
- CPU: Make sure that the core is not being throttled. Check that the scaling governor for the cores you're using is set to performance.
- CPU: Ensure core isolation. Configure
isolcpus
in the boot parameters to tell the kernel to not schedule any process in the cores you want to use for capture. If hyperthreading is active, make sure that both virtual cores of each core are isolated and not just the one you're using.
I hope this helps you find the issue that's causing the packet loss.
from dpdk2disk.
Hello,
No, this project has been deprecated for some time and hasn't seen any new development. However, if you're interested in it it shouldn't be too difficult to update to newer DPDK versions, you can give it a try.
from dpdk2disk.
Thanks. I can run it with DPDK 22.11 now. I had some more questions - what duration were you able to sustain writing at/above 25Gbps? And what was the packet loss (if any)? I am having trouble writing packets reliably after about a second at 25Gbps. I can go into greater detail if this is something you have any interest in helping with (if not, no problem).
from dpdk2disk.
Thank you for the detailed suggestions! Everything has been running smoothly (without any drops) at 25Gbps.
I am trying to write to different files, given certain criteria in the received data itself, but iterating through the buffer is slow. Is the code supposed to support multiple cores for writing? Should listing more cores for "n2dW" do anything?
Edit: What I am doing now, that seems to work on an initial test is simply creating multiple diskBuffers then eventually writing each one.
from dpdk2disk.
I don't think we'll have time to maintain this repo anymore.
Feel free to create as much PRs as you want, we can review & merge them, but don't expect any proactive dev.
BTW, your idea sound cool
from dpdk2disk.
No problem. Thanks for all the work y'all have put in and the help!
from dpdk2disk.
Related Issues (2)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dpdk2disk.