OpenAI 每天處理超過 9 PB 的日誌,對 AI 研究和推理生產至關重要。所有工作負載都運行在 Kubernetes 上,每個節點運行多個 DaemonSet:Fluent Bit、OpenTelemetry Collector、DataDog Agent 等。由於 OpenAI 快速增長,一些日誌工作負載向不同存儲發送了重複日誌,OpenAI 技術人員 Fabian Ponce 稱之為“DaemonSet 大雜燴”。
最繁忙的主機開始觸發 Linux CFS 限速。日誌 DaemonSet 被限速時,日誌會丟失。對於 AI 研究來説,每條日誌都可能包含重要信息,丟失不可接受。團隊無法增加更多 CPU,基礎設施已滿負荷。
解決方案:用 perf 找根因
發現
Ponce 加入可觀測性團隊第一個月,使用 Linux 性能分析工具 perf 對 Fluent Bit 部署進行分析。
報告顯示異常:CPU 使用時間大部分沒用在字符串處理上,反而是 stat 系統調用耗費最多。問題出在 Fluent Bit 如何監控日誌文件。默認用 Linux 的 inotify API 監測文件變化,但 inotify 事件不包含寫入數據量,Fluent Bit 每次事件後立即調用 stat 獲取文件大小,更新數據庫,判斷讀取進度和可讀數據量。
在 OpenAI 規模下,容器逐行刷新日誌,引發系統調用風暴,成千上萬次無意義的 stat 調用,線程高速佔用 CPU。
實施
解決辦法非常簡單:完全關閉 inotify,改為基於 stat 的輪詢,只需一行配置改動:inotify: false。Ponce 首次上線測試集羣后,CPU 使用率立刻降低 50%。
團隊隨後在全集羣推廣此改動,針對頻繁寫日誌的容器,stat 輪詢頻率最高達每秒一次。即使如此,系統調用次數也比 inotify 少幾個數量級。
“我們讓 Fluent Bit CPU 使用率降低 50%,為整個研究和應用基礎設施釋放了大量容量。這就是 CNCF 生態的力量,深刻理解工具,才能實現全局優化。”
— Fabian Ponce,OpenAI 技術成員
由於 CPU 是 Kubernetes 節點共享資源,減少 Fluent Bit 資源佔用提升了所有共址工作負載性能。這 3 萬核資源重新投入 ChatGPT 推理和 AI 實驗。
貢獻回饋社區
關閉 inotify 解決了燃眉之急,但長遠來看更好的方案是“節流” stat 調用。Ponce 説:“Fluent Bit 其實只需要個時間窗口,收到 inotify 事件後,安排在 500 毫秒內執行一次 stat。”這種防抖方式既保留了 inotify 的響應靈敏性,又避免系統調用爆炸。
和 Fluent Bit 維護者溝通後,他們對該改進持開放態度。OpenAI 計劃將此功能貢獻到上游,讓整個 CNCF 社區受益。
影響:基於 CNCF 打造的 PB 級日誌平台 OLogs
OpenAI 的優化支持了 OLogs 平台,內部日誌日處理量超 9 PB,完全基於 CNCF 項目:
- Kubernetes 負責編排,保證可擴展性和可靠性。
- Fluent Bit 聚合日誌,添加 Kubernetes 元數據,根據動態配置抽樣,轉換成 OLogs 格式。
- Envoy 負責路由存儲,未來分片時關鍵角色。
- OpenTelemetry 標準化可觀測性堆棧。
平台提供 OLogs 查詢語言(OQL)快速檢索,複雜分析支持完整 SQL。團隊還在開發“寬事件”存儲高基數數據,傳統時序數據庫難以承載。
關鍵成果
- Fluent Bit CPU 使用率全集羣降低 50%
- 釋放 3 萬核 CPU 資源用於 AI 工作負載
- 日處理日誌超 9 PB,性能無下降
- 過載主機 Linux CFS 限速事件大幅減少
- 消除因限速導致的主要日誌丟失,恢復管道穩定性
- 降低資源爭用,提升節點整體性能
- 計劃貢獻改進給 CNCF 社區
總結與展望
“如果有系統 root 權限,15 分鐘就能跑 perf。” Ponce 強調。這次優化不需要 PB 級規模,只要日誌量與持續刷寫的行為合適,就能帶來顯著收益。
極端規模才暴露的問題,解決後能提升整個社區的工具質量。
“雲時代帶來了更多分佈式系統思維,有助於可靠性和擴展,但硬件層面的優化知識不可替代。”
— Fabian Ponce,OpenAI 技術成員
OpenAI 正在減少第三方可觀測性成本,將更多能力內建於 CNCF 堆棧。團隊從 7-8 人擴大到 16 人,成為基於 CNCF 的數據基礎設施團隊。