首頁(yè) > 文章 > 經(jīng)濟(jì) > 產(chǎn)業(yè)研究

龍芯完成”從CPU到系統(tǒng)”全鏈條虛擬機(jī)產(chǎn)品自主研制

高翔 · 2019-04-25 · 來(lái)源:龍芯中科
關(guān)注龍芯 收藏( 評(píng)論() 字體: / /

  

龍芯KVM虛擬機(jī)產(chǎn)品解決方案發(fā)布

 

  龍芯公司于2019年4月正式發(fā)布了基于龍芯3B3000 CPU的KVM虛擬機(jī)產(chǎn)品解決方案,可以支持全功能的虛擬化云主機(jī)系統(tǒng),支持以Spice協(xié)議和QXL虛擬圖形為基礎(chǔ)的云桌面應(yīng)用,支持Openstack等主流云計(jì)算環(huán)境。這是中國(guó)IT企業(yè)首次完成”從CPU到系統(tǒng)”全鏈條虛擬機(jī)產(chǎn)品的自主研制,也使得龍芯CPU生態(tài)系統(tǒng)具備了支撐完整云計(jì)算環(huán)境的應(yīng)用能力。

  KVM虛擬機(jī)作為云計(jì)算環(huán)境的關(guān)鍵組件,是信息技術(shù)產(chǎn)業(yè)領(lǐng)域典型的”硬科技”產(chǎn)品,其研發(fā)跨CPU芯片、Linux內(nèi)核、云計(jì)算等復(fù)雜技術(shù)領(lǐng)域,涵蓋了CPU芯片的虛擬化設(shè)計(jì)、操作系統(tǒng)內(nèi)核的系統(tǒng)級(jí)虛擬化支持、虛擬機(jī)模擬執(zhí)行環(huán)境、云計(jì)算應(yīng)用支撐環(huán)境等眾多核心技術(shù)。本次發(fā)布的KVM虛擬機(jī)產(chǎn)品解決方案包括下面五方面的技術(shù)內(nèi)涵:

  在CPU芯片方面,龍芯3B3000 CPU在處理器執(zhí)行模式、流水線(xiàn)執(zhí)行環(huán)境、TLB存儲(chǔ)管理、中斷與異常機(jī)制、虛擬機(jī)輔助機(jī)制和時(shí)鐘系統(tǒng)方面實(shí)現(xiàn)了對(duì)虛擬化的硬件支持,可在多個(gè)層次和各類(lèi)場(chǎng)景下顯著提升虛擬化的效率。

  在Linux內(nèi)核方面,以L(fǎng)inux內(nèi)核作為基礎(chǔ)環(huán)境,實(shí)現(xiàn)了標(biāo)準(zhǔn)的KVM虛擬化模塊,完成了對(duì)CPU虛擬化、存儲(chǔ)虛擬化和IO虛擬化等的支持。以Spec CPU2000為代表的典型應(yīng)用基本都可以達(dá)到95%以上的虛擬化執(zhí)行效率。

  在QEMU虛擬機(jī)模擬環(huán)境方面,實(shí)現(xiàn)了對(duì)龍芯3號(hào)計(jì)算機(jī)系統(tǒng)架構(gòu)的標(biāo)準(zhǔn)化模擬,支持虛擬PCI總線(xiàn)動(dòng)態(tài)枚舉、虛擬USB動(dòng)態(tài)掃描,實(shí)現(xiàn)了基于VirtIO的IO虛擬化支持,可以高效支持虛擬網(wǎng)絡(luò)、虛擬顯示等功能。

  在云桌面應(yīng)用環(huán)境(VDI)方面,完成了Spice協(xié)議在龍芯系統(tǒng)上的優(yōu)化適配,完成了QXL虛擬圖形的開(kāi)發(fā)適配,實(shí)現(xiàn)了USB重定向等功能,對(duì)Remote-Viewer、OpenSSL等虛擬化組件進(jìn)行了深度優(yōu)化,具備完備支撐云桌面辦公環(huán)境的應(yīng)用能力。

  在云計(jì)算應(yīng)用環(huán)境方面,完成了Libvirt、VirtManager等基礎(chǔ)運(yùn)維管控組件的適配開(kāi)發(fā),實(shí)現(xiàn)了虛擬機(jī)動(dòng)態(tài)遷移、動(dòng)態(tài)資源調(diào)整,故障自動(dòng)恢復(fù)等功能開(kāi)發(fā),完成了Openstack等大型云計(jì)算應(yīng)用環(huán)境的移植和驗(yàn)證。

  

  圖1 啟動(dòng)KVM虛擬機(jī)

  

  圖2 KVM云主機(jī)環(huán)境運(yùn)行docker容器

  

  圖3 虛擬桌面(VDI)-在線(xiàn)視頻播放

  

圖4 Openstack系統(tǒng)管理

 

  

  圖5 Openstack虛擬機(jī)控制臺(tái)

  秉持“開(kāi)源開(kāi)放、合作共贏”的生態(tài)建設(shè)宗旨,龍芯KVM虛擬機(jī)產(chǎn)品解決方案將通過(guò)“源碼開(kāi)放、免費(fèi)下載”的形式對(duì)外發(fā)布,云廠(chǎng)商、操作系統(tǒng)廠(chǎng)商等企業(yè)機(jī)構(gòu)和個(gè)人愛(ài)好者都可以通過(guò)龍芯開(kāi)源社區(qū)網(wǎng)站(http://www.loongnix.cn)下載龍芯KVM虛擬機(jī)的產(chǎn)品、源碼及各類(lèi)開(kāi)發(fā)和使用文檔。

  龍芯KVM虛擬機(jī)的發(fā)布對(duì)完善國(guó)產(chǎn)CPU生態(tài)系統(tǒng)、推動(dòng)自主可控云計(jì)算產(chǎn)業(yè)健康發(fā)展、培養(yǎng)云計(jì)算核心技術(shù)團(tuán)隊(duì)等方面都有著重要意義。以”堅(jiān)持自主研發(fā)、掌握核心技術(shù)”為價(jià)值觀的龍芯公司期待著與產(chǎn)業(yè)鏈的合作伙伴們攜手并進(jìn),共創(chuàng)國(guó)產(chǎn)生態(tài)系統(tǒng)的美好未來(lái)。

  

龍芯KVM虛擬機(jī)研發(fā)紀(jì)實(shí)

 

  KVM虛擬機(jī)作為云計(jì)算環(huán)境的基礎(chǔ)支撐組件,是信息技術(shù)產(chǎn)業(yè)領(lǐng)域典型的”硬科技”產(chǎn)品。為了滿(mǎn)足自主信息化對(duì)云計(jì)算日益迫切的應(yīng)用需求,龍芯公司于2019年第二季度發(fā)布了龍芯KVM虛擬機(jī)產(chǎn)品。這是國(guó)內(nèi)技術(shù)團(tuán)隊(duì)首次完成”從CPU到系統(tǒng)”全鏈條虛擬機(jī)產(chǎn)品的自主研制。

  KVM虛擬機(jī)的研發(fā)跨CPU芯片、操作系統(tǒng)內(nèi)核、云計(jì)算等多個(gè)復(fù)雜技術(shù)領(lǐng)域,涵蓋了CPU芯片的虛擬化設(shè)計(jì)、操作系統(tǒng)內(nèi)核的系統(tǒng)級(jí)虛擬化支持、虛擬機(jī)模擬執(zhí)行環(huán)境、云計(jì)算應(yīng)用支撐環(huán)境等眾多核心技術(shù)。從國(guó)際上看,僅有Intel、ARM等幾家國(guó)外公司掌握了“從芯片到系統(tǒng)”的完整KVM虛擬機(jī)核心研發(fā)技術(shù),這也導(dǎo)致雖然中國(guó)的云計(jì)算產(chǎn)業(yè)在應(yīng)用規(guī)模等指標(biāo)上已經(jīng)達(dá)到國(guó)際先進(jìn)水平,然而在虛擬機(jī)這一關(guān)鍵核心技術(shù)上,國(guó)內(nèi)云廠(chǎng)商無(wú)一例外地深度依賴(lài)國(guó)外虛擬機(jī)產(chǎn)品和技術(shù)。龍芯KVM虛擬機(jī)系統(tǒng)的發(fā)布對(duì)完善國(guó)產(chǎn)CPU技術(shù)生態(tài)、推動(dòng)自主可控云計(jì)算產(chǎn)業(yè)健康發(fā)展、培養(yǎng)云計(jì)算核心技術(shù)團(tuán)隊(duì)等方面都有著重要意義。

  1

  歷史積累

  龍芯虛擬化設(shè)計(jì)可以追溯到十多年前的龍芯2號(hào)研制時(shí)期,我們需要一款能夠快速進(jìn)行操作系統(tǒng)調(diào)試的虛擬驗(yàn)證環(huán)境。當(dāng)時(shí)是2003年,后來(lái)著名的QEMU模擬器還沒(méi)有面世,我的師兄張福新就找來(lái)了一個(gè)90年代斯坦福大學(xué)發(fā)布的SimOS模擬器。斯坦福大學(xué)是MIPS CPU的誕生地,這個(gè)SimOS天生支持MIPS指令集,通過(guò)一些功能級(jí)的開(kāi)發(fā)改造,我們很快就把龍芯2號(hào)的Linux系統(tǒng)在SimOS上跑了起來(lái)。這個(gè)SimOS可以算是最早的龍芯虛擬機(jī)系統(tǒng)。我在讀博士期間的2004年到2007年,又把龍芯2號(hào)的微結(jié)構(gòu)時(shí)序模型和龍芯3號(hào)的多核架構(gòu)支持加入到SimOS中。這個(gè)模擬器被用于龍芯CPU微結(jié)構(gòu)設(shè)計(jì)、性能分析、操作系統(tǒng)開(kāi)發(fā)和硅后驗(yàn)證,發(fā)揮了重要作用。后來(lái)2007年到2013年,龍芯系統(tǒng)組的歷屆博士生劉奇、蔡萬(wàn)偉、臺(tái)運(yùn)方等基于龍芯系統(tǒng)和模擬器環(huán)境,在CPU虛擬化、內(nèi)存虛擬化和IO虛擬化等方面進(jìn)行了探索性研究,期間的論文和專(zhuān)利成果對(duì)龍芯KVM虛擬機(jī)的產(chǎn)品研制產(chǎn)生了積極影響。

  2

  CPU的硬件虛擬化支持

  到了2013年,云計(jì)算應(yīng)用發(fā)展使得對(duì)國(guó)產(chǎn)CPU虛擬化的需求日益強(qiáng)烈,龍芯公司決定在龍芯3A3000中首次加入對(duì)硬件虛擬化的支持。由于虛擬機(jī)的復(fù)雜性,為確保一次成功,公司總裁胡老師提出了“簡(jiǎn)化硬件和結(jié)構(gòu)的復(fù)雜度,通過(guò)系統(tǒng)軟硬件協(xié)同優(yōu)化來(lái)提升效率”的虛擬化設(shè)計(jì)方針。從后來(lái)的項(xiàng)目發(fā)展來(lái)看,這一指導(dǎo)方針得到了充分貫徹并取得了預(yù)計(jì)效果。由于簡(jiǎn)化CPU硬件結(jié)構(gòu),3A3000的CPU硬件沒(méi)有出現(xiàn)顛覆性的設(shè)計(jì)缺陷,CPU流片成功后就能研制和發(fā)布虛擬機(jī)。同時(shí),軟硬件協(xié)同優(yōu)化的策略也給系統(tǒng)優(yōu)化留下了空間。國(guó)內(nèi)現(xiàn)在一講創(chuàng)新就喜歡講超越,然而在計(jì)算機(jī)領(lǐng)域,復(fù)雜的核心技術(shù)只能一步一步演進(jìn)出來(lái)。一位國(guó)內(nèi)同仁也跟我表達(dá)過(guò)類(lèi)似觀點(diǎn),研發(fā)工程積累沒(méi)有到達(dá)一定的程度前,盲目創(chuàng)新的結(jié)局只會(huì)是跌倒重來(lái)。

  3

  系統(tǒng)設(shè)計(jì)方案

  從2017年初,龍芯3A3000完成了芯片產(chǎn)品化,開(kāi)始啟動(dòng)KVM虛擬機(jī)軟件系統(tǒng)的研制。考慮到KVM虛擬機(jī)的系統(tǒng)復(fù)雜性,我們采用了按“子系統(tǒng)-模塊-場(chǎng)景-路徑進(jìn)行分解"的設(shè)計(jì)思路。即將整個(gè)KVM虛擬機(jī)分為CPU指令執(zhí)行環(huán)境、存儲(chǔ)管理、時(shí)鐘、中斷、IO和配套環(huán)境等多個(gè)子系統(tǒng),子系統(tǒng)按模塊分解,模塊按照?qǐng)鼍斑M(jìn)行組合,場(chǎng)景又按照?qǐng)?zhí)行路徑進(jìn)行具體化設(shè)計(jì)。當(dāng)分解到路徑時(shí),設(shè)計(jì)和開(kāi)發(fā)工作就已經(jīng)非常明確了。由于子系統(tǒng)、模塊、場(chǎng)景、路徑之間是彼此高度耦合、相互交叉依賴(lài),為了在設(shè)計(jì)階段就將各種困難問(wèn)題充分暴露,并針對(duì)各類(lèi)復(fù)雜邊界情況制定完備的設(shè)計(jì)方案,我們?yōu)槊總€(gè)場(chǎng)景或路徑建立了項(xiàng)目管理平臺(tái)Redmine的對(duì)應(yīng)任務(wù),每個(gè)任務(wù)指定有一個(gè)硬件負(fù)責(zé)人和一個(gè)軟件負(fù)責(zé)人,硬件負(fù)責(zé)人解釋CPU的虛擬化行為,軟件負(fù)責(zé)人則負(fù)責(zé)確定軟件的設(shè)計(jì)方案。通過(guò)充分的討論和溝通,逐步將虛擬化每個(gè)場(chǎng)景每個(gè)路徑所應(yīng)具備的功能確定下來(lái),所需要考慮的邊界條件和復(fù)雜的處理場(chǎng)景也都逐步清晰。后來(lái)統(tǒng)計(jì),在長(zhǎng)達(dá)五個(gè)月的設(shè)計(jì)過(guò)程中,總共建立了幾十個(gè)任務(wù),每個(gè)任務(wù)中包含的設(shè)計(jì)文檔都經(jīng)過(guò)多個(gè)版本,不斷修正設(shè)計(jì)中的疏漏和不足之處。經(jīng)過(guò)這“反復(fù)迭代、多輪修正”的設(shè)計(jì)過(guò)程,項(xiàng)目組對(duì)虛擬化系統(tǒng)有了全面和深入的把握,對(duì)其中的風(fēng)險(xiǎn)和問(wèn)題進(jìn)行了充分的評(píng)估,設(shè)計(jì)方案的完備度得到一致確認(rèn),可以進(jìn)入到編碼開(kāi)發(fā)階段。

  4

  編碼與開(kāi)發(fā)

  謀定而后動(dòng),由于有前期充分的設(shè)計(jì)準(zhǔn)備,編碼開(kāi)發(fā)工作變得如同普通的應(yīng)用軟件編程。大約兩個(gè)月時(shí)間,基本的虛擬化支持代碼開(kāi)發(fā)完畢,可以進(jìn)入調(diào)試和驗(yàn)證階段。這時(shí),我們采用了直接啟動(dòng)Linux系統(tǒng)的聯(lián)調(diào)方案,跳過(guò)了單元測(cè)試的環(huán)節(jié),這里邊的考慮有三。一是KVM的單元測(cè)試環(huán)境移植和搭建需要耗費(fèi)時(shí)間和精力,而目前階段我們應(yīng)該盡快的迭代出產(chǎn)品;二是因?yàn)槲覀儓F(tuán)隊(duì)在內(nèi)核方面有很深的積累,直接啟動(dòng)Linux進(jìn)行虛擬機(jī)調(diào)試,即便在內(nèi)核層面出現(xiàn)復(fù)雜問(wèn)題,按我們的積累和經(jīng)驗(yàn)也能hold住;三是啟動(dòng)Linux系統(tǒng)可以直接對(duì)接虛擬化場(chǎng)景,測(cè)試會(huì)更加具有針對(duì)性和復(fù)雜性。按照”虛擬機(jī)啟動(dòng)到哪里,驗(yàn)證和測(cè)試工作就跟進(jìn)到哪里”的實(shí)施策略,項(xiàng)目進(jìn)展迅速,期間解決了一些硬件bug和編碼實(shí)現(xiàn)中的問(wèn)題,到2018年初,我們已經(jīng)可以完成虛擬機(jī)上Linux系統(tǒng)啟動(dòng),但是就產(chǎn)品而言,整個(gè)項(xiàng)目最艱難的時(shí)刻還遠(yuǎn)遠(yuǎn)未到,后面還有七個(gè)難關(guān)等著我們。

  第一關(guān) 解決Guest態(tài)漏執(zhí)行問(wèn)題

  在2018年春節(jié)之后,我們遇到了一個(gè)偶發(fā)的系統(tǒng)故障,經(jīng)常是測(cè)試一兩天才冒出一個(gè)sigbus異常,錯(cuò)誤現(xiàn)場(chǎng)留給我們的線(xiàn)索信息極少。大約有一個(gè)月左右的時(shí)間,我們的工作陷入了僵局。在我近二十年的系統(tǒng)研發(fā)工作中,經(jīng)常遇到各種復(fù)雜的系統(tǒng)問(wèn)題。問(wèn)題經(jīng)歷多了,喜歡將解決復(fù)雜系統(tǒng)問(wèn)題和警察破案相比較。我非常欣賞一位優(yōu)秀刑警總結(jié)的破案經(jīng)驗(yàn),“破案時(shí)不要簡(jiǎn)單根據(jù)已有線(xiàn)索進(jìn)行推斷,而是要根據(jù)大膽的假定尋找新的線(xiàn)索”。程序員找系統(tǒng)bug和警察破案的工作是相似的。出現(xiàn)系統(tǒng)bug時(shí),現(xiàn)場(chǎng)的信息和線(xiàn)索非常有限,如果只根據(jù)有限的線(xiàn)索進(jìn)行邏輯推斷,工作就會(huì)進(jìn)入死胡同。此時(shí),我們根據(jù)sigbus現(xiàn)場(chǎng)出現(xiàn)的有限信息,大膽地提出一個(gè)假定,即問(wèn)題源于CPU在虛擬化模式下漏了一部分指令到普通模式下執(zhí)行。在這個(gè)假設(shè)前提下,張爽爽和李星在內(nèi)核中設(shè)計(jì)了相應(yīng)的實(shí)驗(yàn)方案,一步一步找到新的線(xiàn)索,逐步驗(yàn)證了我們的猜想。最終線(xiàn)索聚焦到一個(gè)很小的執(zhí)行場(chǎng)景,在負(fù)責(zé)CPU結(jié)構(gòu)設(shè)計(jì)的吳瑞陽(yáng)幫助下,確定問(wèn)題機(jī)理是虛擬CPU在特定場(chǎng)景下有兩拍的窗口間隙處于競(jìng)爭(zhēng)不穩(wěn)態(tài),需要軟件對(duì)執(zhí)行模式進(jìn)行控制。花了前后2個(gè)多月時(shí)間,解決完這個(gè)問(wèn)題后,Spec CPU2006這樣的大型測(cè)試軟件都可以正常運(yùn)行通過(guò)。

  第二關(guān) 解決云桌面界面卡頓

  進(jìn)入2018年的夏天,外界用戶(hù)對(duì)龍芯虛擬化的需求已日益迫切。那段時(shí)間每周我們都接到大量對(duì)龍芯KVM虛擬機(jī)的咨詢(xún)、催促、探尋合作的電話(huà)和郵件。通過(guò)訪(fǎng)問(wèn)合作的云廠(chǎng)商,我們了解到用戶(hù)希望采用虛擬機(jī)云桌面(VDI)的需求。針對(duì)這一要求,我們完成了云桌面環(huán)境關(guān)鍵組件Spice協(xié)議和QXL圖形驅(qū)動(dòng)的適配和優(yōu)化,可以啟動(dòng)云桌面環(huán)境進(jìn)行日常辦公和娛樂(lè),但在系統(tǒng)壓力測(cè)試中,卻又出現(xiàn)了一兩天才偶發(fā)的界面卡頓問(wèn)題。這個(gè)卡頓問(wèn)題跟Spice/QXL組件相關(guān),包括內(nèi)核QXL驅(qū)動(dòng)、VirtIO驅(qū)動(dòng),X系統(tǒng)的QXL用戶(hù)態(tài)驅(qū)動(dòng),Remote-viewer等軟件和模塊,據(jù)我們統(tǒng)計(jì),涉及到高達(dá)20多萬(wàn)行的源代碼。我們需要在短時(shí)間內(nèi)吃透這20多萬(wàn)行從未摸過(guò)的代碼,并解決卡頓問(wèn)題,這對(duì)項(xiàng)目團(tuán)隊(duì)是一個(gè)巨大的考驗(yàn)。好在龍芯系統(tǒng)研發(fā)部雖然規(guī)模不大,但各方面的人才儲(chǔ)備比較全面,特別是我們有國(guó)內(nèi)最好的圖形驅(qū)動(dòng)團(tuán)隊(duì)。雖然Spice/QXL是一個(gè)我們未曾研究過(guò)的虛擬化圖形驅(qū)動(dòng),但我們有過(guò)多款龍芯集顯GPU圖形驅(qū)動(dòng)的開(kāi)發(fā)經(jīng)驗(yàn)。在技術(shù)原理上,QXL跟集顯GPU是相通的。于是從操作系統(tǒng)圖形組臨時(shí)調(diào)來(lái)王洪虎和朱琛進(jìn)行攻關(guān),他倆很快就進(jìn)入了狀態(tài)。經(jīng)過(guò)一個(gè)月的代碼分析,我們就掌握了QXL的系統(tǒng)架構(gòu)并摸清了問(wèn)題線(xiàn)索,根據(jù)界面卡頓的現(xiàn)場(chǎng)反向分析,穩(wěn)步推進(jìn),最終確定到卡頓原因?yàn)樵谀硞€(gè)復(fù)雜場(chǎng)景下Spice協(xié)議傳輸中丟失了一次數(shù)據(jù)包。機(jī)理清楚后,解決bug就順理成章,云桌面環(huán)境的卡頓現(xiàn)象完全消失。

  第三關(guān) 解決偶發(fā)的系統(tǒng)崩潰

  解決云桌面卡頓后,我們將KVM虛擬機(jī)交給了測(cè)試組進(jìn)行更大規(guī)模和壓力的系統(tǒng)測(cè)試,隨之發(fā)現(xiàn)了偶發(fā)系統(tǒng)崩潰或者死機(jī)。從事系統(tǒng)研發(fā)的都知道,系統(tǒng)級(jí)的錯(cuò)誤傳播鏈極長(zhǎng),涉及到的軟件源碼量可達(dá)到上億行之多,特別是排查錯(cuò)誤時(shí)還需要經(jīng)常進(jìn)入自己不熟悉的領(lǐng)域,例如內(nèi)核專(zhuān)家往往不甚了解systemd的運(yùn)行機(jī)理,解決這類(lèi)偶發(fā)的系統(tǒng)錯(cuò)誤是最頭疼的。經(jīng)過(guò)長(zhǎng)達(dá)兩個(gè)月對(duì)錯(cuò)誤現(xiàn)場(chǎng)的反復(fù)實(shí)驗(yàn)和分析,到了2018年9月的時(shí)候,我們推測(cè)是TLB的處理時(shí)發(fā)生了異常,導(dǎo)致訪(fǎng)存錯(cuò)誤。但由于錯(cuò)誤出現(xiàn)時(shí)經(jīng)過(guò)了多次傳播,錯(cuò)誤現(xiàn)場(chǎng)的線(xiàn)索極其有限,我們需要設(shè)計(jì)一個(gè)當(dāng)錯(cuò)誤發(fā)生時(shí)能夠精確推斷出錯(cuò)誤機(jī)理的測(cè)試用例。這時(shí)我想到了lmbench測(cè)試集中有個(gè)測(cè)量?jī)?nèi)存延遲的用例,這個(gè)用例中相鄰訪(fǎng)存指令的數(shù)據(jù)結(jié)果是緊密依賴(lài)的,當(dāng)出現(xiàn)錯(cuò)誤時(shí),可以立刻判斷出錯(cuò)誤的上一級(jí)來(lái)源。果然,用這個(gè)用例測(cè)試1個(gè)小時(shí)就能規(guī)律復(fù)現(xiàn)一次錯(cuò)誤,確實(shí)是某次load操作時(shí)取到了一個(gè)錯(cuò)誤的數(shù)據(jù),但又怎么繼續(xù)判斷這個(gè)錯(cuò)誤數(shù)據(jù)的來(lái)源呢?李星提出一個(gè)方案,將測(cè)試程序地址鏈接到一個(gè)特殊區(qū)域,這樣可以很準(zhǔn)確的用EJTAG斷住錯(cuò)誤現(xiàn)場(chǎng)。斷住錯(cuò)誤現(xiàn)場(chǎng)是一個(gè)很重要的突破,沒(méi)有現(xiàn)場(chǎng)就只能進(jìn)行缺乏直接依據(jù)的猜測(cè),而有了斷點(diǎn)現(xiàn)場(chǎng),工作就變成了“通過(guò)查勘錯(cuò)誤現(xiàn)場(chǎng)進(jìn)行有根有據(jù)的分析”。隨后我們和負(fù)責(zé)CPU設(shè)計(jì)的汪文祥和吳瑞陽(yáng)一起分析錯(cuò)誤現(xiàn)場(chǎng),反復(fù)查驗(yàn)TLB中的數(shù)據(jù),對(duì)比錯(cuò)誤程序的反匯編,最終確認(rèn)錯(cuò)誤來(lái)源于CPU在流水線(xiàn)切換時(shí)采用了錯(cuò)誤的地址進(jìn)行了訪(fǎng)存。隨后我們對(duì)流水線(xiàn)的切換模式進(jìn)行了控制,這一偶發(fā)的系統(tǒng)崩潰問(wèn)題經(jīng)過(guò)前后近三個(gè)月的攻關(guān),得到了機(jī)理清楚的徹底解決。

  第四關(guān) 解決時(shí)鐘子系統(tǒng)故障

  隨著測(cè)試工作的進(jìn)一步深入,在2018年9月又出現(xiàn)了系統(tǒng)的RCU報(bào)警。經(jīng)過(guò)分析排查,確認(rèn)RCU故障不是第一錯(cuò)誤現(xiàn)場(chǎng),而是因?yàn)樘摂M機(jī)的時(shí)鐘中斷偶爾間隔過(guò)長(zhǎng)誘發(fā)。在虛擬機(jī)發(fā)生中斷、遷移、異常、暫停等行為時(shí),需要對(duì)虛擬機(jī)的時(shí)鐘進(jìn)行校準(zhǔn)和補(bǔ)償。由于進(jìn)出虛擬機(jī)模式的時(shí)鐘校準(zhǔn)、補(bǔ)償和管理系統(tǒng)異常復(fù)雜,我們自然而然的把主攻方向?qū)?zhǔn)了虛擬機(jī)時(shí)鐘補(bǔ)償和校準(zhǔn)系統(tǒng),猜測(cè)可能是這里出了問(wèn)題。而虛擬機(jī)的時(shí)鐘系統(tǒng)調(diào)試又是一個(gè)特殊困難的挑戰(zhàn),因?yàn)槌R?guī)的斷點(diǎn)調(diào)試等手段本身會(huì)導(dǎo)致虛擬機(jī)時(shí)鐘子系統(tǒng)異常,這樣錯(cuò)誤的浮現(xiàn)幾率、現(xiàn)象和觸發(fā)條件都會(huì)發(fā)生變化。經(jīng)過(guò)1個(gè)月的攻關(guān),我們把整個(gè)時(shí)鐘補(bǔ)償和校準(zhǔn)系統(tǒng)捋了個(gè)透,發(fā)現(xiàn)并解決了一些時(shí)鐘子系統(tǒng)的其他問(wèn)題,但這些跟時(shí)鐘中斷間隔過(guò)長(zhǎng)問(wèn)題無(wú)關(guān),工作暫時(shí)陷入了謎團(tuán)。此時(shí),龍芯組研究生王俊儒提出一個(gè)設(shè)想,可能是在處理特殊異常中更新Cause寄存器時(shí)丟失了時(shí)鐘中斷,這個(gè)錯(cuò)誤機(jī)理清晰明了,但卻恰恰在我們主攻方向以外被忽視的部分。果然是山重水復(fù)疑無(wú)路,柳暗花明又一村。解決完這個(gè)問(wèn)題之后,系統(tǒng)的可用性上了一個(gè)大臺(tái)階。

  第五關(guān) TLB性能優(yōu)化

  在系統(tǒng)級(jí)測(cè)試工作開(kāi)展的同時(shí),性能分析工作也在同步進(jìn)行。針對(duì)Spec CPU2000這樣的典型測(cè)試集,我們發(fā)現(xiàn)個(gè)別程序的虛擬化性能效率不到30%。經(jīng)過(guò)深入分析,判斷是因?yàn)辇埿?A3000采用的單級(jí)TLB模式引起,在特殊應(yīng)用模式下,TLB處理效率很低。根據(jù)這個(gè)性能機(jī)理,研究生王俊儒和鄧向設(shè)計(jì)了一個(gè)軟件優(yōu)化方案大幅度提升了這類(lèi)應(yīng)用的性能。新加入龍芯的毛碧波,有多年的產(chǎn)品研發(fā)經(jīng)驗(yàn),進(jìn)一步完善了這個(gè)設(shè)計(jì),并解決實(shí)現(xiàn)中的一些關(guān)鍵bug。到了2018年年底,在龍芯3A3000虛擬機(jī)上,Spec CPU2000等大型應(yīng)用的性能效率基本都提升到了95%以上。

  第六關(guān) 解決非原子操作引發(fā)的虛擬機(jī)斷網(wǎng)

  在解決前面幾個(gè)攻關(guān)問(wèn)題時(shí),測(cè)試組反饋虛擬機(jī)偶發(fā)斷網(wǎng)。起初我沒(méi)有太在意,以為是測(cè)試環(huán)境IP沖突或者硬件不穩(wěn)定故障引起。后來(lái)發(fā)現(xiàn)這個(gè)問(wèn)題在多個(gè)場(chǎng)景下都有出現(xiàn),應(yīng)該是虛擬機(jī)通過(guò)VirtIO-net模塊與外界網(wǎng)絡(luò)通信過(guò)程中的邏輯問(wèn)題。經(jīng)過(guò)一個(gè)多月的初步工作,到了2019年2月都還沒(méi)有明確的思路和線(xiàn)索,我意識(shí)到這又是一個(gè)重量級(jí)的復(fù)雜bug,常規(guī)的工作組織機(jī)制是難以奏效的,于是召集大家開(kāi)了一次攻關(guān)動(dòng)員會(huì)。我先做了思想動(dòng)員:KVM虛擬機(jī)經(jīng)過(guò)2年的研發(fā),目前到了最關(guān)鍵的階段,勝利就在眼前,也是對(duì)我們項(xiàng)目組決心、能力和作風(fēng)的一次考驗(yàn),這個(gè)階段我們絕對(duì)不能松勁;項(xiàng)目組每個(gè)同事都表現(xiàn)出了昂揚(yáng)的斗志,一致表達(dá)了攻堅(jiān)克難、不達(dá)目的、絕不收兵的決心。接下來(lái)這一個(gè)月,大家不分節(jié)假日、也不分上下班,按比996更緊張的節(jié)奏在工作。經(jīng)過(guò)大家大量的實(shí)驗(yàn)和分析,并在關(guān)鍵場(chǎng)景上添加探測(cè)和判斷條件,楊小娟精確推斷出是由于某個(gè)隊(duì)列頭尾指針跳變引發(fā)同步異常。但我們的軟件代碼中,對(duì)指針的更新都是步進(jìn)式加1處理,不會(huì)有跳變更改,會(huì)是什么原因?qū)е碌闹羔樚兡?到了3月中旬的一天晚上,針對(duì)這個(gè)指針跳變問(wèn)題,大家一起工作討論到深夜,朱琛通過(guò)觀察多次的錯(cuò)誤現(xiàn)場(chǎng)記錄,提出了一個(gè)猜想,有可能是對(duì)指針更新采用了非對(duì)齊訪(fǎng)存,破壞了原子性引起。第二天一早,請(qǐng)來(lái)負(fù)責(zé)編譯器的徐成華和負(fù)責(zé)CPU結(jié)構(gòu)設(shè)計(jì)的吳瑞陽(yáng)來(lái)一起分析,判斷確實(shí)因非對(duì)齊訪(fǎng)存引起。于是修改代碼,加強(qiáng)原子性處理,經(jīng)過(guò)嚴(yán)格的測(cè)試,措施有效,虛擬機(jī)網(wǎng)絡(luò)穩(wěn)定,斷網(wǎng)現(xiàn)象不再出現(xiàn)。

  第七關(guān) Openstack云環(huán)境

  在完成斷網(wǎng)問(wèn)題處理后,其他方面的工作也都進(jìn)展順利。李雪峰發(fā)揮自己在ACPI、功耗管理方面的特長(zhǎng),快速完成了動(dòng)態(tài)加減核的功能。楊小娟經(jīng)過(guò)3個(gè)月的工作,在PCI、中斷、hypercall等模塊中實(shí)現(xiàn)了對(duì)虛擬機(jī)遷移的支持,順利完成了虛擬機(jī)動(dòng)態(tài)遷移的功能開(kāi)發(fā)。劉學(xué)高效完成了虛擬機(jī)UEFI開(kāi)發(fā),解決了大量外設(shè)驅(qū)動(dòng)在虛擬機(jī)上的適配問(wèn)題,通過(guò)性能優(yōu)化顯著改善了具體應(yīng)用場(chǎng)景的用戶(hù)體驗(yàn)。王洪亮解決虛擬網(wǎng)絡(luò)的功能適配等問(wèn)題。研究生呂晨解決了libvirt等模塊中的一些功能問(wèn)題,完成虛擬機(jī)Balloon驅(qū)動(dòng)的功能驗(yàn)證。田延輝和汪雷一起完成了復(fù)雜的Openstack環(huán)境在龍芯平臺(tái)上的搭建和驗(yàn)證,可以進(jìn)行規(guī)模化的應(yīng)用部署。李星2019年春節(jié)時(shí)也放棄了休息,在家里完成了將KVM開(kāi)發(fā)分支向內(nèi)核主干的遷移工作。馬中征和南雄超完成了KVM自動(dòng)化測(cè)試環(huán)境的構(gòu)建,極大提高了測(cè)試效率。研發(fā)組和劉鐘瑩負(fù)責(zé)的測(cè)試組緊密配合,解決了大量虛擬機(jī)產(chǎn)品化的問(wèn)題,最終確認(rèn)虛擬機(jī)系統(tǒng)功能完備,具備了產(chǎn)品發(fā)布條件,并在2019年4月正式對(duì)外發(fā)布。

  回顧這兩年多來(lái)的虛擬機(jī)研發(fā)工作,復(fù)雜艱辛、攻堅(jiān)克難的研發(fā)過(guò)程體現(xiàn)出項(xiàng)目團(tuán)隊(duì)不屈的意志品質(zhì),大家的忘我付出更令我極為感動(dòng)。李星顧不上照顧那段時(shí)間生病的家人,經(jīng)常吃住都在公司;楊小娟家里孩子很小,每天都很晚才回家,孩子只能長(zhǎng)期扔給老家老人在帶;朱琛老婆孩子都在外地,本來(lái)都提前買(mǎi)好了假日回家探親的車(chē)票,因?yàn)轫?xiàng)目原因毫不猶豫地退掉了;王洪虎、南雄超、馬中征等經(jīng)常通宵達(dá)旦,就是為了第二天一早,測(cè)試組能夠拿到最新版本進(jìn)行測(cè)試;劉學(xué)、毛碧波、田延輝等放棄了很多休息時(shí)間,一同加入到攻關(guān)組,不辭辛勞、不計(jì)得失,主動(dòng)承擔(dān)解決各種突發(fā)和臨時(shí)問(wèn)題的任務(wù)。我也經(jīng)常因晚上工作太晚,好幾天不回家,于是買(mǎi)了一個(gè)氣墊床,晚上就在辦公室里睡了。

  天道酬勤,努力和辛勤付出沒(méi)有白費(fèi)。隨著龍芯KVM虛擬機(jī)產(chǎn)品的正式發(fā)布,龍芯云應(yīng)用生態(tài)將進(jìn)入蓬勃發(fā)展的產(chǎn)品規(guī)模應(yīng)用期。目前大量云廠(chǎng)商等合作伙伴正基于龍芯KVM虛擬機(jī)開(kāi)發(fā)云計(jì)算系統(tǒng),滿(mǎn)足對(duì)國(guó)產(chǎn)CPU云計(jì)算環(huán)境的迫切需求。

  KVM虛擬機(jī)的成功研發(fā)是龍芯核心文化理念強(qiáng)大生命力的一次生動(dòng)展示。正是多年來(lái)堅(jiān)持自主研發(fā)道路所錘煉出的奮斗精神、所積累下的技術(shù)底蘊(yùn),讓龍芯團(tuán)隊(duì)在面對(duì)高復(fù)雜系統(tǒng)研發(fā)的艱難險(xiǎn)阻時(shí),能一次次攻堅(jiān)克難、砥礪奮進(jìn)。“堅(jiān)持自主創(chuàng)新、掌握核心技術(shù)”,龍芯將在產(chǎn)業(yè)化道路上乘風(fēng)破浪,敦行致遠(yuǎn)。(本文作者為龍芯中科技術(shù)有限公司副總裁高翔)

「 支持烏有之鄉(xiāng)!」

烏有之鄉(xiāng) WYZXWK.COM

您的打賞將用于網(wǎng)站日常運(yùn)行與維護(hù)。
幫助我們辦好網(wǎng)站,宣傳紅色文化!

注:配圖來(lái)自網(wǎng)絡(luò)無(wú)版權(quán)標(biāo)志圖像,侵刪!
聲明:文章僅代表作者個(gè)人觀點(diǎn),不代表本站觀點(diǎn)——烏有之鄉(xiāng) 責(zé)任編輯:青松嶺

歡迎掃描下方二維碼,訂閱烏有之鄉(xiāng)網(wǎng)刊微信公眾號(hào)

收藏

心情表態(tài)

今日頭條

最新專(zhuān)題

毛主席誕辰130周年

點(diǎn)擊排行

  • 兩日熱點(diǎn)
  • 一周熱點(diǎn)
  • 一月熱點(diǎn)
  • 心情
  1. “深水區(qū)”背后的階級(jí)較量,撕裂利益集團(tuán)!
  2. 大蕭條的時(shí)代特征:歷史在重演
  3. 瘋狂從老百姓口袋里掏錢(qián),發(fā)現(xiàn)的時(shí)候已經(jīng)怨聲載道了!
  4. 央媒的反腐片的確“驚艷”,可有誰(shuí)想看續(xù)集?
  5. 到底誰(shuí)“封建”?
  6. 該來(lái)的還是來(lái)了,潤(rùn)美殖人被遣返,資產(chǎn)被沒(méi)收,美吹群秒變美帝批判大會(huì)
  7. 兩個(gè)草包經(jīng)濟(jì)學(xué)家:向松祚、許小年
  8. “中國(guó)人喜歡解放軍嗎?”國(guó)外社媒上的國(guó)人留言,差點(diǎn)給我看哭了
  9. 掩耳盜鈴及其他
  10. 從歷史工人運(yùn)動(dòng)到當(dāng)下工人運(yùn)動(dòng)的謀略——(一)歷史工人運(yùn)動(dòng)
  1. 到底誰(shuí)不實(shí)事求是?——讀《關(guān)于建國(guó)以來(lái)黨的若干歷史問(wèn)題的決議》與《毛澤東年譜》有感
  2. 歷史上不讓老百姓說(shuō)話(huà)的朝代,大多離滅亡就不遠(yuǎn)了
  3. 與否毛者的一段對(duì)話(huà)
  4. 孔慶東|做毛主席的好戰(zhàn)士,敢于戰(zhàn)斗,善于戰(zhàn)斗——紀(jì)念毛主席誕辰131年韶山講話(huà)
  5. “深水區(qū)”背后的階級(jí)較量,撕裂利益集團(tuán)!
  6. 大蕭條的時(shí)代特征:歷史在重演
  7. 社會(huì)亂糟糟的,老百姓只是活著
  8. 瘋狂從老百姓口袋里掏錢(qián),發(fā)現(xiàn)的時(shí)候已經(jīng)怨聲載道了!
  9. 央媒的反腐片的確“驚艷”,可有誰(shuí)想看續(xù)集?
  10. 不能將小崗村和井岡山相提并論!
  1. 北京景山紅歌會(huì)隆重紀(jì)念毛主席逝世48周年
  2. 元龍:不換思想就換人?貪官頻出亂乾坤!
  3. 遼寧王忠新:必須直面“先富論”的“十大痛點(diǎn)”
  4. 劉教授的問(wèn)題在哪
  5. 季羨林到底是什么樣的人
  6. 歷數(shù)阿薩德罪狀,觸目驚心!
  7. 十一屆三中全會(huì)公報(bào)認(rèn)為“顛倒歷史”的“右傾翻案風(fēng)”,是否存在?
  8. 歐洲金靴|《我是刑警》是一部紀(jì)錄片
  9. 我們還等什么?
  10. 只有李先念有理由有資格這樣發(fā)問(wèn)!
  1. 毛主席掃黃,雷厲風(fēng)行!北京所有妓院一夜徹底關(guān)閉!
  2. 劍云撥霧|韓國(guó)人民正在創(chuàng)造人類(lèi)歷史
  3. 到底誰(shuí)不實(shí)事求是?——讀《關(guān)于建國(guó)以來(lái)黨的若干歷史問(wèn)題的決議》與《毛澤東年譜》有感
  4. 果斷反擊巴西意在震懾全球南方國(guó)家
  5. 重慶龍門(mén)浩寒風(fēng)中的農(nóng)民工:他們活該被剝削受凍、小心翼翼不好意思嗎?
  6. 央媒的反腐片的確“驚艷”,可有誰(shuí)想看續(xù)集?
亚洲Av一级在线播放,欧美三级黄色片不卡在线播放,日韩乱码人妻无码中文,国产精品一级二级三级
中文字幕在线视频观看进入 | 伊人久久大香线蕉成人 | 天天一本大道久久 | 亚洲综合小说区图片 | 日本免费中文字幕在线视频 | 一本久久a精品一区二区 |