(本文最初由Ampere Computing發表)
您可能不熟悉Amadeus,因為它是一家B2B公司……但當您在互聯網上搜索航班或酒店時,您很有可能在幕後使用了Amadeus支持的服務,Amadeus雲架構師Didier Spezia如是說。
Amadeus是一家全球領先的旅遊IT公司,為旅遊業的眾多參與者提供支持:航空公司、酒店連鎖店、旅行社、機場等。 Amadeus的業務之一是為旅行社和Kayak或Expedia等公司提供航班搜索和定價服務。 Amadeus還支持更高級的功能,例如基於預算的查詢和日曆約束查詢,這些功能需要預先計算多維索引。在眾多航空公司中搜索具有可用座位的合適航班非常困難。
獲得最佳解決方案被認為是一個NP難題,因此為了提供盡力而為的答案,Amadeus結合使用了蠻力法、圖算法和啟發式算法。它需要大型分佈式系統並消耗大量CPU,如今在Amadeus的內部設施上運行在數千台機器上。為了滿足客戶的需求,Amadeus在全球運營著多個內部設施,還在多個雲服務提供商上運行工作負載。
幾年前,Amadeus啟動了一個大型的、為期多年的項目,旨在將其大部分內部資源遷移到Azure。對於這個具體的用例,Amadeus與微軟合作驗證了基於Ampere ARM的虛擬機(VM)。
微軟的Mo Farhat在討論中評論道:
從我們的立場來看……[微軟]希望為我們的客戶提供選擇。我們不會將[他們]引導到一種架構與另一種架構……或一個CPU與另一個CPU之間。我們希望提供一系列選項並提供可信的建議……
最初,作為過渡的一部分,Amadeus並不一定有興趣引入不同的架構。 Spezia表示:
我們只引入不同的架構,因為我們期待一些好處……我們非常關注我們可以從Ampere獲得的性能/價格比……我們希望能夠將使用傳統x86 CPU的機器與使用Ampere CPU的機器混合起來,並在最適合該工作負載的CPU上運行工作負載。
他們選擇了一個大型的、分佈式的、計算密集型的C 應用程序作為第一個在Ampere上運行的應用程序,因為他們認為這與x86相比將提供最大的比較優勢。
我們認為基於ARM的機器可能是一個不錯的選擇,但當然,我們需要驗證和確認我們的假設。我們首先運行了許多合成基準測試。 ……結果是積極的,但合成基準測試並不十分相關。由於在生態系統中引入新的CPU架構並非中性,因此我們需要更好的保證,並決定使用真實的應用程序代碼進行基準測試。 ……該應用程序是一個大型C 代碼庫。它依賴於許多底層的開源庫,加上一些Amadeus中間件庫,最後是功能代碼本身。此代碼的一個子集已被隔離用於在測試平台上運行基準測試。
使該項目取得成功的因素之一是Amadeus團隊能夠在項目早期獲得Ampere服務器。 Didier表示:
首先,Amadeus在內部安裝了幾台帶有Ampere Altra CPU的機器。它們用於最初的移植工作,並且至今仍在運行我們的CI/CD。由於我們正處於向公共雲遷移的過程中,並且與復雜的生態系統高度混合,因此我們非常感謝能夠在內部部署一些機器,這些機器與微軟在Azure中提供的VM具有相同的CPU架構。我們發現,使用運行目標架構的機器進行CI/CD和測試,而不是進行交叉編譯,是無價的。
該應用程序的CI繼續在Amadeus實驗室中的Ampere服務器上運行。
我們的代碼移植始於使用與Arm64兼容的工具鏈(Aarch64目標)重新編譯所有內容,這對我們的CI/CD產生了影響。
將此代碼移植到Ampere的過程非常順利,儘管發現了一些問題。一些特定於平台的編譯器行為,例如“char”數據類型是有符號還是無符號,在x86和Arm64上有所不同,並且應用程序對行為做出了假設。
為了編譯他們的大型C 代碼庫,Amadeus同時使用了GCC和Clang C 編譯器。作為移植的一部分所需更改中,一些開源依賴項需要升級,以利用改進的Arm64支持。其中一些升級涉及API或行為更改,需要進一步的代碼更改。此外,作為遷移的一部分,在x86上未顯示自身的一些潛在代碼問題(與未定義或平台定義的行為有關)被暴露並修復。
在雲中,Amadeus應用程序部署在OpenShift集群(Red Hat基於Kubernetes的容器平台)上。為了在生產環境中運行,應用程序需要一個完整的中間件生態系統(企業服務總線、日誌記錄和監控設施等),該生態系統也託管在OpenShift中。
Amadeus不想將其整個應用程序基礎設施遷移到Arm64。另一個值得信賴的合作夥伴Red Hat已經將支持異構硬件架構的Kubernetes功能作為支持的功能交付到OpenShift中。
具體來說,這意味著單個OpenShift集群可以包含x86和ARM計算節點。通過使用x86和Arm64節點定義節點集,並使用標籤和“污點”來部署容器,開發人員可以輕鬆決定要安排pod的VM類型。因此,Amadeus應用程序基礎設施的支持組件可以在傳統的x86 VM上運行,而Amadeus決定出於成本和性能原因在Arm64上運行的應用程序pod可以在由Ampere Altra CPU驅動的Azure Dps v5 VM上運行。
異構集群對於支持增量遷移和避免將OpenShift集群的數量增加一倍至關重要。
顯然,在進入生產環境之前,Amadeus希望通過一些基準測試來驗證他們的假設。使用cpubench1a合成基準測試,使用32個vCPU的VM,單個Ampere Altra VM(D32ps_v5)提供的原始吞吐量高出20%,性能/價格比比同等Intel VM提高了50%,比同等AMD VM的原始吞吐量高出13%,性能/價格吞吐量高出27%。
當使用真實的購物應用程序基準測試進行基準測試時,吞吐量和響應時間之間存在權衡。吞吐量越高,響應時間受到的影響越大。 Ampere Altra VM的性能/價格比提高了47%,平均響應時間比Intel VM下降了11%,比AMD VM的性能/價格比提高了37%,平均響應時間下降了9%。
Amadeus現在已經移植了足夠的應用程序組件來運行真實的應用程序(不僅僅是基準測試)。該公司目前正在完成集成測試並驗證平台的最後部分。完成後,Amadeus將開始在多個Azure區域擴展生產環境。
Ampere的首款雲原生處理器專為可持續的雲計算而構建,可提供業界前所未有的可預測的高性能、平台可擴展性和電源效率。我們邀請您了解更多關於我們的開發人員工作的信息,查找最佳實踐、見解並加入對話:developer.amperecomputing.com和community.amperecomputing.com。
與我們的專家銷售團隊聯繫以了解合作夥伴關係或獲取更多信息,或通過我們的開發者訪問計劃獲得Ampere Systems的試用訪問權限。
以上是Amadeus雲遷移在Ampere Altra實例上的詳細內容。更多資訊請關注PHP中文網其他相關文章!