999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于多標簽的內核配置圖及其應用

2021-04-01 01:19:24侯朋朋武延軍于佳耕苗玉霞
計算機研究與發展 2021年3期
關鍵詞:可視化

侯朋朋 張 珩 武延軍 于佳耕 邰 陽 苗玉霞

1(智能軟件研究中心(中國科學院軟件研究所) 北京 100190) 2(中國科學院大學 北京 100049)

(pengpeng@iscas.ac.cn)

Linux作為開源軟件基石其應用場景廣泛,從資源匱乏的邊緣計算到云計算中心、超算中心均有廣泛應用,不同應用場景需求各異,如邊緣計算場景更關注內核大小,超算中心場景更關注系統性能.為適應復雜的應用場景,Linux提供了數量巨大的內核配置項便于靈活設置個性化內核.內核配置項覆蓋廣泛,涉及體系架構、文件系統、內存管理、安全加密、驅動設置等.內核配置項可使能或禁用內核模塊或機制,如CONFIG_USB設置為Y(yes)M(model)則表示將USB模塊直接編譯或以可加載模塊的方式進入內核,設置為N(no)則在內核編譯時禁用該模塊.除Y(yes)M(model)N(no)外,內核配置項值也可設置為其他值,如設置默認IO調度策略時可將CONFIG_DEFAULT_IOSCHED設置為“cfq”或“deadline”.

Linux內核靈活的配置項機制在內核裁剪、內核安全增強、內核性能優化等應用場景中均有廣泛應用.以內核性能優化為例,Ren等人[1]基于Ubuntu的v3.0至v4.20內核版本的研究發現,造成Linux內核性能下降的原因有11項,其中涉及到內核配置項有8項,且涉及內核配置項帶來的性能損失大于其他因素,通過調整內核配置項值等操作可將Redis,Apache,Nginx工作負載提高56%,33%,34%.

雖然Linux內核提供了靈活、全面的內核配置項,但正確使用這些配置項門檻高,難度大.配置項的數量巨大且增長快速,配置項的默認值在不同內核版本中經常改變,即使專業的內核團隊要能夠正確設置配置項也面臨很多挑戰.如圖1所示[2],橫軸表示Linux內核版本號,縱軸表示內核配置項數量.

Fig. 1 Kernel configuration item growth trend圖1 內核配置項增長趨勢

內核v5.3版本有15 000多個內核配置項,從內核v4.0版本到v5.3版本間增長了3 000多個配置項.Ubuntu內核4.16版本中已設置的內核配置項有7 520項,而當前Linux內核代碼仍在快速增長,平均每小時接受8.5次代碼提交[3],可預見內核配置項的數量會同步增長.為了適應新硬件、新場景,內核配置項值需要適時進行調整,如Ubuntu v3.1版本和v3.0版本的配置文件相比,刪除配置項100項,新增配置項117項,此外還有13個配置項的值變更[4].專業的內核團隊在設置內核配置項時也會出現錯誤,Ubuntu曾在v3.10版本中無意打開配置項CONFIG_CONTEXT_TRACKING_FORCE,該配置項的錯誤設置導致系統性能下降,直到v3.16版本中該配置項才被修復[5-7].

針對當前內核配置項數量巨大、難以理解、設置困難等問題,提出了一種基于多標簽的內核配置圖,該圖包含內核配置項間的依賴關系(從中可得到父配置項標簽和子配置項標簽)、功能標簽、性能標簽、安全標簽和配置項使能率(配置項在各個內核版本中的使能(enable)比例)標簽.其中依賴關系屬于配置項之間的關系,使能率標簽屬于配置項自身屬性,功能標簽、性能標簽和安全標簽不僅是配置項屬性,也可以通過此3種標簽為不同的內核配置項建立關聯關系.該內核配置圖可輔助內核開發人員高效理解和設置內核配置項,在內核啟動優化、內核裁剪、內核安全增強、內核性能優化、內核配置項異常檢測,內核配置項智能問答和內核配置項推薦等場景均可應用.該內核配置圖提供了可視化功能,更加直觀、高效、人性化.此外,本文將內核配置圖應用到檢索場景,設計了面向內核配置項的檢索框架KCIR(kernel config information retrieval),該框架基于內核配置圖中的標簽信息和依賴關系分別對查詢語句和內核配置項描述文本進行了擴展.實驗表明與傳統檢索框架相比,KCIR對檢索效果提升顯著,通過對KCIR的有效性評估驗證了內核配置圖在實際應用中的有效性.

本文的主要貢獻包括3個方面:

1) 提出一種基于多標簽的內核配置圖,包含內核配置項的依賴關系、功能標簽、性能標簽、安全標簽,此外還包含了基于內核社區和主流發行版(Ubuntu和Fedora)的各個內核版本的使能率.

2) 提供內核配置圖的可視化功能:配置項間的依賴關系可視化,基于標簽的內核配置項聚類可視化,圍繞配置項的多標簽可視化.

3) 基于內核配置圖實現了面向內核配置項的檢索框架KCIR,并通過與傳統檢索框架的對比實驗,表明KCIR對檢索效果有顯著的提升.

1 基于多標簽的內核配置圖的設計和實現

內核配置圖包含配置項間的依賴關系、功能標簽、性能標簽、安全標簽以及基于內核社區和主流發行版(Ubuntu和Fedora)的使能率標簽,其中依賴關系屬于配置項之間的關系,使能率標簽屬于配置項自身屬性,功能標簽、性能標簽、安全標簽這3種標簽則兼顧了配置項屬性也為不同的配置項建立了關聯關系.

1) 內核配置項間依賴關系.內核系統中模塊間依賴關系廣泛存在,如文件系統Ext4,XFS等均依賴于VFS(virtual file system)模塊,同時模塊內的子模塊間也存在依賴關系,如配置項CONFIG_EXT4_FS提供對Ext4文件系統[8]的支持,配置項CONFIG_EXT4_FS_SECURITY提供Ext4安全標簽功能,只有配置項CONFIG_EXT4_FS使能后,配置項CONFIG_EXT4_FS_SECURITY才能生效.內核配置項可能依賴于多個配置項,同時也可能存在多個配置項依賴于該內核配置項.為了便于后續描述,我們定義2個關鍵詞:

定義1.父配置項.將當前配置項直接依賴的配置項稱為其父配置項.

定義2.子配置項.直接依賴于當前配置項的內核配置項稱為其子配置項.

基于依賴關系可為當前配置項創建其父配置項標簽和子配置項標簽.

2) 功能標簽.即根據內核配置項功能特征為其創建1個或者多個標簽,如配置項CONFIG_NETFILTER_NETLINK_LOG涉及到了網絡和日志2方面的功能,為其創建“network”和“log”2個標簽.

3) 性能標簽.即根據內核配置項性能特性為配置項創建1個或者多個標簽.若內核配置項會影響系統的性能,不論該影響為正面影響或負面影響,均為其創建性能標簽.性能標簽主要包含CPU、內存、磁盤、網絡4種.

4) 安全標簽.該標簽涉及的內核配置項有2類.一類配置項自身屬于安全增強機制,如配置項CONFIG_SECURI TY_NETWORK本身就是安全機制的一部分;另一類配置項包含潛在的安全缺陷,如CONFIG_KVM涉及的KVM(kernel-based virtual machine)模塊暴露過CVE-2019-19332等漏洞.

5) 使能率標簽.即包括基于內核社區[9]的使能率和基于發行版的使能率.內核配置項若未設置則默認是禁用的,只有經過使能(enable)的配置項才能生效,如將配置項設置為Y(yes)或M(model).基于各內核版本中該配置項的使能情況計算出該配置項的使能率,使能率是量化配置項在實際應用中重要性的一個指標.將內核社區和主流發行版(Ubuntu和Fedora)區別對待是因為即使對同一內核配置項,兩者的使能狀態會有不同,如配置項CONFIG_RCU_TRACE在內核社區發布的4.15版本中使能,而Ubuntu的內核4.15版本中禁用;反之,配置項CONFIG_INTEL_IDLE在Ubuntu發布的內核4.15版本中使能,而在內核社區的版本中禁用.

內核配置圖中的功能標簽、性能標簽、安全標簽和使能率標簽屬于傳統標簽,其值是屬性值;通過內核配置項間的依賴關系得到的父配置項和子配置項屬于特殊標簽,該類標簽本身是內核配置項,而不是純粹的屬性值.

內核配置項間關聯.如圖2(a)所示,內核配置項間的關聯關系主要通過依賴關系和3種標簽(功能標簽、性能標簽、安全標簽)建立.其中有向實線表示依賴關系,由父配置項指向子配置項;虛線關聯的內核配置項屬于同一標簽,不同的虛線表示不同的標簽類型,可以通過標簽將沒有依賴關系的配置項聯系起來.內核配置圖通過依賴關系和多種標簽為配置項之間建立多元的關聯關系.內核配置圖為配置項從不同維度建立關聯關系,挖掘配置項之間更深層次的關系,其要比傳統的樹結構組織方式更加豐富.

內核配置項自身屬性.如圖2(b)所示,內核配置項屬性主要包括父配置項標簽(CONFIG_FATHER)、子配置項標簽(CONFIG_SON1,CONFIG_SON2)、功能標簽、性能標簽、安全標簽、使能率,圍繞配置項提供不同維度的屬性信息,在開發人員使能或者禁用該配置項時可輔助決策.

Fig. 2 Schematic diagram of kernel configuration items圖2 內核配置示意圖

內核配置圖提供可視化功能,包括依賴關系可視化、功能標簽聚類可視化、性能標簽聚類可視化、安全標簽聚類可視化和圍繞內核配置項的多標簽可視化,其可以輔助內核開發人員高效的理解和設置內核配置項,在內核啟動優化、內核裁剪、內核安全增強、內核性能優化、內核配置項異常檢測、內核配置項智能問答、內核配置項推薦等場景均可應用.

1.1 依賴關系

將內核配置項集合設為S={C1,C2,…,Cn},其中Ci表示第i個配置項,n表示集合中內核配置項的數目,依賴關系D定義為集合S上的二元關系,對于任意2個配置項Ci和Cj,且Ci,Cj∈S,若Ci的狀態改變會影響Cj的狀態,則配置項Cj依賴于配置項Ci,其依賴關系D定義為D={Cj,Ci|Ci,Cj∈S}.內核配置項間的依賴關系D是基于內核的Kconfig文件[10]抽取,內核配置項在Kconfig文件中的定義如圖3所示,涉及到依賴關系的關鍵字有“depends on”“select”“imply”.其中“depends on”表示當前配置項依賴于其他配置項,CONFIG_NAME依賴CONFIG_A,即CONFIG_A為CONFIG_NAME的父配置項.“select”表示反向依賴關系即CONFIG_B依賴于CONFIG_NAME,即CONFIG_B為其子依賴項.“imply”是弱化版的“select”,表示反向依賴關系但強制性較弱.本文基于“depends on”“select”“imply”三個關鍵字構建配置項間的依賴關系.一個配置項可以有多個父配置項和多個子配置項,創建的內核配置項依賴關系圖是一個有向無環圖.

Fig. 3 Configuration item definition in Kconfig圖3 Kconfig中內核配置項定義

基于依賴關系可獲取內核配置項的父配置項和子配置項,父子配置項可看作特殊標簽,其本身是內核配置項,同時也是當前配置項的標簽.基于父子配置項通過遞歸操作可進一步得到其祖父配置項和子孫配置項,依賴關系具有傳遞性.在內核裁剪、內核優化等應用場景中,通常需要使能或禁用某內核配置項,基于依賴關系便于獲取當前配置項的所有子孫配置項,利于分析該配置項變更的影響范圍,如CONFIG_AUDIT配置項表示內核審計功能,若使能該配置項會給系統調用帶來性能開銷,但基于依賴關系易知SELinux[11]等安全機制均依賴于該配置項,若啟用SELinux相關安全機制則不能禁用CONFIG_AUDIT配置項.此外,子孫配置項數目也是衡量配置項重要性的一個指標,若某內核配置項有30個子孫配置項,則其重要性通常大于沒有子孫的內核配置項.

構建內核配置項間依賴關系時需關注不同體系架構帶來的依賴關系差異,否則會引入潛在錯誤依賴信息.同一個內核配置項在不同平臺下定義經常有差異,如圖4中為內核配置項CONFIG_ARCH_HIBERNATION_POSSIBLE在ARM和ARM64架構下的定義,該配置項在ARM架構下依賴于配置項CONFIG_MMU,在ARM64架構下依賴于CONFIG_CPU_PM.若忽略不同架構差異則會引入錯誤的依賴關系,甚至導致依賴關系圖從有向無環圖變為有向有環圖,而有向有環圖會導致創建或獲取依賴關系時陷入死循環,程序崩潰.

如圖5所示,依賴關系構成一個有向有環的循環圖(由父配置項指向子配置項),為了清晰展示圖中省略了配置項的名稱前綴“CONFIG_”,依賴關系中的“comm”表示該依賴關系屬于多個體系架構的公共依賴關系,“ARM”表示該依賴關系針對ARM架構,“ARM64”表示該依賴關系針對ARM64架構.圖5中產生循環的原因是將內核配置項CONFIG_CPU_PM和CONFIG_ARCH_HIBERNATION_POSSIBLE在ARM64架構中存在的依賴關系引入到ARM架構的依賴關系圖中,而如圖4所示,基于ARM架構的內核配置項定義中此兩者并不存在依賴關系.

Fig. 4 CONFIG_ARCH_HIBERNATION_POSSIBLE under different architectures圖4 不同架構下內核配置項CONFIG_ARCH_HIBERNATIO_POSSIBLE定義

Fig. 5 Diagram of abnormal kernel configuration dependencies圖5 內核配置項異常依賴關系圖

1.2 功能標簽

功能標簽是基于內核配置項的功能描述生成的標簽,其功能描述主要從內核自帶的Kconfig,Documents,Git log等文檔中抽取.功能標簽的類型不僅包含內核模塊中常見的機制如Filesystem(文件系統)、Memory manage(內存管理),也包括非模塊功能如Log(日志)、Debug(調試)等標簽,部分功能標簽示例如表1.一個內核配置項可以有多個功能標簽,如CONFIG_BFQ_CGROUP_DEBUG涉及Debug,Schedule,Cgroup這3個標簽.

Table 1 Function Label Example表1 功能標簽示例

功能標簽等信息和依賴關系相互補充.很多內核配置項間沒有依賴關系,但是存在其他潛在關聯.如配置項CONFIG_XEN_MCE_LOG涉及Xen日志功能,配置項CONFIG_SCSI_LOGGING涉及SCSI(small computer system interface)日志功能,從依賴關系分析,CONFIG_XEN_MCE_LOG和CONFIG_SCSI_LOGGIN沒有依賴關系,但是兩者均涉及日志功能,可通過標簽“Log”將2個配置項關聯.相比依賴關系中的直觀聯系,標簽更能深層挖掘出配置項間的潛在關聯關系.

內核配置項采取多標簽策略而不是分類策略是由于Linux內核功能復雜,很多功能模塊或者機制并不能清晰歸為某一類別,如內核源碼文件夾中Ceph在Fs和Net目錄下均有子目錄;Bluetooth在Drivers和Net目錄下均有子目錄.配置項存在同樣問題,一個配置項通常涉及多個子模塊或機制.以CONFIG_PCI_XEN為例,其既可以歸為Xen子類別,也可以歸為PCI(peripheral component interconnect)子類別.內核配置項分類時,從不同角度會將配置項分入不同的類別,難以處理跨模塊的配置項,而標簽方式更加靈活,可以通過多標簽將跨模塊的配置項關聯起來.

內核配置項數量巨大,僅Ubuntu 4.16版本中使能的有7 520個配置項,人工創建多標簽工作量大、易出錯.可借助Scikit-learn[12]中的多標簽算法(如OneVsRest策略+支持向量機算法)來輔助多標簽的生成:首先Linux專家創建標簽并為每個標簽挑選初始配置項,然后依據多標簽算法為剩余配置項生成標簽.在后續的性能標簽和安全標簽中均可借助Scikit-learn中的多標簽算法輔助創建標簽.

1.3 性能標簽

研究顯示內核配置項的錯誤設置已是當前內核性能降低的主要原因,Ren等人[1]發現內核配置項的錯誤設置會導致核心系統調用性能降低或波動,很多系統調用性能相比老版本顯著下降,如poll,mmap,select等系統調用在內核V4.20比內核V4.0版本性能開銷成本增長了100%.內核配置項對于系統性能影響很大,且內核系統很難優化,Red Hat和Suse通常需要6~18個月來優化上游Linux內核的性能[1];Google組織100多名工程師團隊對數據中心的內核進行性能調優,對每個新內核的優化需要6~18個月的時間[1].為了輔助內核開發者通過配置項調試系統性能,本節針對配置項創建性能標簽.

本文基于Linux內核提供的Kconfig,Documents,Git log等信息,評估配置項對系統性能的影響并生成標簽,性能標簽主要分為4種:內存、磁盤、網絡、CPU.若某內核配置項對內存、磁盤、網絡、CPU中的某一種或多種硬件資源性能有提高或降低,則為該配置項貼上相應的標簽.性能標簽示例如表2所示:

Table 2 Performance Label Example表2 性能標簽示例

本文對內核配置項的性能影響沒有依據性能提升或降低進一步創建標簽,因為并非所有配置項對性能的影響都很明確,很多配置項對性能的影響與其使用的具體應用場景緊密相關.一些內核配置項對系統性能的影響比較明確,如CONFIG_AIO配置項支持異步IO,常被高性能多線程使用,使能后有利于提高CPU的性能,CONFIG_CONTEXT_TRACKING_FORCE配置項負責上下文的強制跟蹤,該配置項使能后將會降低系統調用性能.另一些內核配置項對系統性能影響比較模糊,需要根據硬件環境、應用場景才能確定.如通過配置項CONFIG_DEFAULT_IOSCHED將IO調度策略設置為CFQ(completely fair queuing),該調度策略有利于提高傳統機械磁盤的性能,但對SSD硬盤并不是最優調度策略,該配置項對系統性能的影響跟硬件緊密相關;配置項CONFIG_PARAVIRT_SPINLOCKS支持半虛擬化自旋鎖,使能該配置項后可以提高KVMXen虛擬機CPU性能,但對宿主機性能有負面影響,該配置項帶來的性能影響跟應用場景緊密相關.

1.4 安全標簽

內核配置項對系統安全的影響有2種:

1) 配置項涉及安全模塊或機制,使能該配置項后即為內核提供相關安全機制,該類為安全增強標簽;

2) 配置項關聯的功能模塊本身存在潛在的安全隱患,使能該配置項后會將該模塊中的安全隱患引入內核,該類為安全削弱標簽.

2種安全標簽分類基于內核的Kconfig,Docu-ments,Git log信息以及CVE(common vulnerabilities & exposures)[13]信息.

1) 安全增強標簽.Linux內核核心安全機制均需要配置項支持,如SELinux機制需要CONFIG_SECURITY_SELINUX支持;AppArmor安全機制需要配置項CONFIG_SECURITY_APPARMOR支持.對系統安全有增強作用的內核配置項示例如表3所示,相關配置項使能后,其相關的安全機制會編譯進內核,否則內核無法提供相關安全機制.安全增強標簽有助于內核工程師判斷該內核配置項對系統安全的影響.

Table 3 Security Enhancement Configuration Example表3 安全增強配置項示例

2) 安全削弱標簽.一些模塊包含潛在的系統漏洞,如KVM模塊存在CVE-2019-14821系統漏洞,該漏洞可能導致主機內核崩潰,配置項CONFIG_KVM_GUEST使能后KVM模塊會編譯進內核,從而將該潛在漏洞引入內核.對系統安全有削弱作用的內核配置項的示例如表4所示,安全削弱標簽可輔助內核工程師根據應用場景對配置項進行設置,如應用場景為邊緣計算,則可考慮禁用CONFIG_KVM_GUEST避免安全隱患;如應用場景為云計算則應確認KVM模塊中的潛在漏洞都已修復.

Table 4 Security Weaken Configuration Example表4 安全削弱配置項示例

1.5 使能率標簽

內核配置項的依賴關系和其他標簽均依據配置項本身的客觀特性創建,未從實踐應用的角度對配置項進行分析.提出內核配置項使能率,該指標對配置項在實踐中使能情況進行統計,從實際應用角度衡量配置項的重要性.內核配置項的使能狀態在不同版本中通常會有改變,如配置項CONFIG_UEVENT_HELPER在內核社區發布的v3.16至v5.1版本中均為使能狀態,而在v5.2,v5.3,v5.4版本中則禁用.此外不同內核配置項間的使能率差異顯著,如Ubuntu發行版v3.0至v4.20總計41個版本中,配置項CONFIG_KVM_GUEST均被使能,配置項CONFIG_IIO_HRTIMER_TRIGGER總計被使能14次,配置項CONFIG_IIO_STM32_TIMER_TRIGGER被使能0次.內核配置項的使能率反映其在所有內核版本中總的使能情況.內核配置項使能率越高,則認為其重要性越高,反之則認為其重要性越低.內核配置項使能率從實踐應用角度為內核配置項的重要性提供一個可量化參考指標.

內核配置項使能率以各內核版本中的配置項的使能狀態為基礎,同時基于內核版本的發布時間引入時間權重.新版本的內核配置項的設置更適應當前硬件特性和功能需求,其參考價值大于老版本內核中的設置,因此新版本的權重大于老版本的權重.為了對不同內核版本的權重進行量化,本文引入了牛頓冷卻定律,該定律描述物體溫度隨著時間的衰減情況,在計算機領域常被用來量化文章熱度隨著時間的衰減情況[14]等場景,本節利用該定律計算內核版本隨時間衰減后的權重.內核版本vi的權重wi計算為

wi=wcur×exp(-α×(tcur-ti)),

(1)

其中,wcur表示最新發行版權重,默認值為1,tcur表示當前最新版本號,ti表示內核版本vi的版本號,α為衰減因子,當有新的內核版本發布時,所有老版本的權重均會衰減.引入權重后的配置項使能率(config enable rate, CER)RCER計算公式為

(2)

其中,RCER表示內核配置項基于各個內核版本計算出的使能率,enable為配置項在版本vi中的使能值,若配置項在該版本中使能則enable=1,否則enable=0.

本文分別基于內核社區和主流發行版(Ubuntu和Fedora)發布的內核版本計算內核配置項使能率.

1) 基于內核社區的使能率.Linux內核社區是Linux內核最權威研發機構,負責Linux內核版本的開發、維護和發布.該社區聚集了最權威的內核開發人員,且有嚴格的開發流程保障內核代碼質量,所以內核社區發布版中的配置項設置具有極高的權威性和參考價值,因此本文基于內核社區發布的各版本計算內核配置項使能率.

雖然內核社區發布的版本具有極高權威性,但由于內核應用場景廣泛,從簡易IC卡到超級計算機均有應用,為覆蓋復雜的應用場景,內核社區對配置項設置時通常比較保守,故本文還參考了Ubuntu和Fedora發行版的內核配置項設置.

2) 基于主流發行版使能率.主流發行版選擇了Ubuntu和Fedora,Ubuntu是服務器市場應用最廣泛的Linux發行版[15],且在個人用戶市場占據較大的份額.Fedora由全球最大開源軟件公司紅帽支持開發,其特色為追求并吸納最新技術,該發行版也是RHELCentos系發行版的試驗田.發行版針對內核進行多方面調整和優化,很多配置項的設置與內核社區存在差異.如內核配置項CONFIG_BLK_DEV_RAM_SIZE負責設置RamDisk的大小,內核社區為適應資源匱乏的應用場景如邊緣計算,將其設置為16 384,Ubuntu的應用場景資源通常比較充足,因此將其設置為65 536;選擇磁盤調度策略時,內核社區使能內核配置項CONFIG_IOSCHED_CFQ,選擇對傳統機械磁盤友好的策略CFQ,而Fedora新版本中使能內核配置項CONFIG_IOSCHED_BFQ選擇對新興固態SSD硬盤更友好的BFQ(budget fair queueing)策略.基于Ubuntu和Fedora發行版的使能率可以從實踐應用角度為內核開發者提供參考.

內核配置圖中包含了內核配置項的依賴關系、功能標簽、性能標簽、安全標簽、使能率的信息,可廣泛應用在很多場景,如內核優化時可借助內核配置圖的性能標簽對內核配置項進行篩選;內核裁剪時可借助內核配置圖的依賴關系了解禁用某配置項帶來的影響;內核編譯失敗時可借助內核配置項使能率輔助檢查配置項設置是否異常.此外,內核配置圖在內核配置項的推薦、檢索、智能問答等場景也可應用.下一節將以內核配置圖在內核配置項檢索場景應用為例,進一步說明和驗證內核配置圖在實際應用中的有效性和實用性.

2 內核配置圖在檢索場景中的應用

本節將以內核配置圖在內核配置項檢索場景中的應用為例,說明內核配置圖的實用性.當前Linux內核v5.3版本已有超過15 000個配置項,導致內核工程師很難熟悉和掌握,查找目標配置項時存在時間成本高、效率低的問題.主流Linux發行版自帶的搜索工具apropos等僅支持對于本地命令、文本等搜索,并不支持內核配置項的搜索,且Linux現有的文本內容檢索工具都是關鍵字匹配,檢索效果不佳,為高效查詢內核配置項,本節基于內核配置圖實現了一個面向內核配置項的本地檢索框KCIR.

傳統信息檢索框架如圖6(a)所示,將查詢語句query和內核配置項的描述文檔config_doc作為入參,經過相似度算法計算得到查詢語句和配置項的相似度.本文基于內核配置圖提出檢索框架KCIR,該框架的優化主要包括查詢語句擴展和配置項描述信息文檔擴展.

1) 查詢語句擴展.研究表明,用戶輸入的查詢語句通常較短,包含關鍵字平均僅有2.4個單詞[16],只有約25%的查詢語句能夠清晰表達用戶意圖[17],即使用戶清楚自己查詢目的,也通常無法輸入準確的查詢關鍵字[16],本文借助內核配置圖對于查詢語句進行擴展,有助于提高查詢效果.

qenhance=qinit∪lchosen.

(3)

2) 內核配置項描述信息擴展.配置項的描述信息主要來源于Linux內核官方自帶的Kconfig及Documents等文檔,相比第三方信息源,內核官方文檔更加專業可信,但存在自然語言中不可避免的語義模糊、描述不夠準確等問題.

基于內核配置圖中的依賴關系對配置項描述信息進行擴展:從配置項依賴關系圖中可獲得當前配置項的父子配置項信息,可使用父子配置項描述信息對當前配置項的描述信息進行補充和擴展.如內核配置項CONFIG_MEMCG_SWAP跟Cgroup的內存功能緊密相關,但其在Kconfig中描述信息不夠充分,如圖7所示,其描述信息中缺少“memory”等相關關鍵字,其父配置項CONFIG_MEMCG和其子配置項CONFIG_MEMCG_SWAP_ENABLED在Kconfig中的描述如圖7,其中包含“memory”等關鍵字,父子配置項描述信息可對配置項CONFIG_MEMCG_SWAP的描述信息進行補充.

Fig. 6 Configuration item retrieval tool architecture圖6 內核配置項檢索工具架構

將配置項本身的描述信息稱為局部配置項信息,將融合了父子配置項的描述信息稱為全局配置項信息,CONFIG_MEMCG_SWAP的全局配置項信息擴展示意圖如圖7所示.在檢索時分別基于局部和全局的配置項描述信息進行相似度計算,然后將兩者得到的相似度加權相加,得到最終相似度.

基于查詢語句擴展和內核配置項描述文檔擴展后的檢索框架KCIR的邏輯架構圖如圖6(b)所示.首先將初始查詢語句qinit擴展后得到新查詢語句qenhance,將qenhance和配置項局部描述信息dlocal通過相似度算法得到相似度分數Slocal,將qenhance和配置項全局描述信息dglobal經過同樣的相似度算法得到相似度得分Sglocal,最后基于Slocal和Sglobal得到混合后相似度分數Smix.

Slocal=sim(dlocal,qenhance),

(4)

Sglobal=sim(dglobal,qenhance),

(5)

Smix=δ×Slocal+(1-δ)×Sglobal,δ∈(0,1),

(6)

其中,式(4)(5)中的相似度算法sim可以是傳統算法如TF-IDF(term frequency-inverse document frequency)[18]或基于深度學習算法DSSM(deep structured semantic models)[19]等.

此外,若實際場景中更注重應用頻率較高的內核配置項,則可基于配置項使能率對內核配置項設置權重.應用頻率越高的內核配置項的使能率越高,則其權重越高.

本節以檢索場景為例描述了內核配置圖在實踐中的應用,基于內核配置圖實現了檢索框架KCIR,該框架主要優化點是:1)使用功能標簽對查詢語句進行了擴展;2)使用依賴關系對配置項的描述文檔進行擴展.

3 實驗與評估

3.1 內核配置圖可視化

內核配置圖提供的可視化功能包括依賴關系的可視化、功能標簽聚類可視化、性能標簽聚類可視化、安全標簽聚類可視化、內核配置項的多標簽可視化.鑒于很多內核配置項名較長,如CONFIG_ACPI_TABLE_OVERRIDE_VIA_BUILTIN_INITRD和CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT,為了展示更清楚,可視化圖中省略了內核配置項的前綴“CONFIG_”.由于內核配置項數量巨大,為了較清晰地顯示相關可視化信息細節,對可視化圖進行適當簡化.

1) 依賴關系可視化.在實際應用中常需要了解某一內核配置項的依賴關系,以評估該內核配置項的影響,因此提供了配置項依賴關系可視化.對某一內核配置項,可根據設置的祖先配置項和子孫配置項的遞歸深度對其依賴關系進行可視化展示,默認可視化顯示當前配置項的父配置項和其所有子孫配置項.圖8為內核配置項CONFIG_CPU_FREQ的依賴關系可視化圖,有向連接從父配置項指向其子配置項,圖8中顯示了內核配置項CONFIG_CPU_FREQ的直系父配置項CONFIG_SCHED_MC_PRIO和14個子孫配置項.從圖8中也可看出依賴關系并不符合樹結構邏輯,樹結構一般僅有1個父節點,而圖8中配置項CONFIG_CPU_FREQ_GOV_ATTR_SET有2個父節點CONFIG_CPU_FREQ_GOV_COMMON和CONFIG_CPU_FREQ_GOV_SCHEDUTIL.

Fig. 8 Visualization of CONFIG_CPU_FREQ dependency圖8 CONFIG_CPU_FREQ依賴關系可視化圖

2) 功能標簽聚類可視化.功能標簽聚類可視化主要圍繞功能標簽顯示相關內核配置項,如圖9所示.在圖9中以實線六邊形表示功能標簽,Cgroup(控制組)、Debug(調試)、Sched(調度)分別表示3個功能標簽.一個內核配置項可有多個相關標簽,如配置項CONFIG_BFQ_CGROUP_DEBUG同時和Cgroup,Debug,Sched這3個標簽均有關聯.

Fig. 9 Visualization of function label圖9 功能標簽聚類可視化圖

3) 性能標簽聚類可視化.性能標簽聚類可視化主要圍繞CPU、內存、網絡、硬盤4個維度顯示相關內核配置項.以CPU性能標簽為例,如圖10所示,以虛線橢圓表示性能標簽,CPU標簽關聯的內核配置項均和CPU性能相關,如配置項CONFIG_SCHED_MC針對多核CPU進行調度策略優化.

Fig. 10 Visualization of CPU label圖10 CPU標簽聚類可視化圖

4) 安全標簽聚類可視化.安全標簽分為2個子標簽,即安全增強標簽和安全削弱標簽.安全增強標簽如圖11,secur_en表示安全增強,跟該標簽關聯的內核配置項均對系統安全有積極意義,如配置項CONFIG_SECCOMP使能則允許使用SECCOMP技術安全的運行非信任代碼.安全削弱標簽如圖12,secur_wk表示安全削弱,跟該標簽關聯的內核配置項存在潛在的安全漏洞,如配置項CONFIG_KVM存在過CVE-2019-7221漏洞.

Fig. 11 Visualization of security enhanced label圖11 安全增強標簽可視化示意圖

Fig. 12 Visualization of security weakened label圖12 安全削弱標簽可視化圖

Fig. 13 Multi-label visualization of CONFIG_BFQ_GROUP_IOSCHED圖13 CONFIG_BFQ_GROUP_IOSCHED多標簽可視化圖

5) 內核配置項多標簽可視化.多標簽可視化主要包括父配置項標簽、子配置項標簽、功能標簽、性能標簽、安全標簽、使能率.以內核配置項CONFIG_BFQ_GROUP_IOSCHED為例,其多標簽可視化圖如圖13所示,該配置項對于Disk(硬盤)性能(虛線橢圓)有影響,其功能標簽(實線六邊形)涉及Cgroup和Sched,其父節點包括配置項CONFIG_BLK_CGROUP和CONFIG_IOSCHED_BFQ,子配置項為CONFIG_BFQ_CGROUP_DEBUG.以實線橢圓標簽表示使能率,其中“0.00L”中的L表示Linux社區,0.00為相應使能率;“0.40U”中U表示Ubuntu,“0.56F”中的F表示Fedora.因此圖13中的0.00L_0.40U_0.56F表示該配置項在內核社區中的使能率為0,在Ubuntu發行版中加權后的使能率為0.40,在Fedora發行版中加權后的使能率為0.56.內核社區的內核配置項策略比較保守,更傾向選擇傳統調度策略CFQ而不是對新興SSD硬盤更友好的BFQ策略,因此基于內核社區的內核配置項CONFIG_BFQ_GROUP_IOSCHED的使能率為0,Ubuntu發行版對SSD硬盤提供了一定的支持,其對內核配置項CONFIG_BFQ_GROUP_IOSCHED的使能率高于內核社區,Fedora發行版更傾向于新技術的應用,在新版本中均選擇策略BFQ,因此對內核配置項CONFIG_BFQ_GROUP_IOSCHED的使能率較高.

內核配置項CONFIG_BFQ_GROUP_IOSCHED不涉及安全相關特性,故圖13中并沒有安全標簽,我們以配置項CONFIG_SECURITY_SELINUX多標簽可視化圖為例展示安全標簽,如圖14所示,其中虛線六邊形標簽為安全標簽,標簽secur_en表示該配置項對安全有增強作用,標簽secur_wk表示該配置項涉及潛在安全隱患,隱患信息為CVE-2017-2618.

Fig. 14 Multi-label visualization of CONFIG_SECURITY_SELINUX圖14 CONFIG_SECURITY_SELINUX多標簽可視化圖

3.2 內核配置圖在檢索中應用評估

本節對基于內核配置圖的面向內核配置項的檢索框架KCIR進行評估,KCIR邏輯架構如圖6(b)所示,該框架分別對查詢語句和配置項描述文本進行擴展增強,適用于多種文本相似度算法.本節分別基于4個具有代表性文本相似度算法VSM[20],LSI[21],Word2vce[22],DSSM[19]對KCIR和傳統檢索框架進行對比評估.本實驗中KCIR的局部配置文本和全局配置文本的權重值即式(6)中統一設置δ=0.3.

1) VSM(vector space model)算法.VSM是20世紀70年代被提出,是信息檢索中的經典檢索算法,該算法將文本內容的處理簡化為向量空間中的向量運算,以空間上的相似度表達語義的相似度.本實驗中VSM算法沒有設置超參數.

2) LSI(latent semantic indexing)算法.LSI是主題模型的代表算法,簡單實用、邏輯清晰,基于奇異值分解得到主題模型,同時解決詞義的問題.本實驗中LSI算法中的主題參數設置為500.

3) Word2vec算法.Word2vec是詞嵌入代表算法,該算法可將詞語映射為詞向量,其核心思想是利用簡單神經網絡對詞的上下文訓練得到詞的向量化表示.可基于詞向量計算文本間的相似度.本實驗中Word2vec算法中的特征維度設置為71,移動窗口設置為10,采用skip-gram訓練算法.

4) DSSM算法.DSSM是基于深度神經網絡計算文本相似度的代表算法,基于深度神經網絡把查詢和文本轉化為低緯語義向量,并通過余弦相似度計算2個語義向量的距離,此外根據用戶的點擊進行有監督學習,最終訓練出語義相似度模型.本實驗使用微軟提供的基于DSSM模型已訓練好的文本轉化向量工具[23]對查詢和文本進行轉換.

本文基于4個算法進行實驗評估,介紹實驗中的基準數據.

1) 基準數據.當前針對文本相似度評估有很多可用的數據集,但已有的數據集如新聞數據和內核配置項的文本數據特征差異較大,針對內核配置項檢索缺少可用的基準數據集,因此我們邀請Linux專家提供了一個針對內核配置項的包含178條query-doc數據的數據集,該數據集覆蓋內存、虛擬化、文件系統、網絡、進程、安全、電源、調試等內核模塊,平均每個模塊20條左右基準數據.基于該數據對檢索結果評估.該基準數據格式如表5所示,包含查詢語句和相應的目標配置項.

Table 5 query-doc Example表5 query-doc示例

2) 評估指標.在基準數據中,每組基準數據包含查詢語句和目標配置項信息,本實驗將查詢語句作為入參,查看返回的TopK結果中是否包含目標配置項,若包含則該query-doc為命中狀態,統計命中狀態的query-doc條目數量作為評估指標,其中TopK的K取值分別為1,3,5,7,9.

3) 結果分析.本實驗使用的基準為傳統檢索框架,其邏輯架構圖如圖6(a)所示,使用該框架與本文提出的KCIR框架對比評估.檢索框架KCIR主要包含2點優化策略:

1) 基于內核配置圖中的標簽對查詢擴展;

2) 基于內核配置圖中的依賴關系對內核配置項描述信息擴展.

評估時首先對KCIR中的2個優化策略分別評估,然后對KCIR進行總評估.實驗使用內核社區發布的v5.4版本內核,基于VSM,LSI,Word2vec,DSSM這4個相似度算法分別對檢索框架KCIR和傳統檢索框架進行對比評估,以驗證框架KCIR的有效性.

基于VSM算法評估結果如圖15所示,對于TopK(1,3,5,7,9)分別統計:傳統檢索框架、KCIR中查詢擴展優化、KCIR中描述文檔擴展優化、KCIR框架(綜合查詢擴展和描述文檔擴展)共4種情況的檢索結果,其中傳統檢索框架作為基準數據.從圖15易知KCIR的查詢擴展和描述文檔擴展策略均可提高檢索效果.與傳統檢索框架相比,KCIR中的查詢擴展策略可將TopK命中率提升5.26%~18.18%,KCIR中的描述文檔擴展策略可將TopK的命中率提升3.92%~7.27%,KCIR檢索框架可將TopK命中率提升8.27%~27.27%.

Fig. 15 Retrieval results based VSM圖15 基于VSM算法評估結果

Fig. 16 Retrieval results based LSI圖16 基于LSI算法評估結果

基于LSI算法評估結果如圖16所示,與傳統檢索框架相比,KCIR中的查詢擴展策略可將TopK命中率提升9.70%~14.28%,KCIR中的描述文檔擴展策略可將TopK的命中率提升10.67%~15.71%,KCIR檢索框架可將TopK命中率提升14.00%~30.00%.

基于Word2vec算法評估結果如圖17所示,與傳統檢索框架相比,KCIR中的查詢擴展策略可將TopK命中率提升3.09%~15.87%,KCIR中的描述文檔擴展策略在Top1上帶來了4.44%的下降,在Top3~Top9將命中率提升5.00%~12.79%,KCIR檢索框架可將TopK命中率提升6.66%~22.22%.

Fig. 17 Retrieval results based Word2vec圖17 基于Word2vec算法評估結果

基于DSSM算法評估結果如圖18所示,與傳統檢索框架相比,KCIR中的查詢擴展策略可將TopK命中率提升0.00%~14.51%,KCIR中的描述文檔擴展策略可將TopK的命中率提升4.34%~11.29%,KCIR檢索框架可將TopK命中率提升6.08%~29.03%.

Fig. 18 Retrieval results based DSSM圖18 基于DSSM算法評估結果

本文研究點是檢索框架而不是具體算法的改進優化,重點關注檢索框架KCIR和傳統檢索框架的對比分析.通過4個相似度算法的評估可見,與傳統檢索框架相比,基于內核配置圖的檢索框架KCIR對檢索效果有顯著提升:將基于VSM算法的TopK命中率提升了8.27%~27.27%,將基于LSI算法的TopK命中率提升了14.00%~30.00%,將基于Word2vec算法的TopK命中率提升了6.66%~22.22%,將基于DSSM算法的TopK命中率提升了6.08%~29.03%.

4 下一步工作

在內核裁剪、內核優化等場景常需要對內核定制化的設置和修改,內核配置項數量巨大,人工修改會引入一些錯誤的設置[24],并對系統造成嚴重負面影響,如CONFIG_CONTEXT_TRACKING_FORCE設置不當會嚴重影響系統的性能.基于內核配置圖可對修改后的配置項值進行異常檢測,從內核配置圖中可抽取配置項的多種特征信息如基于內核社區和發行版的使能率、子孫配置項數量等,然后借助異常檢測算法如Isolation Forest算法等對內核配置項進行異常檢測并生成最終的檢測報告表,示例如表6所示,表6包含了配置項當前的設置值、核心特征數據以及最后的檢測建議(是否).

Table 6 Example of Abnormal Detection Report表6 異常檢測報告示例

5 相關工作

5.1 內核配置項

當前針對內核配置項的研究工作比較多元,研究者從配置文件Kconfig語法、內核配置項對Linux系統性能和安全的影響、內核配置項和源代碼的關聯等不同角度進行多樣化研究.文獻[25]中,El-Sharkawy等人對內核配置項的定義文件Kconfig語義進行分析,發現Kconfig存在語義模糊的現象,且說明文檔中對于一些特殊情況缺少相關描述.此外他們對現有的Kconfig分析工具的有效性進行了評估,分析結果有助于Kconfig分析工具的改進.文獻[1]中,Ren等人對Ubuntu v3.0至v4.20橫跨7年的不同內核版本的系統調用性能進行分析對比,發現內核配置項的錯誤設置是導致系統性能波動或下降的重要原因,同時Linux內核優化成本很高,并不適合個人或小團隊去做.文獻[2]中,Acher等人針對內核構建中出現的因內核配置項錯誤設置導致的構建失敗問題,提出了一個TuxML工具框架,該框架可以輔助內核配置項的設置,避免內核構建錯誤.文獻[26]中,Walch等人提出了一個基于SAT的內核配置項形式化分析方法,該方法幫助開發者了解內核配置項的相關問題,如針對特定架構的處理器哪些選項是必須配置的,哪些選項是不能設置的.文獻[27]中,Ziegle等人對內核配置項和其影響到的代碼文件的關聯關系進行分析,發現大部分內核配置項僅影響較少的代碼文件,僅有少數內核配置項會影響到幾乎所有代碼文件.文獻[24]中,Melo等人對內核配置項的相關警告進行分析,通過對40萬條警告信息進行統計和分類,發現Linux中包含大量與內核配置項相關的警告,且很多警告對系統影響嚴重.文獻[28]中,Acher等人對基于內核配置項的內核裁剪進行研究,發現基于機器學習對配置項進行設置時由于內核配置項數量巨大,導致算法搜索空間隨之變大,對于配置項的預測結果誤差很大;當縮小內核配置項的范圍后可有效提高內核配置項的預測,并對內核裁剪提供幫助.

5.2 Linux檢索工具

當前針對Linux的檢索工具基本可以分為2類:1)針對文本內容的檢索工具;2)針對文件名的檢索工具.文本內容檢索的代表工具有Grep[29]和Apropos[30].Grep是本地查詢工具,在指定目錄和文件中根據關鍵字進行匹配,Apropos根據關鍵字在系統的文檔和手冊中進行匹配,跟Grep相比,Apropos有2個區別:1)Apropos不需要指定目標目錄和文件,搜索范圍為系統自帶的文檔和手冊;2)Apropos的檢索目標是命令行或者函數等,查詢相關幫助文檔.Grep和Apropos均是系統自帶的本地檢索工具.文件名檢索的代表工具有Find[31],Locate[32],Fsearch[33],這些工具主要基于關鍵字對文件名進行匹配,而不是文本內容檢索.Find根據用戶指定目錄進行檢索,Locate和Fsearch會進行整個系統檢索.此外還有專有檢索工具如Which[34]專門搜索系統命令的絕對路徑地址,Lawall等人[35]針對Linux驅動信息檢索進行了研究.當前還沒有針對內核配置項的檢索工具,現有Linux檢索工具并沒有針對內核配置項的數據特征(如配置項間存在依賴關系)進行優化,本文基于內核配置圖,提出了針對內核配置項的檢索框架KCIR,該框架屬于文本內容檢索.

6 總結與展望

本文提出了一種基于多標簽的內核配置圖(1)基于多標簽的內核配置項及KCIR的開源版本代碼參見https:gitee.comkcirkcir,該圖包含內核配置項的依賴關系(從中可得父配置項和子配置項標簽)、功能標簽、性能標簽、安全標簽、配置項使能率標簽.此外,內核配置圖提供可視化功能,更加直觀、高效、人性化.該內核配置圖在內核裁剪、內核安全增強、內核性能優化、內核配置項異常檢測、內核配置項智能問答和內核配置項推薦等場景均可應用.為了驗證內核配置圖在實際應用中的有效性,將內核配置圖應用到檢索場景,設計實現了面向內核配置項的檢索框架KCIR,該框架使用內核配置圖對查詢和配置項文本信息分別擴展,實驗評估表明該框架相比傳統的檢索框架可顯著提升檢索效果,也從實踐角度證明內核配置圖的有效性和實用性.未來工作中,將內核配置圖的信息進一步增強,如添加內核配置項帶來空間大小信息,同時將內核配置圖應用到更多的場景,如內核配置項異常值檢測等.

猜你喜歡
可視化
無錫市“三項舉措”探索執法可視化新路徑
基于CiteSpace的足三里穴研究可視化分析
自然資源可視化決策系統
北京測繪(2022年6期)2022-08-01 09:19:06
三維可視化信息管理系統在選煤生產中的應用
選煤技術(2022年2期)2022-06-06 09:13:12
思維可視化
師道·教研(2022年1期)2022-03-12 05:46:47
基于Power BI的油田注水運行動態分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
自然資源可視化決策系統
北京測繪(2021年7期)2021-07-28 07:01:18
基于CGAL和OpenGL的海底地形三維可視化
可視化閱讀:新媒體語境下信息可視化新趨勢
“融評”:黨媒評論的可視化創新
傳媒評論(2019年4期)2019-07-13 05:49:14
主站蜘蛛池模板: 国产免费a级片| 国产精品深爱在线| 亚洲中字无码AV电影在线观看| 亚洲三级影院| 久久美女精品国产精品亚洲| 国产在线91在线电影| 人妻无码中文字幕第一区| 99久久精品国产精品亚洲| 亚洲丝袜中文字幕| 乱人伦99久久| 久久综合亚洲鲁鲁九月天| 日韩精品毛片人妻AV不卡| 国产精品久久国产精麻豆99网站| 欧美一级在线| 成人午夜在线播放| 久久无码高潮喷水| 色亚洲成人| 亚洲无线一二三四区男男| 色婷婷国产精品视频| 欧美视频在线不卡| 99久久无色码中文字幕| 日韩一区精品视频一区二区| 92精品国产自产在线观看| 第一页亚洲| 99精品一区二区免费视频| 国产成人夜色91| 国产日韩欧美视频| 好吊日免费视频| 伊人精品视频免费在线| 香蕉99国内自产自拍视频| 伊人久久婷婷五月综合97色| 久久伊人色| 亚洲人成电影在线播放| 中文字幕在线播放不卡| 国产免费怡红院视频| 无码高潮喷水专区久久| 区国产精品搜索视频| 欧美综合成人| 亚洲成人在线网| 中字无码av在线电影| 亚洲综合亚洲国产尤物| 亚洲色无码专线精品观看| 亚洲欧美自拍中文| 久久无码av三级| 亚洲av无码成人专区| 好吊妞欧美视频免费| 1级黄色毛片| a级毛片一区二区免费视频| 呦女亚洲一区精品| 伊人AV天堂| 在线精品欧美日韩| 98精品全国免费观看视频| 中文国产成人精品久久| 亚洲国产精品一区二区第一页免| av在线人妻熟妇| 亚洲天堂在线视频| 福利视频一区| 国产精品女熟高潮视频| 亚洲人成网18禁| 中文字幕无线码一区| 亚洲人成网站在线观看播放不卡| 扒开粉嫩的小缝隙喷白浆视频| 99久久精彩视频| 亚洲高清中文字幕在线看不卡| 无码一区18禁| 天天色天天综合| 国产亚洲欧美日韩在线一区| 在线观看91香蕉国产免费| 2021国产精品自拍| 久久天天躁狠狠躁夜夜躁| 在线观看91精品国产剧情免费| 欧美国产日韩在线观看| 99久久无色码中文字幕| 久久一本精品久久久ー99| 在线观看热码亚洲av每日更新| 性欧美精品xxxx| 毛片网站在线播放| 国产精品无码影视久久久久久久| 狠狠色综合久久狠狠色综合| 亚洲免费毛片| 黄色不卡视频| 少妇高潮惨叫久久久久久|