| name | llm-d-networking-tests |
| description | Run networking tests for LLM-D to ensure the environment is properly set up before vLLM is started. |
There are two steps to verify network performance of llm-d model deployment. First, after the model is deployed verify the topology of llm-d pods used by the model. For each pod if there are multiple GPUs allocated verify that they are optimally connected, in particular that they are as close as possible connected in PCIe with interconnects such as NVLink and NVSwitch for NVIDIA and Infinity Fabric and UALink for AMD. Second, for communication between pods verify that network fabric such Infiniband or RoCE is configured inside llm-d pods for expected latency and bandwidth.
Use provided automation scripts run-test*.sh from scripts/ directory to run the tests.
Ask user what namespace to use for tests (--namespace NS parameter in test scripts) and what pods label selector to use for testing (e.g. --label "llm-d.ai/role=decode" or "llm-d.ai/role=prefill"). The scripts will run tests in all pods matching the label selector.
The tests can also be run using ssh instead of kubectl exec by providing --ssh and --host parameters to the test scripts. If using ssh, ensure that the test machine has network access to the nodes where llm-d pods are running and that SSH keys are properly configured.
If additional information is needed use --verbose to print kubectl/SSH commands as they run. To make sure that the tests results can be reproduced by CLI commands use --explain-verify that extends the explain option to verify that each command when run as a CLI command produces expected output. The scripts will print out the exact kubectl or ssh commands used to run the tests for each pod. This allows users to easily rerun the tests manually if needed.
Follow those steps to run the tests:
The common problems leading to mismatch between performance test results and expected performance baseline are related to Kubernetes and topology GPUs on different PCIe roots / NUMA nodes. Each socket in a dual‑socket server owns its own PCIe root complex; if a pod gets GPUs on opposite sockets, their only path is via SYS‑style PCIe hops through the CPU interconnect. To see it use nvidia-smi topo -m shows SYS or PHB between GPUs in the pod, even though they’re on the same node and that leads to performance impact such as higher latency and cross‑socket PCIe contention, especially in collective operations.
The other problem may happen when GPUs are spread across multiple PCIe root complexes as on larger nodes (e.g., 8 GPUs), some GPUs may be wired under different PCIe root ports or PCIe switches resulting that even if they are on the same NUMA node, GPUs may be separated by multiple PCIe bridges (PXB), sharing a bottlenecked upstream link.
For step-by-step guide to troubleshoot GPU networking topology related to Kubernetes scheduling see How PCIe, NVLink, and NUMA Topology Affect GPU Scheduling Outcomes and search web for common problems related to your hardware setup.