Data Analysis for Engineers/Module 6

Module 6 · Section 5 of 8

Case Study 6.4 - Data Center Energy Efficiency (PUE)

Computer Engineering

A colocation facility in Metro Manila tracks Power Usage Effectiveness (PUE = total facility power / IT power). You have a year of daily figures. Quantify the efficiency, model how much ambient temperature drives it, and flag the worst days.

from sklearn.linear_model import LinearRegression

np.random.seed(104)
days = pd.date_range("2023-01-01", periods=365, freq="D")
doy = np.arange(365)
it_kw = 820 + np.random.normal(0, 25, 365)                              # server load, fairly flat
ambient_c = 28 + 3 * np.sin(2 * np.pi * (doy - 110) / 365) + np.random.normal(0, 1.2, 365)
cooling_kw = 240 + 9 * (ambient_c - 25) + np.random.normal(0, 12, 365)  # cooling scales with ambient
overhead_kw = 55 + np.random.normal(0, 4, 365)
total_kw = it_kw + cooling_kw + overhead_kw
pue = total_kw / it_kw                                                  # Power Usage Effectiveness (>= 1)

dc = pd.DataFrame({"date": days, "ambient_c": ambient_c.round(1), "pue": pue.round(3)})
print(f"Mean PUE: {dc['pue'].mean():.3f}   best day: {dc['pue'].min():.3f}   worst day: {dc['pue'].max():.3f}")

# regress PUE on ambient temperature -> the slope IS the sensitivity (PUE per degree C)
reg = LinearRegression().fit(dc[["ambient_c"]].values, dc["pue"].values)
print(f"PUE sensitivity: +{reg.coef_[0]:.4f} per degree C of ambient")
print(f"A 2 C reduction in supply-air/ambient would cut PUE by ~{2 * reg.coef_[0]:.3f}")

worst = dc.nlargest(5, "pue")                          # the 5 highest-PUE days
print("\n5 worst days:\n", worst.to_string(index=False))

fig, ax = plt.subplots(figsize=(7, 5))
ax.scatter(dc["ambient_c"], dc["pue"], alpha=0.4, color="slateblue")
xs = np.linspace(dc["ambient_c"].min(), dc["ambient_c"].max(), 50)
ax.plot(xs, reg.predict(xs.reshape(-1, 1)), color="red")   # reshape(-1, 1): 1-D -> column for predict()
ax.set_xlabel("Ambient temperature (C)"); ax.set_ylabel("PUE")
ax.set_title("PUE vs Ambient Temperature")
plt.tight_layout(); plt.show()

Key Takeaways

  • PUE near 1.0 is ideal; the cooling term is the biggest lever, and it scales with ambient temperature - a strong argument for economised cooling or a higher chilled- water setpoint where the IT equipment tolerates it.
  • A one-variable regression turns "it feels worse in summer" into a defensible number (PUE per degree C) that justifies a capital request.
  • Ranking the worst days points maintenance at specific dates to correlate with chiller faults or filter conditions.

60 / 63 sections · Course home · Join the coaching cohort