能量比例性(energy proportionality)
想像一輛車在紅燈怠速時,燒掉的油幾乎和在高速公路巡航時一樣多。那會很荒謬又浪費——你會希望耗油量隨引擎實際出多少力而變化,停下時幾乎降到零。能量比例性(energy proportionality)就是希望電腦像一具設計良好的引擎那樣:按它正在做的工作量比例地抽取電力,好讓閒置或輕載的伺服器只啜飲電力、忙碌的則大口暢飲,中間一切平滑地縮放。麻煩在於,真實伺服器歷來根本不是這樣表現的。
確切的問題是閒置功耗。一台典型伺服器在 0% 使用率時——什麼有用的事都沒做——仍抽取它在 100% 時功耗的一大部分,常是一半或更多。所以負載與功耗的關係不是一條過原點的直線;它是一條帶有很大常數偏移的直線。為什麼這在倉儲規模電腦裡如此要緊?因為那裡的伺服器大部分時間處於中低使用率(常是 10–50%),很少全力衝刺、也很少完全閒置,而那正是非比例伺服器最沒效率的區域——它付出近尖峰的功耗,卻只交付尖峰工作的一小部分。能量比例性要求設計者把那個偏移壓平,好讓功耗隨負載下降而陡降:理想上 20% 負載的伺服器用約 20% 的尖峰功耗。
能量比例性之所以重要,是因為它正好在 WSC 真正生活的運行點上,直接攻擊總體擁有成本與碳足跡。推向它的技巧包括動態電壓頻率調整(在需求低時放慢並降低核心電壓)、關閉閒置元件、以及把工作整併到較少的機器上,好讓其他機器進入深度低功耗狀態。注意它和 PUE 的對比:PUE 講的是建築的額外開銷,而能量比例性講的是伺服器本身在未充分使用時浪費電力——它們互補,而你兩者都想要。
誠實的提醒:完美的比例性很難,因為伺服器的硬體有很多(記憶體、晶片的漏電流、風扇、電源供應器)有個不隨負載降低的下限,而從深度低功耗狀態喚醒會增加延遲,可能傷害尾端延遲。閒置伺服器也代表閒置的資本——你為一台坐著沒用的硬體付了錢——所以最深的解法常常不只是降低閒置功耗,而是提高使用率(把更多工作塞到每台機器上),好讓伺服器一開始就更少時間閒置。比例性與高使用率是同一枚效率硬幣的兩面。
一台非比例伺服器閒置時抽取 150 W、全載時 300 W。在 20% 使用率時它仍抽取約 180 W——用 60% 的尖峰功耗做 20% 的工作。一台理想的能量比例伺服器在 20% 負載時會抽取較接近 60 W,讓功耗隨它實際做的工作縮減。
閒置功耗是敵人:在伺服器大部分時間所處的中低負載,非比例機器付出近尖峰功耗,只做一小部分工作。
完美的比例性很難——記憶體、漏電、風扇與電源供應器有個降不下去的下限,而從深睡喚醒會增加延遲。真正的解法常是提高使用率,讓伺服器一開始就更少閒置。