221 lines
7.1 KiB
HTML
221 lines
7.1 KiB
HTML
|
|
<!DOCTYPE html>
|
|||
|
|
<html lang="en">
|
|||
|
|
<head>
|
|||
|
|
<meta charset="UTF-8">
|
|||
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|||
|
|
<title>The Law of the Hub • 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;
|
|||
|
|
}
|
|||
|
|
.definition-box strong {
|
|||
|
|
color: var(--accent);
|
|||
|
|
}
|
|||
|
|
.dimension {
|
|||
|
|
font-family: monospace;
|
|||
|
|
color: var(--accent);
|
|||
|
|
font-weight: bold;
|
|||
|
|
}
|
|||
|
|
.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);
|
|||
|
|
}
|
|||
|
|
.variable-table {
|
|||
|
|
width: 100%;
|
|||
|
|
margin: 1.5rem 0;
|
|||
|
|
border-collapse: collapse;
|
|||
|
|
}
|
|||
|
|
.variable-table td {
|
|||
|
|
padding: 0.75rem;
|
|||
|
|
border: 1px solid var(--border);
|
|||
|
|
vertical-align: top;
|
|||
|
|
}
|
|||
|
|
.variable-table .var-name {
|
|||
|
|
font-family: monospace;
|
|||
|
|
font-weight: bold;
|
|||
|
|
color: var(--accent);
|
|||
|
|
width: 120px;
|
|||
|
|
}
|
|||
|
|
.variable-table .var-unit {
|
|||
|
|
font-family: monospace;
|
|||
|
|
opacity: 0.7;
|
|||
|
|
width: 150px;
|
|||
|
|
}
|
|||
|
|
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);
|
|||
|
|
}
|
|||
|
|
</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>THE LAW OF THE HUB</h1>
|
|||
|
|
<div class="subtitle">Q382597 // Q7798498 — WHY THROUGHPUT IS T⁻¹</div>
|
|||
|
|
<p>A render farm is not a collection of GPUs. It is a machine that converts time into frames. Its output is measured in reciprocal duration.</p>
|
|||
|
|
</header>
|
|||
|
|
|
|||
|
|
<section>
|
|||
|
|
<h2>I. DEFINITION BY ENTITY</h2>
|
|||
|
|
<div class="definition-box">
|
|||
|
|
<p><strong>Q382597 (render_farm)</strong>:<br>
|
|||
|
|
Computer system, e.g. a computer cluster, for rendering computer-generated imagery (CGI).</p>
|
|||
|
|
<p style="margin-top: 1rem;"><strong>Q7798498 (throughput)</strong>:<br>
|
|||
|
|
In business, the rate of movement of inputs and outputs through a production process.<br>
|
|||
|
|
<span class="dimension">ISQ dimension: T⁻¹</span></p>
|
|||
|
|
</div>
|
|||
|
|
<p>The Wikidata graph binds these concepts. A render farm is a production process. Its output is throughput. Throughput is fundamentally inverse time.</p>
|
|||
|
|
</section>
|
|||
|
|
|
|||
|
|
<section>
|
|||
|
|
<h2>II. THE CORE EQUATION</h2>
|
|||
|
|
<div class="equation">
|
|||
|
|
T = N × (F ÷ S) × 3600
|
|||
|
|
</div>
|
|||
|
|
<table class="variable-table">
|
|||
|
|
<tr>
|
|||
|
|
<td class="var-name">T</td>
|
|||
|
|
<td>Total frames rendered per hour</td>
|
|||
|
|
<td class="var-unit">frames·hr⁻¹ ≡ T⁻¹</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="var-name">N</td>
|
|||
|
|
<td>Number of nodes in cluster</td>
|
|||
|
|
<td class="var-unit">count</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="var-name">F</td>
|
|||
|
|
<td>Frames per second per GPU (base throughput)</td>
|
|||
|
|
<td class="var-unit">frames·s⁻¹</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="var-name">S</td>
|
|||
|
|
<td>Scene complexity factor</td>
|
|||
|
|
<td class="var-unit">dimensionless</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="var-name">3600</td>
|
|||
|
|
<td>Seconds per hour (normalization constant)</td>
|
|||
|
|
<td class="var-unit">s·hr⁻¹</td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
<p>Dimensional analysis confirms the form:</p>
|
|||
|
|
<p style="font-family: monospace; background: var(--border); padding: 1rem; margin: 1rem 0;">
|
|||
|
|
[T⁻¹] = [count] × ([frames·s⁻¹] ÷ [1]) × [s·hr⁻¹]<br>
|
|||
|
|
[T⁻¹] = [frames·hr⁻¹] ✓
|
|||
|
|
</p>
|
|||
|
|
</section>
|
|||
|
|
|
|||
|
|
<section>
|
|||
|
|
<h2>III. PHYSICAL MANIFESTATION</h2>
|
|||
|
|
<p>Antonio etched this in code and steel: 140 ft-lbs, star pattern, three passes. The hub law is not metaphor. It is the torque specification that keeps the wheel true. The same law governs the cluster.</p>
|
|||
|
|
<p>A render farm scales linearly with node count because each node contributes independently to the aggregate throughput. There is no magic in parallelization — only arithmetic.</p>
|
|||
|
|
<div class="definition-box">
|
|||
|
|
<p><strong>SIMPLE SCALING LAW</strong>:</p>
|
|||
|
|
<p style="margin-top: 0.5rem; font-family: monospace;">T(nodes=k) = k × T(nodes=1)</p>
|
|||
|
|
<p style="margin-top: 1rem; opacity: 0.7;">Double the nodes, double the throughput. Halve the scene complexity, halve the time per frame.</p>
|
|||
|
|
</div>
|
|||
|
|
</section>
|
|||
|
|
|
|||
|
|
<section>
|
|||
|
|
<h2>IV. OPERATIONAL TOOL</h2>
|
|||
|
|
<p>The theory is useless without computation. The <a class="link-ref" href="render-farm-calculator.html">throughput calculator</a> implements this equation. Input your cluster spec, your GPU baseline, your scene load — it returns the raw T⁻¹.</p>
|
|||
|
|
<p>Grounded in Wikidata. Machine-readable JSON. Human-executable HTML.</p>
|
|||
|
|
</section>
|
|||
|
|
|
|||
|
|
<div class="citation">
|
|||
|
|
SOURCE: Wikidata Q382597 (render_farm), Q7798498 (throughput) — CC0<br>
|
|||
|
|
IMPLEMENTATION: render-farm-calculator.html | DATA: render-farm-calculator.json<br>
|
|||
|
|
RELATED: render-farm-architecture.html | render-farm-spec.html
|
|||
|
|
</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-calculator.html">CALCULATOR</a>
|
|||
|
|
<a href="throughput-q7798498.html">THROUGHPUT</a>
|
|||
|
|
</nav>
|
|||
|
|
</div>
|
|||
|
|
</body>
|
|||
|
|
</html>
|