FairMQ/fairmq/devices
Dennis Klein f278e7e312 feat: Add new tunable --shm-metadata-msg-size
The shm metadata msg will be right-padded to the given size. This
tunable may be used to saturate the kernel msg buffers more quickly with
the effect that the ZeroMQ message queue size - on which the FairMQ
shmem transport relies upon - behaves more accurately for very small
queue sizes.

This introduces a change for the meta msg format in the multipart case:
old: | MetaHeader 1 | ... | MetaHeader n |
new: | n | MetaHeader 1 | ... | MetaHeader n | padded to fMetadataMsgSize |
where `n` is a `size_t` and contains the number of following meta headers.
Previously, this number was infered from the msg buffer size itself which is
no longer possible due to the potential padding.

Implements #432
2023-06-13 21:24:40 +02:00
..
BenchmarkSampler.h Don't use to-be-deprecated names 2022-01-24 06:40:24 +01:00
Merger.h feat: Deprecate Device::fChannels in preparation for #427 2023-03-01 15:39:38 +01:00
Multiplier.h fix: [-Wdeprecated-declarations] 2023-02-24 13:59:27 +01:00
Proxy.h Don't use to-be-deprecated names 2022-01-24 06:40:24 +01:00
README.md builtin devices: Reorganize 2021-03-26 10:06:10 +01:00
runBenchmarkSampler.cxx runDevice: remove const from getDevice parameter 2021-05-13 23:00:35 +02:00
runMerger.cxx runDevice: remove const from getDevice parameter 2021-05-13 23:00:35 +02:00
runMultiplier.cxx runDevice: remove const from getDevice parameter 2021-05-13 23:00:35 +02:00
runProxy.cxx runDevice: remove const from getDevice parameter 2021-05-13 23:00:35 +02:00
runSink.cxx runDevice: remove const from getDevice parameter 2021-05-13 23:00:35 +02:00
runSplitter.cxx runDevice: remove const from getDevice parameter 2021-05-13 23:00:35 +02:00
Sink.h Don't use to-be-deprecated names 2022-01-24 06:40:24 +01:00
Splitter.h Don't use to-be-deprecated names 2022-01-24 06:40:24 +01:00
startMQBenchmark.sh.in feat: Add new tunable --shm-metadata-msg-size 2023-06-13 21:24:40 +02:00

Generic Devices

With FairMQ several generic devices are provided:

  • BenchmarkSampler: generates random data of configurable size and at configurable rate and sends it out on an output channel.
  • Sink: receives messages on the input channel and simply discards them.
  • Merger: receives data from multiple input channels and forwards it to a single output channel.
  • Splitter: receives messages on a single input channels and round-robins them among multiple output channels (which can have different socket types).
  • Multiplier: receives data from a single input channel and multiplies (copies) it to two or more output channels.
  • Proxy: connects input channel to output channel, where both can have different socket types and multiple peers.