Dask Perf Profiling
- 1 installs
- Updated August 2, 2026
- aetherspritee/pyfracval
dask-perf-profiling is a Claude Code skill that provides a reproducible benchmark and profiling workflow for PyFracVAL on local and remote Dask clusters.
About
dask-perf-profiling is a Claude Code skill that provides a reproducible performance and profiling workflow for the PyFracVAL package on local and remote Dask clusters. It runs matched local and remote benchmark sessions with fixed seeds and config, collects profiling artifacts, normalizes throughput across heterogeneous workers, and classifies the bottleneck type. A developer uses it when a speedup helps locally but not on a remote Dask cluster and needs comparable benchmark evidence.
- Runs apples-to-apples local vs remote Dask benchmark sessions for PyFracVAL
- Collects profiling artifacts (task stream, worker usage, performance report)
- Classifies the bottleneck as compute, scheduler, transfer, or straggler bound
Dask Perf Profiling by the numbers
- 1 all-time installs (skills.sh)
- Ranked #1,803 of 2,064 Data Science & ML skills by installs in the Skillselion catalog
- Data as of Aug 3, 2026 (Skillselion catalog sync)
dask-perf-profiling capabilities & compatibility
- Capabilities
- performance profiling · benchmarking · bottleneck analysis
- Use cases
- data analysis
What dask-perf-profiling says it does
Reproducible performance and profiling workflow for PyFracVAL on local and remote Dask clusters.
Run apples-to-apples local vs remote Dask benchmark sessions
npx skills add https://github.com/aetherspritee/pyfracval --skill dask-perf-profilingAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| Last updated | August 2, 2026 |
| Repository | aetherspritee/pyfracval ↗ |
What it does
Benchmark and profile PyFracVAL on local vs remote Dask clusters and classify the performance bottleneck.
When should I use this skill?
A speed optimization improves local performance but not remote Dask performance and you need comparable benchmark evidence.
What you get
Comparable benchmark artifacts plus a bottleneck classification and a recommended highest-impact next step.
- Benchmark JSON summaries
- Dask performance report (HTML)
- Task stream trace and worker metadata snapshot
By the numbers
- 6-step standard protocol (preflight to recommend)
- Classifies 4 bottleneck types (compute, scheduler, transfer, straggler bound)
- Test matrix typically N=128,256 for quick profiling
Files
What I do
- Run apples-to-apples local vs remote Dask benchmark sessions
- Collect actionable profiling artifacts (task stream, worker usage, scheduler behavior)
- Normalize throughput for fair comparisons across heterogeneous workers
- Classify likely bottleneck type and recommend the highest-impact next step
When to use me
Use this skill when:
- A speed optimization improves local performance but not remote Dask performance
- You need a shared procedure for performance validation before/after code changes
- You want to understand if runtime is compute-bound, scheduler-bound, transfer-bound, or straggler-bound
- You need comparable benchmark evidence across multiple machines
Inputs to gather first
- Scheduler endpoint (for remote runs), e.g.
tcp://host:8786 - Test matrix:
Nvalues (typically128,256for quick profiling) - Fixed seeds and fixed config parameters
- Number of aggregates per run and warmup task count
- Local worker count and expected remote worker layout
Standard protocol
1. Preflight
- Confirm worker visibility and metadata (hostname, threads, Python version)
- Confirm package deployment path (latest wheel install if required)
- Note version mismatch warnings; they are often relevant to performance
2. Baseline run (local)
- Run benchmark with fixed config + seeds
- Include warmup phase and measured phase
- Capture JSON outputs and profiling artifacts
3. Remote run (same config)
- Same seeds and aggregate count as local
- Same warmup policy
- Capture JSON outputs and profiling artifacts
4. Extract and compare metrics
- Raw throughput (
agg/s) - Throughput per thread
- Throughput per effective thread (weighted by worker calibration)
- Task wall/cpu stats, worker busy fraction, success rate
5. Classify bottleneck
- Compute-bound: workers mostly busy, high CPU/wall, low scheduler overhead
- Scheduler-bound: many short tasks, high wait/dispatch overhead
- Transfer-bound: high data movement + idle gaps awaiting payloads
- Straggler-bound: one/few workers consistently lagging
6. Recommend next action
- Task granularity changes (batch/chunk sizing)
- Worker targeting or heterogeneity handling
- Serialization/payload reduction
- Algorithm hotspot optimization
Profiling artifacts to capture
- Benchmark JSON summary per run
- Dask performance report (HTML)
- Task stream trace / timeline
- Worker metadata snapshot
- Environment fingerprint (package version, Python, key dependency versions)
Suggested directory layout:
benchmark_results/profiles/<timestamp>/
local/
summary.json
performance_report.html
remote/
summary.json
performance_report.html
comparison.json
notes.mdNormalization policy
Use two normalized views side-by-side:
1. Simple normalization
throughput_per_thread = throughput / total_threads
2. Heterogeneity-aware normalization
- Compute per-worker calibration score (median of repeated calibration runs)
- Derive effective threads by weighting thread counts by calibration index
- Use conservative clipping for outliers to avoid single-worker distortion
Do not rely on one metric alone. Keep raw throughput as a first-class output.
Interpretation rubric
- If remote raw throughput is lower but per-thread is similar:
likely fixed orchestration overhead dominates at small N
- If remote raw throughput is higher but busy fraction is low:
capacity is underutilized; scaling headroom exists with larger workload
- If per-effective-thread collapses unexpectedly:
calibration likely unstable or cluster heterogeneity dominates; rerun calibration with more repeats
- If success rate differs across environments:
treat correctness/stability as the first bottleneck before performance
Common pitfalls
- Comparing different seed sets between runs
- Comparing cold-start runs to warm runs
- Tiny workload sizes producing noisy metrics
- Ignoring version mismatch warnings between client/scheduler/workers
- Treating loopback cluster tests as true remote behavior
Reporting template
Use this minimal report structure:
1. Run context
- commit, config, seeds, worker topology
2. Metric table
- local vs remote raw + normalized metrics
3. Bottleneck diagnosis
- primary, secondary, confidence
4. Recommended actions
- top 3, ordered by expected impact
Exit criteria
A profiling pass is complete when:
- Local and remote runs used identical benchmark inputs
- Artifacts are saved and readable
- Bottleneck classification is justified by at least 3 independent signals
- Next optimization action is explicit and testable