陳曉璠,鄧硯谷
(南昌航空大學,江西南昌330063)
計算機系統的功能日益強大,軟件系統的復雜性也逐漸凸顯,軟件系統的維護難度逐漸增大,與軟件有關的程序失效問題層出不窮,而人們對計算機系統軟件應用的可靠性需求并未降低,反而逐漸增多。目前軍事國防、金融、通信等領域均離不開計算機系統,若計算機不能長時間穩定運行,在一定程度上對社會經濟存在不可忽視的影響。
計算機系統中軟件老化可理解為服務器軟件在長時間工作后,性能出現衰退。大部分人認為老化僅出現于計算機硬件系統里,但針對軟件來講,軟件老化問題已不少見[1]。一個軟件工作后,伴隨時間的積累,軟件內部潛藏的缺陷將逐漸凸顯,致使軟件系統性能老化。通俗來講,軟件系統使用時間較長后,系統資源將出現明顯耗損,服務速度、服務質量也大大降低。為此,軟件老化趨勢預測,能夠為軟件系統失效起到決定性作用。文獻[2]與文獻[3]的研究人員均對軟件缺陷問題進行研究,分別提出了半監督集成跨項目軟件缺陷預測方法、融合多策略特征篩選的跨項目軟件缺陷預測方法,可對軟件缺陷進行準確預測,但未曾考慮到軟件老化的動態性,僅可以識別軟件缺陷模式,未能對缺陷模式下的老化趨勢進行準確預測。為此,提出基于動態命令樹算法的軟件老化趨勢預測方法,該方法與同類方法的差異在于使用動態命令樹算法優化軟件老化預測效果,可動態預測軟件老化趨勢,這對軟件系統維護存在十分重要的意義。
考慮傳統粒子濾波方法的狀態方程具有單一性,未能適應動態的軟件老化趨勢,且在軟件老化趨勢預測過程中,對軟件老化特征的提取必須根據經驗判斷,訓練過程需要大量軟件老化數據,應用成本較多[4]。為此,本文使用基于降噪自編碼器與混合趨勢粒子濾波的軟件老化趨勢預測方法,克服上述問題。
2.1.1 混合軌跡粒子濾波
本文使用混合軌跡粒子濾波方法,通過最小二乘擬合最新階段軟件老化觀測值,選取當中擬合誤差平方和最低的函數設成粒子濾波的狀態方程,此方法能夠伴隨軟件老化趨勢的變化而自主變化粒子濾波狀態方程[5-6]。
混合軌跡粒子濾波方法原理如圖1所示。

圖1 混合軌跡粒子濾波方法原理
如圖1所示,混合軌跡粒子濾波方法應用步驟是:
步驟一:初始化軟件老化趨勢預測數據特征數目j=1;
步驟二:輸入d個軟件老化趨勢觀測值,使用最小二乘方法擬合多個老化趨勢種類函數,運算獲取平方誤差與最小函數并設成粒子濾波狀態方程;
步驟三:通過粒子濾波算法對狀態方程時變參數實施優化,判斷軟件老化趨勢,設置閾值運算軟件剩下應用壽命[7];
步驟四:增多b個軟件老化趨勢觀測值(b 圖中使用的擬合函數是 rt+1=β1rt+β2 (1) 式中,rt表示t時刻的軟件狀態值;rt+1表示h+1時刻的軟件狀態值;βn表示狀態函數參數。 2.1.2 特征提取 在實施降噪自編碼器訓練時,對軟件老化特征的歸一化十分重要,歸一化后的軟件老化數據能夠優化降噪自編碼器的學習效率,優化降噪自編碼器的學習準確性[8]。所以,本文擴展頻域能量占比,實現軟件老化特征的歸一化,將歸一化后的軟件老化數據設成降噪自編碼器的輸入,擴展頻域能量占比的方法是 (2) 式中,軟件老化趨勢預測數據的頻譜與特征數目是v(g);軟件老化趨勢預測數據的頻域區間寬度與頻譜能量占比的擴展系數是h;頻譜能量占比的偏置系數是δ。 預測實際軟件老化趨勢時,可能會存在軟件老化趨勢預測數據樣本數量低于軟件老化特征數量的問題,此時訓練過程將出現過擬合問題,所以,需要在有限的訓練樣本里導入噪聲擴展訓練樣本,以此抑制過擬合問題[9-10]。 2.1.3 降噪自編碼驗證集誤差提取 在軟件全壽命周期里均勻采集并提取軟件老化數據特征樣本,將軟件老化特征樣本集合設成Q。訓練時,把樣本集合Q導入噪聲后設成訓練樣本和測試樣本,最小化代價函數,以此實現軟件老化特征重構。 在預測軟件老化趨勢時,使用訓練完畢的降噪自編碼器運算測試樣本P的各個輸入和輸出的重構誤差DV,把它設成描述軟件老化趨勢的觀測值。DV可使用重構值φ和原始特征值φ運算獲取 (3) 由于正常情況下,軟件老化特征在訓練完畢的自編碼器里重構誤差較小,伴隨軟件老化程度變大,獲取的軟件老化特征樣本和軟件未老化樣本差異也日益變大,此時DV也開始變大。DV屬于一種單一曲線,所以僅需要獲取軟件完全老化時的重構誤差閾值便能夠使用混合軌跡粒子濾波方法實施軟件老化趨勢預測。此方法能夠降低訓練過程里采集的軟件老化特征數據量,訓練成本變小,訓練效率變高。 2.1.4 預測流程 降噪自編碼器與混合趨勢粒子濾波的軟件老化趨勢預測方法的預測流程圖如圖2所示。 圖2 降噪自編碼器與混合趨勢粒子濾波的軟件老化趨勢預測方法流程圖 綜上所述,基于降噪自編碼器與混合趨勢粒子濾波的軟件老化趨勢預測方法的步驟是: 步驟一:訓練軟件老化趨勢預測樣本:采集軟件老化數據,得到軟件在沒有出現老化時的數據特征,導入高斯噪聲,增多訓練樣本數目; 步驟二:訓練降噪自編碼器,提取閾值:設定網絡結構參數,建立降噪自編碼器神經網絡。將訓練樣本輸入至降噪自編碼器神經網絡中,代價函數實施最小化,按照測試樣本調節降噪自編碼器神經網絡的超參數,完成訓練集特征重構。把軟件完全老化的數據特征輸入訓練完畢的降噪自編碼器神經網絡之中,獲取軟件老化閾值; 步驟三:軟件老化數據特征重構誤差獲取。把軟件老化數據特征輸入到降噪自編碼器神經網絡,得到重構誤差; 步驟四:軟件老化趨勢預測。把重構誤差進行平滑處理后,設成觀測值分別輸入的混合趨勢粒子濾波算法里,實施軟件老化趨勢預測。 因預測軟件老化趨勢時,軟件老化趨勢數據具有動態性,軟件老化趨勢預測樣本也存在變化,前一階段的數據樣本將不適用于后一階段的預測任務,為此,預測指令也分為新增、重寫、去除等。為實現高精度的軟件老化趨勢預測,本小節使用基于動態命令樹算法的軟件老化趨勢預測命令管理方法,優化管理軟件老化趨勢預測命令,實現軟件老化趨勢預測效果優化。 2.2.1 動態命令樹的構建 在軟件老化趨勢預測時,使用動態命令樹合理的組織與管理預測命令,動態命令樹結構中包含雙向鏈表、多個平衡二叉子樹鏈表,其可以在軟件老化趨勢預測命令中動態變化預測指令,且應用效率顯著。存儲結構如圖3所示。 圖3 動態命令樹結構示意圖 雙向鏈表是按照軟件老化趨勢預測命令集中命令行的命令關鍵字而建立的,軟件老化趨勢預測命令集里相應的命令域,是鏈表里各個結點所存儲的數據信息,且各個結點具有相應的命令行處理入口,此入口與二級鏈表存在連接性[11]。軟件老化趨勢預測命令建立后,需要先根據命令關鍵字,檢索雙向鏈表定位至相應的結點,然后在此節點入口位置進入相應的平衡二叉子樹里,實施第二次定位,獲取匹配節點,此節點相應的位置即為命令行管理的位置。 動態命令樹雙向鏈表結點的存儲結構分為四部分,第一部分是軟件老化趨勢預測命令行節點屬性結構入口指針;第二部分是孩子結點指針;第三部分是前驅結點指針;第四部分是后繼節點指針。軟件老化趨勢預測命令行節點屬性結構入口指針可存儲命令行記錄,其屬于動態命令樹執行命令的憑據。孩子結點指針指向命令處理的入口地址;前驅結點指針、后繼節點指針依次指向節點的前驅和后繼,可較好的管理雙向鏈表。 使用雙向鏈表結點數據建立軟件老化趨勢預測命令樹時,雙向鏈表是按照軟件老化趨勢預測命令關鍵字順序構建,若雙向鏈表里某結點的命令關鍵字和軟件老化趨勢預測命令行的關鍵詞一致,便把相應操作變換至此結點相應的子樹中。軟件老化趨勢預測命令行節點屬性的結構分為命令關鍵字、命令參數掩碼值、命令屬性R/A、命令優先級。 命令關鍵字即為軟件老化趨勢預測命令的首個關鍵字;命令參數掩碼值為除了命令關鍵詞之外全部參數關鍵字大小對比值;命令屬性R/A與命令行管理存在直接聯系;命令優先級是軟件老化趨勢預測命令的先后順序,命令集里命令行記錄均根據結點模式保存在雙向鏈表里。 2.2.2 動態命令樹算法 為優化動態命令樹算法效率,讓它可以高效的更新軟件老化趨勢預測命令信息,把平衡二叉樹設計為動態命令樹的形式[12]。在動態命令樹雙向鏈表里檢索獲取命令行的命令關鍵字所匹配的結點信息域后,將此匹配節點設成入口,進入平衡二叉樹,然后將輸入的軟件老化趨勢預測命令信息按照具體情況實施新增、重寫或去除等管理。 針對軟件老化趨勢預測命令重寫問題,可在雙鏈表中操作,其不存在結點空間釋放情況。例如針對軟件老化趨勢預測命令新增問題,需要融合雙向鏈表與平衡二茬子樹鏈表的雙向應用,不論是新增或去除,使用遞歸搜索模式便可獲取最合適的操作位置。 在軟件老化趨勢預測命令管理中,若軟件老化趨勢預測命令在平衡二叉子樹里,便表示此命令已存在,直接進行編輯處理即可。若沒軟件老化趨勢預測命令不在平衡二叉子樹里,變需要在此樹中實施新增處理。 使用動態命令樹算法管理軟件老化趨勢預測命令,能夠降低命令行的對比次數,提高命令查詢效率,優化軟件老化趨勢的動態預測效果。 實驗在Linux系統中設計應用服務器,由于Linux系統穩定性與安全性顯著,且使用性能較好。目前很多企業服務器都把自家企業的服務設置在Linux系統中。實驗里本文使用的Linux系統處理器核數是4核,網站服務器使用Tomcat服務器,Tomcat服務器是一種輕量級應用服務器,可獨立運行。為模擬軟件老化過程,使用壓力測試工具siege模擬,實驗環境使用的工具信息如表1所示。 表1 實驗環境使用工具 在體現軟件老化趨勢的多個指標里,內存使用是核心指標之一。所以把內存設成軟件老化特征,使用本文方法預測內存衰退趨勢,實現軟件老化趨勢預測。Linux操作系統長時間使用后,內存損耗將逐漸嚴重,每日需要重啟4次以上,可用內存的日變化詳情如圖4所示。 圖4 可用內存的日變化詳情 使用本文方法預測Linux操作系統內存衰退趨勢,實現Linux操作系統軟件老化趨勢預測。使用平均絕對誤差、均方誤差評價本文方法對Linux操作系統軟件老化趨勢預測效果,平均絕對誤差MAE、均方誤差MSE的表達式如下式所示 (4) (5) 式中,m是軟件老化特征數;i是軟件老化趨勢預測次數;o1、o2依次是實際值與預測值。 使用文獻[2]提出的半監督集成跨項目軟件缺陷預測方法、文獻[3]提出的融合多策略特征篩選的跨項目軟件缺陷預測方法作為對比方法,以此評價本文方法的預測效果。三種方法的預測效果如圖5、圖6、圖7所示。 圖5 本文方法預測效果 圖6 文獻[2]方法預測效果 圖7 文獻[3]方法預測效果 對比圖5、圖6、圖7可知,三種方法對Linux操作系統內存衰退趨勢的預測效果存在明顯差異,本文方法預測結果的平均絕對誤差、均方誤差小于0.04,半監督集成跨項目軟件缺陷預測方法、融合多策略特征篩選的跨項目軟件缺陷預測方法預測結果的平均絕對誤差、均方誤差都大于本文方法,表示本文方法對Linux操作系統內存衰退趨勢的預測和實際值偏離較小,精確度較高,軟件老化趨勢預測效果更好。 測試本文方法中基于動態命令樹算法的軟件老化趨勢預測命令管理方法的使用價值,此方法使用價值主要通過軟件老化趨勢預測指令的新增、重寫、去除三種指令管理效果體現。將軟件老化趨勢預測指令的數目依次設成5個、10個、15個、20個,測試在使用基于動態命令樹算法的軟件老化趨勢預測命令管理方法前后,軟件老化趨勢指令新增、重寫、去除三種指令操作的響應耗時,結果如圖8、圖9、圖10所示。 圖8 新增指令 圖9 重寫指令 圖10 去除指令 分析圖8、圖9、圖10可知,在使用基于動態命令樹算法的軟件老化趨勢預測命令管理方法前后,新增、重寫、去除三種指令響應耗時都存在一些變化,在未使用基于動態命令樹算法的軟件老化趨勢預測命令管理方法之前,新增、重寫、去除三種指令響應耗時超過300ms,雖然響應耗時不顯著,但是和使用基于動態命令樹算法的軟件老化趨勢預測命令管理方法相比,響應耗時較多。使用基于動態命令樹算法的軟件老化趨勢預測命令管理方法后,新增、重寫、去除三種指令響應耗時低于200ms,響應速度較快,指令管理效率高,這對軟件老化趨勢預測效率存在積極影響,可提升本文方法對軟件老化趨勢預測效果。 為預測軟件老化趨勢,提出基于動態命令樹算法的軟件老化趨勢預測方法。本文方法和同類軟件老化趨勢預測方法的差異在于本文方法中使用基于動態命令樹算法的軟件老化趨勢預測命令管理方法,動態管理軟件老化趨勢預測指令,可實現軟件老化趨勢預測階段性指令管理,提升軟件老化預測效率。 在實驗中,證明了本文方法可以高精度的預測軟件老化趨勢,比半監督集成跨項目軟件缺陷預測方法、融合多策略特征篩選的跨項目軟件缺陷預測方法的使用效果更佳,并且本文方法中,基于動態命令樹算法的軟件老化趨勢預測命令管理方法的使用,可大大提升軟件老化趨勢預測指令管理效率。


2.2 基于動態命令樹算法的軟件老化趨勢預測命令管理方法

3 實驗分析










4 結論