内容
Configuring RouDi
RouDi可以支持读取从一个配置文件中读取mempool config。如果需要支持这个特性,CMake的编译选项中需要使用 -DTOML_CONFIG=on
mempool config配置文件需要以-c命令选项的方式传给RouDi,像下面这样:
./RouDi -c /absolute/path/to/config/file.toml
RouDi支持不同的共享内存段使用不同的访问属性用于限制不同应用对于共享内存段的存取。
下面是格式版本为1的通用配置文件:
[general]
version = 1
[[segment]]
[[segment.mempool]]
size = 32
count = 10000
[[segment.mempool]]
size = 128
count = 10000
[[segment.mempool]]
size = 1024
count = 1000
上面这份配置中,创建了一个存储段,它的访问权限被设置给了RouDi进程的所属组。
这个存储段中,有三个mempool(内存池),其中一个拥有10000个32字节长度的内存块(chunk),其他两个mempool分别拥有10000个128字节的内存块和1000个1024字节的内存块。
为了限制内存段的存取,可以为内存段分别设置一个读取组合一个写入组:
[general]
version = 1
[[segment]]
reader = "foo"
writer = "bar"
[[segment.mempool]]
size = 32
count = 10000
[[segment.mempool]]
size = 128
count = 10000
[[segment.mempool]]
size = 1024
count = 1000
根据上面这份配置,一个应用只有输入bar组才可以从内存段(segment)中分配内存块(chunk)并且写入内存块(chunk),而属于foo组的应用只能读取内存段中的内存块(chunk)
下面的这个配置文件中包含多个内存段以及段的配置(pool和chunk的配置):
[general]
version = 1
[[segment]]
reader = "foo"
writer = "bar"
[[segment.mempool]]
size = 32
count = 10000
[[segment]]
reader = "alice"
writer = "eve"
[[segment.mempool]]
size = 1024
count = 100
当运行RouDi时没有制定配置文件,则如下被硬编码的配置文件将被使用。(…/iceoryx_posh/etc/iceoryx/roudi_config_example.toml)