Search documentation of snmpkit

# Concurrent Multi (High-Throughput Multi-Target)

Overview

- Concurrent Multi is the high-performance approach for executing SNMP operations across many targets concurrently.
- Formerly referred to informally as “Multi v2,” this naming clarifies the behavior rather than a version.
- It uses a shared-socket architecture with non-blocking correlation to minimize overhead and maximize throughput.

Return formats

- :list (default) — results in the same order as requests
- :with_targets — [{target, oid, result}, ...]
- :map — %{{target, oid} => result, ...}

Typical usage

- Use existing multi-target functions (e.g., get_multi, get_bulk_multi) with the return_format that best fits your processing.
- Prefer bulk operations where appropriate for large tables.

Examples (conceptual)

- Query multiple devices and keep association with :map or :with_targets for clarity.
- Keep timeouts reasonable and consider batching to control load.

Defaults

- SNMP version: :v2c unless overridden
- return_format: :list (use :with_targets or :map as needed)
- max_concurrent: 10 unless overridden

Operational notes

- No manual setup should be required for common use cases; examples that show explicit engine starts are intended for advanced demonstrations and benchmarking.
- A future auto-ensure flow removes the need to start architecture components manually; for now, existing APIs work without additional setup in most applications.

Migration (from “Multi v2” wording)

- Replace references to “Multi v2” with “Concurrent Multi” in your docs and internal references.
- The API functions you already use remain the same; this is primarily a naming/doc improvement.

Best practices

- Choose return_format based on how you consume results (lookup vs. iteration).
- Use bulk operations and batching for scale.
- Avoid unnecessary formatting or name resolution in hot paths (include_formatted: false, include_names: false when needed).

← Previous Page Enriched Output Migration Guide (1.0+)
Next Page → SnmpKit v0.2.0 Release Notes