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

        ?

        基于Windows運(yùn)行過(guò)程可視化的軟件性能分析

        2013-09-12 01:49:52趙政文齊萬(wàn)華
        微處理機(jī) 2013年1期
        關(guān)鍵詞:開(kāi)發(fā)人員內(nèi)核線程

        王 卉,趙政文,齊萬(wàn)華

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

        1 引言

        隨著軟件的發(fā)展和應(yīng)用,用戶關(guān)注的已經(jīng)不僅僅是軟件的功能,性能也開(kāi)始成為關(guān)注的焦點(diǎn)。因此開(kāi)發(fā)人員希望通過(guò)對(duì)被測(cè)系統(tǒng)進(jìn)行性能測(cè)試,定位性能瓶頸,分析引起性能問(wèn)題的原因。由于軟件的性能最終要通過(guò)系統(tǒng)的整體性能表現(xiàn)出來(lái),一般開(kāi)發(fā)人員因?yàn)楦鞣N因素,并不能通過(guò)代碼來(lái)對(duì)系統(tǒng)的資源利用率和相關(guān)資源(如網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)、應(yīng)用服務(wù)器等)的使用和消耗數(shù)據(jù)進(jìn)行性能分析和測(cè)試。Windows作為最廣泛使用的操作系統(tǒng),對(duì)其內(nèi)核的運(yùn)行狀態(tài)進(jìn)行可視化研究很有意義。

        可視化泛指利用計(jì)算機(jī)圖形學(xué)和圖像處理技術(shù),將數(shù)據(jù)轉(zhuǎn)換成圖形或圖像在屏幕上顯示出來(lái)并進(jìn)行交互處理的理論、方法和技術(shù),這是一個(gè)展示數(shù)據(jù)并獲得對(duì)數(shù)據(jù)更深層次認(rèn)識(shí)的過(guò)程?;赪indows內(nèi)核運(yùn)行過(guò)程的可視化系統(tǒng)通過(guò)調(diào)用ETW,并在開(kāi)發(fā)程序的關(guān)鍵處插入代碼,當(dāng)代碼在內(nèi)核中運(yùn)行時(shí),以事件跟蹤的方式實(shí)時(shí)進(jìn)行采集、解析,并通過(guò)可視化界面工具打開(kāi)。由此開(kāi)發(fā)人員可以通過(guò)代碼運(yùn)行時(shí)系統(tǒng)的資源利用率和對(duì)相關(guān)資源(如網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)、應(yīng)用服務(wù)器等)的使用等進(jìn)行性能分析和測(cè)試。

        2 內(nèi)核運(yùn)行數(shù)據(jù)的采集和解析

        作為性能分析及數(shù)據(jù)采集的系統(tǒng),應(yīng)遵守以下準(zhǔn)則:

        (1)真實(shí)性:采集出的數(shù)據(jù)可視化后反應(yīng)的是真實(shí)的系統(tǒng)運(yùn)行狀況,獲取系統(tǒng)最真實(shí)的性能表現(xiàn)。

        (2)動(dòng)態(tài)性:體現(xiàn)各種操作執(zhí)行的時(shí)序關(guān)系。

        (3)可靠性,系統(tǒng)具有容錯(cuò)能力和可連續(xù)運(yùn)行的能力。

        (4)可用性,系統(tǒng)開(kāi)銷要小,不會(huì)嚴(yán)重降低系統(tǒng)和網(wǎng)絡(luò)性能。

        (5)適應(yīng)性,對(duì)系統(tǒng)來(lái)說(shuō)必須是易于開(kāi)發(fā)的,可添加新的功能,能隨時(shí)適應(yīng)系統(tǒng)環(huán)境的改變。

        Windows事件跟蹤(ETW)是操作系統(tǒng)提供的一個(gè)高速通用的跟蹤工具,能夠滿足上述需求。ETW的優(yōu)勢(shì)在于結(jié)合使用系統(tǒng)內(nèi)核模式和用戶模式的組件,優(yōu)化事件日志的快速寫(xiě)入,在實(shí)際操作環(huán)境中實(shí)現(xiàn)詳細(xì)跟蹤。ETW在內(nèi)核中實(shí)現(xiàn)緩沖和日志記錄機(jī)制,日志記錄機(jī)制使用處理器的緩沖區(qū),當(dāng)緩沖區(qū)滿或是ETW會(huì)話終止時(shí),系統(tǒng)將提前轉(zhuǎn)儲(chǔ)緩沖區(qū)的內(nèi)容,由異步寫(xiě)線程將這些緩沖區(qū)寫(xiě)入磁盤(pán)。這樣,在寫(xiě)入事件時(shí)大型服務(wù)器應(yīng)用程序所受的干擾可以被降至最小。從Windows Vista開(kāi)始,微軟新推出了ETW統(tǒng)一事件提供程序模型和API。使用ETW提供的程序API,任何應(yīng)用程序DLL或驅(qū)動(dòng)程序都可以成為事件的提供程序(引發(fā)事件的組件),因此任何可被記錄的重要活動(dòng)都可以成為事件。

        使用系統(tǒng)附帶的控制器應(yīng)用程序logman,在本地和遠(yuǎn)程系統(tǒng)上調(diào)用 ETW,以“事件跟蹤方式(event trace)”對(duì)于指定時(shí)間段內(nèi)的事件跟蹤日志進(jìn)行收集。使用logman工具啟動(dòng)ETW會(huì)話和事件提供程序,由提供程序引發(fā)的事件寫(xiě)入ETW會(huì)話中,當(dāng)會(huì)話終止時(shí),跟蹤事件跟蹤器將日志記錄在以.etl為擴(kuò)展名的二進(jìn)制文件中。數(shù)據(jù)解析主要是依據(jù)事件的不同類型,不同觀察粒度對(duì)采集的二進(jìn)制數(shù)據(jù)提取進(jìn)程/線程號(hào)、時(shí)間戳、提供程序GUID、CPU時(shí)間、CPU ID等等,并且通過(guò)數(shù)據(jù)的分類整理,轉(zhuǎn)變?yōu)橐?guī)整的可視化工具數(shù)據(jù)。

        3 內(nèi)核數(shù)據(jù)的可視化

        可視化界面沿著時(shí)間軸真實(shí)的還原了代碼運(yùn)行時(shí),進(jìn)程的整個(gè)運(yùn)行狀態(tài),包括磁盤(pán)和CPU占用時(shí)間狀況和調(diào)度狀況、進(jìn)程間的通信狀況。

        可視化工具,是利用MFC編程實(shí)現(xiàn)的。把采集出的信息進(jìn)行解析處理,將解析出的數(shù)據(jù)導(dǎo)入到可視化工具,輸出可視化界面,如圖1所示。

        圖1 一個(gè)java進(jìn)程的可視化實(shí)例

        圖1展示一個(gè)java線程沿著時(shí)間軸的整個(gè)事務(wù)過(guò)程。圖的左側(cè)是系統(tǒng)運(yùn)行時(shí)進(jìn)程的列表,包括進(jìn)程名和線程號(hào)。右側(cè)就是所有進(jìn)程/線程在內(nèi)核中運(yùn)行的圖形顯示,進(jìn)程/線程對(duì)CPU和磁盤(pán)的使用分開(kāi)表示,進(jìn)程/線程在CPU使用時(shí),將之劃分為“可執(zhí)行狀態(tài)”、“執(zhí)行中”和“休眠狀態(tài)”三種狀態(tài),在“執(zhí)行中”狀態(tài)根據(jù)用戶模式、內(nèi)核模式、缺頁(yè)異常等活動(dòng)類型,根據(jù)進(jìn)程/線程的狀態(tài)和活動(dòng)類型的不同,以適當(dāng)?shù)念伾右詤^(qū)分。當(dāng)線程從休眠狀態(tài)變?yōu)榭蓤?zhí)行狀態(tài)時(shí)使用箭頭表示,以不同的顏色進(jìn)行區(qū)分wakeup的原因,如網(wǎng)絡(luò)時(shí)間中斷、時(shí)間片中斷、其他進(jìn)程中斷等等。時(shí)間軸顯示的是相對(duì)時(shí)間,可以通過(guò)修改設(shè)置,變?yōu)榻^對(duì)時(shí)間。

        圖1中顯示ID號(hào)為17631的java線程與ID號(hào)為17657的postmaster線程之間通信的動(dòng)作。圖1中ID號(hào)為17631的java線程有“202”的數(shù)字,是事件提供程序ApProbe Trace在應(yīng)用程序中插入的探測(cè)點(diǎn),“202”作為methodID是用戶自定義的,通過(guò)這些探測(cè)點(diǎn)的加入,用戶可以更好的跟蹤代碼在內(nèi)核中運(yùn)行的真實(shí)狀況。

        4 使用可視化分析軟件性能問(wèn)題

        4.1 單一事務(wù)的性能驗(yàn)證的方法

        圖2所示的是用戶點(diǎn)擊使用flash制作的網(wǎng)頁(yè)鏈接時(shí)一個(gè)事務(wù)的執(zhí)行過(guò)程,可視化界面上顯示從瀏覽器進(jìn)程結(jié)束到Framework進(jìn)程的執(zhí)行中出現(xiàn)了延遲,并且瀏覽器進(jìn)程占用了很多資源,消耗了很多時(shí)間。這些延遲和消耗過(guò)多的資源需要具體分析其原因,也可以將運(yùn)行程序在不同的配置環(huán)境中運(yùn)行,得出可視化界面,分析是因?yàn)橄到y(tǒng)環(huán)境造成的延遲和損耗還是因?yàn)榇a等其他原因。

        因此通過(guò)內(nèi)核運(yùn)行的可視化界面,開(kāi)發(fā)人員能夠真實(shí)的了解到應(yīng)用程序在各種不同操作系統(tǒng)內(nèi)核中的運(yùn)行狀態(tài),對(duì)比性能指標(biāo)進(jìn)行性能分析。

        圖2 一個(gè)事務(wù)執(zhí)行過(guò)程的圖形化顯示

        4.2 軟件性能分析實(shí)例

        某一Java產(chǎn)品一到自己的框架處理處響應(yīng)時(shí)間就從40毫秒增加到700毫秒。開(kāi)發(fā)人員無(wú)法分析出問(wèn)題原因,通過(guò)使用本系統(tǒng),使動(dòng)作/性能可視化、只用了半天時(shí)間問(wèn)題點(diǎn)就明確化,問(wèn)題得到解決。

        通過(guò)可視化測(cè)試結(jié)果,進(jìn)行詳細(xì)分析,發(fā)現(xiàn)有兩個(gè)問(wèn)題,見(jiàn)圖3中第一幅圖虛線框出的①和②兩個(gè)部分。

        圖3 利用可視化進(jìn)行性能分析的實(shí)例

        問(wèn)題:

        ①CPU等待/空閑區(qū)間過(guò)多;

        ②與其他Java線程之間通信頻繁。

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

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

        ②減少java線程間的通信次數(shù);

        ③減少java線程的訪問(wèn)時(shí)間。

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

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

        5 結(jié) 束 語(yǔ)

        與 Windows Performance Monitor相比,Event Tracing for Windows旨在提供較低開(kāi)銷的跟蹤。ETW通常占用不超過(guò)5%的CPU,它每秒可以記錄多達(dá)20,000條事件,啟用實(shí)時(shí)跟蹤會(huì)相當(dāng)快。在性能調(diào)查過(guò)程中,通常會(huì)檢查四個(gè)因素:CPU、磁盤(pán)I/O、內(nèi)存和可伸縮性。大多數(shù)調(diào)查都將從CPU開(kāi)始,CPU將影響應(yīng)用程序的啟動(dòng)和執(zhí)行時(shí)間。在診斷較長(zhǎng)的啟動(dòng)時(shí)間時(shí),檢查磁盤(pán)I/O是最有用的,磁盤(pán)I/O是冷啟動(dòng)時(shí)間的主要因素,冷啟動(dòng)時(shí)間是指內(nèi)存中沒(méi)有某個(gè)應(yīng)用程序時(shí)(如重啟后)啟動(dòng)此應(yīng)用程序所花的時(shí)間,而過(guò)多的內(nèi)存消耗(或泄露)可能會(huì)導(dǎo)致應(yīng)用程序隨時(shí)間的流逝變得更慢。

        通過(guò)對(duì)Windows操作系統(tǒng)內(nèi)核進(jìn)行可視化,并結(jié)合一個(gè)例子展示了性能分析的應(yīng)用。實(shí)例證明對(duì)內(nèi)核狀態(tài)的數(shù)據(jù)采集、解析和還原對(duì)性能優(yōu)化是可用的,目前的工作已獲得階段性成果。但是利用系統(tǒng)的可視化界面進(jìn)行軟件性能分析和優(yōu)化,需要有專業(yè)知識(shí)的開(kāi)發(fā)人員去完成。如何更好的使用這一工具,還需要進(jìn)一步的研究。

        [1]Darren Mar-Elia.深入 Windows跟蹤日志[J].系統(tǒng)網(wǎng)絡(luò),2004,1(1):50 -57.

        [2]Dr.Insung Park,Alex Bendetovers.Event Tracing for Windows[EB/OL].MSDN Magazine.(2009) [2012].http://msdn.microsoft.com/zh - cn/magazine/ee 412263.aspx.

        [3]Dr.Insung Park,Ricky Buch.使用 ETW 改善調(diào)試和性能優(yōu)化[EB/OL].MSDN Magazine,(2007)[2012],http://msdn.microsoft.com/zh - cn/magazine/cc 163437.aspx.

        [4]RUSSINOVICH ME,SOLOMON DA.深入解析 Windows操作系統(tǒng):MicrosoftWindowsServe:2003,Windows XP and Windows2000技術(shù)內(nèi)幕[M].北京:電子工業(yè)出版社,2007.

        [5]Carver,R.H.,K.- C.Tai.Use of sequencing constraints for specification-based testing of concurrent programs[J].IEEE Transactions on Software Engineering,1998,24(6):471-490.

        [6]Emrath,P.A.,S.Ghosh,D.A.Padua.Detecting nondeterminacy in parallel programs[J].IEEE Software,1992,9(1):69-77.

        [7]劉群策.LoadRunner和軟件項(xiàng)目性能測(cè)試[M].北京:機(jī)械工業(yè)出版社,2007.

        [8]段念.軟件性能測(cè)試過(guò)程詳解與案例剖析[M].北京:清華大學(xué)出版社,2006.

        猜你喜歡
        開(kāi)發(fā)人員內(nèi)核線程
        萬(wàn)物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
        強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
        Linux內(nèi)核mmap保護(hù)機(jī)制研究
        淺談linux多線程協(xié)作
        讓W(xué)indows 10進(jìn)入開(kāi)發(fā)者模式
        電腦迷(2015年12期)2015-04-29 23:22:51
        后悔了?教你隱藏開(kāi)發(fā)人員選項(xiàng)
        Linux線程實(shí)現(xiàn)技術(shù)研究
        么移動(dòng)中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
        少妇高潮惨叫久久久久电影69| 国产视频激情视频在线观看| 国产不卡av一区二区三区| 丰满人妻无套中出中文字幕| 欧美综合区自拍亚洲综合| 女人被躁到高潮嗷嗷叫| 成人黄网站免费永久在线观看| 日本人妖一区二区三区| 亚洲人妻御姐中文字幕| 日本一区二区三区视频国产| 精品国产三级a∨在线欧美| 特黄熟妇丰满人妻无码| 国产莉萝无码av在线播放| 在教室伦流澡到高潮hgl视频| 亚洲一区二区观看播放| 国产精品无码无片在线观看3D| 爆乳日韩尤物无码一区| 免费福利视频二区三区| 久久伊人久久伊人久久| 精品久久人妻av中文字幕| 中文字幕乱码在线人妻| 国产色视频一区二区三区qq号 | 亚洲AV无码永久在线观看| 亚洲国产日韩欧美高清片a| 91精品啪在线观看国产色| 国产自拍精品视频免费| 美女扒开屁股让男人桶| 最新国产精品久久精品| 久久九九国产精品怡红院| 欧美亚洲国产精品久久高清| 中出高潮了中文字幕| 一本久道久久综合狠狠操 | 免费看草逼操爽视频网站| 日本一区二区视频高清| 国产精品天天看天天狠| 在线看片免费人成视频电影 | 男男车车的车车网站w98免费| 婷婷九月丁香| 精品欧美久久99久久久另类专区| 日本高清一区二区在线观看| 国产av一级片在线观看|