站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        零代價修復海量服務器的內(nèi)核缺陷——UCloud內(nèi)核熱補丁技術揭秘

          7月18日,由InfoQ主辦的ArchSummit全球架構師峰會在深圳拉開帷幕,此次會議重點選擇了6個當前最受關注的領域,包括:游戲、電商、移動互聯(lián)網(wǎng)等等。UCloud作為國內(nèi)專注服務上述垂直領域的云服務商,受邀參加了本次大會。會上,UCloud資深工程師邱模炯還以《UCloud云平臺的內(nèi)核實踐》為主題,給大家揭開了UCloud云平臺內(nèi)核技術的神秘面紗。其中,“UCloud內(nèi)核熱補丁技術”更是引發(fā)了全場架構師們的極大關注。

          如何零代價修復海量服務器的Linux內(nèi)核缺陷?

          對于一個擁有成千上萬臺服務器的公司,Linux內(nèi)核缺陷導致的死機屢見不鮮。讓工程師們糾結的是,到底要不要通過給服務器升級內(nèi)核來修復缺陷?升級意味者服務器重啟、業(yè)務中斷以及繁重的準備工作;不升級則擔心服務器死機,同樣造成業(yè)務中斷和繁重的善后工作。

          而在今天的云計算時代,一臺宿主機往往運行多個云主機,每一次重啟不管是主動升級還是被動死機,都意味著中斷其上運行的所有云主機。因此,宿主機內(nèi)核缺陷的修復更加棘手。

          而作為一個支撐著上萬家企業(yè)用戶IT基礎架構的云服務商,UCloud云平臺上的海量宿主機又是如何修復內(nèi)核缺陷的呢?

          邱模炯透露,如果按照傳統(tǒng)的重啟方式來修復,那么無論是對于UCloud或是用戶,都意味著繁重的運維和業(yè)務中斷。但是,UCloud通過“內(nèi)核熱補丁技術”——即給運行中的內(nèi)核打上二進制補丁,UCloud已經(jīng)做到了零代價免重啟修復海量服務器的內(nèi)核缺陷!目前為止,UCloud對所發(fā)現(xiàn)的上游內(nèi)核10+個缺陷全以熱補丁方式修復,累計數(shù)萬臺次,無一例失敗且無任何副作用;理論上避免了相應次數(shù)的宿主機重啟及所隱含的云主機業(yè)務中斷。這項技術在UCloud已經(jīng)成熟。

          UCloud 內(nèi)核熱補丁技術揭秘

          UCloud的熱補丁技術基于多年前的開源ksplice加以定制優(yōu)化而來,通過加載一個特殊準備的熱補丁模塊來修復內(nèi)核。其過程如下圖所示:

        零代價修復海量服務器的內(nèi)核缺陷——UCloud內(nèi)核熱補丁技術揭秘

          熱補丁模塊由ksplice程序編譯生成,包含有缺陷的二進制指令和修復后的二進制指令(這些二進制按函數(shù)級別組織);模塊加載后,自動定位到內(nèi)核的缺陷處并以修復指令動態(tài)替換缺陷指令。

          除了免重啟修復,熱補丁還用于內(nèi)核開發(fā)過程的性能分析和故障定位。比如,加上性能統(tǒng)計代碼生成熱補丁,就可以在線分析感興趣的性能問題;加入額外調(diào)試代碼捕捉運行中內(nèi)核的異常。這些非常有用,更是海量服務器里捕捉不可重現(xiàn)內(nèi)核異常的不二法寶。由于熱補丁不需要重啟服務器,既可打入也可撤銷,所以不會有副作用。

          UCloud對開源Ksplice的優(yōu)化主要在以下三個方面:

          支持高版本內(nèi)核

          熱補丁技術與內(nèi)核緊密耦合。不同版本的內(nèi)核在指令結構體,符合表結構體和一些特性上(比如早期內(nèi)核沒有ftrace)有所不同,直接影響熱補丁成敗。UCloud研究了各版本內(nèi)核的區(qū)別,使得同一份ksplice支持各個版本的Linux內(nèi)核。值得一提的是,解決了ftrace與ksplice不兼容的問題。

          允許熱修復頻繁調(diào)用的函數(shù)

          不管什么樣的熱補丁技術,兩種類型的內(nèi)核函數(shù)難以熱補丁:頻繁使用的內(nèi)核函數(shù)如schedule, hrtimer;經(jīng)常處于線程棧內(nèi)核部分頂部的函數(shù),如sys_poll, sys_read。UCloud更改了ksplice相關內(nèi)核代碼和用戶態(tài)工具,成功解除了這些限制,比如UCloud現(xiàn)網(wǎng)服務器已打入了三個hrtimer熱補丁。

          減少業(yè)務中斷時間

          ksplice是在stop_machine后替換二進制指令的。雖然單次stop_machine對業(yè)務造成的中斷在一毫秒左右,但有些頻繁使用的內(nèi)核函數(shù)需要大量重試才能碰到合適的熱補丁時機,于是會造成最長達上百毫秒的中斷。UCloud在此做過一點優(yōu)化,使得業(yè)務中斷時間控制在十毫秒級別。

          海量服務器環(huán)境下熱補丁技術可用來零代價且無副作用地修復內(nèi)核缺陷,而且內(nèi)核開發(fā)也因熱補丁能走得更遠更好。以前因為缺乏輔助分析手段和懼怕內(nèi)核BUG,即使適合在內(nèi)核實現(xiàn)的特性也被告誡移到用戶態(tài)實現(xiàn),然而有了熱補丁,相關觀念也可以適當調(diào)整,內(nèi)核開發(fā)也可以更加大膽和跳脫。

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 精品无码人妻一区二区三区不卡| 中文字幕日韩精品有码视频| 欧美精品福利视频一区二区三区久久久精品| 久久99精品久久久久子伦| 国产精品综合久成人| 2022精品天堂在线视频| 亚洲级αV无码毛片久久精品| 国产成人久久精品二区三区| 国产精品99精品久久免费| 在线观看自拍少妇精品| 久久996热精品xxxx| 88国产精品欧美一区二区三区| 99精品热这里只有精品| 欧美午夜精品久久久久免费视| 午夜三级国产精品理论三级 | 国内精品51视频在线观看| 野狼第一精品社区| 亚洲爆乳无码精品AAA片蜜桃| 国产中文在线亚洲精品官网| 思思99热在线观看精品| 精品国产_亚洲人成在线高清| 2022国产精品自产拍在线观看| 国产精品视频白浆免费视频| 久久亚洲精品无码AV红樱桃| 亚洲国产精品成人精品无码区| 亚洲国产精品综合久久网络| 日韩美女18网站久久精品| 日韩精品中文字幕第2页| 四虎永久在线精品国产馆V视影院| 国产伦精品一区二区免费| 国产精品乱码一区二区三区| 国产精品黄页免费高清在线观看| 99热精品毛片全部国产无缓冲| 亚洲天堂久久精品| 国产国产成人久久精品| 国产一级精品高清一级毛片| 久久影院综合精品| 国产精品嫩草影院AV| 99精品无人区乱码在线观看| 99精品久久精品一区二区| 久久精品www|