Static pool inventory
Every build-time sizing knob nano-ros reads, with the default it uses when you do not set it. Set them as environment variables at BUILD time.
This page exists because knowing a knob exists is the hard part. Issue 0271 audited a 256 KB image that already tuned nine of these and still carried ~145 KB of defaults it did not know to change — every knob it needed was already there. Four separate features had each added a static pool with a knob, silently.
Pools with a computed size
Bytes are at the DEFAULTS below, computed from the pool’s own declared
arithmetic (// nros-pool: in the source). Change a knob and the figure
moves with it.
| pool | bytes at default | formula | declared in |
|---|---|---|---|
LARGE_PAYLOADS | — (knob ZPICO_SUBSCRIBER_RING_DEPTH has a computed default) | ZPICO_MAX_LARGE_SUBSCRIBERS * ZPICO_SUBSCRIBER_RING_DEPTH * ZPICO_SUBSCRIBER_LARGE_SIZE | packages/rmw/zenoh/nros-rmw-zenoh/src/shim/subscriber.rs:200 |
SLOTS | 8,192 | NROS_RMW_SUBSCRIBER_SLOTS * 1024 | packages/rmw/cffi/src/rust_adapter.rs:111 |
SMALL_PAYLOADS | — (knob ZPICO_SUBSCRIBER_RING_DEPTH has a computed default) | ZPICO_MAX_SUBSCRIBERS * ZPICO_SUBSCRIBER_RING_DEPTH * NROS_SUBSCRIBER_BUFFER_SIZE | packages/rmw/zenoh/nros-rmw-zenoh/src/shim/subscriber.rs:199 |
Every sizing knob
A knob with no pool row above is still tunable; it simply has not declared its byte cost yet. Absence of a figure is not a claim that it is free.
| knob | default | read by |
|---|---|---|
NROS_EXECUTOR_ACTION_CLIENTS | computed — see packages/core/nros-node/build.rs:114 | packages/core/nros-node |
NROS_EXECUTOR_ARENA_SIZE | computed — see packages/core/nros-node/build.rs:251 | packages/core/nros-node |
NROS_EXECUTOR_MAX_CBS | 4 | packages/core/nros-node |
NROS_EXECUTOR_MAX_NODES | 4 | packages/core/nros-node |
NROS_EXECUTOR_MAX_SC | 8 | packages/core/nros-node |
NROS_EXECUTOR_MAX_SHUTDOWN_CBS | 2 | packages/core/nros-node |
NROS_FREERTOS_APP_STACK_KB | computed — see packages/tooling/nros-platform-config/src/platform_config.rs:893 | packages/tooling/nros-platform-config |
NROS_FREERTOS_HEAP_KB | computed — see packages/tooling/nros-platform-config/src/platform_config.rs:892 | packages/tooling/nros-platform-config |
NROS_KEYEXPR_STRING_SIZE | computed — see packages/tooling/nros-platform-config/src/platform_config.rs:1061 | packages/tooling/nros-platform-config |
NROS_LET_BUFFER_SIZE | computed — see packages/tooling/nros-build-helpers/src/c.rs:119 | packages/tooling/nros-build-helpers |
NROS_MAX_ARRAY_LEN | 32 | packages/core/nros-params |
NROS_MAX_BYTE_ARRAY_LEN | 256 | packages/core/nros-params |
NROS_MAX_PARAMETERS | 32 | packages/core/nros-params |
NROS_MAX_PARAM_NAME_LEN | 64 | packages/core/nros-params |
NROS_MAX_STRING_VALUE_LEN | 256 | packages/core/nros-params |
NROS_PARAM_SERVICE_BUFFER_SIZE | 4096 | packages/core/nros-node |
NROS_RMW_MAX_BACKENDS | 8 | packages/rmw/cffi |
NROS_RMW_MAX_NODES | 4 | packages/rmw/cffi |
NROS_RMW_MESSAGE_INFO_SLOTS | 64 | packages/rmw/cffi |
NROS_RMW_SUBSCRIBER_SLOTS | 8 | packages/rmw/cffi |
NROS_RUNTIME_COMPONENT_SLOT_BYTES | computed — see packages/api/nros/build.rs:47 | packages/api/nros |
NROS_RUNTIME_MAX_CELL_ENTITIES | computed — see packages/api/nros/build.rs:70 | packages/api/nros |
NROS_RUNTIME_MAX_CLASS_INSTANCES | computed — see packages/api/nros/build.rs:58 | packages/api/nros |
NROS_RUNTIME_MAX_COMPONENTS | computed — see packages/api/nros/build.rs:41 | packages/api/nros |
NROS_SERVICE_TIMEOUT_MS | 30000 | packages/rmw/zenoh/nros-rmw-zenoh |
NROS_SMOLTCP_BUFFER_SIZE | computed — see packages/drivers/net/nros-smoltcp/build.rs:57 | packages/drivers/net/nros-smoltcp |
NROS_SMOLTCP_CONNECT_TIMEOUT_MS | computed — see packages/drivers/net/nros-smoltcp/build.rs:62 | packages/drivers/net/nros-smoltcp |
NROS_SMOLTCP_MAX_SOCKETS | computed — see packages/drivers/net/nros-smoltcp/build.rs:44 | packages/drivers/net/nros-smoltcp |
NROS_SMOLTCP_MAX_UDP_SOCKETS | computed — see packages/drivers/net/nros-smoltcp/build.rs:52 | packages/drivers/net/nros-smoltcp |
NROS_SMOLTCP_SOCKET_TIMEOUT_MS | computed — see packages/drivers/net/nros-smoltcp/build.rs:67 | packages/drivers/net/nros-smoltcp |
NROS_SUBSCRIBER_BUFFER_SIZE | computed — see packages/core/nros-node/build.rs:180 | packages/core/nros-node (conflicting defaults — see below) |
NROS_SUBSCRIPTION_BUFFER_SIZE | 1024 | packages/core/nros-node |
NROS_XRCE_CUSTOM_TRANSPORT_MTU | computed — see packages/rmw/xrce/nros-rmw-xrce-cffi/build.rs:429 | packages/rmw/xrce/nros-rmw-xrce-cffi |
NROS_XRCE_STREAM_HISTORY | computed — see packages/rmw/xrce/nros-rmw-xrce-cffi/build.rs:240 | packages/rmw/xrce/nros-rmw-xrce-cffi |
NROS_ZEPHYR_HEAP_SIZE | computed — see packages/tooling/nros-platform-config/src/platform_config.rs:891 | packages/tooling/nros-platform-config |
ZPICO_BATCH_MULTICAST_SIZE | computed — see packages/tooling/nros-platform-config/src/platform_config.rs:1081 | packages/tooling/nros-platform-config |
ZPICO_BATCH_UNICAST_SIZE | computed — see packages/tooling/nros-platform-config/src/platform_config.rs:1080 | packages/tooling/nros-platform-config |
ZPICO_FRAG_MAX_SIZE | computed — see packages/tooling/nros-platform-config/src/platform_config.rs:1082 | packages/tooling/nros-platform-config |
ZPICO_GET_POLL_INTERVAL_MS | computed — see packages/tooling/nros-platform-config/src/platform_config.rs:1084 | packages/tooling/nros-platform-config |
ZPICO_GET_REPLY_BUF_SIZE | computed — see packages/tooling/nros-platform-config/src/platform_config.rs:1083 | packages/tooling/nros-platform-config |
ZPICO_LEASE_TASK_PRIORITY | 16 | packages/rmw/zenoh/nros-zpico-build |
ZPICO_MAX_LARGE_SUBSCRIBERS | 2 | packages/rmw/zenoh/nros-rmw-zenoh |
ZPICO_MAX_LIVELINESS | 16 | packages/rmw/zenoh/nros-zpico-build |
ZPICO_MAX_PENDING_GETS | 4 | packages/rmw/zenoh/nros-zpico-build |
ZPICO_MAX_PUBLISHERS | 8 | packages/rmw/zenoh/nros-zpico-build |
ZPICO_MAX_QUERYABLES | computed — see packages/rmw/zenoh/nros-zpico-build/src/runner.rs:497 | packages/rmw/zenoh/nros-zpico-build |
ZPICO_MAX_SESSIONS | 1 | packages/rmw/zenoh/nros-zpico-build |
ZPICO_MAX_SUBSCRIBERS | 8 | packages/rmw/zenoh/nros-zpico-build |
ZPICO_PUBLISHER_TX_BUFFER_SIZE | 1024 | packages/rmw/zenoh/nros-rmw-zenoh |
ZPICO_READ_TASK_PRIORITY | 16 | packages/rmw/zenoh/nros-zpico-build |
ZPICO_SERVICE_BUFFER_SIZE | 1024 | packages/rmw/zenoh/nros-rmw-zenoh |
ZPICO_SUBSCRIBER_LARGE_SIZE | 16384 | packages/rmw/zenoh/nros-rmw-zenoh |
ZPICO_SUBSCRIBER_RING_DEPTH | computed — see packages/rmw/zenoh/nros-rmw-zenoh/build.rs:50 | packages/rmw/zenoh/nros-rmw-zenoh |
ZPICO_SUBSCRIBER_SIZE_THRESHOLD | 2048 | packages/rmw/zenoh/nros-rmw-zenoh |
Conflicting defaults
These knobs are read in more than one place with DIFFERENT defaults, so setting one moves only part of the tree — the issue-0135 split-brain shape one layer up.
NROS_SUBSCRIBER_BUFFER_SIZE