Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged ros2_medkit_linux_introspection at Robotics Stack Exchange
Package Summary
| Version | 0.7.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/selfpatch/ros2_medkit.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- bburda
Authors
ros2_medkit_linux_introspection
Gateway discovery plugin that exposes Linux process-level diagnostics via vendor extension endpoints. Maps ROS 2 nodes to OS processes and reports CPU, memory, systemd unit status, and container context.
Plugins
| Plugin | Endpoint | Data Source |
|---|---|---|
procfs_plugin |
x-medkit-procfs |
/proc/[pid]/{stat,status,cmdline} - CPU time, memory, threads, FDs |
systemd_plugin |
x-medkit-systemd |
D-Bus sd-bus API - unit state, resource usage |
container_plugin |
x-medkit-container |
Cgroup hierarchy - container runtime, resource limits |
Key Components
- ProcReader - Parses procfs files for process metrics with configurable proc root
- CgroupReader - Reads the unified (v2), legacy (v1) and hybrid cgroup hierarchies for container/service context, under both cgroup namespace modes. Each limit is reported together with the outcome of reading it, so “unlimited” and “could not be read” stay distinguishable. A container whose ID the cgroup namespace hides is recognised from the markers its runtime leaves behind
- SystemdUtils - Queries systemd via D-Bus for service metadata
- PidCache - TTL-based cache mapping ROS 2 node names to Linux PIDs
Configuration
Configure via gateway_params.yaml plugin parameters:
Each plugin is configured on its own. proc_root is the prefix that contains proc/ and
sys/, so the default / is what a normal deployment wants; pointing it at /proc makes
the plugin look for /proc/proc/<pid>.
plugins: ["procfs", "systemd", "container"]
plugins.procfs.path: "/path/to/libprocfs_introspection.so"
plugins.systemd.path: "/path/to/libsystemd_introspection.so"
plugins.container.path: "/path/to/libcontainer_introspection.so"
plugins.container.pid_cache_ttl_seconds: 30
plugins.container.proc_root: "/"
Documentation
License
Apache License 2.0
Changelog for package ros2_medkit_linux_introspection
0.7.0 (2026-08-27)
- Container CPU and memory limits are reported on every common cgroup
layout, not just one. The reader parses the cgroup v1 line format
alongside v2, and resolves the limit files under both
cgroupns=hostandcgroupns=private- the latter being the Docker default, where the container sees its own cgroup mounted directly at/sys/fs/cgroupand the previously built path did not exist. A limit that could not be read is now distinguished from a container that genuinely has no limit, instead of both being reported as unlimited (#637, #604) - Limits are read from the cgroup that owns them rather than from the process's own leaf, a legacy controller's limit is no longer outranked by a hierarchy that does not set one, and a limit file is read to its end instead of to the first short read (#637)
- Containers are detected per process rather than once for the whole node, and the ctest suite exercises every supported cgroup layout against synthetic hierarchies (#637)
- Build and test only: the package is instrumented for coverage (#582), and its tests are opted out of DDS domain allocation, reading synthetic /proc and cgroup trees rather than creating a ROS node (#597)
- Contributors: \@bburda
0.6.0 (2026-06-22)
- No functional changes; version bump for the coordinated 0.6.0 release.
- Contributors: \@bburda
0.5.0 (2026-06-08)
- Migrated the introspection plugins to the
get_routes()plugin API - Declared
pkg-configas abuildtool_dependand fixed a route-separator bug - Build: adopt the centralized
ROS2MedkitWarningsandROS2MedkitSanitizerscmake modules - Contributors: \@bburda
0.4.0 (2026-03-20)
- Initial release - Linux process introspection plugins for ros2_medkit gateway
-
procfs_plugin- process-level diagnostics via/procfilesystem (CPU, memory, threads, file descriptors) -
systemd_plugin- systemd unit status and resource usage via D-Bus -
container_plugin- container runtime detection and cgroup resource limits -
PidCachewith TTL-based refresh for efficient PID-to-node mapping -
proc_readerandcgroup_readerutilities with configurable proc root - Cross-distro support for ROS 2 Humble, Jazzy, and Rolling
- Contributors: \@bburda
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| ros2_medkit_integration_tests |