forked from Dan4ick/Lidar_Muxa
77 lines
3.6 KiB
XML
77 lines
3.6 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
||
<!-- Профиль Fast DDS для крупных сообщений.
|
||
|
||
Кадр Pandar128 весит 8-24 МБ, а умолчания Fast DDS рассчитаны на сотни
|
||
килобайт: сегмент разделяемой памяти 512 КБ, сокетные буферы ОС 208 КБ.
|
||
Кадр в них не помещается, транспорт разваливает его на десятки тысяч
|
||
фрагментов, и на 10 Гц часть теряется ещё до подписчика.
|
||
|
||
Здесь сегмент поднят до 128 МБ (пять-шесть кадров в полёте), буферы
|
||
сокетов - до 64 МБ, очередь портов увеличена. Разделяемая память идёт
|
||
первой: внутри одной машины кадр передаётся без копирования через сокет.
|
||
|
||
Сегмент заводит КАЖДЫЙ участник DDS, а их в сеансе обычно три: нода,
|
||
проигрыватель бэга и наблюдатель. Больше 128 МБ брать нельзя - при
|
||
--shm-size=1g третий участник уже не поместится, и Fast DDS откатится
|
||
на UDP, потеряв половину кадров.
|
||
|
||
Подключается переменной FASTRTPS_DEFAULT_PROFILES_FILE (см. entrypoint.sh).
|
||
Контейнеру нужен --shm-size не меньше сегмента, иначе /dev/shm в 64 МБ
|
||
обрежет его молча. -->
|
||
<dds xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles">
|
||
<profiles>
|
||
|
||
<transport_descriptors>
|
||
<transport_descriptor>
|
||
<transport_id>shm_large</transport_id>
|
||
<type>SHM</type>
|
||
<segment_size>134217728</segment_size>
|
||
<maxMessageSize>4194304</maxMessageSize>
|
||
<port_queue_capacity>8192</port_queue_capacity>
|
||
<healthy_check_timeout_ms>2000</healthy_check_timeout_ms>
|
||
</transport_descriptor>
|
||
|
||
<transport_descriptor>
|
||
<transport_id>udp_large</transport_id>
|
||
<type>UDPv4</type>
|
||
<sendBufferSize>67108864</sendBufferSize>
|
||
<receiveBufferSize>67108864</receiveBufferSize>
|
||
<maxMessageSize>65000</maxMessageSize>
|
||
</transport_descriptor>
|
||
</transport_descriptors>
|
||
|
||
<participant profile_name="flyguard_large_data" is_default_profile="true">
|
||
<rtps>
|
||
<userTransports>
|
||
<transport_id>shm_large</transport_id>
|
||
<transport_id>udp_large</transport_id>
|
||
</userTransports>
|
||
<useBuiltinTransports>false</useBuiltinTransports>
|
||
</rtps>
|
||
</participant>
|
||
|
||
<!-- Асинхронная запись обязательна: синхронная блокирует поток публикации
|
||
на время отправки всех фрагментов кадра. -->
|
||
<data_writer profile_name="flyguard_writer" is_default_profile="true">
|
||
<qos>
|
||
<publishMode>
|
||
<kind>ASYNCHRONOUS</kind>
|
||
</publishMode>
|
||
<reliability>
|
||
<kind>RELIABLE</kind>
|
||
</reliability>
|
||
</qos>
|
||
<historyMemoryPolicy>PREALLOCATED_WITH_REALLOC</historyMemoryPolicy>
|
||
</data_writer>
|
||
|
||
<data_reader profile_name="flyguard_reader" is_default_profile="true">
|
||
<qos>
|
||
<reliability>
|
||
<kind>RELIABLE</kind>
|
||
</reliability>
|
||
</qos>
|
||
<historyMemoryPolicy>PREALLOCATED_WITH_REALLOC</historyMemoryPolicy>
|
||
</data_reader>
|
||
|
||
</profiles>
|
||
</dds>
|