degradation-comparison/cluster-scaling.html

275 lines
9.7 KiB
HTML
Raw Normal View History

2026-07-18 21:32:55 +02:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Linear Scaling Law • stream.4ort.net</title>
<style>
:root { --bg: #050505; --fg: #e0e0e0; --accent: #7aa2f7; --border: #1a1a1a; --muted: #666; }
* { box-sizing: border-box; }
body {
background: var(--bg);
color: var(--fg);
font-family: system-ui, -apple-system, sans-serif;
margin: 0;
padding: 3rem;
line-height: 1.6;
}
.container { max-width: 980px; margin: 0 auto; }
header {
border-left: 3px solid var(--accent);
padding-left: 2rem;
margin-bottom: 3rem;
}
h1 {
font-size: 2.8rem;
letter-spacing: -0.05em;
margin: 0 0 0.5rem 0;
line-height: 1.1;
}
.subtitle {
font-size: 1rem;
opacity: 0.7;
margin-bottom: 1rem;
font-family: monospace;
}
section {
margin: 3rem 0;
}
h2 {
font-size: 1.4rem;
color: var(--accent);
border-bottom: 1px solid var(--border);
padding-bottom: 0.5rem;
margin-top: 2rem;
font-family: monospace;
}
p {
margin-bottom: 1rem;
font-size: 1.05rem;
}
.definition-box {
background: rgba(122, 162, 247, 0.05);
border: 1px solid var(--accent);
padding: 1.5rem;
margin: 1.5rem 0;
font-family: monospace;
font-size: 0.9rem;
}
.equation {
background: var(--border);
padding: 1.5rem;
margin: 2rem 0;
font-family: monospace;
font-size: 1.1rem;
text-align: center;
border-left: 4px solid var(--accent);
}
.scaling-chart {
background: var(--border);
border: 1px solid var(--accent);
padding: 2rem;
margin: 2rem 0;
position: relative;
min-height: 400px;
}
.axis-label {
position: absolute;
font-family: monospace;
font-size: 0.8rem;
color: var(--accent);
}
.y-axis-label { left: 1rem; top: 50%; transform: translateY(-50%) rotate(-90deg); }
.x-axis-label { bottom: 1rem; left: 50%; transform: translateX(-50%); }
.grid-line {
stroke: var(--border);
stroke-dasharray: 4 4;
}
.scale-line {
stroke: var(--accent);
stroke-width: 2;
}
svg {
width: 100%;
height: 100%;
}
img {
max-width: 100%;
height: auto;
margin: 1.5rem 0;
border: 1px solid var(--border);
}
.citation {
font-size: 0.75rem;
opacity: 0.5;
margin-top: 1rem;
font-family: monospace;
}
nav.nav {
margin-top: 3rem;
padding-top: 2rem;
border-top: 1px solid var(--border);
font-size: 0.85rem;
opacity: 0.6;
}
nav.nav a {
color: var(--accent);
text-decoration: none;
margin-right: 1.5rem;
}
.link-ref {
color: var(--accent);
text-decoration: none;
border-bottom: 1px dotted var(--accent);
}
.metric-box {
display: flex;
gap: 2rem;
margin: 2rem 0;
flex-wrap: wrap;
}
.metric {
background: rgba(122, 162, 247, 0.05);
border: 1px solid var(--border);
padding: 1.5rem;
flex: 1;
min-width: 250px;
}
.metric-value {
font-family: monospace;
font-size: 2rem;
color: var(--accent);
font-weight: bold;
margin-bottom: 0.5rem;
}
.metric-label {
font-size: 0.9rem;
opacity: 0.8;
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<div class="container">
<header>
<h1>LINEAR SCALING LAW</h1>
<div class="subtitle">WHY DOUBLE NODES = DOUBLE THROUGHPUT</div>
<p>In a properly architected render farm, scaling is not exponential. It is arithmetic. Each node adds one unit of throughput. No more, no less.</p>
</header>
<section>
<h2>I. THE SCALING PRINCIPLE</h2>
<div class="equation">
T(k) = k × T(1)
</div>
<div class="definition-box">
<p><strong>k</strong> = number of nodes in cluster<br>
<strong>T(1)</strong> = base throughput of single node (frames·hr⁻¹)<br>
<strong>T(k)</strong> = total cluster throughput at scale k</p>
</div>
<p>This is not optimization theory. It is physical necessity. A render farm distributes independent frame tasks across independent compute units. Task i runs on Node j. No task waits. No node idles (unless load balancing fails).</p>
</section>
<section>
<h2>II. VISUAL PROOF</h2>
<div class="scaling-chart">
<span class="axis-label y-axis-label">THROUGHPUT (frames·hr⁻¹)</span>
<span class="axis-label x-axis-label">NODE COUNT</span>
<svg viewBox="0 0 800 400">
<!-- Grid -->
<line x1="50" y1="50" x2="50" y2="350" class="grid-line"/>
<line x1="50" y1="350" x2="750" y2="350" class="grid-line"/>
<!-- Horizontal grid lines -->
<line x1="50" y1="250" x2="750" y2="250" class="grid-line"/>
<line x1="50" y1="150" x2="750" y2="150" class="grid-line"/>
<line x1="50" y1="50" x2="750" y2="50" class="grid-line"/>
<!-- Vertical grid lines -->
<line x1="150" y1="50" x2="150" y2="350" class="grid-line"/>
<line x1="250" y1="50" x2="250" y2="350" class="grid-line"/>
<line x1="350" y1="50" x2="350" y2="350" class="grid-line"/>
<line x1="450" y1="50" x2="450" y2="350" class="grid-line"/>
<line x1="550" y1="50" x2="550" y2="350" class="grid-line"/>
<line x1="650" y1="50" x2="650" y2="350" class="grid-line"/>
<line x1="750" y1="50" x2="750" y2="350" class="grid-line"/>
<!-- Linear scaling line -->
<polyline points="50,350 150,300 250,250 350,200 450,150 550,100 650,50 750,0" class="scale-line"/>
<!-- Data points -->
<circle cx="50" cy="350" r="4" fill="#7aa2f7"/>
<circle cx="150" cy="300" r="4" fill="#7aa2f7"/>
<circle cx="250" cy="250" r="4" fill="#7aa2f7"/>
<circle cx="350" cy="200" r="4" fill="#7aa2f7"/>
<circle cx="450" cy="150" r="4" fill="#7aa2f7"/>
<circle cx="550" cy="100" r="4" fill="#7aa2f7"/>
<circle cx="650" cy="50" r="4" fill="#7aa2f7"/>
<circle cx="750" cy="0" r="4" fill="#7aa2f7"/>
</svg>
</div>
<p style="font-family: monospace; font-size: 0.8rem; opacity: 0.7; margin-top: 1rem;">
Plot: T(k) vs k for k ∈ [1, 8]. Slope = T(1). Linearity holds.
</p>
</section>
<section>
<h2>III. BOUNDARY CONDITIONS</h2>
<p>Scaling fails when assumptions break:</p>
<ul style="margin-left: 2rem; font-size: 1rem;">
<li><strong>Load imbalance</strong> — Node idle time > 0 violates independence</li>
<li><strong>Network bottleneck</strong> — Frame distribution latency exceeds render time</li>
<li><strong>Storage contention</strong> — Shared disk I/O serializes parallel writes</li>
<li><strong>Task granularity</strong> — Frames too large to distribute cleanly</li>
</ul>
<div class="definition-box" style="margin-top: 2rem;">
<p><strong>EFFICIENCY FACTOR η</strong>:</p>
<p style="margin-top: 0.5rem; font-family: monospace;">η = T(actual) / T(ideal)</p>
<p style="margin-top: 1rem; opacity: 0.7;">Perfect cluster: η = 1.0. Real cluster: η ≈ 0.850.95. Anything below 0.7 indicates architecture failure.</p>
</div>
</section>
<section>
<h2>IV. PHYSICAL INSTANCES</h2>
<div class="metric-box">
<div class="metric">
<div class="metric-value">140</div>
<div class="metric-label">ft-lbs (Grade 8 bolt)</div>
</div>
<div class="metric">
<div class="metric-value">T⁻¹</div>
<div class="metric-label">(throughput dimension)</div>
</div>
<div class="metric">
<div class="metric-value">16</div>
<div class="metric-label">nodes (FIFA 2026 hubs)</div>
</div>
</div>
<p>Antonio's torque specification is the mechanical analog. 140 ft-lbs is not arbitrary — it is the yield threshold of Grade 8 steel. Similarly, T(k) = k × T(1) is not metaphor — it is the yield threshold of parallel computation.</p>
<p>FIFA 2026 requires 16 venues, 104 matches, simultaneous broadcast. The cluster size is determined by dividing required throughput by single-node capacity. Arithmetic. Nothing else.</p>
</section>
<section>
<h2>V. ARCHITECTURAL EVIDENCE</h2>
<img src="https://images.pexels.com/photos/37730212/pexels-photo-37730212.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Modern data center server racks showing linear scalability architecture">
<p style="font-size: 0.85rem; opacity: 0.7; margin-top: 0.5rem;">Server rack density determines node count. Each rack is a discrete unit of T(1). Total throughput = sum of all racks.</p>
</section>
<div class="citation">
SOURCE: Wikidata Q382597 (render_farm), Q7798498 (throughput) — CC0<br>
RELATED: render-farm-theory.html | render-farm-calculator.html | render-farm-spec.html<br>
IMAGE: Pexels photo 37730212 — license-clean, no attribution required
</div>
<nav class="nav">
<a href="index.html">INDEX</a>
<a href="render-farm-architecture.html">ARCHITECTURE</a>
<a href="render-farm-spec.html">SPECIFICATION</a>
<a href="render-farm-theory.html">THEORY</a>
<a href="render-farm-calculator.html">CALCULATOR</a>
<a href="throughput-q7798498.html">THROUGHPUT</a>
</nav>
</div>
</body>
</html>