Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
一直以來 Microsoft 都在網際網路上運作多樣服務,但是就在幾年前情況發生轉變,也是我們 CEO Steve Ballmer 的至理名言“公司目前正在孤注一擲。雲端運算! 我們需要來一同來面對。”我們應該要同舟共濟,朝著同一個方向努力,並透過互相學習的方式來傳遞最佳的雲端產品。我們正從目前 Windows Azure 雲端服務中總結相關管理經驗,並且將其融入到我們的產品當中進行改進。在我們規劃及研發 Windows Server 2012 期間,我們在雲端服務上花費了大量的時間,以瞭解雲端服務中的相關的優點及缺點為何。當您以我們的規模運作服務時,任何一個小問題都將會被無限放大,因此每一次的改進都有著極大的效益。我們將這些經驗轉變成您目前看到的許多功能,這些功能包括自動化機制、支援資料中心拓撲架構、高可用性、最小化平均故障檢測時間 (MTTD)/平均故障復原時間 (MTTR)…等。在今天的部落格文章當中,Bing 團隊的軟體開發工程師 Mukul Sabharwal,將會討論 Windows Server 2012 的一些功能以及對 Bing 服務的影響,同時說明為何 Bing 正在以最快的速度進行應用和部署 Windows Server 2012。正如您所看到的,Windows Server 2012 是真正針對雲端環境所優化的作業系統。
Cheers !
Jeffrey
在公佈最新 Windows Server 2012 RC版本時,Bing.com 團隊同時也考慮要如何才能應用並受惠於該作業系統的相關新功能。Bing.com為遍及全球各地資料中心,並且運作在成千上萬台電腦主機上的雲端服務。效能對於 Bing 雲端服務來說非常關鍵。Bing 每秒鐘要為數千個使用者查詢請求提供服務,而使用者則要求查詢結果的準確性和回應速度。
我們在部署 Windows Server 2012 時利用四種關鍵的新功能,包括:
- 內建於 Windows Server 2012 中的 Microsoft .NET Framework 4.5,包括 後台垃圾回收機制和相關延遲時間改善功能
- 改善並加快啟動時的效能反應 (在 .NET 4.5 中啟用多核心 JIT 功能)
- 針對由 .NET 即時編譯的 64 位元應用程式收集及堆疊功能
- 評估 Hyper-V 3.0(Window Server 2012 中 Hyper-V 版本)
預先安裝 .NET Framework 4.5
我們的 Rendering Tier 完全透過代管程式碼 (Managed Code) 進行運作,其依賴於 .NET Framework 和 Web 框架 ASP.NET 以及 ASP.NET MVC 的功能。我們撰寫代管程式碼的主要原因之一在於 CLR 可以提高開發人員的工作效率並且保障運作時的安全性。但是這些功能也會產生效能上的成本,例如 垃圾收集 GC (Garbage Collection)。
伺服器後台垃圾回收
.NET 4.5 導入了 伺服器應用程式後台垃圾回收機制。後台垃圾回收機制在 .NET 4 中發佈,該功能主要為用戶端應用程式,並且曾經風靡一時也正因如此,我們對於 Windows Server 2012 能夠將其導入到伺服器中而感到興奮不已。當然,看到這種結果我們也十分高興!
下列 InternalRequestLatency 圖表中顯示,我們的應用程式在執行非 I/O 任務時所花費的時間。(如您所知,我們的設定目標為讓第 99 th 變得更快。)
在下列的圖表當中,請注意大部分效益都源至於減少處理所建立代管記憶體 (Managed Memory) 的時間,而這是為了建立 垃圾收集 GC (Garbage Collection) 請求服務的重要項目。(請注意! 日期與本部落格文章中的所有圖表都已經進行了相關處理。)
另一種最佳效能計算方式及 ASP.NET 應用程式伺服器健康狀況的指標,就是在 ASP.NET 中佇列的請求數量 (如下圖所示)。請注意 5 月 25 日時曲線的急速下滑!
升級至 Windows Server 2012 將為您的代管應用程式 (Managed Application) 帶來同樣的影響。縮短垃圾收集時間之後,表示將有更多的時間為使用者請求提供服務。因此將有效縮短延遲時間並且改善服務的處理能力。
採用多核心 JIT 進行編譯
在 Windows Server 2012 中透過 .NET 4.5 實作出的另一重要功能,便是使用多核心進行 JIT 編譯的動作。該功能為一種依照組態設定進行優化的方法,也就是在 後台執行緒 (Background Thread) 編譯執行動作中執行緒可能請求的方法,在理想情況下應用程式會在需要運作時早已經完成 JIT 編譯的動作。
ASP.NET 應用程式預設便已經啟用此功能,因此只需讓您的 ASP.NET 應用程式自動獲得多核心 JIT 編譯機制,便可以立即提升整體運作效能。
您可能會納悶: 為什麼啟動時間對於伺服器端的應用程式來說非常重要? 因為使用者希望的是,在必要時才需要重新啟動服務,並且希望可以自行選擇時間 (避開尖峰時間) 來完成此一動作。但是,如果您的應用程式不幸發生當機的情況時該怎麼辦?
因此啟動時間的長短對於服務的高可用性來說非常重要。當服務發生中斷的情況後進行快速復原時,此時您便可以體驗到啟動時間長短的差異性有多重要了。那麼您可能會接著問,啟動時間是否真正縮短了?從下列圖表中可以看到啟動時間整整縮短了 50%,並且在服務中斷時重新復原的速度也提高了將近一倍!
針對營運伺服器上的應用程式進行採樣分析
Windows Server 2012 中另一項新增功能,便是透過 JIT 編譯 64 位元 .NET 應用程式收集及堆疊功能。
我們將效能計數器作為我們的主要監控機制,同時也是傳送給管理人員通知中的第一行內容。它們不僅涉及到我們在本文中所討論的問題(垃圾收集時間和 ASP.NET 佇列請求),而且還會涉及其他重要問題,例如 CPU 佔用時間百分比和異常數量。
效能計數器對於檢測效能發生下降時極為重要,因為它會將深入檢查操作任務的健康狀況。但是,它們通常不足以診斷效能問題的“根本原因”。因此我們假設效能計數器數值飆升。例如 CPU 佔用時間百分比增加一倍進而對延遲時間產生影響。接下來我們該怎麼做? 就 Windows Server 2012 來說,我們的下一步便是啟用低資源消耗的採樣分析機制 (Sample-Based Profiling)。
Windows Server 2012 當中透過 JIT 編譯 64 位元 .NET 應用程式收集及堆疊功能,.Net 應用程式透過 Windows 事件追蹤 (ETW,Event Tracing for Windows) 系統來完成。如果您熟悉事件追蹤系統,便會瞭解這是一種系統範圍內的服務,不會要求需要重新開機; 因此它不具入侵性(也就是說不會附加到某個執行程序)、根據您所訂閱的事件、低資源消耗:在採樣分析機制運作時僅產生約 10% 的 CPU 資源成本。
CPU 佔用時間百分比的上升趨勢僅由 80% 上升至 90%。這將轉變為幾乎等同於百分比的延遲效能降低,如下圖所示。
當診斷效能問題的“根本發生原因”變得非常重要時,10% 的效能降低是可以接受的。
我們已經在本文當中討論了採樣分析機制,但是此功能還能擴充至其他類型的事件追蹤系統,包括 Context Switch 事件和 ReadyThread 事件。例如 您不僅可以分析佔用大量 CPU 使用率的問題,而且可以嘗試解決由 I/O 或 Thread-Scheduling 所產生的問題。(請注意! 啟用 Context Switch 分析機制的資源消耗成本將高於採樣分析機制,在我們的應用程式當中對 CPU 產生約 30% 的效能影響。)
有時,僅會出現在正式環境中才會重複出現的問題,而這些問題可以在大規模範圍內產生影響。能夠採用低資源消耗的日誌分析工具是種非常巨大的優勢,就 Windows Server 2012 來說,代管的應用程式現在可以獲得與本機應用程式相同的原生支援。
(請注意! 當 Windows Server 2008 導入可在採樣分析設定檔 ETW 事件中獲得堆疊功能時,對於已經由 JIT 編譯器編譯過的 64 位元應用程式是無效的。)
Hyper-V 3 和支援 Guest NUMA 機制
在 Windows Server 2012 推出之前,採用虛擬化技術就表示會有額外的資源成本,即使考慮到它所帶來的全部效益情況依然如此。整體來說,虛擬化之後所產生的間接軟體成本讓人無法接受。此外,在我們的綜合實驗室測試中虛擬 CPU 的數量限制 (最多 4 個)也成為了 VM 虛擬主機運算能力的瓶頸。
但是在 Windows Server 2012 中的 Hyper-V 3.0 功能,具備大幅度的“擴充 (Scale)”能力。其中我們對於支援 Guest NUMA 機制感到格外興奮。感知 NUMA 拓撲功能對於記憶體智慧分配機制來說非常重要,最小化跨節點的記憶體存取往往是加速應用程式的關鍵環節。
籍由全新 Windows Server 2012 所整合的 Guest OS 支援 NUMA 機制,我們正在對使用 Hyper-V 3.0 進行重新評估。我們預計 Hyper-V 將能夠滿足我們對於效能的要求,同時又能節省大量的成本。
雲端業務和雲端優化作業系統
Bing.com 已經透過使用公開的 RC 版本切換到 Windows Server 2012 中得到了明顯的改善。我們基本上可以將 CPU 佔用時間百分比降低一半,以為代管應用程式(包括垃圾收集)和減少重新啟動服務時的啟動時間提供關鍵服務。透過簡化過程監控並將其內建於作業系統中,並且我們已經在效能方面得到明顯的提升。我們還在探索如何將 NUMA 效率與 Hyper-V 3.0 互相結合,以虛擬化技術增強我們的服務。Bing.com 是公認成功的大型規模企業雲端服務,這充分說明我們如何將 Windows Server 2012 建構成一種真正的雲端優化作業系統。
Bing.com 是雲端服務。該雲端服務十分快速,它運作於成千上萬台電腦上,跨越全球範圍內大量的資料中心。目前,該雲端服務已經透過 Windows Server 2012 得到優化。
總結
全新的 Windows Server 2012 功能使 Bing.com 團隊在考慮遷移到最新作業系統時,對 Windows Server 2012 作業系統興趣十足。從初期快速遷移影響性的評估到真正的全面部署,這樣的發展過程為 .NET 4.5 功能、多核心 JIT 功能提供了巨大的效益,並且效能大幅改進的 Hyper-V 3.0 功能同樣獲得極大的效益。
現在您已經瞭解這些 Bing.com的內部優化運作機制,最後請不要忘記以下內容: 全球範圍內所有 Bing.com 搜索結果現在都由 Windows Server 2012 提供服務!
- 內建的 .NET 4.5(包含於 Windows Server 2012 當中),包括後台垃圾回收和延遲改善功能。
- 透過 .NET 4.5 的多核心 JIT 功能啟用,達成啟動效能的改進。
- 針對由 .NET 即時編譯的 64 位元應用程式收集調用堆疊功能。
- Hyper-V 3.0 在未來上的部署應用。