MSI Edgexpert Power Consumption

pau153d02d2

New member
Joined
Jun 24, 2026
Messages
6
Hi all,
I have two MSI Edgexperts clustered together serving Deepseek-V4-Flash (FP4+FP8) through VLLM. I had my Agents build a monitoring daemon and webpage and it shows the power usage on each node but they never appear to go above 55W. I have the 2604 firmward and the connectx7 speed is fine. What are you seeing on yours and do you think this is a monitoring issue, a power throttling issue or normal??
 
Thanks for the report. Since nvidia-smi power readings on GB10 reflect GPU package power only (not total system power), and behavior can vary by workload,
we'd rather confirm with actual data than speculate. Could you provide the following from both nodes while the cluster is under active inference load?
  1. * nvidia-smi --query-gpu=power.draw,power.limit,power.default_limit,power.max_limit --format=csv
  2. * nvidia-smi dmon -s pu -d 1 (run for a few minutes during real traffic, both nodes)
  3. * Firmware/driver versions on both nodes, and your vLLM launch command
Once we have the logs, we'll take a closer look and follow up with our assessment.
Thanks.
 
Hi,
Thank you for looking at this!

Here's what I've pulled together under active inference load (8 concurrent requests with 1024 output tokens each, 96% SM utilisation, ~2483MHz graphics clock sustained) but power.limit, power.default_limit, and power.max_limit all return [N/A] from nvidia-smi? NOTE that it's set up in a dual-node cluster with the Connectx-7 with "Spark-1" as the leader.

  1. Power Draw (5-sample sweep at 1s intervals under sustained load)​

    t+1s Spark-1: 46.92W SM=96% gclk=2483MHz
    Spark-2: 45.15W SM=96% gclk=2489MHz
    t+2s Spark-1: 47.28W SM=96% gclk=2483MHz
    Spark-2: 45.91W SM=96% gclk=2489MHz
    t+3s Spark-1: 47.26W SM=96% gclk=2483MHz
    Spark-2: 46.06W SM=96% gclk=2483MHz
    t+4s Spark-1: 47.35W SM=96% gclk=2483MHz
    Spark-2: 45.52W SM=96% gclk=2489MHz
    t+5s Spark-1: 47.34W SM=96% gclk=2470MHz
    Spark-2: 46.09W SM=96% gclk=2483MHz

  2. Static Query (idle vs load)
    IDLE:
    Spark-1: 30.84W, [N/A], [N/A], [N/A], 0%, -
    Spark-2: 23.70W, [N/A], [N/A], [N/A], 95%, -

    UNDER LOAD (96% SM):
    Spark-1: ~47W, [N/A], [N/A], [N/A], 96%, 2483MHz
    Spark-2: ~46W, [N/A], [N/A], [N/A], 96%, 2483MHz

    nvidia-smi dmon output​

    gpu pwr gtemp sm mem enc dec
    Idx W C % % % %
    0 47 65 96 0 0 0 Spark-1
    0 46 61 96 0 0 0 Spark-2


  3. Driver / Firmware / Software​

    Driver• Version: 580.173.02
  4. VBIOS• Version: 9A.0B.2D.00.00
  5. CUDA• Version: 13.0.88
  6. NCCL• Version: 2.28.3
  7. vLLM image• Version: vllm-node-dsv4

  8. vLLM launch command (both nodes)​

    vllm serve deepseek-ai/DeepSeek-V4-Flash --host 0.0.0.0 --port 8000 --trust-remote-code --tensor-parallel-size 2 --kv-cache-dtype fp8 --block-size 256 --max-model-len 200000 --max-num-seqs 4 --max-num-batched-tokens 8192 --gpu-memory-utilization 0.9 --enable-prefix-caching --enable-expert-parallel --compilation-config '{"cudagraph_mode": "FULL_AND_PIECEWISE", "custom_ops": ["all"]}' --speculative-config '{"method":"mtp","num_speculative_tokens":2}' --tokenizer-mode deepseek_v4 --tool-call-parser deepseek_v4 --enable-auto-tool-choice --reasoning-parser deepseek_v4 --reasoning-config '{"reasoning_parser":"deepseek_v4"}' --default-chat-template-kwargs.thinking=true --default-chat-template-kwargs.reasoning_effort=high --load-format auto --nnodes 2 --node-rank 0 --master-addr 192.168.50.101 --master-port 29501
  9. Spark-2 (rank 1): Same command plus --headless and --node-rank 1.

  10. NCCL / Networking​

    ConnectX-7 NIC (rocep1s0f0)
    NCCL_IB_HCA=rocep1s0f0
    NCCL_IB_DISABLE=0
    NCCL_SOCKET_IFNAME=enp1s0f0np0
    NCCL_IB_GID_INDEX=3
    NCCL_IB_QPS_PER_CONNECTION=4
    NCCL_IB_TC=160
    NCCL_IB_TIMEOUT=22
So it looks like the GPU does spike to 65–69W very briefly during bursts (<5% of sampled), followed by an immediate drop back to 39–44W steady state.

Key numbers:
Min power
• Spark-1: 37W• Spark-2: 38W
Steady state• Spark-1: ~40W• Spark-2: ~40W
Peak spikes• Spark-1: 68W• Spark-2: 69W
Average
• Spark-1: 42.2W• Spark-2: 42.5W
SM util (steady)• Spark-1: 94–96%• Spark-2: 94–96%
GPU temp• Spark-1: 67–75°C• Spark-2: 69–78°C
Graphics clock• Spark-1: 2483MHz• Spark-2: 2411–2483MHz
power.limit• Spark-1: [N/A]• Spark-2: [N/A]
 
Thanks for the detailed data — this is really useful.

Looking at your numbers: power isn't flat/stuck — it moves with load (idle ~24-31W → steady ~40-47W → bursts to 68-69W), and your graphics clock is holding near max boost (2483MHz) throughout.

Two things in your own log we'd like clarified before going further:
1. Spark-2 shows 95% SM utilization at "idle" while Spark-1 shows 0% — was there any residual traffic or NCCL sync activity on Spark-2 at that moment?
2. The mem column in dmon reads 0% under active load — that's unexpected for a decode workload and worth double-checking against your own monitoring daemon's readings.

Could you also run this on both nodes while under load, and paste the full output?

nvidia-smi -q -d PERFORMANCE

We're specifically looking for two sections in the output:
  • * Clocks Event Reasons — a line called SW Power Cap that will say either Active or Not Active
  • * Clocks Event Reasons Counters — a line called SW Power Capping showing a number in microseconds (run the command twice, a few seconds apart, to see if that number is increasing)
If SW Power Cap shows Not Active and the counter isn't climbing, that tells us the GPU isn't being software-capped, which points us toward the power draw simply being what this workload needs rather than a limiting issue.
 
Thanks for the detailed data — this is really useful.

Looking at your numbers: power isn't flat/stuck — it moves with load (idle ~24-31W → steady ~40-47W → bursts to 68-69W), and your graphics clock is holding near max boost (2483MHz) throughout.

Two things in your own log we'd like clarified before going further:
1. Spark-2 shows 95% SM utilization at "idle" while Spark-1 shows 0% — was there any residual traffic or NCCL sync activity on Spark-2 at that moment?
2. The mem column in dmon reads 0% under active load — that's unexpected for a decode workload and worth double-checking against your own monitoring daemon's readings.

Could you also run this on both nodes while under load, and paste the full output?

nvidia-smi -q -d PERFORMANCE

We're specifically looking for two sections in the output:
  • * Clocks Event Reasons — a line called SW Power Cap that will say either Active or Not Active
  • * Clocks Event Reasons Counters — a line called SW Power Capping showing a number in microseconds (run the command twice, a few seconds apart, to see if that number is increasing)
If SW Power Cap shows Not Active and the counter isn't climbing, that tells us the GPU isn't being software-capped, which points us toward the power draw simply being what this workload needs rather than a limiting issue.



Hi, sorry for the delay in getting back to you!

On 1 - Since with this model running across two nodes, 'Spark-2' is the worker so I suspect it's node2 polling for incoming data across the CX-7 link. I'm not sure if it uses keeping the SM high through the polling?
On 2 - the nvidia-smi dmon was effectively reporting "Memory-Usage: Not Supported".

This is live today:
$ nvidia-smi -q -d MEMORY
FB Memory Usage
Total : N/A
Used : N/A
Free : N/A
BAR1 Memory Usage
Total : N/A
Used : N/A
Free : N/A

$ nvidia-smi dmon -d 1 -c 3
sm mem
0 0
0 0
0 0

Regarding the nvidia-smi Performance command results whilst under load:​

Power Cap Diagnostic — Dual Pass​

GPU Util•
Value: 96% ✅ Load active
Power Draw
Value: 43.43
WTemp
Value: 55°
CClock
Value: 2,502 MHz (P0 state)

Pass 1 — 15:15:06 UTC​

SW Power Cap : Not Active
SW Power Capping : 2,156,970,640 us

Pass 2 — 15:15:14 UTC (8s later)​

SW Power Cap : Not Active
SW Power Capping : 2,156,970,640 us ← IDENTICAL

Looks to be more memory bandwidth limited with a short test. I've then re-run the same thing over a 10 minute period taking the measurement at the 2nd, 5th and 9th minute.

Results — 10-Minute Sustained Load Power Cap Diagnostic​

Load Profile​

  • Duration: 600 seconds (10 minutes exactly)
  • Requests sent:1,186 (1 every ~500ms)
  • Model: DeepSeek-V4-Flash on Spark-1:8000 (TP=2 cluster)
  • Exit code: 0 — clean completion

GPU State Throughout​

GPU Util•
During Load: 96%•
Post-Load: 96% (residual)
Power Draw•
During Load: 46.8–47.1 W•
Post-Load: 45.5 W
Temp•
During Load: 70–71°C•
Post-Load: 70°C
---

Three nvidia-smi -q -d PERFORMANCE Readings​

Timestamp
• ~17s (early): 15:23:14
• ~23s (early): 15:23:20
• 9:20 min ✅: 15:32:17
• Δ: +9m03s
SW Power Cap
• ~17s (early): Not Active
• ~23s (early): Not Active
• 9:20 min ✅: Not Active
• Δ: No change
SW Power Capping
• ~17s (early): 2,156,970,640 μs
• ~23s (early): 2,156,970,640 μs
• 9:20 min ✅: 2,156,970,640 μs
• Δ: Zero change

Verdict​

Result: SW Power Cap Not Active consistently
Counter climbing?
• Result: Frozen — no movement across 9+ minutes of 96% GPU loadSoftware power limiting?
• Result: None whatsoever
The SW Power Capping counter did not increment by a single microsecond across 1,186 inference requests over 10 minutes of sustained decode load at 96% GPU utilisation.
---

During the same 10-minute load these are the GPU Power Draw readings:​

Captured Power Draw Readings​

15:23:02 UTC
• Elapsed: ~5s in
• GPU Util: 96%
• Power: 46.86 W
• Temp: 71°C
• Source: Load confirmation check

15:32:17 UTC
• Elapsed: ~9m20s in
• GPU Util: 96%
• Power: 46.97 W
• Temp: 70°C
• Source: 9-min PERFORMANCE + GPU state

15:34:04 UTC
• Elapsed: post-load
• GPU Util: 96%
• Power: 45.51 W
• Temp: 70°C
• Source: Final baseline


Dual-Node GPU Power Capture — Fixed Results​

Test: 10-minute sustained inference load on DeepSeek-V4-Flash (TP=2 across both nodes)
Load: 1,186 requests via Spark-1:8000 | Capture: 120 samples @ 5s intervals
Under-load samples: 111 per node (≥95% util)

Side-by-Side​

Avg GPU Power
• Spark‑1 (Node 1): 47.8 W
• Spark‑2 (Node 2): 46.4 W
• Δ: +1.5 W
Power range
• Spark‑1 (Node 1): 42.9 – 49.2 W
• Spark‑2 (Node 2): 42.1 – 48.1 W
• Δ: —
Avg Util
• Spark‑1 (Node 1): 96%
• Spark‑2 (Node 2): 96%
• Δ: identical
Avg Temp
• Spark‑1 (Node 1): 73°C
• Spark‑2 (Node 2): 71°C
• Δ: +1°C
Peak temp
• Spark‑1 (Node 1): 76°C
• Spark‑2 (Node 2): 75°C
• Δ: —
GPU clock
• Spark‑1 (Node 1): 2,463–2,515 MHz
• Spark‑2 (Node 2): 2,463–2,528 MHz
• Δ: comparable
Idle power
• Spark‑1 (Node 1): 14.6 W
• Spark‑2 (Node 2): 14.8 W
• Δ: ~identical

Thermal Ramp​

First 1/3
• Spark‑1: 47.0W @ 70°C
• Spark‑2: 45.3W @ 68°C
Middle 1/3
• Spark‑1: 48.5W @ 75°C
• Spark‑2: 47.0W @ 74°C
Last 1/3
• Spark‑1: 48.0W @ 73°C
• Spark‑2: 46.8W @ 73°C
Ramp
• Spark‑1: 42.9W @ 56°C → 47.8W @ 72°C
• Spark‑2: 42.6W @ 54°C → 47.1W @ 73°C

Summary​

  • ~47W is the natural demand of a 96%-utilised GB10 Blackwell running NVFP4 MoE inference
  • Spark-1 uses ~1.5W more (+3.2%) than Spark-2 — likely from API server overhead (HTTP parsing, tokenisation, scheduling)
  • No throttling — power curve is flat after warm-up, SW Power Capping counter is frozen
  • Idle floor ~14.7W — consistent between nodes
  • Thermal soak at 73–75°C after ~6 minutes

So I guess you’ve pointed me to the conclusion that I’m not hitting a cap but that VLLM running deekseek across 2 nodes isn’t pushing the GB10 to it’s limit and perhaps its the CX-7 bandwidth which limits the performance?

P
 
Thank you for the thorough 10-minute sustained load test.

On power draw: this confirms the GPU is not being throttled. SW Power Cap remained Not Active, and the counter did not increment across the full 9+ minute window under 96% utilization. We've confirmed with NVIDIA that this counter only increases while capping is actively engaged — since it isn't climbing, the ~47W draw at 96% utilization with clock held near max boost reflects the actual demand of this workload, not a limitation.

On memory reporting: NVIDIA has confirmed that "Not Supported" for FB Memory Usage is expected on GB10, since its unified memory architecture does not expose dedicated GPU VRAM to nvidia-smi the way a discrete GPU would.

On Spark-2 showing 95% SM at idle: your explanation (worker-node polling over the CX-7 link) is a reasonable one and aligns with the dual-node setup.

On ConnectX-7 bandwidth as a possible performance limit: this is a separate question from the power investigation above, and neither side has bandwidth data yet to confirm or rule it out. To assess this specifically, the following would help:

iperf3 throughput between nodes — note that DGX Spark's two 200G ports share two PCIe Gen5 x4 lanes, so a single iperf3 instance is expected to show ~100Gbps; two concurrent instances (or an NCCL bandwidth test) are needed to measure full throughput.
NCCL_DEBUG=INFO output during inference, to see the proportion of step time spent on cross-node communication versus compute.

We can review these together once available.
 
Back
Top