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

        ?

        基于System Tap的Linux服務(wù)器性能分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

        2014-03-16 09:22:46裴歐亞康慕寧
        電子設(shè)計(jì)工程 2014年10期
        關(guān)鍵詞:可視化

        裴歐亞,康慕寧,張 磊

        (西北工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安 710072)

        隨著Linux操作系統(tǒng)在大型服務(wù)器上的廣泛應(yīng)用,對(duì)系統(tǒng)的性能提出了更高的要求。因此Linux系統(tǒng)開發(fā)人員希望通過對(duì)Linux系統(tǒng)進(jìn)行性能測試,定位系統(tǒng)瓶頸,分析引起性能問題的原因。系統(tǒng)的性能不能通過單一指標(biāo)來判定,必須通過系統(tǒng)的整體性(綜合指標(biāo))來判定。Linux作為全球最廣泛使用的開源操作系統(tǒng),其超高的性價(jià)比,決定了對(duì)此內(nèi)核的可視化性能分析研究具有重要的學(xué)術(shù)意義及深遠(yuǎn)的教育意義。

        可視化其實(shí)質(zhì)是利用計(jì)算機(jī)的圖形圖像技術(shù),把各種數(shù)據(jù)信息轉(zhuǎn)換成合適的圖形圖像在屏幕上表示出來。這一過程涉及到圖形學(xué)、和人機(jī)交互等領(lǐng)域知識(shí)。基于SystemTap的Linux服務(wù)器性能分析系統(tǒng)通過SystemTap,在Linux內(nèi)核的合適位置添加探針,當(dāng)啟動(dòng)檢測時(shí),以事件追蹤機(jī)制實(shí)時(shí)進(jìn)行數(shù)據(jù)的收集、解析,最終以可視化的界面呈現(xiàn)給用戶。用戶可以通過可視化界面直觀的對(duì)系統(tǒng)的資源利用率及運(yùn)行狀況進(jìn)行性能分析和優(yōu)化。

        1 性能分析系統(tǒng)設(shè)計(jì)分析

        針對(duì)為滿足Linux服務(wù)器性能分析的需求,結(jié)合SystemTap及 “事件追蹤機(jī)制”等技術(shù)方式,經(jīng)過分析得到Linux性能數(shù)據(jù)共分為以下3個(gè)部分:進(jìn)程/線程的實(shí)時(shí)運(yùn)行狀態(tài);進(jìn)程間的通信狀況;以及對(duì)系統(tǒng)資源的占用狀況。

        要想完成以上性能數(shù)據(jù)的收集、分析及可視化等功能,需要做好以下幾個(gè)方面。首先服務(wù)器端應(yīng)能實(shí)時(shí)收集性能數(shù)據(jù),并且能確保將收集到的性能數(shù)據(jù)傳回客戶端;其次客戶端能正確解析服務(wù)器段傳回的性能數(shù)據(jù),即將數(shù)據(jù)轉(zhuǎn)換成可視化數(shù)據(jù);最后可視化模塊能將最終結(jié)果呈現(xiàn)給用戶。

        本系統(tǒng)在軟件架構(gòu)上基于C/S結(jié)構(gòu),server端負(fù)責(zé)接收命令、收集數(shù)據(jù)及發(fā)送數(shù)據(jù),client端負(fù)責(zé)控制、解析數(shù)據(jù)及顯示數(shù)據(jù),很好的滿足了用戶提出的“盡量減小對(duì)服務(wù)器性能影響”的需求。

        C/S(Client/Server)模式即客戶端服務(wù)器端架構(gòu),它可以采用任何通信協(xié)議,客戶端包含一個(gè)或多個(gè)在用戶的電腦上運(yùn)行的程序,客戶端向服務(wù)器端發(fā)送請(qǐng)求命令,由服務(wù)器處理響應(yīng)并將信息返還給客戶端,再由客戶端處理服務(wù)器的返回信息并將處理結(jié)果顯示給用戶。雖然B/S架構(gòu)是對(duì)C/S架構(gòu)的改進(jìn),但是C/S相較于B/S,其具有的響應(yīng)速度快,對(duì)服務(wù)器性能影響較輕的特性,決定了本系統(tǒng)必須使用C/S架構(gòu)。

        2 總體設(shè)計(jì)

        該性能分析系統(tǒng)的系統(tǒng)結(jié)構(gòu)圖如圖1所示,在對(duì)目標(biāo)服務(wù)器進(jìn)行測量時(shí),首先目標(biāo)服務(wù)器必須開啟Server端服務(wù);接著Client端向Server端發(fā)送開始監(jiān)測命令,Serevr端收到開始命令、啟動(dòng)監(jiān)測并記錄數(shù)據(jù);然后Client端向Server端發(fā)送終了監(jiān)測命令,Server端收到終了命令、停止監(jiān)測并將數(shù)據(jù)傳回Client端;最后Client端先調(diào)用解析模塊將Server端傳回的數(shù)據(jù)解析,然后調(diào)用可視化模塊將解析的結(jié)果以圖形化方式顯示給用戶。

        圖1 系統(tǒng)結(jié)構(gòu)圖Fig.1 Structure diagram of performance analysis system

        3 性能分析系統(tǒng)軟件設(shè)計(jì)

        該性能分析系統(tǒng)軟件采用C/S架構(gòu),客戶端功能:向服務(wù)器端發(fā)送控制命令、接受服務(wù)器端數(shù)據(jù)、數(shù)據(jù)解析及數(shù)據(jù)可視化功能,服務(wù)器端功能:接受客戶端命令后回傳性能數(shù)據(jù)和收集性能數(shù)據(jù)。為了日后的更新、維護(hù)和拓展,在設(shè)計(jì)過程中采用模塊化的思想,因此將客戶端劃分為通信模塊,數(shù)據(jù)解析模塊,數(shù)據(jù)顯示模塊。服務(wù)器端劃分為通信模塊,數(shù)據(jù)收集模塊。系統(tǒng)軟件設(shè)計(jì)的結(jié)構(gòu)圖如圖2所示。

        圖2 系統(tǒng)軟件設(shè)計(jì)結(jié)構(gòu)圖Fig.2 diagram of the software analysis system

        在軟件設(shè)計(jì)中,數(shù)據(jù)收集模塊主要用來實(shí)現(xiàn)對(duì)Linux服務(wù)器性能數(shù)據(jù)的收集;服務(wù)器端的通信模塊主要用來接受客戶端發(fā)送來的命令,通過該模塊可以控制數(shù)據(jù)收集模塊的啟用開關(guān),并且能將收集到的性能數(shù)據(jù)傳回客戶端;客戶端的通信模塊主要用來向服務(wù)器端發(fā)送命令以及接受服務(wù)器端傳回的性能數(shù)據(jù);數(shù)據(jù)解析模塊主要用來將性能數(shù)據(jù)解析成可視化的數(shù)據(jù);數(shù)據(jù)顯示模塊主要用來將可視化的結(jié)果以圖形化界面方式呈現(xiàn)給用戶。

        4 性能分析系統(tǒng)重要模塊的設(shè)計(jì)與實(shí)現(xiàn)

        4.1 數(shù)據(jù)收集模塊

        為了收集linux實(shí)時(shí)的運(yùn)行數(shù)據(jù),必須借助于System Tap[1-6],在Linux kernel源代碼的關(guān)鍵之處加上探針,并為所加探針新規(guī)處理函數(shù)(保存獲取的內(nèi)核數(shù)據(jù))。一旦探針被觸發(fā),被觸發(fā)探針的處理函數(shù)立即保存獲取的內(nèi)核數(shù)據(jù)。

        例如:創(chuàng)建進(jìn)程(sched_process_fork)處添加探針及探針處理函數(shù)如下:

        實(shí)現(xiàn)數(shù)據(jù)收集模塊的難點(diǎn)有以下3點(diǎn):

        第一點(diǎn):確定探針添加的位置。探針添加的位置決定能獲取何種類型的linux內(nèi)核數(shù)據(jù)。此外SystemTap的探針處理是以中斷方式處理的,而linux內(nèi)核在某些代碼處不允許產(chǎn)生中斷(中斷會(huì)導(dǎo)致系統(tǒng)宕機(jī)等問題),再加上SystemTap理論上可以在linux內(nèi)核任意位置添加探針,所以添加探針的操作必須小心謹(jǐn)慎。因此需要開發(fā)人員必須熟悉linux內(nèi)核某個(gè)功能或全部功能的源代碼及處理邏輯流程。

        第二點(diǎn):探針處理函數(shù)的高并發(fā)導(dǎo)致的“寫競爭”。每一個(gè)探針都關(guān)聯(lián)一個(gè)寫內(nèi)存的處理函數(shù)。在負(fù)載很重的服務(wù)器上,同一個(gè)探針不間斷被觸發(fā),或多個(gè)探針同時(shí)被觸發(fā),都會(huì)導(dǎo)致多個(gè)處理函數(shù)競爭同一個(gè)內(nèi)存塊。因此必須為內(nèi)存塊填加寫互斥鎖,實(shí)現(xiàn)內(nèi)存塊的互斥訪問。本系統(tǒng)為實(shí)現(xiàn)寫內(nèi)存互斥,定義了一個(gè)全局的靜態(tài)變量(變更靜態(tài)變量值的操作是原子操作)。每一個(gè)處理函數(shù)寫內(nèi)存之前都要先判斷靜態(tài)變量的值。如果為TRUE則可繼續(xù)進(jìn)行后續(xù)操作;否則,將阻塞。

        第三點(diǎn):長時(shí)間測量。經(jīng)過實(shí)驗(yàn):單臺(tái)小型服務(wù)器在高負(fù)荷工作時(shí),少量探針(hooks)每秒產(chǎn)生的需要保存的數(shù)據(jù)就高達(dá)40M,因此只能將收集的數(shù)據(jù)寫入磁盤保存。為了避免頻繁寫磁盤對(duì)服務(wù)器正常I/O操作產(chǎn)生影響,同時(shí)加快寫磁盤的速率,盡可能避免因磁盤寫速率低造成的數(shù)據(jù)丟失。本系統(tǒng)采用如下設(shè)計(jì):

        在內(nèi)存中申請(qǐng)3塊大小為64M (可由用戶手動(dòng)設(shè)置,默認(rèn)最小 64M)的內(nèi)存空間,編號(hào)為 BufferNo0,BufferNo1,BufferNo2。這3塊內(nèi)存按編號(hào)從小到大循環(huán)使用。只有當(dāng)當(dāng)前的內(nèi)存空間為空并且前一塊內(nèi)存空間寫滿的情況下,才能向當(dāng)前的內(nèi)存空間寫數(shù)據(jù)。每一塊內(nèi)存都有互斥鎖,保證同時(shí)只有一個(gè)探針的處理函數(shù)向可寫內(nèi)存塊寫數(shù)據(jù)。每當(dāng)一塊空間寫滿,立刻將該寫滿的內(nèi)存塊中的數(shù)據(jù)轉(zhuǎn)移至磁盤,同時(shí)清空該內(nèi)存塊,為接下來需要保存的數(shù)據(jù)準(zhǔn)備空間。

        4.2 數(shù)據(jù)解析模塊

        從服務(wù)器端傳回的性能數(shù)據(jù)是以二進(jìn)制的形式保存的,用戶幾乎不可能快速通過查閱二進(jìn)制信息來分析服務(wù)器的狀況。因此必須將二進(jìn)制形式的數(shù)據(jù)解析成方便用戶查閱及可視化模塊使用的數(shù)據(jù)格式。

        長時(shí)間的收集使得最終收集的數(shù)據(jù)量高達(dá)數(shù)G(目前最大支持4G),因此解析大數(shù)據(jù)的性能成了本性能分析系統(tǒng)的瓶頸。

        為了提升解析數(shù)據(jù)的效率,最終選取了Windows操作系統(tǒng)提供的內(nèi)存文件映射技術(shù)。內(nèi)存映射文件技術(shù)是由一個(gè)內(nèi)存映射文件是由一個(gè)文件到一塊內(nèi)存的映射,使進(jìn)程虛擬地址空間的某個(gè)區(qū)域與磁盤上某個(gè)文件的部分或全部內(nèi)容建立映射。建立映射后,通過該映射區(qū)域可以直接對(duì)被映射的磁盤文件進(jìn)行訪問,而不必執(zhí)行文件的I/O操作,也無需對(duì)文件內(nèi)容進(jìn)行緩沖處理,就好像整個(gè)被映射的文件都加載到了內(nèi)存一樣。

        運(yùn)行內(nèi)存映射主要有以下幾個(gè)步驟:

        1)用函數(shù)CreateFile(),以適當(dāng)?shù)姆绞絼?chuàng)建或打開一個(gè)文件核心對(duì)象;2)將函數(shù)CreateFile()返回的文件句柄作為參數(shù),調(diào)用函數(shù)CreateFileMapping(),創(chuàng)建一個(gè)內(nèi)存文件映射對(duì)象;3)調(diào)用函數(shù)MapViewOfFile()將整個(gè)文件的部分區(qū)域或者全部映射到內(nèi)存;4)用函數(shù)MapViewOfFile()返回的指針來讀寫文件;5)調(diào)用函數(shù)UnMapViewOfFile()來解除文件映射;6)調(diào)用函數(shù) CloseHandle()來關(guān)閉內(nèi)存映射文件;7)調(diào)用函數(shù)CloseHandle()來關(guān)閉文件核心對(duì)象[7]。

        4.3 數(shù)據(jù)顯示模塊

        數(shù)據(jù)顯示模塊主要是將數(shù)據(jù)解析模塊生成的可視化數(shù)據(jù)以圖形界面的方式呈現(xiàn)給用戶。為了消除重繪過程中產(chǎn)生的閃屏問題,采用了雙緩沖機(jī)制來繪制圖像[8]。

        可視化界面沿著水平時(shí)間軸 (單位/s)真實(shí)地還原了linux服務(wù)器運(yùn)行時(shí),進(jìn)程調(diào)度、磁盤調(diào)度、系統(tǒng)資源(cpu、disk等)的占用率。

        可視化界面[9]截圖如圖3所示。

        圖3 可視化界面截圖Fig.3 The screenshot of visualization interface

        圖3的左側(cè)是Linux運(yùn)行時(shí)所有進(jìn)程的列表,包括進(jìn)程名、進(jìn)程ID及線程ID。右側(cè)就是進(jìn)程動(dòng)作狀況表示區(qū)域,顯示所有進(jìn)程/線程實(shí)時(shí)運(yùn)行狀況。進(jìn)程/線程對(duì)Cpu和磁盤的使用狀況只分為兩種狀態(tài):執(zhí)行中和等待即空閑狀態(tài),分別標(biāo)記不同的顏色進(jìn)行區(qū)分。當(dāng)不同進(jìn)程進(jìn)行通信時(shí),以不同的顏色進(jìn)行區(qū)分通信的方式,如信號(hào)、PIPE(管道)、NPIPE(無名管道)、MESSAGE等方式。

        圖3中顯示了進(jìn)程號(hào)和線程號(hào)均是4389的進(jìn)程Xorg與進(jìn)程號(hào)和線程號(hào)均是4727的進(jìn)程gnome-terminal之間通信的動(dòng)作。

        5 性能分析系統(tǒng)應(yīng)用

        某一產(chǎn)品軟件,客戶端和服務(wù)器端通信開銷突然從0.5 s增加至4 s。由于邏輯復(fù)雜,開發(fā)人員短時(shí)間內(nèi)無法分析出問題原因,通過使用本系統(tǒng),使內(nèi)核狀況可視化,只用一個(gè)小時(shí)就將問題點(diǎn)明確,快速解決了該問題。

        通過可視化測量結(jié)果,進(jìn)行詳細(xì)分析,發(fā)現(xiàn)一個(gè)問題見圖4中第一幅圖虛線框列出的問題:1。

        圖4 可視化性能分析實(shí)例Fig.4 The example of Visualization performance analysis

        問題:CPU等待/空閑區(qū)間過多

        根據(jù)問題應(yīng)采取以下措施進(jìn)行改善:

        1)CPU等待/空閑區(qū)間的原因檢討;

        2)減少進(jìn)程間的通信次數(shù);

        通過以上兩點(diǎn)對(duì)代碼進(jìn)行改善,再次運(yùn)行后,對(duì)比發(fā)現(xiàn):改善前需要9.75 s的處理時(shí)間,改善后只需要1.95 s(約1/5)。

        注:上下兩幅圖倍率,區(qū)間相同 (時(shí)間間隔6 s)

        6 結(jié) 論

        本軟件系統(tǒng)采用模塊化設(shè)計(jì),提高了系統(tǒng)的可擴(kuò)展性和可維護(hù)性,便于二次開發(fā)。該軟件系統(tǒng)采用了友好的界面設(shè)計(jì),目前已交付某大型跨國IT企業(yè)使用,主要用于分析該企業(yè)大中型服務(wù)器的性能。實(shí)際應(yīng)用情況表明,該系統(tǒng)顯著地縮短了解決服務(wù)器性能問題所需的時(shí)間,同時(shí)該系統(tǒng)還具有操作簡單,穩(wěn)定可靠、人機(jī)交互良好等特點(diǎn),達(dá)到了要求。

        但是本系統(tǒng)還有以下不足:

        1)在Linux操作系統(tǒng)中添加的‘探針’數(shù)量較少,導(dǎo)致獲取的性能數(shù)據(jù)不足。

        2)Linux服務(wù)器將內(nèi)存數(shù)據(jù)轉(zhuǎn)移至磁盤過程中,由于探針產(chǎn)生的數(shù)據(jù)量過大,會(huì)導(dǎo)致部分需要收集的數(shù)據(jù)丟失。

        3)可視化界面對(duì)性能數(shù)據(jù)的顯示粒度略顯粗糙。

        因此,后期將對(duì)以上不足進(jìn)行仔細(xì)分析并逐一解決,進(jìn)一步完善本文所描述的性能分析系統(tǒng)。

        [1]李云華.Linux內(nèi)核調(diào)試新秀System Tap[R].程序員,2010,(3):127-127.

        [2]Frank Ch.Eigler.Systemtap tutorial[EB/OL].(2013)[2013-08-20].http://www.sourceware.org/systemtap/tutorial.pdf

        [3]SystemTap Language Reference[EB/OL].(2013)[2013-08-20].http://www.sourceware.org/systemtap/langref.pdf

        [4]薛偉偉.軟件性能測試和分析方法的研究與應(yīng)用 [D].西安:西北工業(yè)大學(xué),2013.

        [5]謝雨辰.基于SystemTap的Kprobes與Relayfs的開發(fā)[D].吉林:吉林大學(xué),2007.

        [6]Prasad V,Cohen W,Eigler F,etal.Locating system problems using dynamic instrumentation[C]//Linux Symposium,2005:49-64.

        [7]馬禮,李敬喆,葛根焰,等.一種基于多核環(huán)境的海量數(shù)據(jù)快速讀取方法[J].計(jì)算機(jī)研究與發(fā)展,2011(48):63-67.MA Li,LI Jing-zhe,GE Gen-yan,et al.Quick-Read means ofmass data based on multi-core environment[J].Journal of Computer Research and Development,2011(48):63-67.

        [8]明日科技,孫秀梅,王雪,等.Visaul C++典型模塊與項(xiàng)目實(shí)戰(zhàn)大全[M].北京:電子工業(yè)出版社,2012.

        [9]王卉,趙政文,齊萬華.基于Windows運(yùn)行過程可視化的軟件性能分析[J].微處理機(jī),2013(1):45-48.WANG Hui,ZHAO Zheng-wen,QI Wan-hua.Software performance analysis of visualized software based on windows operating[J].Microprocessors,2013(1):45-48.

        猜你喜歡
        可視化
        無錫市“三項(xiàng)舉措”探索執(zhí)法可視化新路徑
        基于CiteSpace的足三里穴研究可視化分析
        自然資源可視化決策系統(tǒng)
        北京測繪(2022年6期)2022-08-01 09:19:06
        三維可視化信息管理系統(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)
        北京測繪(2021年7期)2021-07-28 07:01:18
        基于CGAL和OpenGL的海底地形三維可視化
        可視化閱讀:新媒體語境下信息可視化新趨勢
        “融評(píng)”:黨媒評(píng)論的可視化創(chuàng)新
        一本色道无码道dvd在线观看| 日本一区二区三深夜不卡| 日韩av综合色区人妻| 丰满少妇被猛进去高潮| 国产成人av综合色| 亚州少妇无套内射激情视频| 99精品国产兔费观看久久| 久久国产亚洲av高清色| 好看的日韩精品视频在线| 亚洲亚洲人成综合丝袜图片| 国外精品视频在线观看免费| 国产一区二区三区啪| 久久九九av久精品日产一区免费| 少妇又色又爽又高潮在线看| 亚洲国产精品无码中文字| 免费a级毛片无码a| 欧美日韩一区二区三区视频在线观看 | 日韩人妻无码一区二区三区久久| 欧美性xxxx狂欢老少配| 国产美女裸身网站免费观看视频| 日韩精品视频中文字幕播放| 欧美性猛交xxx嘿人猛交| 激情第一区仑乱| 亚洲天堂成人在线| 精品国产麻豆一区二区三区| 亚洲精品中文字幕视频色| 亚洲色成人网站www永久| 日本动态120秒免费| 成在线人免费无码高潮喷水| 开心五月骚婷婷综合网| 亚洲av综合av成人小说| 欧美老妇人与禽交| 果冻国产一区二区三区| 日本午夜精品一区二区三区| 狠狠色噜噜狠狠狠777米奇小说| 国产成人精品日本亚洲18| 久草视频华人在线观看| 美女扒开腿露内裤免费看| 亚洲啪av永久无码精品放毛片| 无码专区中文字幕DVD| 亚洲一区二区三区在线更新|