亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于多標(biāo)簽的內(nèi)核配置圖及其應(yīng)用

        2021-04-01 01:19:24侯朋朋武延軍于佳耕苗玉霞
        關(guān)鍵詞:可視化

        侯朋朋 張 珩 武延軍 于佳耕 邰 陽(yáng) 苗玉霞

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

        (pengpeng@iscas.ac.cn)

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

        Linux內(nèi)核靈活的配置項(xiàng)機(jī)制在內(nèi)核裁剪、內(nèi)核安全增強(qiáng)、內(nèi)核性能優(yōu)化等應(yīng)用場(chǎng)景中均有廣泛應(yīng)用.以?xún)?nèi)核性能優(yōu)化為例,Ren等人[1]基于Ubuntu的v3.0至v4.20內(nèi)核版本的研究發(fā)現(xiàn),造成Linux內(nèi)核性能下降的原因有11項(xiàng),其中涉及到內(nèi)核配置項(xiàng)有8項(xiàng),且涉及內(nèi)核配置項(xiàng)帶來(lái)的性能損失大于其他因素,通過(guò)調(diào)整內(nèi)核配置項(xiàng)值等操作可將Redis,Apache,Nginx工作負(fù)載提高56%,33%,34%.

        雖然Linux內(nèi)核提供了靈活、全面的內(nèi)核配置項(xiàng),但正確使用這些配置項(xiàng)門(mén)檻高,難度大.配置項(xiàng)的數(shù)量巨大且增長(zhǎng)快速,配置項(xiàng)的默認(rèn)值在不同內(nèi)核版本中經(jīng)常改變,即使專(zhuān)業(yè)的內(nèi)核團(tuán)隊(duì)要能夠正確設(shè)置配置項(xiàng)也面臨很多挑戰(zhàn).如圖1所示[2],橫軸表示Linux內(nèi)核版本號(hào),縱軸表示內(nèi)核配置項(xiàng)數(shù)量.

        Fig. 1 Kernel configuration item growth trend圖1 內(nèi)核配置項(xiàng)增長(zhǎng)趨勢(shì)

        內(nèi)核v5.3版本有15 000多個(gè)內(nèi)核配置項(xiàng),從內(nèi)核v4.0版本到v5.3版本間增長(zhǎng)了3 000多個(gè)配置項(xiàng).Ubuntu內(nèi)核4.16版本中已設(shè)置的內(nèi)核配置項(xiàng)有7 520項(xiàng),而當(dāng)前Linux內(nèi)核代碼仍在快速增長(zhǎng),平均每小時(shí)接受8.5次代碼提交[3],可預(yù)見(jiàn)內(nèi)核配置項(xiàng)的數(shù)量會(huì)同步增長(zhǎng).為了適應(yīng)新硬件、新場(chǎng)景,內(nèi)核配置項(xiàng)值需要適時(shí)進(jìn)行調(diào)整,如Ubuntu v3.1版本和v3.0版本的配置文件相比,刪除配置項(xiàng)100項(xiàng),新增配置項(xiàng)117項(xiàng),此外還有13個(gè)配置項(xiàng)的值變更[4].專(zhuān)業(yè)的內(nèi)核團(tuán)隊(duì)在設(shè)置內(nèi)核配置項(xiàng)時(shí)也會(huì)出現(xiàn)錯(cuò)誤,Ubuntu曾在v3.10版本中無(wú)意打開(kāi)配置項(xiàng)CONFIG_CONTEXT_TRACKING_FORCE,該配置項(xiàng)的錯(cuò)誤設(shè)置導(dǎo)致系統(tǒng)性能下降,直到v3.16版本中該配置項(xiàng)才被修復(fù)[5-7].

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

        本文的主要貢獻(xiàn)包括3個(gè)方面:

        1) 提出一種基于多標(biāo)簽的內(nèi)核配置圖,包含內(nèi)核配置項(xiàng)的依賴(lài)關(guān)系、功能標(biāo)簽、性能標(biāo)簽、安全標(biāo)簽,此外還包含了基于內(nèi)核社區(qū)和主流發(fā)行版(Ubuntu和Fedora)的各個(gè)內(nèi)核版本的使能率.

        2) 提供內(nèi)核配置圖的可視化功能:配置項(xiàng)間的依賴(lài)關(guān)系可視化,基于標(biāo)簽的內(nèi)核配置項(xiàng)聚類(lèi)可視化,圍繞配置項(xiàng)的多標(biāo)簽可視化.

        3) 基于內(nèi)核配置圖實(shí)現(xiàn)了面向內(nèi)核配置項(xiàng)的檢索框架KCIR,并通過(guò)與傳統(tǒng)檢索框架的對(duì)比實(shí)驗(yàn),表明KCIR對(duì)檢索效果有顯著的提升.

        1 基于多標(biāo)簽的內(nèi)核配置圖的設(shè)計(jì)和實(shí)現(xiàn)

        內(nèi)核配置圖包含配置項(xiàng)間的依賴(lài)關(guān)系、功能標(biāo)簽、性能標(biāo)簽、安全標(biāo)簽以及基于內(nèi)核社區(qū)和主流發(fā)行版(Ubuntu和Fedora)的使能率標(biāo)簽,其中依賴(lài)關(guān)系屬于配置項(xiàng)之間的關(guān)系,使能率標(biāo)簽屬于配置項(xiàng)自身屬性,功能標(biāo)簽、性能標(biāo)簽、安全標(biāo)簽這3種標(biāo)簽則兼顧了配置項(xiàng)屬性也為不同的配置項(xiàng)建立了關(guān)聯(lián)關(guān)系.

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

        定義1.父配置項(xiàng).將當(dāng)前配置項(xiàng)直接依賴(lài)的配置項(xiàng)稱(chēng)為其父配置項(xiàng).

        定義2.子配置項(xiàng).直接依賴(lài)于當(dāng)前配置項(xiàng)的內(nèi)核配置項(xiàng)稱(chēng)為其子配置項(xiàng).

        基于依賴(lài)關(guān)系可為當(dāng)前配置項(xiàng)創(chuàng)建其父配置項(xiàng)標(biāo)簽和子配置項(xiàng)標(biāo)簽.

        2) 功能標(biāo)簽.即根據(jù)內(nèi)核配置項(xiàng)功能特征為其創(chuàng)建1個(gè)或者多個(gè)標(biāo)簽,如配置項(xiàng)CONFIG_NETFILTER_NETLINK_LOG涉及到了網(wǎng)絡(luò)和日志2方面的功能,為其創(chuàng)建“network”和“l(fā)og”2個(gè)標(biāo)簽.

        3) 性能標(biāo)簽.即根據(jù)內(nèi)核配置項(xiàng)性能特性為配置項(xiàng)創(chuàng)建1個(gè)或者多個(gè)標(biāo)簽.若內(nèi)核配置項(xiàng)會(huì)影響系統(tǒng)的性能,不論該影響為正面影響或負(fù)面影響,均為其創(chuàng)建性能標(biāo)簽.性能標(biāo)簽主要包含CPU、內(nèi)存、磁盤(pán)、網(wǎng)絡(luò)4種.

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

        5) 使能率標(biāo)簽.即包括基于內(nèi)核社區(qū)[9]的使能率和基于發(fā)行版的使能率.內(nèi)核配置項(xiàng)若未設(shè)置則默認(rèn)是禁用的,只有經(jīng)過(guò)使能(enable)的配置項(xiàng)才能生效,如將配置項(xiàng)設(shè)置為Y(yes)或M(model).基于各內(nèi)核版本中該配置項(xiàng)的使能情況計(jì)算出該配置項(xiàng)的使能率,使能率是量化配置項(xiàng)在實(shí)際應(yīng)用中重要性的一個(gè)指標(biāo).將內(nèi)核社區(qū)和主流發(fā)行版(Ubuntu和Fedora)區(qū)別對(duì)待是因?yàn)榧词箤?duì)同一內(nèi)核配置項(xiàng),兩者的使能狀態(tài)會(huì)有不同,如配置項(xiàng)CONFIG_RCU_TRACE在內(nèi)核社區(qū)發(fā)布的4.15版本中使能,而Ubuntu的內(nèi)核4.15版本中禁用;反之,配置項(xiàng)CONFIG_INTEL_IDLE在Ubuntu發(fā)布的內(nèi)核4.15版本中使能,而在內(nèi)核社區(qū)的版本中禁用.

        內(nèi)核配置圖中的功能標(biāo)簽、性能標(biāo)簽、安全標(biāo)簽和使能率標(biāo)簽屬于傳統(tǒng)標(biāo)簽,其值是屬性值;通過(guò)內(nèi)核配置項(xiàng)間的依賴(lài)關(guān)系得到的父配置項(xiàng)和子配置項(xiàng)屬于特殊標(biāo)簽,該類(lèi)標(biāo)簽本身是內(nèi)核配置項(xiàng),而不是純粹的屬性值.

        內(nèi)核配置項(xiàng)間關(guān)聯(lián).如圖2(a)所示,內(nèi)核配置項(xiàng)間的關(guān)聯(lián)關(guān)系主要通過(guò)依賴(lài)關(guān)系和3種標(biāo)簽(功能標(biāo)簽、性能標(biāo)簽、安全標(biāo)簽)建立.其中有向?qū)嵕€表示依賴(lài)關(guān)系,由父配置項(xiàng)指向子配置項(xiàng);虛線關(guān)聯(lián)的內(nèi)核配置項(xiàng)屬于同一標(biāo)簽,不同的虛線表示不同的標(biāo)簽類(lèi)型,可以通過(guò)標(biāo)簽將沒(méi)有依賴(lài)關(guān)系的配置項(xiàng)聯(lián)系起來(lái).內(nèi)核配置圖通過(guò)依賴(lài)關(guān)系和多種標(biāo)簽為配置項(xiàng)之間建立多元的關(guān)聯(lián)關(guān)系.內(nèi)核配置圖為配置項(xiàng)從不同維度建立關(guān)聯(lián)關(guān)系,挖掘配置項(xiàng)之間更深層次的關(guān)系,其要比傳統(tǒng)的樹(shù)結(jié)構(gòu)組織方式更加豐富.

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

        Fig. 2 Schematic diagram of kernel configuration items圖2 內(nèi)核配置示意圖

        內(nèi)核配置圖提供可視化功能,包括依賴(lài)關(guān)系可視化、功能標(biāo)簽聚類(lèi)可視化、性能標(biāo)簽聚類(lèi)可視化、安全標(biāo)簽聚類(lèi)可視化和圍繞內(nèi)核配置項(xiàng)的多標(biāo)簽可視化,其可以輔助內(nèi)核開(kāi)發(fā)人員高效的理解和設(shè)置內(nèi)核配置項(xiàng),在內(nèi)核啟動(dòng)優(yōu)化、內(nèi)核裁剪、內(nèi)核安全增強(qiáng)、內(nèi)核性能優(yōu)化、內(nèi)核配置項(xiàng)異常檢測(cè)、內(nèi)核配置項(xiàng)智能問(wèn)答、內(nèi)核配置項(xiàng)推薦等場(chǎng)景均可應(yīng)用.

        1.1 依賴(lài)關(guān)系

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

        Fig. 3 Configuration item definition in Kconfig圖3 Kconfig中內(nèi)核配置項(xiàng)定義

        基于依賴(lài)關(guān)系可獲取內(nèi)核配置項(xiàng)的父配置項(xiàng)和子配置項(xiàng),父子配置項(xiàng)可看作特殊標(biāo)簽,其本身是內(nèi)核配置項(xiàng),同時(shí)也是當(dāng)前配置項(xiàng)的標(biāo)簽.基于父子配置項(xiàng)通過(guò)遞歸操作可進(jìn)一步得到其祖父配置項(xiàng)和子孫配置項(xiàng),依賴(lài)關(guān)系具有傳遞性.在內(nèi)核裁剪、內(nèi)核優(yōu)化等應(yīng)用場(chǎng)景中,通常需要使能或禁用某內(nèi)核配置項(xiàng),基于依賴(lài)關(guān)系便于獲取當(dāng)前配置項(xiàng)的所有子孫配置項(xiàng),利于分析該配置項(xiàng)變更的影響范圍,如CONFIG_AUDIT配置項(xiàng)表示內(nèi)核審計(jì)功能,若使能該配置項(xiàng)會(huì)給系統(tǒng)調(diào)用帶來(lái)性能開(kāi)銷(xiāo),但基于依賴(lài)關(guān)系易知SELinux[11]等安全機(jī)制均依賴(lài)于該配置項(xiàng),若啟用SELinux相關(guān)安全機(jī)制則不能禁用CONFIG_AUDIT配置項(xiàng).此外,子孫配置項(xiàng)數(shù)目也是衡量配置項(xiàng)重要性的一個(gè)指標(biāo),若某內(nèi)核配置項(xiàng)有30個(gè)子孫配置項(xiàng),則其重要性通常大于沒(méi)有子孫的內(nèi)核配置項(xiàng).

        構(gòu)建內(nèi)核配置項(xiàng)間依賴(lài)關(guān)系時(shí)需關(guān)注不同體系架構(gòu)帶來(lái)的依賴(lài)關(guān)系差異,否則會(huì)引入潛在錯(cuò)誤依賴(lài)信息.同一個(gè)內(nèi)核配置項(xiàng)在不同平臺(tái)下定義經(jīng)常有差異,如圖4中為內(nèi)核配置項(xiàng)CONFIG_ARCH_HIBERNATION_POSSIBLE在ARM和ARM64架構(gòu)下的定義,該配置項(xiàng)在ARM架構(gòu)下依賴(lài)于配置項(xiàng)CONFIG_MMU,在ARM64架構(gòu)下依賴(lài)于CONFIG_CPU_PM.若忽略不同架構(gòu)差異則會(huì)引入錯(cuò)誤的依賴(lài)關(guān)系,甚至導(dǎo)致依賴(lài)關(guān)系圖從有向無(wú)環(huán)圖變?yōu)橛邢蛴协h(huán)圖,而有向有環(huán)圖會(huì)導(dǎo)致創(chuàng)建或獲取依賴(lài)關(guān)系時(shí)陷入死循環(huán),程序崩潰.

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

        Fig. 4 CONFIG_ARCH_HIBERNATION_POSSIBLE under different architectures圖4 不同架構(gòu)下內(nèi)核配置項(xiàng)CONFIG_ARCH_HIBERNATIO_POSSIBLE定義

        Fig. 5 Diagram of abnormal kernel configuration dependencies圖5 內(nèi)核配置項(xiàng)異常依賴(lài)關(guān)系圖

        1.2 功能標(biāo)簽

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

        Table 1 Function Label Example表1 功能標(biāo)簽示例

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

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

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

        1.3 性能標(biāo)簽

        研究顯示內(nèi)核配置項(xiàng)的錯(cuò)誤設(shè)置已是當(dāng)前內(nèi)核性能降低的主要原因,Ren等人[1]發(fā)現(xiàn)內(nèi)核配置項(xiàng)的錯(cuò)誤設(shè)置會(huì)導(dǎo)致核心系統(tǒng)調(diào)用性能降低或波動(dòng),很多系統(tǒng)調(diào)用性能相比老版本顯著下降,如poll,mmap,select等系統(tǒng)調(diào)用在內(nèi)核V4.20比內(nèi)核V4.0版本性能開(kāi)銷(xiāo)成本增長(zhǎng)了100%.內(nèi)核配置項(xiàng)對(duì)于系統(tǒng)性能影響很大,且內(nèi)核系統(tǒng)很難優(yōu)化,Red Hat和Suse通常需要6~18個(gè)月來(lái)優(yōu)化上游Linux內(nèi)核的性能[1];Google組織100多名工程師團(tuán)隊(duì)對(duì)數(shù)據(jù)中心的內(nèi)核進(jìn)行性能調(diào)優(yōu),對(duì)每個(gè)新內(nèi)核的優(yōu)化需要6~18個(gè)月的時(shí)間[1].為了輔助內(nèi)核開(kāi)發(fā)者通過(guò)配置項(xiàng)調(diào)試系統(tǒng)性能,本節(jié)針對(duì)配置項(xiàng)創(chuàng)建性能標(biāo)簽.

        本文基于Linux內(nèi)核提供的Kconfig,Documents,Git log等信息,評(píng)估配置項(xiàng)對(duì)系統(tǒng)性能的影響并生成標(biāo)簽,性能標(biāo)簽主要分為4種:內(nèi)存、磁盤(pán)、網(wǎng)絡(luò)、CPU.若某內(nèi)核配置項(xiàng)對(duì)內(nèi)存、磁盤(pán)、網(wǎng)絡(luò)、CPU中的某一種或多種硬件資源性能有提高或降低,則為該配置項(xiàng)貼上相應(yīng)的標(biāo)簽.性能標(biāo)簽示例如表2所示:

        Table 2 Performance Label Example表2 性能標(biāo)簽示例

        本文對(duì)內(nèi)核配置項(xiàng)的性能影響沒(méi)有依據(jù)性能提升或降低進(jìn)一步創(chuàng)建標(biāo)簽,因?yàn)椴⒎撬信渲庙?xiàng)對(duì)性能的影響都很明確,很多配置項(xiàng)對(duì)性能的影響與其使用的具體應(yīng)用場(chǎng)景緊密相關(guān).一些內(nèi)核配置項(xiàng)對(duì)系統(tǒng)性能的影響比較明確,如CONFIG_AIO配置項(xiàng)支持異步IO,常被高性能多線程使用,使能后有利于提高CPU的性能,CONFIG_CONTEXT_TRACKING_FORCE配置項(xiàng)負(fù)責(zé)上下文的強(qiáng)制跟蹤,該配置項(xiàng)使能后將會(huì)降低系統(tǒng)調(diào)用性能.另一些內(nèi)核配置項(xiàng)對(duì)系統(tǒng)性能影響比較模糊,需要根據(jù)硬件環(huán)境、應(yīng)用場(chǎng)景才能確定.如通過(guò)配置項(xiàng)CONFIG_DEFAULT_IOSCHED將IO調(diào)度策略設(shè)置為CFQ(completely fair queuing),該調(diào)度策略有利于提高傳統(tǒng)機(jī)械磁盤(pán)的性能,但對(duì)SSD硬盤(pán)并不是最優(yōu)調(diào)度策略,該配置項(xiàng)對(duì)系統(tǒng)性能的影響跟硬件緊密相關(guān);配置項(xiàng)CONFIG_PARAVIRT_SPINLOCKS支持半虛擬化自旋鎖,使能該配置項(xiàng)后可以提高KVMXen虛擬機(jī)CPU性能,但對(duì)宿主機(jī)性能有負(fù)面影響,該配置項(xiàng)帶來(lái)的性能影響跟應(yīng)用場(chǎng)景緊密相關(guān).

        1.4 安全標(biāo)簽

        內(nèi)核配置項(xiàng)對(duì)系統(tǒng)安全的影響有2種:

        1) 配置項(xiàng)涉及安全模塊或機(jī)制,使能該配置項(xiàng)后即為內(nèi)核提供相關(guān)安全機(jī)制,該類(lèi)為安全增強(qiáng)標(biāo)簽;

        2) 配置項(xiàng)關(guān)聯(lián)的功能模塊本身存在潛在的安全隱患,使能該配置項(xiàng)后會(huì)將該模塊中的安全隱患引入內(nèi)核,該類(lèi)為安全削弱標(biāo)簽.

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

        1) 安全增強(qiáng)標(biāo)簽.Linux內(nèi)核核心安全機(jī)制均需要配置項(xiàng)支持,如SELinux機(jī)制需要CONFIG_SECURITY_SELINUX支持;AppArmor安全機(jī)制需要配置項(xiàng)CONFIG_SECURITY_APPARMOR支持.對(duì)系統(tǒng)安全有增強(qiáng)作用的內(nèi)核配置項(xiàng)示例如表3所示,相關(guān)配置項(xiàng)使能后,其相關(guān)的安全機(jī)制會(huì)編譯進(jìn)內(nèi)核,否則內(nèi)核無(wú)法提供相關(guān)安全機(jī)制.安全增強(qiáng)標(biāo)簽有助于內(nèi)核工程師判斷該內(nèi)核配置項(xiàng)對(duì)系統(tǒng)安全的影響.

        Table 3 Security Enhancement Configuration Example表3 安全增強(qiáng)配置項(xiàng)示例

        2) 安全削弱標(biāo)簽.一些模塊包含潛在的系統(tǒng)漏洞,如KVM模塊存在CVE-2019-14821系統(tǒng)漏洞,該漏洞可能導(dǎo)致主機(jī)內(nèi)核崩潰,配置項(xiàng)CONFIG_KVM_GUEST使能后KVM模塊會(huì)編譯進(jìn)內(nèi)核,從而將該潛在漏洞引入內(nèi)核.對(duì)系統(tǒng)安全有削弱作用的內(nèi)核配置項(xiàng)的示例如表4所示,安全削弱標(biāo)簽可輔助內(nèi)核工程師根據(jù)應(yīng)用場(chǎng)景對(duì)配置項(xiàng)進(jìn)行設(shè)置,如應(yīng)用場(chǎng)景為邊緣計(jì)算,則可考慮禁用CONFIG_KVM_GUEST避免安全隱患;如應(yīng)用場(chǎng)景為云計(jì)算則應(yīng)確認(rèn)KVM模塊中的潛在漏洞都已修復(fù).

        Table 4 Security Weaken Configuration Example表4 安全削弱配置項(xiàng)示例

        1.5 使能率標(biāo)簽

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

        內(nèi)核配置項(xiàng)使能率以各內(nèi)核版本中的配置項(xiàng)的使能狀態(tài)為基礎(chǔ),同時(shí)基于內(nèi)核版本的發(fā)布時(shí)間引入時(shí)間權(quán)重.新版本的內(nèi)核配置項(xiàng)的設(shè)置更適應(yīng)當(dāng)前硬件特性和功能需求,其參考價(jià)值大于老版本內(nèi)核中的設(shè)置,因此新版本的權(quán)重大于老版本的權(quán)重.為了對(duì)不同內(nèi)核版本的權(quán)重進(jìn)行量化,本文引入了牛頓冷卻定律,該定律描述物體溫度隨著時(shí)間的衰減情況,在計(jì)算機(jī)領(lǐng)域常被用來(lái)量化文章熱度隨著時(shí)間的衰減情況[14]等場(chǎng)景,本節(jié)利用該定律計(jì)算內(nèi)核版本隨時(shí)間衰減后的權(quán)重.內(nèi)核版本vi的權(quán)重wi計(jì)算為

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

        (1)

        其中,wcur表示最新發(fā)行版權(quán)重,默認(rèn)值為1,tcur表示當(dāng)前最新版本號(hào),ti表示內(nèi)核版本vi的版本號(hào),α為衰減因子,當(dāng)有新的內(nèi)核版本發(fā)布時(shí),所有老版本的權(quán)重均會(huì)衰減.引入權(quán)重后的配置項(xiàng)使能率(config enable rate, CER)RCER計(jì)算公式為

        (2)

        其中,RCER表示內(nèi)核配置項(xiàng)基于各個(gè)內(nèi)核版本計(jì)算出的使能率,enable為配置項(xiàng)在版本vi中的使能值,若配置項(xiàng)在該版本中使能則enable=1,否則enable=0.

        本文分別基于內(nèi)核社區(qū)和主流發(fā)行版(Ubuntu和Fedora)發(fā)布的內(nèi)核版本計(jì)算內(nèi)核配置項(xiàng)使能率.

        1) 基于內(nèi)核社區(qū)的使能率.Linux內(nèi)核社區(qū)是Linux內(nèi)核最權(quán)威研發(fā)機(jī)構(gòu),負(fù)責(zé)Linux內(nèi)核版本的開(kāi)發(fā)、維護(hù)和發(fā)布.該社區(qū)聚集了最權(quán)威的內(nèi)核開(kāi)發(fā)人員,且有嚴(yán)格的開(kāi)發(fā)流程保障內(nèi)核代碼質(zhì)量,所以?xún)?nèi)核社區(qū)發(fā)布版中的配置項(xiàng)設(shè)置具有極高的權(quán)威性和參考價(jià)值,因此本文基于內(nèi)核社區(qū)發(fā)布的各版本計(jì)算內(nèi)核配置項(xiàng)使能率.

        雖然內(nèi)核社區(qū)發(fā)布的版本具有極高權(quán)威性,但由于內(nèi)核應(yīng)用場(chǎng)景廣泛,從簡(jiǎn)易IC卡到超級(jí)計(jì)算機(jī)均有應(yīng)用,為覆蓋復(fù)雜的應(yīng)用場(chǎng)景,內(nèi)核社區(qū)對(duì)配置項(xiàng)設(shè)置時(shí)通常比較保守,故本文還參考了Ubuntu和Fedora發(fā)行版的內(nèi)核配置項(xiàng)設(shè)置.

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

        內(nèi)核配置圖中包含了內(nèi)核配置項(xiàng)的依賴(lài)關(guān)系、功能標(biāo)簽、性能標(biāo)簽、安全標(biāo)簽、使能率的信息,可廣泛應(yīng)用在很多場(chǎng)景,如內(nèi)核優(yōu)化時(shí)可借助內(nèi)核配置圖的性能標(biāo)簽對(duì)內(nèi)核配置項(xiàng)進(jìn)行篩選;內(nèi)核裁剪時(shí)可借助內(nèi)核配置圖的依賴(lài)關(guān)系了解禁用某配置項(xiàng)帶來(lái)的影響;內(nèi)核編譯失敗時(shí)可借助內(nèi)核配置項(xiàng)使能率輔助檢查配置項(xiàng)設(shè)置是否異常.此外,內(nèi)核配置圖在內(nèi)核配置項(xiàng)的推薦、檢索、智能問(wèn)答等場(chǎng)景也可應(yīng)用.下一節(jié)將以?xún)?nèi)核配置圖在內(nèi)核配置項(xiàng)檢索場(chǎng)景應(yīng)用為例,進(jìn)一步說(shuō)明和驗(yàn)證內(nèi)核配置圖在實(shí)際應(yīng)用中的有效性和實(shí)用性.

        2 內(nèi)核配置圖在檢索場(chǎng)景中的應(yīng)用

        本節(jié)將以?xún)?nèi)核配置圖在內(nèi)核配置項(xiàng)檢索場(chǎng)景中的應(yīng)用為例,說(shuō)明內(nèi)核配置圖的實(shí)用性.當(dāng)前Linux內(nèi)核v5.3版本已有超過(guò)15 000個(gè)配置項(xiàng),導(dǎo)致內(nèi)核工程師很難熟悉和掌握,查找目標(biāo)配置項(xiàng)時(shí)存在時(shí)間成本高、效率低的問(wèn)題.主流Linux發(fā)行版自帶的搜索工具apropos等僅支持對(duì)于本地命令、文本等搜索,并不支持內(nèi)核配置項(xiàng)的搜索,且Linux現(xiàn)有的文本內(nèi)容檢索工具都是關(guān)鍵字匹配,檢索效果不佳,為高效查詢(xún)內(nèi)核配置項(xiàng),本節(jié)基于內(nèi)核配置圖實(shí)現(xiàn)了一個(gè)面向內(nèi)核配置項(xiàng)的本地檢索框KCIR.

        傳統(tǒng)信息檢索框架如圖6(a)所示,將查詢(xún)語(yǔ)句query和內(nèi)核配置項(xiàng)的描述文檔config_doc作為入?yún)?經(jīng)過(guò)相似度算法計(jì)算得到查詢(xún)語(yǔ)句和配置項(xiàng)的相似度.本文基于內(nèi)核配置圖提出檢索框架KCIR,該框架的優(yōu)化主要包括查詢(xún)語(yǔ)句擴(kuò)展和配置項(xiàng)描述信息文檔擴(kuò)展.

        1) 查詢(xún)語(yǔ)句擴(kuò)展.研究表明,用戶輸入的查詢(xún)語(yǔ)句通常較短,包含關(guān)鍵字平均僅有2.4個(gè)單詞[16],只有約25%的查詢(xún)語(yǔ)句能夠清晰表達(dá)用戶意圖[17],即使用戶清楚自己查詢(xún)目的,也通常無(wú)法輸入準(zhǔn)確的查詢(xún)關(guān)鍵字[16],本文借助內(nèi)核配置圖對(duì)于查詢(xún)語(yǔ)句進(jìn)行擴(kuò)展,有助于提高查詢(xún)效果.

        qenhance=qinit∪lchosen.

        (3)

        2) 內(nèi)核配置項(xiàng)描述信息擴(kuò)展.配置項(xiàng)的描述信息主要來(lái)源于Linux內(nèi)核官方自帶的Kconfig及Documents等文檔,相比第三方信息源,內(nèi)核官方文檔更加專(zhuān)業(yè)可信,但存在自然語(yǔ)言中不可避免的語(yǔ)義模糊、描述不夠準(zhǔn)確等問(wèn)題.

        基于內(nèi)核配置圖中的依賴(lài)關(guān)系對(duì)配置項(xiàng)描述信息進(jìn)行擴(kuò)展:從配置項(xiàng)依賴(lài)關(guān)系圖中可獲得當(dāng)前配置項(xiàng)的父子配置項(xiàng)信息,可使用父子配置項(xiàng)描述信息對(duì)當(dāng)前配置項(xiàng)的描述信息進(jìn)行補(bǔ)充和擴(kuò)展.如內(nèi)核配置項(xiàng)CONFIG_MEMCG_SWAP跟Cgroup的內(nèi)存功能緊密相關(guān),但其在Kconfig中描述信息不夠充分,如圖7所示,其描述信息中缺少“memory”等相關(guān)關(guān)鍵字,其父配置項(xiàng)CONFIG_MEMCG和其子配置項(xiàng)CONFIG_MEMCG_SWAP_ENABLED在Kconfig中的描述如圖7,其中包含“memory”等關(guān)鍵字,父子配置項(xiàng)描述信息可對(duì)配置項(xiàng)CONFIG_MEMCG_SWAP的描述信息進(jìn)行補(bǔ)充.

        Fig. 6 Configuration item retrieval tool architecture圖6 內(nèi)核配置項(xiàng)檢索工具架構(gòu)

        將配置項(xiàng)本身的描述信息稱(chēng)為局部配置項(xiàng)信息,將融合了父子配置項(xiàng)的描述信息稱(chēng)為全局配置項(xiàng)信息,CONFIG_MEMCG_SWAP的全局配置項(xiàng)信息擴(kuò)展示意圖如圖7所示.在檢索時(shí)分別基于局部和全局的配置項(xiàng)描述信息進(jìn)行相似度計(jì)算,然后將兩者得到的相似度加權(quán)相加,得到最終相似度.

        基于查詢(xún)語(yǔ)句擴(kuò)展和內(nèi)核配置項(xiàng)描述文檔擴(kuò)展后的檢索框架KCIR的邏輯架構(gòu)圖如圖6(b)所示.首先將初始查詢(xún)語(yǔ)句qinit擴(kuò)展后得到新查詢(xún)語(yǔ)句qenhance,將qenhance和配置項(xiàng)局部描述信息dlocal通過(guò)相似度算法得到相似度分?jǐn)?shù)Slocal,將qenhance和配置項(xiàng)全局描述信息dglobal經(jīng)過(guò)同樣的相似度算法得到相似度得分Sglocal,最后基于Slocal和Sglobal得到混合后相似度分?jǐn)?shù)Smix.

        Slocal=sim(dlocal,qenhance),

        (4)

        Sglobal=sim(dglobal,qenhance),

        (5)

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

        (6)

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

        此外,若實(shí)際場(chǎng)景中更注重應(yīng)用頻率較高的內(nèi)核配置項(xiàng),則可基于配置項(xiàng)使能率對(duì)內(nèi)核配置項(xiàng)設(shè)置權(quán)重.應(yīng)用頻率越高的內(nèi)核配置項(xiàng)的使能率越高,則其權(quán)重越高.

        本節(jié)以檢索場(chǎng)景為例描述了內(nèi)核配置圖在實(shí)踐中的應(yīng)用,基于內(nèi)核配置圖實(shí)現(xiàn)了檢索框架KCIR,該框架主要優(yōu)化點(diǎn)是:1)使用功能標(biāo)簽對(duì)查詢(xún)語(yǔ)句進(jìn)行了擴(kuò)展;2)使用依賴(lài)關(guān)系對(duì)配置項(xiàng)的描述文檔進(jìn)行擴(kuò)展.

        3 實(shí)驗(yàn)與評(píng)估

        3.1 內(nèi)核配置圖可視化

        內(nèi)核配置圖提供的可視化功能包括依賴(lài)關(guān)系的可視化、功能標(biāo)簽聚類(lèi)可視化、性能標(biāo)簽聚類(lèi)可視化、安全標(biāo)簽聚類(lèi)可視化、內(nèi)核配置項(xiàng)的多標(biāo)簽可視化.鑒于很多內(nèi)核配置項(xiàng)名較長(zhǎng),如CONFIG_ACPI_TABLE_OVERRIDE_VIA_BUILTIN_INITRD和CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT,為了展示更清楚,可視化圖中省略了內(nèi)核配置項(xiàng)的前綴“CONFIG_”.由于內(nèi)核配置項(xiàng)數(shù)量巨大,為了較清晰地顯示相關(guān)可視化信息細(xì)節(jié),對(duì)可視化圖進(jìn)行適當(dāng)簡(jiǎn)化.

        1) 依賴(lài)關(guān)系可視化.在實(shí)際應(yīng)用中常需要了解某一內(nèi)核配置項(xiàng)的依賴(lài)關(guān)系,以評(píng)估該內(nèi)核配置項(xiàng)的影響,因此提供了配置項(xiàng)依賴(lài)關(guān)系可視化.對(duì)某一內(nèi)核配置項(xiàng),可根據(jù)設(shè)置的祖先配置項(xiàng)和子孫配置項(xiàng)的遞歸深度對(duì)其依賴(lài)關(guān)系進(jìn)行可視化展示,默認(rèn)可視化顯示當(dāng)前配置項(xiàng)的父配置項(xiàng)和其所有子孫配置項(xiàng).圖8為內(nèi)核配置項(xiàng)CONFIG_CPU_FREQ的依賴(lài)關(guān)系可視化圖,有向連接從父配置項(xiàng)指向其子配置項(xiàng),圖8中顯示了內(nèi)核配置項(xiàng)CONFIG_CPU_FREQ的直系父配置項(xiàng)CONFIG_SCHED_MC_PRIO和14個(gè)子孫配置項(xiàng).從圖8中也可看出依賴(lài)關(guān)系并不符合樹(shù)結(jié)構(gòu)邏輯,樹(shù)結(jié)構(gòu)一般僅有1個(gè)父節(jié)點(diǎn),而圖8中配置項(xiàng)CONFIG_CPU_FREQ_GOV_ATTR_SET有2個(gè)父節(jié)點(diǎn)CONFIG_CPU_FREQ_GOV_COMMON和CONFIG_CPU_FREQ_GOV_SCHEDUTIL.

        Fig. 8 Visualization of CONFIG_CPU_FREQ dependency圖8 CONFIG_CPU_FREQ依賴(lài)關(guān)系可視化圖

        2) 功能標(biāo)簽聚類(lèi)可視化.功能標(biāo)簽聚類(lèi)可視化主要圍繞功能標(biāo)簽顯示相關(guān)內(nèi)核配置項(xiàng),如圖9所示.在圖9中以實(shí)線六邊形表示功能標(biāo)簽,Cgroup(控制組)、Debug(調(diào)試)、Sched(調(diào)度)分別表示3個(gè)功能標(biāo)簽.一個(gè)內(nèi)核配置項(xiàng)可有多個(gè)相關(guān)標(biāo)簽,如配置項(xiàng)CONFIG_BFQ_CGROUP_DEBUG同時(shí)和Cgroup,Debug,Sched這3個(gè)標(biāo)簽均有關(guān)聯(lián).

        Fig. 9 Visualization of function label圖9 功能標(biāo)簽聚類(lèi)可視化圖

        3) 性能標(biāo)簽聚類(lèi)可視化.性能標(biāo)簽聚類(lèi)可視化主要圍繞CPU、內(nèi)存、網(wǎng)絡(luò)、硬盤(pán)4個(gè)維度顯示相關(guān)內(nèi)核配置項(xiàng).以CPU性能標(biāo)簽為例,如圖10所示,以虛線橢圓表示性能標(biāo)簽,CPU標(biāo)簽關(guān)聯(lián)的內(nèi)核配置項(xiàng)均和CPU性能相關(guān),如配置項(xiàng)CONFIG_SCHED_MC針對(duì)多核CPU進(jìn)行調(diào)度策略?xún)?yōu)化.

        Fig. 10 Visualization of CPU label圖10 CPU標(biāo)簽聚類(lèi)可視化圖

        4) 安全標(biāo)簽聚類(lèi)可視化.安全標(biāo)簽分為2個(gè)子標(biāo)簽,即安全增強(qiáng)標(biāo)簽和安全削弱標(biāo)簽.安全增強(qiáng)標(biāo)簽如圖11,secur_en表示安全增強(qiáng),跟該標(biāo)簽關(guān)聯(lián)的內(nèi)核配置項(xiàng)均對(duì)系統(tǒng)安全有積極意義,如配置項(xiàng)CONFIG_SECCOMP使能則允許使用SECCOMP技術(shù)安全的運(yùn)行非信任代碼.安全削弱標(biāo)簽如圖12,secur_wk表示安全削弱,跟該標(biāo)簽關(guān)聯(lián)的內(nèi)核配置項(xiàng)存在潛在的安全漏洞,如配置項(xiàng)CONFIG_KVM存在過(guò)CVE-2019-7221漏洞.

        Fig. 11 Visualization of security enhanced label圖11 安全增強(qiáng)標(biāo)簽可視化示意圖

        Fig. 12 Visualization of security weakened label圖12 安全削弱標(biāo)簽可視化圖

        Fig. 13 Multi-label visualization of CONFIG_BFQ_GROUP_IOSCHED圖13 CONFIG_BFQ_GROUP_IOSCHED多標(biāo)簽可視化圖

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

        內(nèi)核配置項(xiàng)CONFIG_BFQ_GROUP_IOSCHED不涉及安全相關(guān)特性,故圖13中并沒(méi)有安全標(biāo)簽,我們以配置項(xiàng)CONFIG_SECURITY_SELINUX多標(biāo)簽可視化圖為例展示安全標(biāo)簽,如圖14所示,其中虛線六邊形標(biāo)簽為安全標(biāo)簽,標(biāo)簽secur_en表示該配置項(xiàng)對(duì)安全有增強(qiáng)作用,標(biāo)簽secur_wk表示該配置項(xiàng)涉及潛在安全隱患,隱患信息為CVE-2017-2618.

        Fig. 14 Multi-label visualization of CONFIG_SECURITY_SELINUX圖14 CONFIG_SECURITY_SELINUX多標(biāo)簽可視化圖

        3.2 內(nèi)核配置圖在檢索中應(yīng)用評(píng)估

        本節(jié)對(duì)基于內(nèi)核配置圖的面向內(nèi)核配置項(xiàng)的檢索框架KCIR進(jìn)行評(píng)估,KCIR邏輯架構(gòu)如圖6(b)所示,該框架分別對(duì)查詢(xún)語(yǔ)句和配置項(xiàng)描述文本進(jìn)行擴(kuò)展增強(qiáng),適用于多種文本相似度算法.本節(jié)分別基于4個(gè)具有代表性文本相似度算法VSM[20],LSI[21],Word2vce[22],DSSM[19]對(duì)KCIR和傳統(tǒng)檢索框架進(jìn)行對(duì)比評(píng)估.本實(shí)驗(yàn)中KCIR的局部配置文本和全局配置文本的權(quán)重值即式(6)中統(tǒng)一設(shè)置δ=0.3.

        1) VSM(vector space model)算法.VSM是20世紀(jì)70年代被提出,是信息檢索中的經(jīng)典檢索算法,該算法將文本內(nèi)容的處理簡(jiǎn)化為向量空間中的向量運(yùn)算,以空間上的相似度表達(dá)語(yǔ)義的相似度.本實(shí)驗(yàn)中VSM算法沒(méi)有設(shè)置超參數(shù).

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

        3) Word2vec算法.Word2vec是詞嵌入代表算法,該算法可將詞語(yǔ)映射為詞向量,其核心思想是利用簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)對(duì)詞的上下文訓(xùn)練得到詞的向量化表示.可基于詞向量計(jì)算文本間的相似度.本實(shí)驗(yàn)中Word2vec算法中的特征維度設(shè)置為71,移動(dòng)窗口設(shè)置為10,采用skip-gram訓(xùn)練算法.

        4) DSSM算法.DSSM是基于深度神經(jīng)網(wǎng)絡(luò)計(jì)算文本相似度的代表算法,基于深度神經(jīng)網(wǎng)絡(luò)把查詢(xún)和文本轉(zhuǎn)化為低緯語(yǔ)義向量,并通過(guò)余弦相似度計(jì)算2個(gè)語(yǔ)義向量的距離,此外根據(jù)用戶的點(diǎn)擊進(jìn)行有監(jiān)督學(xué)習(xí),最終訓(xùn)練出語(yǔ)義相似度模型.本實(shí)驗(yàn)使用微軟提供的基于DSSM模型已訓(xùn)練好的文本轉(zhuǎn)化向量工具[23]對(duì)查詢(xún)和文本進(jìn)行轉(zhuǎn)換.

        本文基于4個(gè)算法進(jìn)行實(shí)驗(yàn)評(píng)估,介紹實(shí)驗(yàn)中的基準(zhǔn)數(shù)據(jù).

        1) 基準(zhǔn)數(shù)據(jù).當(dāng)前針對(duì)文本相似度評(píng)估有很多可用的數(shù)據(jù)集,但已有的數(shù)據(jù)集如新聞數(shù)據(jù)和內(nèi)核配置項(xiàng)的文本數(shù)據(jù)特征差異較大,針對(duì)內(nèi)核配置項(xiàng)檢索缺少可用的基準(zhǔn)數(shù)據(jù)集,因此我們邀請(qǐng)Linux專(zhuān)家提供了一個(gè)針對(duì)內(nèi)核配置項(xiàng)的包含178條query-doc數(shù)據(jù)的數(shù)據(jù)集,該數(shù)據(jù)集覆蓋內(nèi)存、虛擬化、文件系統(tǒng)、網(wǎng)絡(luò)、進(jìn)程、安全、電源、調(diào)試等內(nèi)核模塊,平均每個(gè)模塊20條左右基準(zhǔn)數(shù)據(jù).基于該數(shù)據(jù)對(duì)檢索結(jié)果評(píng)估.該基準(zhǔn)數(shù)據(jù)格式如表5所示,包含查詢(xún)語(yǔ)句和相應(yīng)的目標(biāo)配置項(xiàng).

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

        2) 評(píng)估指標(biāo).在基準(zhǔn)數(shù)據(jù)中,每組基準(zhǔn)數(shù)據(jù)包含查詢(xún)語(yǔ)句和目標(biāo)配置項(xiàng)信息,本實(shí)驗(yàn)將查詢(xún)語(yǔ)句作為入?yún)?查看返回的TopK結(jié)果中是否包含目標(biāo)配置項(xiàng),若包含則該query-doc為命中狀態(tài),統(tǒng)計(jì)命中狀態(tài)的query-doc條目數(shù)量作為評(píng)估指標(biāo),其中TopK的K取值分別為1,3,5,7,9.

        3) 結(jié)果分析.本實(shí)驗(yàn)使用的基準(zhǔn)為傳統(tǒng)檢索框架,其邏輯架構(gòu)圖如圖6(a)所示,使用該框架與本文提出的KCIR框架對(duì)比評(píng)估.檢索框架KCIR主要包含2點(diǎn)優(yōu)化策略:

        1) 基于內(nèi)核配置圖中的標(biāo)簽對(duì)查詢(xún)擴(kuò)展;

        2) 基于內(nèi)核配置圖中的依賴(lài)關(guān)系對(duì)內(nèi)核配置項(xiàng)描述信息擴(kuò)展.

        評(píng)估時(shí)首先對(duì)KCIR中的2個(gè)優(yōu)化策略分別評(píng)估,然后對(duì)KCIR進(jìn)行總評(píng)估.實(shí)驗(yàn)使用內(nèi)核社區(qū)發(fā)布的v5.4版本內(nèi)核,基于VSM,LSI,Word2vec,DSSM這4個(gè)相似度算法分別對(duì)檢索框架KCIR和傳統(tǒng)檢索框架進(jìn)行對(duì)比評(píng)估,以驗(yàn)證框架KCIR的有效性.

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

        Fig. 15 Retrieval results based VSM圖15 基于VSM算法評(píng)估結(jié)果

        Fig. 16 Retrieval results based LSI圖16 基于LSI算法評(píng)估結(jié)果

        基于LSI算法評(píng)估結(jié)果如圖16所示,與傳統(tǒng)檢索框架相比,KCIR中的查詢(xún)擴(kuò)展策略可將TopK命中率提升9.70%~14.28%,KCIR中的描述文檔擴(kuò)展策略可將TopK的命中率提升10.67%~15.71%,KCIR檢索框架可將TopK命中率提升14.00%~30.00%.

        基于Word2vec算法評(píng)估結(jié)果如圖17所示,與傳統(tǒng)檢索框架相比,KCIR中的查詢(xún)擴(kuò)展策略可將TopK命中率提升3.09%~15.87%,KCIR中的描述文檔擴(kuò)展策略在Top1上帶來(lái)了4.44%的下降,在Top3~Top9將命中率提升5.00%~12.79%,KCIR檢索框架可將TopK命中率提升6.66%~22.22%.

        Fig. 17 Retrieval results based Word2vec圖17 基于Word2vec算法評(píng)估結(jié)果

        基于DSSM算法評(píng)估結(jié)果如圖18所示,與傳統(tǒng)檢索框架相比,KCIR中的查詢(xún)擴(kuò)展策略可將TopK命中率提升0.00%~14.51%,KCIR中的描述文檔擴(kuò)展策略可將TopK的命中率提升4.34%~11.29%,KCIR檢索框架可將TopK命中率提升6.08%~29.03%.

        Fig. 18 Retrieval results based DSSM圖18 基于DSSM算法評(píng)估結(jié)果

        本文研究點(diǎn)是檢索框架而不是具體算法的改進(jìn)優(yōu)化,重點(diǎn)關(guān)注檢索框架KCIR和傳統(tǒng)檢索框架的對(duì)比分析.通過(guò)4個(gè)相似度算法的評(píng)估可見(jiàn),與傳統(tǒng)檢索框架相比,基于內(nèi)核配置圖的檢索框架KCIR對(duì)檢索效果有顯著提升:將基于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 下一步工作

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

        Table 6 Example of Abnormal Detection Report表6 異常檢測(cè)報(bào)告示例

        5 相關(guān)工作

        5.1 內(nèi)核配置項(xiàng)

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

        5.2 Linux檢索工具

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

        6 總結(jié)與展望

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

        猜你喜歡
        可視化
        無(wú)錫市“三項(xiàng)舉措”探索執(zhí)法可視化新路徑
        基于CiteSpace的足三里穴研究可視化分析
        自然資源可視化決策系統(tǒng)
        三維可視化信息管理系統(tǒng)在選煤生產(chǎn)中的應(yīng)用
        思維可視化
        師道·教研(2022年1期)2022-03-12 05:46:47
        基于Power BI的油田注水運(yùn)行動(dòng)態(tài)分析與可視化展示
        云南化工(2021年8期)2021-12-21 06:37:54
        自然資源可視化決策系統(tǒng)
        基于CGAL和OpenGL的海底地形三維可視化
        可視化閱讀:新媒體語(yǔ)境下信息可視化新趨勢(shì)
        “融評(píng)”:黨媒評(píng)論的可視化創(chuàng)新
        久久精品免费视频亚洲| 欧洲中文字幕| 成人无码激情视频在线观看| 中文字幕人妻激情在线视频| 久久亚洲精品中文字幕| 国产免国产免费| 好爽受不了了要高潮了av| 日本成人三级视频网站| 色婷婷久久精品一区二区| 久久久久国产综合av天堂| 国产真人无遮挡作爱免费视频 | 亚洲国产一区久久yourpan| 谷原希美中文字幕在线| 色婷婷亚洲一区二区三区| 天天操夜夜操| 亚洲国产成人久久综合三区| 日本va中文字幕亚洲久伊人| 午夜裸体性播放| 91av手机在线观看| 日韩精品一区二区三区四区五区六| 日韩精品中文字幕第二页| 国产毛片视频一区二区三区在线 | 亚洲精品一区二区成人精品网站| 久久亚洲av午夜福利精品一区| 国产av国片精品| 成人国产在线播放自拍| 蜜桃视频在线观看网址| 亚洲日韩一区二区一无码 | 精品国产爱在线观看| 国产在线观看午夜视频| 丁字裤少妇露黑毛| 国产精品理人伦国色天香一区二区| 国产女主播视频一区二区三区 | 国产亚洲精品综合一区二区| 久久不见久久见免费视频6| 最新国产乱人伦偷精品免费网站| 国产黑色丝袜在线观看视频| 精品国产亚洲一区二区三区四区| 国产免费爽爽视频在线观看| 亚洲欧美日韩中文天堂| 中文字幕视频二区三区|