sc_crawler.workload_profiles
Workload profile definitions for compound benchmark scoring.
Each workload profile is a weighted combination of benchmark scores that represents a specific real-world usage pattern. Scores are aggregated as a weighted average (geometric mean) of benchmark scores compared to their medians. A score of 1.0 represents a synthetic baseline server with the median performance of each component benchmark.
Weights within each workload sum to 1.0.
Classes:
- BenchmarkEntry – A single benchmark component contributing to a workload profile score.
- CompoundSource –
- Workload – A named workload profile composed of weighted benchmark entries.
Attributes:
class BenchmarkEntry
Bases: BaseModel
A single benchmark component contributing to a workload profile score.
Functions:
- effective_penalty – Return the penalty floor used when on_missing is PENALIZE.
Attributes:
- benchmark_id (
str) – The benchmark ID of a BenchmarkScore. - weight (
float) – Relative weight of this component. Weights within a workload sum to 1.0. - label (
str) – Human-readable description of what this component measures. - config_filter (
dict[str,Any] | None) – Optional filter applied to the benchmark's config JSON column. - on_missing (
BenchmarkComponentMissingPolicy) – How to handle a missing or invalid measurement for this component. - penalty (
float| None) – Substituted normalized ratio when on_missing is PENALIZE.
attr BenchmarkEntry.benchmark_id
BenchmarkEntry.benchmark_idbenchmark_id: str
The benchmark ID of a BenchmarkScore.
attr BenchmarkEntry.weight
BenchmarkEntry.weightweight: float
Relative weight of this component. Weights within a workload sum to 1.0.
attr BenchmarkEntry.label
BenchmarkEntry.labellabel: str
Human-readable description of what this component measures.
attr BenchmarkEntry.config_filter
BenchmarkEntry.config_filterconfig_filter: dict[str, Any] | None = None
Optional filter applied to the benchmark's config JSON column.
attr BenchmarkEntry.on_missing
BenchmarkEntry.on_missingon_missing: BenchmarkComponentMissingPolicy = BenchmarkComponentMissingPolicy.IGNORE
How to handle a missing or invalid measurement for this component.
attr BenchmarkEntry.penalty
BenchmarkEntry.penaltypenalty: float | None = None
Substituted normalized ratio when on_missing is PENALIZE.
meth BenchmarkEntry.effective_penalty
BenchmarkEntry.effective_penaltyeffective_penalty()
Return the penalty floor used when on_missing is PENALIZE.
class CompoundSource
Bases: Json
Attributes:
- aggregation (
BenchmarkComponentAggregationMethod) – How component benchmark scores are combined into one composite score. - normalization (
BenchmarkComponentNormalizationMethod) – How each raw benchmark value is scaled to be comparable across benchmarks. - components (
list[BenchmarkEntry]) – The components of the workload profile. - impact_formula (
str| None) – Human-friendly explanation of how to read per-componentimpacton scores.
attr CompoundSource.aggregation
CompoundSource.aggregationaggregation: BenchmarkComponentAggregationMethod
How component benchmark scores are combined into one composite score.
attr CompoundSource.normalization
CompoundSource.normalizationnormalization: BenchmarkComponentNormalizationMethod
How each raw benchmark value is scaled to be comparable across benchmarks.
attr CompoundSource.components
CompoundSource.componentscomponents: list[BenchmarkEntry]
The components of the workload profile.
attr CompoundSource.impact_formula
CompoundSource.impact_formulaimpact_formula: str | None = None
Human-friendly explanation of how to read per-component impact on scores.
class Workload
Bases: BaseModel
A named workload profile composed of weighted benchmark entries.
Attributes:
- name (
str) – Short human-readable name, e.g. 'Web server'. - version (
str) – Workload profile version. - rationale (
str) – Explanation of which benchmarks were chosen and why. - benchmarks (
list[BenchmarkEntry]) – Ordered list of benchmark components with weights.
attr Workload.name
Workload.namename: str
Short human-readable name, e.g. 'Web server'.
attr Workload.version
Workload.versionversion: str
Workload profile version.
attr Workload.rationale
Workload.rationalerationale: str
Explanation of which benchmarks were chosen and why.
attr Workload.benchmarks
Workload.benchmarksbenchmarks: list[BenchmarkEntry]
Ordered list of benchmark components with weights.
attr WORKLOADS
WORKLOADS: dict[str, Workload] = {'web': Workload(name='Web Server', version='2.0', rationale='Primary workloads drivers are single-process static HTTP serving speed and throughput, text processing, TLS termination, and asset compression.', benchmarks=[BenchmarkEntry(benchmark_id='static_web:rps-extrapolated', weight=0.3, label='Static web RPS (1 KiB, 8 conn/vCPU)', config_filter={'size': '1k', 'connections_per_vcpus': 8.0}), BenchmarkEntry(benchmark_id='static_web:rps-extrapolated', weight=0.2, label='Static web RPS (64 KiB, 8 conn/vCPU)', config_filter={'size': '64k', 'connections_per_vcpus': 8.0}), BenchmarkEntry(benchmark_id='static_web:throughput-extrapolated', weight=0.2, label='Static web throughput (256 KiB, 8 conn/vCPU)', config_filter={'size': '256k', 'connections_per_vcpus': 8.0}), BenchmarkEntry(benchmark_id='openssl', weight=0.2, label='OpenSSL AES-256-CBC (16 kB blocks)', config_filter={'algo': 'AES-256-CBC', 'block_size': 16384}), BenchmarkEntry(benchmark_id='compression_text:compress', weight=0.05, label='Gzip compression (multi-core, level 5)', config_filter={'algo': 'gzip', 'compression_level': 5, 'cores': 'multi'}), BenchmarkEntry(benchmark_id='passmark:cpu_string_sorting_test', weight=0.05, label='PassMark string sorting')]), 'compute': Workload(name='Compute Heavy Applications', version='2.0', rationale='Number-crunching workload augmenting raw CPU performance stressing, general CPU performance benchmarks, memory bandwidth, and pure math computation speed like floating point, integer, SIMD (AVX/SSE/FMA) operations.', benchmarks=[BenchmarkEntry(benchmark_id='stress_ng:bestn', weight=0.15, label='stress-ng div16 best-N cores'), BenchmarkEntry(benchmark_id='stress_ng:best1', weight=0.1, label='stress-ng div16 single core'), BenchmarkEntry(benchmark_id='passmark:cpu_mark', weight=0.2, label='PassMark CPU Mark (composite)'), BenchmarkEntry(benchmark_id='bw_mem', weight=0.1, label='Memory bandwidth (read, 64 MB)', config_filter={'operation': 'rd', 'size': 64.0}), BenchmarkEntry(benchmark_id='passmark:cpu_floating_point_maths_test', weight=0.15, label='PassMark floating point'), BenchmarkEntry(benchmark_id='passmark:cpu_extended_instructions_test', weight=0.15, label='PassMark AVX/SSE/FMA (SIMD)'), BenchmarkEntry(benchmark_id='passmark:cpu_integer_maths_test', weight=0.1, label='PassMark integer math'), BenchmarkEntry(benchmark_id='passmark:cpu_physics_test', weight=0.05, label='PassMark physics simulation')]), 'cache': Workload(name='Cache Intensive', version='2.0', rationale='In-memory key-value store workload, mixing direct Redis performance metrics with memory speed and latency benchmarks, and single-core CPU performance profiles.', benchmarks=[BenchmarkEntry(benchmark_id='redis:rps-extrapolated', weight=0.5, label='Redis RPS (pipeline=1, SET)', config_filter={'operation': 'SET', 'pipeline': 1.0}), BenchmarkEntry(benchmark_id='redis:rps-extrapolated', weight=0.2, label='Redis RPS (pipeline=16, SET)', config_filter={'operation': 'SET', 'pipeline': 16.0}), BenchmarkEntry(benchmark_id='passmark:memory_mark', weight=0.1, label='PassMark Memory Mark (composite)'), BenchmarkEntry(benchmark_id='bw_mem', weight=0.1, label='Memory bandwidth (read, 16 MB ~ L3)', config_filter={'operation': 'rd', 'size': 16.0}), BenchmarkEntry(benchmark_id='passmark:cpu_single_threaded_test', weight=0.1, label='PassMark single-thread CPU')]), 'data_analysis': Workload(name='Data Analysis', version='2.0', rationale='Data analysis and ETL workloads are memory-bandwidth-bound and CPU-throughput-driven. The profile combines general CPU performance and memory bandwidth/latency as the primary drivers, supplemented by single-core compression speed as a proxy for serialisation-heavy ETL tasks.', benchmarks=[BenchmarkEntry(benchmark_id='passmark:cpu_mark', weight=0.7, label='PassMark CPU Mark (composite)'), BenchmarkEntry(benchmark_id='compression_text:compress', weight=0.1, label='Gzip compression (single-core, level 5)', config_filter={'algo': 'gzip', 'compression_level': 5, 'cores': 'single'}), BenchmarkEntry(benchmark_id='bw_mem', weight=0.1, label='Memory bandwidth (read, 64 MB)', config_filter={'operation': 'rd', 'size': 64.0}), BenchmarkEntry(benchmark_id='passmark:memory_mark', weight=0.1, label='PassMark Memory Mark (composite)')]), 'llm': Workload(name='LLM Inference', version='2.0', rationale='VRAM and memory-bandwidth-bound LLM inference workload, using direct LLM speed benchmarks at three model sizes, and supplementing with raw memory bandwidth and SIMD performance benchmarks.', benchmarks=[BenchmarkEntry(benchmark_id='llm_speed:text_generation', weight=0.15, label='LLM text generation (SmolLM-135M, 128 tok)', config_filter={'model': 'SmolLM-135M.Q4_K_M.gguf', 'tokens': 128}, on_missing=BenchmarkComponentMissingPolicy.REQUIRE), BenchmarkEntry(benchmark_id='llm_speed:prompt_processing', weight=0.15, label='LLM prompt processing (SmolLM-135M, 512 tok)', config_filter={'model': 'SmolLM-135M.Q4_K_M.gguf', 'tokens': 512}, on_missing=BenchmarkComponentMissingPolicy.REQUIRE), BenchmarkEntry(benchmark_id='llm_speed:text_generation', weight=0.15, label='LLM text generation (Llama 7B, 128 tok)', config_filter={'model': 'llama-7b.Q4_K_M.gguf', 'tokens': 128}, on_missing=BenchmarkComponentMissingPolicy.PENALIZE, penalty=0.0001), BenchmarkEntry(benchmark_id='llm_speed:prompt_processing', weight=0.15, label='LLM prompt processing (Llama 7B, 512 tok)', config_filter={'model': 'llama-7b.Q4_K_M.gguf', 'tokens': 512}, on_missing=BenchmarkComponentMissingPolicy.PENALIZE, penalty=0.0001), BenchmarkEntry(benchmark_id='llm_speed:text_generation', weight=0.15, label='LLM text generation (Llama-3.3 70B, 128 tok)', config_filter={'model': 'Llama-3.3-70B-Instruct-Q4_K_M.gguf', 'tokens': 128}, on_missing=BenchmarkComponentMissingPolicy.PENALIZE, penalty=0.01), BenchmarkEntry(benchmark_id='llm_speed:prompt_processing', weight=0.15, label='LLM prompt processing (Llama-3.3 70B, 512 tok)', config_filter={'model': 'Llama-3.3-70B-Instruct-Q4_K_M.gguf', 'tokens': 512}, on_missing=BenchmarkComponentMissingPolicy.PENALIZE, penalty=0.01), BenchmarkEntry(benchmark_id='bw_mem', weight=0.05, label='Memory bandwidth (read, 256 MB)', config_filter={'operation': 'rd', 'size': 256.0}), BenchmarkEntry(benchmark_id='passmark:cpu_extended_instructions_test', weight=0.025, label='PassMark AVX/SSE/FMA (SIMD)'), BenchmarkEntry(benchmark_id='passmark:cpu_floating_point_maths_test', weight=0.025, label='PassMark floating point')]), 'cicd': Workload(name='CI/CD Build', version='2.0', rationale='Build performance is mainly driven by multi-core compilation throughput, but also bundles single-core compilation speed and general CPU performance, multi-core compression and text/scripting processing.', benchmarks=[BenchmarkEntry(benchmark_id='geekbench:clang', weight=0.5, label='Geekbench Clang compilation (multi-core)', config_filter={'cores': 'multi'}), BenchmarkEntry(benchmark_id='geekbench:clang', weight=0.1, label='Geekbench Clang compilation (single-core)', config_filter={'cores': 'single'}), BenchmarkEntry(benchmark_id='stress_ng:bestn', weight=0.2, label='stress-ng div16 best-N cores'), BenchmarkEntry(benchmark_id='passmark:cpu_integer_maths_test', weight=0.05, label='PassMark integer math'), BenchmarkEntry(benchmark_id='passmark:cpu_compression_test', weight=0.05, label='PassMark compression'), BenchmarkEntry(benchmark_id='compression_text:compress', weight=0.05, label='Brotli compression (multi-core, level 0)', config_filter={'algo': 'brotli', 'compression_level': 0, 'cores': 'single'}), BenchmarkEntry(benchmark_id='passmark:cpu_string_sorting_test', weight=0.05, label='PassMark string sorting')])}
Workload profile definitions keyed by workload ID.