Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.

poolbytes at defaultformuladeclared in
LARGE_PAYLOADS— (knob ZPICO_SUBSCRIBER_RING_DEPTH has a computed default)ZPICO_MAX_LARGE_SUBSCRIBERS * ZPICO_SUBSCRIBER_RING_DEPTH * ZPICO_SUBSCRIBER_LARGE_SIZEpackages/rmw/zenoh/nros-rmw-zenoh/src/shim/subscriber.rs:200
SLOTS8,192NROS_RMW_SUBSCRIBER_SLOTS * 1024packages/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_SIZEpackages/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.

knobdefaultread by
NROS_EXECUTOR_ACTION_CLIENTScomputed — see packages/core/nros-node/build.rs:114packages/core/nros-node
NROS_EXECUTOR_ARENA_SIZEcomputed — see packages/core/nros-node/build.rs:251packages/core/nros-node
NROS_EXECUTOR_MAX_CBS4packages/core/nros-node
NROS_EXECUTOR_MAX_NODES4packages/core/nros-node
NROS_EXECUTOR_MAX_SC8packages/core/nros-node
NROS_EXECUTOR_MAX_SHUTDOWN_CBS2packages/core/nros-node
NROS_FREERTOS_APP_STACK_KBcomputed — see packages/tooling/nros-platform-config/src/platform_config.rs:893packages/tooling/nros-platform-config
NROS_FREERTOS_HEAP_KBcomputed — see packages/tooling/nros-platform-config/src/platform_config.rs:892packages/tooling/nros-platform-config
NROS_KEYEXPR_STRING_SIZEcomputed — see packages/tooling/nros-platform-config/src/platform_config.rs:1061packages/tooling/nros-platform-config
NROS_LET_BUFFER_SIZEcomputed — see packages/tooling/nros-build-helpers/src/c.rs:119packages/tooling/nros-build-helpers
NROS_MAX_ARRAY_LEN32packages/core/nros-params
NROS_MAX_BYTE_ARRAY_LEN256packages/core/nros-params
NROS_MAX_PARAMETERS32packages/core/nros-params
NROS_MAX_PARAM_NAME_LEN64packages/core/nros-params
NROS_MAX_STRING_VALUE_LEN256packages/core/nros-params
NROS_PARAM_SERVICE_BUFFER_SIZE4096packages/core/nros-node
NROS_RMW_MAX_BACKENDS8packages/rmw/cffi
NROS_RMW_MAX_NODES4packages/rmw/cffi
NROS_RMW_MESSAGE_INFO_SLOTS64packages/rmw/cffi
NROS_RMW_SUBSCRIBER_SLOTS8packages/rmw/cffi
NROS_RUNTIME_COMPONENT_SLOT_BYTEScomputed — see packages/api/nros/build.rs:47packages/api/nros
NROS_RUNTIME_MAX_CELL_ENTITIEScomputed — see packages/api/nros/build.rs:70packages/api/nros
NROS_RUNTIME_MAX_CLASS_INSTANCEScomputed — see packages/api/nros/build.rs:58packages/api/nros
NROS_RUNTIME_MAX_COMPONENTScomputed — see packages/api/nros/build.rs:41packages/api/nros
NROS_SERVICE_TIMEOUT_MS30000packages/rmw/zenoh/nros-rmw-zenoh
NROS_SMOLTCP_BUFFER_SIZEcomputed — see packages/drivers/net/nros-smoltcp/build.rs:57packages/drivers/net/nros-smoltcp
NROS_SMOLTCP_CONNECT_TIMEOUT_MScomputed — see packages/drivers/net/nros-smoltcp/build.rs:62packages/drivers/net/nros-smoltcp
NROS_SMOLTCP_MAX_SOCKETScomputed — see packages/drivers/net/nros-smoltcp/build.rs:44packages/drivers/net/nros-smoltcp
NROS_SMOLTCP_MAX_UDP_SOCKETScomputed — see packages/drivers/net/nros-smoltcp/build.rs:52packages/drivers/net/nros-smoltcp
NROS_SMOLTCP_SOCKET_TIMEOUT_MScomputed — see packages/drivers/net/nros-smoltcp/build.rs:67packages/drivers/net/nros-smoltcp
NROS_SUBSCRIBER_BUFFER_SIZEcomputed — see packages/core/nros-node/build.rs:180packages/core/nros-node (conflicting defaults — see below)
NROS_SUBSCRIPTION_BUFFER_SIZE1024packages/core/nros-node
NROS_XRCE_CUSTOM_TRANSPORT_MTUcomputed — see packages/rmw/xrce/nros-rmw-xrce-cffi/build.rs:429packages/rmw/xrce/nros-rmw-xrce-cffi
NROS_XRCE_STREAM_HISTORYcomputed — see packages/rmw/xrce/nros-rmw-xrce-cffi/build.rs:240packages/rmw/xrce/nros-rmw-xrce-cffi
NROS_ZEPHYR_HEAP_SIZEcomputed — see packages/tooling/nros-platform-config/src/platform_config.rs:891packages/tooling/nros-platform-config
ZPICO_BATCH_MULTICAST_SIZEcomputed — see packages/tooling/nros-platform-config/src/platform_config.rs:1081packages/tooling/nros-platform-config
ZPICO_BATCH_UNICAST_SIZEcomputed — see packages/tooling/nros-platform-config/src/platform_config.rs:1080packages/tooling/nros-platform-config
ZPICO_FRAG_MAX_SIZEcomputed — see packages/tooling/nros-platform-config/src/platform_config.rs:1082packages/tooling/nros-platform-config
ZPICO_GET_POLL_INTERVAL_MScomputed — see packages/tooling/nros-platform-config/src/platform_config.rs:1084packages/tooling/nros-platform-config
ZPICO_GET_REPLY_BUF_SIZEcomputed — see packages/tooling/nros-platform-config/src/platform_config.rs:1083packages/tooling/nros-platform-config
ZPICO_LEASE_TASK_PRIORITY16packages/rmw/zenoh/nros-zpico-build
ZPICO_MAX_LARGE_SUBSCRIBERS2packages/rmw/zenoh/nros-rmw-zenoh
ZPICO_MAX_LIVELINESS16packages/rmw/zenoh/nros-zpico-build
ZPICO_MAX_PENDING_GETS4packages/rmw/zenoh/nros-zpico-build
ZPICO_MAX_PUBLISHERS8packages/rmw/zenoh/nros-zpico-build
ZPICO_MAX_QUERYABLEScomputed — see packages/rmw/zenoh/nros-zpico-build/src/runner.rs:497packages/rmw/zenoh/nros-zpico-build
ZPICO_MAX_SESSIONS1packages/rmw/zenoh/nros-zpico-build
ZPICO_MAX_SUBSCRIBERS8packages/rmw/zenoh/nros-zpico-build
ZPICO_PUBLISHER_TX_BUFFER_SIZE1024packages/rmw/zenoh/nros-rmw-zenoh
ZPICO_READ_TASK_PRIORITY16packages/rmw/zenoh/nros-zpico-build
ZPICO_SERVICE_BUFFER_SIZE1024packages/rmw/zenoh/nros-rmw-zenoh
ZPICO_SUBSCRIBER_LARGE_SIZE16384packages/rmw/zenoh/nros-rmw-zenoh
ZPICO_SUBSCRIBER_RING_DEPTHcomputed — see packages/rmw/zenoh/nros-rmw-zenoh/build.rs:50packages/rmw/zenoh/nros-rmw-zenoh
ZPICO_SUBSCRIBER_SIZE_THRESHOLD2048packages/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