Nodes/CK-Telemetry/CK Telemetry (ROCm/HIP)
ComfyUI Node

CK Telemetry (ROCm/HIP)

Find out which kernel ComfyUI actually ran

By Elsewhere101·Created 27 days ago·Updated 23 days ago· 1
CK Telemetry (ROCm/HIP)
  • input
  • output
  • report
◄embed_metadatatrue►
◄terminal_report_levelsummary►
◄show_terminal_reporttrue►
◄node_report_leveldetailed►
◄show_node_reporttrue►
◄report_text►

You finally get a decent it/s number, and someone on Reddit gets 40% more on the same card. One of you is running a fused HIP kernel; the other is running eager-mode math dressed up as a GPU op. ComfyUI won't tell you which. This node will.

Since early 2026 ComfyUI has shipped a kernel dispatch layer called comfy_kitchen. Instead of hard-coding one implementation of each hot operation, ComfyUI asks a registry which backend can do the job best - and you've seen the result even if you didn't know it, because it prints lines like Found comfy_kitchen backend triton: {'available': True, 'disabled': True, ...} at startup. That's the registry's opinion. It isn't a record of what your run actually selected, and it isn't per-operation. That's the gap CK-Telemetry fills: it hooks the registry's get_capable_backend and get_implementation functions and counts every selection, per operation, per backend, for one prompt.

Reach for it when you want to know whether a new build or a fork actually picked the HIP path instead of falling back, or when you're comparing quantizations. Be honest about the audience though - this is a commit-message kind of tool, and the pack is quiet. No tutorials. The README is the manual.

How it works

It patches ComfyUI's prompt executor at import, which is how it gets a per-prompt lifetime: sampler thread starts, registry counters open, prompt runs, report is built, everything resets. The instrumentation arms only for prompts containing one of this pack's four nodes, or when the env var is set - a workflow without the node costs nothing.

While the prompt runs, a sampling thread ticks every 500 ms. psutil gives CPU, system RAM and pagefile; on Windows, WDDM counters pulled through PDH give GPU engine utilization plus dedicated, shared and committed VRAM. Peak is the highest sample, average is the mean, and it all gets formatted as plain text.

One caveat: this is written for AMD ROCm/HIP on Windows. On NVIDIA it still runs - it reads the GPU name and arch from torch - but the memory numbers are Windows-flavoured and the backends you'll log are cuda/triton/eager. Not broken there. Just not aimed at you.

Inputs and outputs that matter

You set three of these, ever.

  • show_terminal_report (default on) with terminal_report_level (summary or detailed) - dumps the report into the ComfyUI terminal after the prompt finishes. This is the one I'd leave on, because the terminal survives crashes better than a widget does.
  • node_report_level - summary or detailed, and it controls the on-node field, the report output and the embedded metadata all at once.
  • embed_metadata (default on) - writes the report into EXTRA_PNGINFO under comfy_kitchen_dispatch and comfy_kitchen_dispatch_report, and into the workflow's node properties too. That last part is the neat trick: the pack's frontend extension copies the report back into the node's field when you drop a generated file onto the canvas. Your evidence travels inside the PNG.

show_node_report just collapses the read-only report_text field when canvas space is tight, and report_text is a display, not something you wire.

The sockets: input (optional, *) and output (*) are a straight passthrough, which is what lets you drop the node anywhere in a working graph, including after the Save node. report is a STRING - wire it to Preview as Text if you'd rather read it somewhere other than the widget.

Placement changes one number: elapsed time is measured to the node. Sampler → Decode → Save → CK-Telemetry reports the whole workflow; Sampler → CK-Telemetry → Decode → Save reports the sampler stage. Both valid. Pick deliberately.

Install

ComfyUI Manager, searching CK-Telemetry, or:

cd ComfyUI/custom_nodes
git clone https://github.com/Elsewhere101/ComfyUI-CK-Telemetry

Then restart. There's a registry entry too (comfy node install comfyui-ck-telemetry). Dependencies are basically nothing - requirements.txt asks for psutil>=5.9.0, which you almost certainly have. If in doubt, python -m pip show psutil. You do need a reasonably current ComfyUI: the pack is written against the V3 node API (from comfy_api.latest import ..., comfy_entrypoint), so an old build won't load it at all.

You don't even need the node

set COMFY_KITCHEN_TELEMETRY=1

=1 gives a compact summary terminal report for every prompt in the session; =2 gives the detailed one. No node, no workflow edits. If the node is also in the graph, the node wins - and it prints a line telling you it just overrode your environment variable, which is a nice touch.

Where people get burned

"No Comfy Kitchen backend selections observed." That's your report saying nothing went through the registry - usually a ComfyUI build predating comfy_kitchen, or a broken install. Check it directly, in the same Python environment ComfyUI uses:

python -c "import comfy_kitchen as ck; print(ck.registry.list_backends())"

A backend showing 'disabled': True with no 'unavailable_reason' is normal - ComfyUI disables backends in code for known-bad combinations, and the detailed report's backend status block is where you see that.

Empty report field. It only fills when the node actually executes. Graph ends before it, or you bypassed it, and you get the terminal report and nothing on canvas.

Embedded metadata that never lands. Launch with --disable-metadata and the file carries nothing, whatever embed_metadata says. That flag switches prompt metadata off wholesale.

RAM Spill and Pagefile look scary and mostly aren't. A few hundred MB in either is a normal ComfyUI baseline, especially on a cold first run. Past ~1.0 GB in either field your VRAM is genuinely overflowing and the GPU is fetching spills at PCIe speed - that's your cue to drop a quant or trim the workflow, with numbers instead of a vibe.

Categorydiagnostics/comfy kitchen

Inputs (7)

NameTypeDefaultDescription
embed_metadataBOOLEANtrueEmbed the report in EXTRA_PNGINFO for a downstream native saver. Leave on for persistence; turn off when using this node only for temporary per session terminal telemetry.
terminal_report_levelCOMBOsummaryTerminal report level when show_terminal_report is enabled.
show_terminal_reportBOOLEANtruePrint a compact or detailed Comfy Kitchen dispatch report in the ComfyUI terminal after prompt.
node_report_levelCOMBOdetailedReport detail level of reports used for the node field, optional report output, and embedded metadata.
show_node_reportBOOLEANtrueShow the populated report field below. The field is read-only and restored when a generated file's workflow is dropped back onto ComfyUI's canvas.
report_textSTRINGThe read-only diagnostic report output; it is refreshed after each execution.
inputopt*Optional passthrough value. Connect the image, video, audio, latent, or other value you want to carry through unchanged.

Outputs (2)

NameTypeDescription
output*Unchanged passthrough value.
reportSTRINGOptional text report. Connect to Preview as Text or another STRING node if you prefer a separate report display.