Skip to content

Commit f9a754d

Browse files
authored
refs
1 parent ed9a5f8 commit f9a754d

File tree

1 file changed

+221
-19
lines changed

1 file changed

+221
-19
lines changed

README.md

Lines changed: 221 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ From [Computer History Museum - Zuse Completes Z3 Machine](https://www.computerh
281281
<details>
282282
<summary><b>ENIAC (1945)</b></summary>
283283

284-
> ENIAC's most significant technical limitationthe difficulty of reprogrammingdirectly inspired the stored-program concept central to modern computers. This limitation led John von Neumann to articulate the architecture that bears his name in the 1945 `First Draft of a Report on the EDVAC`, which became the blueprint for most subsequent computers.
284+
> ENIAC's most significant technical limitation, the difficulty of reprogramming, directly inspired the stored-program concept central to modern computers. This limitation led John von Neumann to articulate the architecture that bears his name in the 1945 `First Draft of a Report on the EDVAC`, which became the blueprint for most subsequent computers.
285285
286286
- **John Mauchly & J. Presper Eckert**: Led the engineering team at University of Pennsylvania
287287
- **Physical Specifications**:
@@ -405,7 +405,7 @@ From [IBM Mainframes 45 Years of Evolution - System/360 Model 20](https://archi
405405
> Advanced Research Projects Agency Network (`ARPA`; later `DARPA`).
406406
> Defense Advanced Research Projects Agency (U.S. Department of Defense R&D agency)
407407
408-
> Three enduring ideas born here: packet switching, end‑to‑end principle, and layered protocolsprecursors to modern SDN (Software-Defined Networking) overlays and service meshes.
408+
> Three enduring ideas born here: packet switching, end‑to‑end principle, and layered protocols, precursors to modern SDN (Software-Defined Networking) overlays and service meshes.
409409
410410
- **Key people**: Vint Cerf, Bob Kahn, Leonard Kleinrock, J.C.R. Licklider
411411
- **Technical innovations**: Packet switching, distributed network without central control
@@ -436,7 +436,7 @@ From [Encyclopedia Britannica - Visual representation of the spread of ARPANET a
436436
<details>
437437
<summary><b>Intel 4004 (1971)</b></summary>
438438

439-
> Constraints (4‑bit ALU, tiny stack) drove tight, loop‑unrolled code and table‑driven arithmeticearly examples of co‑design between software and silicon limits.
439+
> Constraints (4‑bit ALU, tiny stack) drove tight, loop‑unrolled code and table‑driven arithmetic, early examples of co‑design between software and silicon limits.
440440
441441
- **Federico Faggin, Ted Hoff, Stanley Mazor**: Designers of the first commercial microprocessor
442442
- **Technical specifications**: 2,300 transistors, 4-bit CPU, 740 kHz clock speed
@@ -603,7 +603,7 @@ From [Implementation of the PCIe-PHY](https://github.com/brown9804/PCIe-Physical
603603
<details>
604604
<summary><b>IBM PC (1981) / DNS (1983)</b></summary>
605605

606-
> The PC’s open bus/BIOS (Basic Input/Output System) and DNS’s hierarchical delegation are both `open interfaces` that unlocked third‑party ecosystemskey to later cloud modularity.
606+
> The PC’s open bus/BIOS (Basic Input/Output System) and DNS’s hierarchical delegation are both `open interfaces` that unlocked third‑party ecosystems, key to later cloud modularity.
607607
608608

609609
- **IBM PC**: Open architecture led to clone market and standardization
@@ -686,7 +686,7 @@ From [Telecommunications Networks](https://www.pinterest.com/pin/gprs-network-sc
686686
<details>
687687
<summary><b>Virtualization (1990s-2000s)</b></summary>
688688

689-
> SR‑IOV and modern vSwitch offloads cut CPU cycles per packetcrucial for data‑plane efficiency in dense fleets.
689+
> SR‑IOV and modern vSwitch offloads cut CPU cycles per packet, crucial for data‑plane efficiency in dense fleets.
690690
691691
- **VMware (founded 1998)**: Commercialized x86 virtualization
692692
- **Technical innovations**: Virtual Machine Monitors (VMMs), hardware-assisted virtualization (Intel VT-x, AMD-V)
@@ -699,7 +699,7 @@ From [Telecommunications Networks](https://www.pinterest.com/pin/gprs-network-sc
699699
- Operational primitives:
700700
- Live migration (pre‑copy/post‑copy), snapshots, templates (“golden images”), high availability restarts.
701701
- Resource scheduling across clusters with anti‑affinity and admission control.
702-
- Outcomes: Higher utilization, better isolation, faster provisioningthe substrate for cloud multi‑tenancy.
702+
- Outcomes: Higher utilization, better isolation, faster provisioning, the substrate for cloud multi‑tenancy.
703703

704704
</details>
705705

@@ -768,7 +768,7 @@ From [Telecommunications Networks](https://www.pinterest.com/pin/gprs-network-sc
768768
- Outbound HTTP(S) via URLFetch proxy; inbound is HTTP(S) via Google frontends with load balancing and SSL termination.
769769
- App identity/service accounts for calling Google APIs; access control via project IAM as the platform evolved.
770770
- Developer workflow: Declarative configs + gcloud tooling; zero-manage infra (no servers to patch). Vendor lock-in mitigated over time with portable APIs and later 2nd-gen runtimes.
771-
- Lasting impact: Popularized autoscale, managed services, traffic-splitting, and minimal ops for web appsprecursors to modern serverless patterns.
771+
- Lasting impact: Popularized autoscale, managed services, traffic-splitting, and minimal ops for web apps, precursors to modern serverless patterns.
772772

773773
</details>
774774

@@ -968,9 +968,9 @@ From [K8s cluster components](https://kubernetes.io/docs/concepts/architecture/)
968968
- Labeling indicates products meeting energy efficiency criteria under standardized tests.
969969
- Measurement methodology
970970
- TEC (Typical Energy Consumption) models: integrates active/idle/sleep/off over a duty cycle to yield kWh/year.
971-
- Server testing leverages SPEC SERT (Standard Performance Evaluation CorporationServer Efficiency Rating Tool) to couple performance with power.
971+
- Server testing leverages SPEC SERT (Standard Performance Evaluation Corporation, Server Efficiency Rating Tool) to couple performance with power.
972972
- Power states and sleep: wake latency and user experience constraints included in eligibility criteria.
973-
- Technical levers: Display power management (DPMSDisplay Power Management Signaling), low‑power SoCs (Systems on Chip), aggressive idle states (C‑states) and frequency scaling (DVFSDynamic Voltage and Frequency Scaling).
973+
- Technical levers: Display power management (DPMS, Display Power Management Signaling), low‑power SoCs (Systems on Chip), aggressive idle states (C‑states) and frequency scaling (DVFS, Dynamic Voltage and Frequency Scaling).
974974
- Impact: Baselines for procurement; nudged component vendors toward better idle efficiency and automatic sleep policies.
975975

976976
</details>
@@ -1127,7 +1127,7 @@ From [K8s cluster components](https://kubernetes.io/docs/concepts/architecture/)
11271127
11281128
### Monitor and Request Quota Increases
11291129

1130-
- Regularly monitor quotas: Use the Azure Portal `Usage + quotas` (per Subscription/Region/Provider) and service blades (e.g., vCPUvirtual CPU families).
1130+
- Regularly monitor quotas: Use the Azure Portal `Usage + quotas` (per Subscription/Region/Provider) and service blades (e.g., vCPU, virtual CPU families).
11311131
- Proactively request increases: Submit quota increases ahead of scale events; some are self‑serve, others require support.
11321132
- Automate monitoring: Script checks and alerts for thresholds.
11331133
- What to monitor (examples):
@@ -1218,7 +1218,7 @@ From [K8s cluster components](https://kubernetes.io/docs/concepts/architecture/)
12181218
12191219
### Right-Size and Optimize Consumption
12201220
1221-
- Use autoscaling and Spot VMs (Virtual Machine Scale SetsVMSS):
1221+
- Use autoscaling and Spot VMs (Virtual Machine Scale Sets, VMSS):
12221222
```powershell
12231223
az vmss create -g MyRg -n batch-spot `
12241224
--image UbuntuLTS --orchestration-mode Uniform `
@@ -1259,21 +1259,223 @@ From [K8s cluster components](https://kubernetes.io/docs/concepts/architecture/)
12591259
```
12601260
### Adopt Carbon- and Cost-Aware Scheduling
12611261

1262-
- Use carbon/cost‑aware strategies: Prefer regions/times with lower carbon intensity or price for deferrable jobs.
1262+
- **Implementing Carbon and Cost-Aware Strategies**:
1263+
- **Workload Classification by Flexibility**:
1264+
- **Time-Flexible Workloads**: Batch processing, ETL jobs, machine learning training, and backups that can be deferred to lower-carbon or lower-cost periods
1265+
- **Location-Flexible Workloads**: Stateless services, content delivery, and analytics that can run in multiple regions
1266+
- **Fixed Workloads**: User-facing applications and latency-sensitive services that must run continuously regardless of carbon/cost conditions
1267+
1268+
- **Regional Strategy Implementation**:
1269+
- Select primary regions based on a combination of:
1270+
* Average carbon intensity (lower is better)
1271+
* Renewable energy percentage (higher is better)
1272+
* Cost efficiency (lower $/compute unit)
1273+
* Latency requirements (proximity to users)
1274+
- **Example regional selection matrix**:
1275+
```
1276+
| Region | Avg. Carbon | Renewable % | Cost Index | Latency | Score |
1277+
|-------------|-------------|-------------|------------|---------|-------|
1278+
| West Europe | 211 gCO₂/kWh| 48% | 1.05 | 85ms | 8.2 |
1279+
| North Europe| 189 gCO₂/kWh| 62% | 1.00 | 92ms | 8.7 |
1280+
| East US | 338 gCO₂/kWh| 28% | 0.95 | 35ms | 7.1 |
1281+
```
1282+
1283+
- **Temporal Strategy Implementation**:
1284+
- Implement carbon-aware job scheduling that:
1285+
* Monitors forecast carbon intensity for the next 24-72 hours
1286+
* Schedules deferrable workloads during low-carbon windows
1287+
* Balances carbon savings against deadline requirements
1288+
- **Sample scheduling logic**:
1289+
```python
1290+
def schedule_job(job, carbon_forecasts, deadline):
1291+
# Find the lowest carbon window before the deadline
1292+
best_window = min(
1293+
[window for window in carbon_forecasts if window.time < deadline],
1294+
key=lambda w: w.carbon_intensity
1295+
)
1296+
1297+
# Schedule the job during that window
1298+
return schedule_at(job, best_window.time)
1299+
```
1300+
1301+
- **Hybrid Approaches**:
1302+
- Combine region selection and time scheduling for maximum impact
1303+
- Implement "follow-the-sun/follow-the-wind" strategies where workloads migrate to regions with abundant solar or wind energy based on time of day
1304+
- Create optimization algorithms that continuously adjust workload placement based on real-time carbon intensity, cost, and performance metrics
12631305
- Automate with orchestrators: AKS scheduler plugins, external metrics; Functions/Logic Apps for timers.
1264-
- Signals and data: Combine grid carbon indicators (gCO₂/kWh) with price/capacity; track kgCO₂e and $/hr in dashboards.
1306+
- **Carbon and Cost Signal Integration**:
1307+
- **Data Sources for Carbon-Aware Decisions**:
1308+
- **Grid Carbon Intensity APIs**: Integrate with services like WattTime, ElectricityMaps, or regional grid operators that provide real-time and forecasted carbon intensity data (measured in gCO₂/kWh)
1309+
- **Example API integration**:
1310+
```powershell
1311+
# Fetch real-time carbon intensity for westeurope region
1312+
$carbonData = Invoke-RestMethod -Uri "https://api.carbonintensity.org.uk/regional/westeurope" -Method Get
1313+
$currentIntensity = $carbonData.data[0].intensity.forecast
1314+
Write-Output "Current carbon intensity: $currentIntensity gCO₂/kWh"
1315+
```
1316+
1317+
- **Multi-Factor Decision Framework**:
1318+
- Combine carbon data with cost and performance metrics to create a weighted decision matrix
1319+
- **Sample decision formula**:
1320+
```
1321+
WorkloadScore = (CarbonWeight × NormalizedCarbonScore) +
1322+
(CostWeight × NormalizedCostScore) +
1323+
(PerformanceWeight × NormalizedPerfScore)
1324+
```
1325+
1326+
- **Operational Dashboard Integration**:
1327+
- Track key metrics in integrated dashboards:
1328+
* Carbon intensity by region (gCO₂/kWh)
1329+
* Cost per compute unit ($/vCPU-hour)
1330+
* Emissions per workload (kgCO₂e per service)
1331+
* Performance impact of carbon-aware scheduling (% change in response time)
1332+
1333+
- **Historical Analysis for Optimization**:
1334+
- Store carbon, cost, and performance data in a time-series database
1335+
- Use this data to:
1336+
* Identify optimal carbon windows for future scheduling
1337+
* Calculate the effectiveness of carbon-aware policies
1338+
* Fine-tune the balance between carbon reduction and performance
1339+
* Quantify financial and environmental impact for stakeholder reporting
12651340
- AKS autoscale and placement:
12661341
```powershell
1342+
# Enable cluster autoscaler on an existing node pool
12671343
az aks nodepool update -g MyRg -n np1 --cluster-name MyAks `
12681344
--enable-cluster-autoscaler --min-count 1 --max-count 20
12691345
```
1270-
- Label/taint `green` pools; HPA (Horizontal Pod Autoscaler) with external carbon metrics to pause/resume background work.
1346+
- **Carbon-Aware Node Management**:
1347+
- **Label nodes with carbon intensity**: Use Kubernetes labels (`carbon-intensity=low/medium/high`) to track which regions or availability zones have cleaner energy at any given time.
1348+
- **Apply taints to "green" pools**: Mark node pools in low-carbon regions with taints (e.g., `carbon-preference=green:NoSchedule`) so only workloads that explicitly tolerate them will run there. This reserves the cleanest infrastructure for carbon-sensitive workloads.
1349+
- **Example node labeling**:
1350+
```powershell
1351+
# Label nodes in a region with lower carbon intensity
1352+
kubectl label nodes -l agentpool=np-northeurope carbon-intensity=low
1353+
1354+
# Add taint to reserve nodes for carbon-aware workloads
1355+
kubectl taint nodes -l agentpool=np-northeurope carbon-preference=green:NoSchedule
1356+
```
1357+
- **Deploy with tolerations**:
1358+
```yaml
1359+
# Deployment that tolerates and prefers green nodes
1360+
apiVersion: apps/v1
1361+
kind: Deployment
1362+
metadata:
1363+
name: carbon-aware-batch
1364+
spec:
1365+
template:
1366+
spec:
1367+
tolerations:
1368+
- key: "carbon-preference"
1369+
operator: "Equal"
1370+
value: "green"
1371+
effect: "NoSchedule"
1372+
```
1373+
- **Carbon-Aware Auto-Scaling**:
1374+
- **HPA with external carbon metrics**: Configure Horizontal Pod Autoscaler to ingest carbon intensity data from external sources (like WattTime API or ElectricityMaps) through the Kubernetes custom metrics API.
1375+
- **Scale down during high-carbon periods**: Automatically reduce replicas when carbon intensity is high, then scale back up during cleaner energy periods.
1376+
- **Example HPA configuration**:
1377+
```yaml
1378+
apiVersion: autoscaling/v2
1379+
kind: HorizontalPodAutoscaler
1380+
metadata:
1381+
name: carbon-aware-hpa
1382+
spec:
1383+
scaleTargetRef:
1384+
apiVersion: apps/v1
1385+
kind: Deployment
1386+
name: batch-processor
1387+
minReplicas: 1
1388+
maxReplicas: 10
1389+
metrics:
1390+
- type: External
1391+
external:
1392+
metric:
1393+
name: grid.carbon.intensity
1394+
selector:
1395+
matchLabels:
1396+
region: westeurope
1397+
target:
1398+
type: Value
1399+
value: 150 # Scale down when gCO₂/kWh exceeds this threshold
1400+
behavior:
1401+
scaleDown:
1402+
stabilizationWindowSeconds: 300
1403+
```
1404+
12711405
- Batch/ETL (Extract–Transform–Load) patterns:
1272-
- Time windows aligned to low‑carbon forecasts
1273-
- Bounded retries with DLQs (Dead‑Letter Queues) for safety
1274-
- Governance:
1275-
- Budgets/alerts for cost and emissions
1276-
- Documented RTO/RPO when shifting regions/windows
1406+
- **Time-Shifted Workload Scheduling**:
1407+
- Schedule resource-intensive jobs to run during periods of low carbon intensity, typically when renewable energy is abundant
1408+
- Use cron expressions with wider windows plus carbon-aware logic to determine exact execution time
1409+
- Example using Azure Logic App with carbon intensity trigger:
1410+
```json
1411+
{
1412+
"triggers": {
1413+
"When_carbon_intensity_is_below_threshold": {
1414+
"type": "Http",
1415+
"inputs": {
1416+
"method": "GET",
1417+
"uri": "https://api.carbonintensity.org.uk/regional/westeurope"
1418+
},
1419+
"recurrence": {
1420+
"frequency": "Hour",
1421+
"interval": 1
1422+
},
1423+
"conditions": [
1424+
{
1425+
"expression": "@less(body('Parse_Response').intensity, 150)"
1426+
}
1427+
]
1428+
}
1429+
}
1430+
}
1431+
```
1432+
- **Resilient Carbon-Aware Processing**:
1433+
- Implement bounded retries with Dead Letter Queues (DLQs) for safety during unexpected high-carbon periods
1434+
- Ensure clean recovery when resuming workloads that were paused during high-carbon windows
1435+
- **Carbon and Cost Governance**:
1436+
- **Emission Budgeting**:
1437+
- Define carbon budgets alongside cost budgets for each service, team, or application
1438+
- Track emissions through the Azure Emissions Impact Dashboard, which provides Scope 1, 2, and 3 carbon footprint data
1439+
- Example policy for monthly carbon targets:
1440+
```
1441+
Service: Data Warehousing Pipeline
1442+
Monthly CO2e budget: 500kg
1443+
Cost budget: $2,500
1444+
Compliance requirements: Data must remain in North America
1445+
Flexibility score: Medium (can defer up to 6 hours)
1446+
```
1447+
1448+
- **Monitoring and Alerting**:
1449+
- Set up alerts when carbon or cost thresholds approach their limits (typically at 75% and 90%)
1450+
- Create dashboards combining both financial and environmental metrics:
1451+
```powershell
1452+
# PowerShell to configure an Azure Monitor alert for carbon
1453+
New-AzMetricAlertRuleV2 -Name "CarbonBudgetAlert" `
1454+
-ResourceGroupName "MyResourceGroup" `
1455+
-TargetResourceId "/subscriptions/{id}/..." `
1456+
-Condition $condition `
1457+
-ActionGroup $actionGroupId `
1458+
-Severity 2
1459+
```
1460+
1461+
- **Disaster Recovery Considerations**:
1462+
- Document Recovery Time Objectives (RTO) and Recovery Point Objectives (RPO) when implementing region-shifting strategies
1463+
- Create a carbon/cost vs. availability trade-off matrix to guide decisions during incidents:
1464+
```
1465+
| Service Tier | Max Carbon Override | Cost Override | Regions |
1466+
|--------------|---------------------|---------------|--------------|
1467+
| Critical | No limit | 5x baseline | Any |
1468+
| Important | 3x baseline | 3x baseline | Paired only |
1469+
| Background | Carbon-optimal only | 1.5x baseline | Flexible |
1470+
```
1471+
1472+
- **Compliance Documentation**:
1473+
- Track and report carbon savings for ESG (Environmental, Social, Governance) reporting
1474+
- Document how carbon-aware scheduling contributes to corporate sustainability goals
1475+
- Create automated reports showing:
1476+
* Carbon saved vs. baseline
1477+
* Cost impact of carbon-aware scheduling
1478+
* Sustainability improvements over time
12771479
12781480
> [!NOTE]
12791481
> Quotas, capacity, cost, and carbon are coupled constraints. Make deployments portable (IaC), keep a ranked list of viable regions/SKUs, and wire alerts so you can react before users feel it.

0 commit comments

Comments
 (0)