Recording large high speed data sets in ROS
I would like to record Ethernet traffic on a system carrying ROS messages at about 1.5 Gigabits per second up to 30Tbytes. (Band width 1.5 Gigabits/second Total volume 30 Tbytes) The data rate seems too high to capture by using Rosbag and subscribing to all the topics in real time. Which topics will be interesting is not known ahead of time.
The typical sustained disk write speed on a high end laptop is only 520 MBps. You can use SSD drives for faster speeds but they top out at about 2 Tera bytes. Specialized hardware like the Galleon XSR-10g (https://www.galleonec.com/project/xsr...) will allow us to capture the ethernet traffic but decoding it becomes a challenge.
Using ROSbag and subscribing to topics also increase the amount of Ethernet traffic unless the Ethernet traffic is routed using UDP.
I am curious how other people has managed large / high speed data logging on ROS
Not an answer, but an observation:
I wasn't around at the time, but I don't believe these sort of nrs were considered when
rosbag
was designed and implemented. It's not surprising that it can't keep up (although at those traffic volumes and bandwidths I would say special tuning of OS storage layers and network stack would probably also be needed).My suggestion would be to look into some of the alternative "ros message recording" implementations that have been created. There are some that use a nosql db as a backend.
rosbag
in ROS 2 uses a sql db by default (sqlite), but has pluggable backends.And to clarify: bandwidth is 1.5 gbit/s with total volume 30 TB?
Can you say something about the type of messages that you're recording?