作者:宋文喆
在應(yīng)用程序部署到服務(wù)器上以后,可能會出現(xiàn)CPU占用率過高,I/O吞吐量下降等性能問題,此時,就需要對程序進(jìn)行優(yōu)化。性能調(diào)優(yōu)是一個比較復(fù)雜的過程,包括建立基準(zhǔn)、壓力測試、確定瓶頸、實施優(yōu)化、確認(rèn)優(yōu)化這5個步驟。調(diào)優(yōu)過程對程序員的知識結(jié)構(gòu)要求非常高,需要非常熟悉硬件、操作系統(tǒng)(OS\JVM)、應(yīng)用程序等多個方面。
鯤鵬920處理器(兼容ARM架構(gòu))的整體設(shè)計思路就是通過“多核”獲得強悍性能。具有更多的核數(shù),2NUMA/Socket,L3 Cacheline為128 Byte。這些都是芯片的一些特性,這些特性對于性能調(diào)優(yōu)也會產(chǎn)生不同的影響。
1月11日,華為鯤鵬開發(fā)者技術(shù)沙龍-杭州站,來自華為的四位技術(shù)專家分享了四個議題,分別是—基于鯤鵬處理器的性能調(diào)優(yōu);鯤鵬大數(shù)據(jù)優(yōu)化實踐;A-Tune自調(diào)優(yōu)技術(shù)詳解;iSulad容器引擎分享與實踐。議題分享結(jié)束后,緊接著就是最受大家歡迎的現(xiàn)場編碼環(huán)節(jié)。華為技術(shù)專家現(xiàn)場演示并指導(dǎo)開發(fā)者進(jìn)行實操。
參會者們合影留念
鯤鵬處理器的性能調(diào)優(yōu)思路
第一位分享嘉賓是,華為智能計算高級工程師蘇林。他指出性能調(diào)優(yōu)是一個長期的過程,建議開發(fā)者們選擇一個合理的性能調(diào)優(yōu)平衡點,只有最合適的才能達(dá)到最好的性能。以鯤鵬處理器來說,對性能影響比較大的兩個特性,第一個是NUMA架構(gòu),第二個是L3 Cacheline。
? 鯤鵬處理器支持NUMA架構(gòu),通過適當(dāng)?shù)男阅苷{(diào)優(yōu),既能夠達(dá)成很好的性能,又能夠解決SMP架構(gòu)下的總線瓶頸問題,提供更強的多核擴(kuò)展能力,以及更好更靈活的計算能力。
? 注意Cacheline偽共享,鯤鵬920和x86的Cacheline大小不一致,可能會出現(xiàn)在X86上優(yōu)化好的程序在鯤鵬 920 上運行時的性能偏低的情況,需要重新修改業(yè)務(wù)代碼數(shù)據(jù)內(nèi)存對齊大小。X86 L3 Cacheline大小為64字節(jié),鯤鵬920的Cacheline為128字節(jié)。
華為智能計算高級工程師 蘇林
鯤鵬處理器支持NUMA(Non-uniform memory access, 非統(tǒng)一內(nèi)存訪問)架構(gòu),能夠很好的解決SMP技術(shù)對CPU核數(shù)的制約。NUMA架構(gòu)將多個核結(jié)成一個節(jié)點 (Node),每一個節(jié)點相當(dāng)于是一個對稱多處理機(jī)(SMP),一塊CPU的節(jié)點之間通過On-chip Network通訊,不同的CPU之間采用Hydra Interface實現(xiàn)高帶寬低時延的片間通訊,在NUMA架構(gòu)下,整個內(nèi)存空間在物理上是分布式的,所有這些內(nèi)存的集合就是整個系統(tǒng)的全局內(nèi)存。每個核訪問內(nèi)存的時間取決于內(nèi)存相對于處理器的位置,訪問本地內(nèi)存(本節(jié)點內(nèi))會更快一些。
NUMA架構(gòu)的特點
可以看到不同NUMA內(nèi)的CPU core訪問同一個位置的內(nèi)存,性能不同。內(nèi)存訪問延時從高到低為:跨CPU > 跨NUMA不跨CPU > NUMA內(nèi),因此在應(yīng)用程序運行時要盡可能的避免跨NUMA訪問內(nèi)存,可以通過設(shè)置線程的 CPU親和性來實現(xiàn)。
NUMA配置方法
CPU、內(nèi)存、網(wǎng)卡、磁盤這四個模塊,系統(tǒng)都為我們提供了一些工具進(jìn)行性能分析。
系統(tǒng)的瓶頸判斷
鯤鵬大數(shù)據(jù)優(yōu)化實踐
第二位分享嘉賓是,華為鯤鵬大數(shù)據(jù)解決方案高級工程師,程碩峰。他向開發(fā)者們介紹了鯤鵬大數(shù)據(jù)的完整生態(tài),分享開源大數(shù)據(jù)平臺Ambari+HDP組件的移植經(jīng)驗。最后介紹了鯤鵬開發(fā)套件(Kunpeng Developer Kit)可實現(xiàn)對海量代碼進(jìn)行快速掃描和分析,并提供專業(yè)的代碼移植指導(dǎo),以及移植后全面的系統(tǒng)性能分析與可視化呈現(xiàn),從而極大提升軟件開發(fā)者移植與調(diào)優(yōu)效率。
華為鯤鵬大數(shù)據(jù)解決方案高級工程師 程碩鋒
從下圖可以看到,鯤鵬大數(shù)據(jù)生態(tài)非常完善,在大數(shù)據(jù)領(lǐng)域,各個方面都有了一定的支持,硬件部分,泰山提供了TaiShan 2280 100/200型服務(wù)器。芯片有鯤鵬的916、920芯片可供選擇,通過24核、32核、48核、64核來滿足企業(yè)對不同算力的要求。大數(shù)據(jù)組件方面可以從數(shù)據(jù)源頭到數(shù)據(jù)處理、存儲都能夠完美支持。當(dāng)前支持的大數(shù)據(jù)平臺有華為Fusionlnsight,還有Ambari,東方國信,美亞,他們將為大數(shù)據(jù)快速移植到鯤鵬平臺上來提供支持。
鯤鵬大數(shù)據(jù)解決方案
為了將開源大數(shù)據(jù)平臺Ambari+HDP組件移植到泰山,都需要移植什么內(nèi)容?第一類是Jar包,有些Jar包含有So,需要在鯤鵬平臺重新編譯。組件本身的So文件,需要重新編譯。最后是可執(zhí)行二進(jìn)制文件,依賴底層的芯片架構(gòu),需要重新編譯。具體分為四個步驟:
? 將RPM包分類,分為X86_64和Noarch兩個類型
? 使用checkSo工具掃描RPM
? 分析RPM包,查詢得出得出安裝需要的依賴軟件,解壓獲取rpm中源文件、軟鏈接,檢查/var/lib等關(guān)鍵目錄,對比安裝前后新增的源文件、軟鏈接。
? 構(gòu)建RPM包
開源大數(shù)據(jù)平臺Ambari+HDP組件移植經(jīng)驗總結(jié)
A-Tune自調(diào)優(yōu)技術(shù)詳解
第三位分享嘉賓是,華為2012實驗室高級工程師謝志鵬。性能調(diào)優(yōu)代表著時間和成本的支出。工程師往往需要搭建測試工具找到瓶頸點,依靠人工巡檢查找故障原因,安裝多種監(jiān)控工具,匯總分析數(shù)十個數(shù)據(jù),期間可能要花掉數(shù)個工程師數(shù)周的時間,才得以提升系統(tǒng)性能。
華為2012實驗室高級工程師 謝志鵬
即使是在實驗室的調(diào)優(yōu)達(dá)到了預(yù)期的效果,但是往往在業(yè)務(wù)運行真實環(huán)境里面,業(yè)務(wù)負(fù)載都是會動態(tài)變化,而工程師的調(diào)優(yōu)工作,往往都只能應(yīng)對靜態(tài)負(fù)載場景,對于動態(tài)負(fù)載場景束手無策。
當(dāng)前系統(tǒng)調(diào)優(yōu)的兩大痛點是:
? 如何使操作系統(tǒng)感知上層業(yè)務(wù)
? 如何降低人工調(diào)優(yōu)成本
基于openEuler的自調(diào)優(yōu)系統(tǒng)A-Tune,使用系統(tǒng)畫像技術(shù),能識別業(yè)務(wù)匹配最佳資源模型,實時響應(yīng)業(yè)務(wù)特征變化。目前,系統(tǒng)畫像技術(shù)有兩個關(guān)鍵技術(shù)點。第一個是感知技術(shù),怎么去構(gòu)建系統(tǒng)畫像?主要是通過分類、聚類相結(jié)合的方法,分別在CPU、IO、網(wǎng)絡(luò)、內(nèi)存方面聚類然后通過一些具體的業(yè)務(wù)進(jìn)行一些細(xì)化的分類,來達(dá)到精準(zhǔn)識別業(yè)務(wù)的效果。
系統(tǒng)畫像構(gòu)建與感知技術(shù)
第二個關(guān)鍵技術(shù)點,基于機(jī)器學(xué)習(xí)算法的調(diào)優(yōu)參數(shù)搜索技術(shù)對于機(jī)器學(xué)習(xí)里面的貝葉斯優(yōu)化算法去做了一個調(diào)優(yōu)參數(shù)的自動搜索技術(shù),工程師只需要提供一組他認(rèn)為對我們業(yè)務(wù)有性能影響的參數(shù),以及參數(shù)范圍,接下來,把這些參數(shù)和參數(shù)范圍告訴我們的機(jī)器學(xué)習(xí)算法,并且給出評價指標(biāo)。
iSulad的分享與實踐
第四位分享嘉賓是,華為iSula容器團(tuán)隊架構(gòu)師蔡灝旻。根據(jù)Sysdig《2019年的容器使用報告》顯示,在容器密度方面,與2018年相比,每臺主機(jī)中的容器密度提高了100%,從15個增加到了30個其中最大節(jié)點密度已經(jīng)達(dá)到了250個。邊緣節(jié)點資源敏感,留給容器基礎(chǔ)建設(shè)的資源屈指可數(shù),一個更輕量、更快速的容器引擎呼之欲出。
華為iSula容器團(tuán)隊架構(gòu)師 蔡灝旻
iSula為全量的容器軟件棧,包括引擎、網(wǎng)絡(luò)、存儲、工具集與容器OS;iSulad 作為其中輕量化的容器引擎,可以為多種場景提供最靈活、最穩(wěn)定、最安全的底層支撐,目前已開源給大家使用。開源地址:https://gitee.com/openeuler/iSulad
iSulad具有輕、快、易、靈四個特點:
? 輕:iSulad的第一個使用場景是在端側(cè)設(shè)備上,在一個智能攝像頭上使用容器來達(dá)到快速、簡單切換算法應(yīng)用部署的功能
? 快:采用C/C++語言實現(xiàn),具備運行速度快、底噪低等特性,且LXC運行時優(yōu)秀的并發(fā)設(shè)計也為iSulad并發(fā)性能提供了基石
? 易:iSulad為了使開發(fā)者遷移方便,正在籌備開發(fā)一系列遷移工具,幫助開發(fā)者將自己的應(yīng)用平滑遷移到iSulad上來
? 靈:針對不同的使用場景提供不同的模式供大家組合切換,開發(fā)者可以根據(jù)自己的使用需要靈活配置切換注重性能的performance模式和注重資源占用的light模式
iSulad的架構(gòu)
熱烈的調(diào)優(yōu)實踐
最后的調(diào)優(yōu)實踐上機(jī)環(huán)節(jié)是最熱烈的,開發(fā)者們果然擁有最忠實的技術(shù)信仰,每一位指導(dǎo)老師身旁都圍繞著一群開發(fā)者,從系統(tǒng)配置、調(diào)優(yōu)思路到性能優(yōu)化、故障分析,每一位開發(fā)者都沉浸在濃厚的技術(shù)探討氛圍中,我們也采訪了幾位開發(fā)者。
濃厚的技術(shù)探討氛圍
Q1:請問您今天參加的實踐組是?感覺本次沙龍技術(shù)實踐怎么樣?
A:參加了iSula鏡像,整體的議程感覺都很好。實踐環(huán)節(jié)很好可以讓我們切身,馬上感受到這個產(chǎn)品怎么樣。前面是理論講座,后面馬上就能使用是看得見摸得著的,這個非常好。
Q2:以后希望能聽到鯤鵬技術(shù)沙龍更多內(nèi)容分享的是?
A:更多應(yīng)用指導(dǎo)性更強的內(nèi)容,因為會在工作中用到。比如鯤鵬可以聯(lián)合研究系統(tǒng)級別的部門和研究大數(shù)據(jù)的部門,將大數(shù)據(jù)應(yīng)用系統(tǒng)結(jié)合起來講解,這樣能會產(chǎn)生更好的效果。這樣應(yīng)用指導(dǎo)性也會更強。
熱烈的編碼實踐環(huán)節(jié)
申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!