專利名稱:用于對軟件程序進行性能分析的方法和裝置的制作方法
用于對軟件程序進行性能分析的方法和裝置
背景技術:
1. 發(fā)明領域
本發(fā)明一般涉及軟件程序開發(fā),尤其涉及對軟件程序的性能分析。
2. 相關技術的討論
一般在軟件程序的開發(fā)期間對其進行測試。傳統(tǒng)上,測試被用于驗證軟件程 序是否執(zhí)行計劃的功能。隨著軟件程序變得越來越復雜,性能測試變成開發(fā)周期中 越來越重要的組成部分。性能測試支持"性能工程設計"活動,在此期間程序中導 致程序執(zhí)行延遲的那些部分被標識并被重寫以減少執(zhí)行程序所需的時間。
性能測試通常通過將"探針"插入正在測試的程序內來執(zhí)行。探針是在執(zhí)行 時將數據寫入日志文件的簡單函數。然后可分析日志文件中的數據以確定程序運行 的各個特性。
傳統(tǒng)的性能分析工具使用日志文件中的數據來呈現(xiàn)正在測試的軟件程序的執(zhí) 行的匯總的視圖。例如,日志文件中的數據可被用于確定正在測試的軟件程序中每 一函數被調用的次數。這樣的信息可例如向性能工程師揭示特定的函數處于執(zhí)行次 數多亍計劃的循環(huán)中。這樣的觀察可例如指示,可通過重構程序減少該循環(huán)執(zhí)行的 次數來提高該程序的性能。
數據的匯總視圖也可指示每一函數執(zhí)行的平均時間量。如果一函數的平均執(zhí) 行時間大大超過預期的執(zhí)行時間,則性能工程師可調查是否有某個事件妨礙了該函 數的執(zhí)行。
已采用了呈現(xiàn)關于正在測試的軟件程序的性能數據以便性能工程師審閱的工 具。這樣的工具例如允許性能工程師從多種類型的匯總數據中進行選擇,使得性能 工程師可檢査正在測試的軟件程序的不同方面。這樣的工具也可包括時間線視圖, 這允許性能工程師查看正在測試的軟件程序的活動程度。
發(fā)明概述
本發(fā)明涉及用于提供關于正在測試的軟件程序的性能數據的用戶接口。該用 戶接口允許性能工程師或其他用戶操縱對性能數據的呈現(xiàn)來更容易地標識正在測 試的軟件程序中可能引起性能問題的部分。
在一個方面中,本發(fā)明涉及顯示關于正在測試的軟件程序的性能信息的方法。 該方法涉及在第一顯示區(qū)中顯示正在測試的軟件程序執(zhí)行的時間范圍的表示。通過 用戶接口設備接收指示第一顯示區(qū)中所顯示的時間范圍中所指示的部分的用戶輸
入。在第二顯示區(qū)中顯示多個圖形指示符。每一圖形指示符表示多個線程之一在該 時間范圍的子范圍期間的執(zhí)行中的各個事件。子范圍包括第一顯示區(qū)中所表示的時 間范圍的所指示部分。
在另一方面中,本發(fā)明涉及其上呈現(xiàn)正在測試的軟件程序中多個線程的性能 信息的顯示設備。性能信息對多個線程中的每一個包括表示該線程的運行的線程 區(qū)。線程區(qū)具有至少一個指示符,每一指示符表示該線程的一運行事件,多個線程 的線程區(qū)被如此安置,使得多個線程的線程區(qū)中的指示符圖形地示出這多個線程中 的運行事件在時間上的關聯(lián)。
在另一方面中,本發(fā)明涉及含有用于分析正在測試的軟件程序的性能的計算 機可執(zhí)行組件的計算機可讀介質,正在測試的軟件程序適于以多個線程執(zhí)行。計算 機可執(zhí)行組件包含,數據收集組件,適于收集關于正在測試的軟件程序中的多個線 程的執(zhí)行的數據;分析組件,適于分析所收集的數據以得到關于該多個線程的執(zhí)行 信息;以及報告組件,適于以人類可感知的形式顯示關于這多個線程的至少一部分 的執(zhí)行信息,人類可感知形式包括對應于該部分中多個線程中的每一個的作為時間 的函數的執(zhí)行信息的圖形表示,該部分中多個線程中的每一個的圖形表示以使該部 分中多個線程中的每一個中的各個事件的時間能夠相關的格式被顯示。
附圖簡述
附圖不旨在被按比例繪制。在附圖中,各個附圖中示出的每一完全相同或近 乎完全相同的組件由同樣的標號表示。為清楚起見,不是每個組件在每張附圖中均 被標號。附圖中
圖1是示出開發(fā)環(huán)境的略圖2是圖1的開發(fā)環(huán)境中的用戶接口的略圖3是圖2的用戶接口處于替換運行狀態(tài)中的略圖; 圖4是圖1的開發(fā)環(huán)境中的用戶接口的替換實施例;以及 圖5是圖4的用戶接口處于替換運行狀態(tài)中的略圖。
詳細描述
提供了一種可用于性能分析的改進的性能分析工具。該工具以多種格式呈現(xiàn) 性能分析信息并允許配置以不同格式呈現(xiàn)數據的顯示區(qū)??膳渲眯允沟弥T如性能工 程師的用戶能夠標識正在測試的程序中發(fā)生性能問題的點,并能夠"向下鉆取"來 標識性能問題的原因。
圖1以框圖形式示出了可在其中使用這樣的工具的開發(fā)環(huán)境100。開發(fā)環(huán)境 100可例如在計算機工作站中或服務器上、或一組聯(lián)網計算機上、或能夠執(zhí)行程序 的任何其它合適的平臺上創(chuàng)建。
正在測試的程序110此處被示為由多個進程組成。在圖1的示例中,示出了 進程112,、 1122和1123。正在測試的程序110中的進程數目不是本發(fā)明的限制。 然而,本發(fā)明對分析正在測試的包含眾多進程的程序的性能最為有用。
每一進程可執(zhí)行一 "線程"。線程是程序的一部分,在大多數情況中它在進 程中執(zhí)行。進程和線程從而是緊密相關的概念。每一線程有其自己的函數調用和其 它程序事件序列。
各獨立的進程可在各獨立的處理器上執(zhí)行。然而,各獨立的進程可在單個處 理器上創(chuàng)建。處理器資源在進程之間共享,在任何給定時間活動的所有的線程輪流 消耗處理器周期。多個線程可在單個處理器上"虛擬"活動,即使一次只能有一個 進程消耗處理器周期。
相反,無論可用的處理器的數量是多少,線程均有可能會被"阻塞"。多進 程系統(tǒng)包括供在各獨立的進程中執(zhí)行的進程交換數據的機制。如果一線程需要與另 一線程交換數據,而這兩個線程可能沒有準備好同時交換數據。從而, 一個線程可 能需要等待,直到另一線程執(zhí)行到準備好交換數據的那個點。當線程等待另一線程 交換數據或執(zhí)行其它某個功能時,該線程被稱為"被阻塞"。線程的"阻塞"是可 能影響程序性能的重要的事件。
在圖l中所示的示例中,進程112,、 1122和1123中的每一個使用探針函數測 試,諸如現(xiàn)有技術中可見的那樣。當正在測試的程序110執(zhí)行時,探針函數將數據 寫入數據文件120內。在此實施例中,數據文件120被組織為多個緩沖區(qū)122,、 1222...1125。在此實施例中,為正在測試的程序110中的每一進程提供一個緩沖區(qū)。
當正在測試的程序110執(zhí)行時,嵌入每一進程112,、 1122和1123的探針被執(zhí)
行。各獨立的進程中的探針將數據值寫入與該進程相關聯(lián)的緩沖區(qū)內。以此方式,
每一緩沖區(qū)包122,、 1222和1223包含當進程執(zhí)行時進程內發(fā)生的事件的有序列表。 由于線程與進程之間的聯(lián)系,該信息也可用于標識事件所關聯(lián)的線程。在所示實施 例中,被寫入緩沖區(qū)內的每一事件包括對事件及其發(fā)生時間的指示。
在所示實施例中,正在測試的程序110被構造成通過預定的應用程序編程接 口 (API)的調用使事件被記錄在緩沖區(qū)中。在所示示例中,通過預定API的調用 被記錄在緩沖區(qū)1224中。緩沖區(qū)1224存儲標識API被調用的部分、進行調用的進 程以及進行調用的時間的信息。
正在測試的程序110在包括操作系統(tǒng)114的平臺上執(zhí)行。在此實施例中,操 作系統(tǒng)114也被配置成將各個事件寫入數據文件120。預定事件,諸如異常條件或 磁盤訪問,可在操作系統(tǒng)114內被編程以將事件的指示寫入數據文件120內。當這 樣的事件發(fā)生時,該指示被寫入緩沖區(qū)1225。對事件的指示可包括所發(fā)生的具體 事件的標識符、它發(fā)生的時間、以及使事件發(fā)生的線程的進程。
圖1提供了在正在測試的軟件程序的執(zhí)行期間可捕捉的各種類型的事件的示 例。根據本發(fā)明的一個實施例,可按照容易使用的方式向人類用戶顯示多種類型的 事件。例如,SQL事件、OS.內核事件、web服務器事件或任何其它所需類型的事 件均可在數據文件120中捕捉以便進一步分析和顯示。
在所示實施例中,在程序110執(zhí)行之后分析存儲在數據文件120中的數據。 該分析由分析程序130執(zhí)行。在所述實施例中,分析程序BO使存儲在每一緩沖區(qū) 122,...1225中的事件的時間相關聯(lián)??捎懈鞣N方法用于使每一緩沖區(qū)中的事件的時 間相關聯(lián)。在所述實施例中,創(chuàng)建了索引。索引指示每一緩沖區(qū)中的哪個條目對應 于正在測試的程序110的執(zhí)行期間的特定時間。以此方式,當所分析的數據被處理 時,分析程序130可迅速訪問來自每一緩沖區(qū)的對應于正在測試的程序110的執(zhí)行 期間中特定時間點的數據??勺赃m應地創(chuàng)建索引,使得索引可表示對每一緩沖區(qū)中 對應于特定時間發(fā)生的事件的位置的估計。當數據文件120被處理時,這些估計可 被更新。然而,可使用形成索引的任何合適的方式。
對存儲在數據文件120中的數據進行索引允許分析程序130快速格式化數據 以便以相對于同一時間框架示出不同進程內的各個事件的方式在用戶接口 140上 顯示。為了使不同進程或線程中的事件相關聯(lián),不需相對于絕對標準來跟蹤時間。 相反,可相對于正在測試的程序110的執(zhí)行起始或任何其它方便的時間點來跟蹤時
間。時間可例如按照正在測試的程序UO在其上執(zhí)行的處理器內部的時鐘的走時來 豐皮足艮S^。
在所示實施例中,用戶接口 140是計算機工作站的一部分。然而,可采用任 何合適的用戶接口設備。在此示例中,用戶接口 140包括提供輸出機制的顯示器 142。顯示器142可例如是允許將輸出提供給人類用戶的CRT或TFT顯示器???使用其它形式的輸出設備。例如,可將圖形輸出打印或投影到屏幕上?;蛘?,輸出 可被傳遞給其它程序或系統(tǒng)來在使用之間進一步分析以便向用戶提供信息。
用戶接口 140還包括用戶接口選擇設備。用戶接口選擇設備允許用戶通過用 戶接口 140提供可控制分析程序130的運行的輸入。在所示實施例中,用戶接口 140包括可用于經由用戶接口 140提供用戶輸入的鼠標146。與傳統(tǒng)的臺式計算機 一樣,人類用戶可操縱鼠標將光標置于顯示器142上,并操作鼠標146上的按鈕(即, "點擊")來選擇作為顯示器142上的輸入項。用戶接口 140可基于按鈕被按下時 所處的位置來調用程序對象。
鍵盤144也可獨自或結合鼠標146用作用戶接口選擇設備。人類用戶可使用 鍵盤144來輸入命令、參數或其它適當的信息來經由用戶接口 140提供輸入。在所 述實施例中,用戶輸入控制分析程序130來在顯示器142上提供期望的顯示。
圖2示出了可由分析程序130創(chuàng)建且顯示在顯示器142上以將正在測試的軟 件程序執(zhí)行期間所收集的數據呈現(xiàn)給人類用戶的示例用戶接口 210。在圖2的實施 例中,用戶接口 210包含多個區(qū)域。在所述實施例中,這些區(qū)域被用于對邏輯相關 的信息進行分組。例如,菜單欄212用作定位用戶可訪問來控制用戶接口 210的功 能的命令的區(qū)域。包括在菜單欄210中的命令可以是如在傳統(tǒng)圖形用戶接口中使用 的命令,諸如那些打開或關閉特定文件的命令等。命令也可控制用戶接口 210的其 余部分中所顯示的信息,或可控制用戶接口專用的用于顯示從正在測試的軟件程序 的執(zhí)行中所收集的性能數據的操作。
在圖2所示的實施例中,用戶接口 210包含其中顯示關于正在測試的軟件程 序110的執(zhí)行的不同、但邏輯相關的類型的信息的三個區(qū)域。這些區(qū)域包括時間線 域220、線程視圖域230和文本視圖域260。
時間線域220包括正在測試的軟件程序110執(zhí)行期間活動程度的圖形表示。 在此實施例中,活動程度由時間線域220內的陰影示出。例如,區(qū)域222比區(qū)域 224的陰影少。這種陰影示出,與區(qū)域224相比,由區(qū)域222表示的時間期間發(fā)生 的活動較少,指示區(qū)域222所表示的時間期間的活動較少。
在此示例中,正在測試的軟件程序110的整個執(zhí)行由一從左至右移動的時間 線表示。可使用任何合適形式的活動表示。例如,可使用不同的顏色來表示不同的 活動程度?;蛘?,由時間線域220表示的時間線可被表示為直方圖,時間線的顯示 高度指示正在測試的軟件程序110的執(zhí)行期間任何特定時間的活動程度。
可按照任何合適的方式來度量活動程度。跟蹤正在執(zhí)行的程序所消耗的CPU
時間的百分比的進程監(jiān)視器在本領域中已知,且可例如被用于創(chuàng)建用來生成諸如
220那樣指示活動程度的時間線域的數據。在此實施例中,時間線域220表示執(zhí)行 正在測試的軟件程序110的一部分的所有進程112i、 1122和1123的匯總活動。在 此實施例中,它不包括關于執(zhí)行屬于操作系統(tǒng)114的一部分的程序的進程中的活動 的信息。
時間線域220包括時間指示符226。時間指示符226是用戶可操作的控件。例 如,時間指示符226可由用戶操作鼠標146 (圖l)來選擇。用戶然后可操作鼠標 146使用如程序接口中常用的拖放動作將時間指示符226滑動到時間線域220上所 需的關注點。以此方式,用戶可指定數據文件120 (圖l)中所存儲的數據的一部 分以便進一步檢查。具體地,為時間指示符226所指定的執(zhí)行時間的子范圍收集的 數據可被更詳細地顯示在線程視圖域230中。
如圖所示,時間指示符226指示單個時間??梢杂杏脩艏丝芍付ㄒ诰€程 視圖域230中顯示的時間范圍的各個實施例。在此示例中,線程視圖域230包含關 于正在測試的軟件程序110在以時間指示符226所指示的時間為中心的時間子范圍 中的運行的信息。然而,可使用任何合適的慣例。例如,時間線域220可包括多個 指示符, 一個時間指示符標識要在線程視圖域230中顯示的區(qū)間的起點,第二時間 指示符標識要在線程視圖域230中顯示的結束時間。
無論用于標識要在線程視圖域230中顯示的時間的子范圍的具體機制是什么, 線程視圖域230均包含在所選區(qū)間中作為正在測試的軟件程序110的一部分執(zhí)行的 線程內的事件的圖形表示。在圖2所示的實施例中,每一線程由一個區(qū)域表示,此 處被示為軌跡(trace)條240,、 2402...2409。此處,示出了九個線程。為其示出事 件的線程的數目不是對本發(fā)明的限制。
每一線程內的事件在相應的軌跡條中圖形示出。示出了多種類型的事件。事 件的數目和類型僅用于說明,且可顯示任何數目或類型的事件。
在圖2所示的實施例中,每一軌跡條240" 2402...2409指示其相應線程存在 的時間。在正在測試的程序110的操作中,線程可在各個時間開始和結束,這可在 線程視圖域230中圖形地表示。
此外,即使線程存在,它也可能僅在其存在的時間的一部分內活動??墒褂?對線程活動性的任何合適的度量。然而,在所示實施例中,當線程有操作要執(zhí)行時 它被認為是"活動"的,即使該線程由于在具有有限數目的處理器的系統(tǒng)中多個進
程的調度而實際并沒有在主動地消耗CPU周期。在用戶接口210中,使軌跡條240,、 2402...2409視覺地指示相應的線程活動或被阻塞的時期??墒褂萌魏魏线m的方法來 標識活動或阻塞時期。在此例中,諸如活動指示符242等活動指示符被疊加在軌跡 條上以指示相應線程活動的時間。相反地,諸如在阻塞區(qū)間254中那樣沒有活動指 示符示出相應的線程在特定的區(qū)間里被阻塞。
也可在線程視圖域230中圖形指示其它事件。在此示例中,示出了諸如244 的用戶標記。如上結合圖1所述,可記錄正在測試的軟件程序110內的事件。在此 示例中,每一用戶標記244是對正在測試的軟件程序110的API內的函數進行了 調用的圖形指示。系統(tǒng)標記250類似地指示操作系統(tǒng)114所跟蹤的事件之一的發(fā)生。 在此示例中,系統(tǒng)標記250在視覺上與用戶標記224有所區(qū)別。顏色、形狀或位置 可用于區(qū)分不同類型的標記。在圖2中指示了多個用戶標記。用戶標記均由同一圖 形符號指示,這可表示同一事件的多次發(fā)生。不同類型的用戶標記可由相同或不同 的圖形符號表示。
線程視圖域230包括時間標尺232。每一軌跡條240卜2402...2409內的事件與 時間標尺232相關聯(lián)。軌跡條內的事件從而彼此相關聯(lián)。通過在線程視圖域230 上左右地閱讀,可比較同一時間在多個線程內發(fā)生的事件。通過向下閱讀線程視圖 域230,事件的序列將是顯而易見的。
時間標尺232顯示時間線域220所表示的時間的子范圍。所顯示的特定的子 范圍可由用戶操縱時間指示符226來選擇。此外,線程視圖域230包括滾動條252。 滾動條提供選擇用于顯示的時間子范圍的替換機制。滾動條252可以是現(xiàn)在已知或 今后開發(fā)的用于在圖形用戶接口中使用的類型的控件。通過使用滾動條252,用戶 可將線程視圖域230中所顯示的時間子范圍移換成較早的時間或較晚的時間。在此 實施例中,時間指示符226和滾動條252是相關聯(lián)的控件,意味著調節(jié)時間指示符 226或滾動條252中的任一個均將調節(jié)線程視圖域230中所顯示的時間子范圍的中 心點。
能夠以相關聯(lián)方式顯示線程內的事件允許人類用戶容易地標識程序110內當 正在測試的程序110執(zhí)行時可能引起性能問題的那些部分。例如,圖2指示線程3
在相對較短的時間段內活動,然后變?yōu)榉腔顒拥摹T诜腔顒拥钠陂g內,線程4變?yōu)?活動并持續(xù)相對較長時間。線程4然后變?yōu)榉腔顒?,而線程3再次變?yōu)榛顒?。這樣
的模式例如可向人類用戶指示,線程3在等待線程4時被阻塞。這樣的模式可指示, 通過調査線程4執(zhí)行所需的時間或線程3實際上是否是為等待線程4而被阻塞,程 序的總體性能可被提高。僅査看匯總的統(tǒng)計數據,這樣的情形可能不是顯而易見的。 匯總的統(tǒng)計數據可揭示線程3具有較長的執(zhí)行時間,但不會揭示原因。
圖2示出了用戶接口 210包括允許獲取關于各個線程的執(zhí)行的附加信息的文 本視圖域260。在所示實施例中,線程3和線程4在文本視圖域260中被突出顯示。 在所述實施例中,用戶選擇在文本視圖域260中要顯示哪些域,但也可使用任何合 適的方法來選擇要在文本域260中顯示的線程。例如,用戶可使用鼠標146上的按 鈕來訪問線程視圖域220中所示的線程之一的屬性菜單,并在該菜單中選擇這些線 程應被顯示在文本視圖域260中。作為另一示例,用戶可使用鼠標146在文本視圖 域260內拖放表示所需域的軌跡條。
為在文本域260中顯示而選擇的每一線程由諸如264,或2642的事件軌跡表示。 每一事件軌跡包括事件軌跡所描繪的線程內的事件的清單。在此示例中,事件軌跡 264,或2642中所列事件表示線程作出的函數調用,以及由線程啟動的諸如對特定 API的調用或對操作系統(tǒng)實用程序的訪問等標記事件。然而,可顯示任何所需類型 的事件。例如,可取代圖2中所示的事件或除其以外顯示SQL事件、OS內核事件、 web服務器事件等。
文本視圖域260包括時間標尺262。時間標尺262指示文本視圖域260中所描 繪的事件軌跡描述了正在測試的軟件程序110執(zhí)行的時間子范圍內的事件。文本視 圖域260中所描繪的時間子范圍可以與線程視圖域230中所描繪的子范圍相同。然 而,在圖2的示例中,文本視圖域260包括可由用戶輸入操縱以調節(jié)文本視圖域 260中所描繪的子范圍的中心點的滾動條264。
時間標尺262此處被示為不連續(xù)的。在所示實施例中,僅當此時有一事件可 供顯示時才在文本視圖域260建立一條目。以此方式,連貫的事件彼此相鄰顯示, 而不考慮這些事件發(fā)生的時間間隙。
在圖2的示例中,線程視圖域230和文本視圖域260被同時顯示,但具有不 同的大小。在此實施例中,這些域被實現(xiàn)為如常規(guī)用戶接口中所使用的顯示區(qū),且 可按照任何合適的方式被重定大小以增加或減少每一窗口中所示的數據量。而且, 所示實施例在顯示器上同時示出時間線域220、文本視圖域260和軌跡視圖域230。
每一個可在單獨的時間顯示,或這些域可用任何所需組合同時顯示。
文本視圖域260可便于分析正在測試的軟件程序IIO的性能。在所示示例中, 線程3的事件軌跡264,確認,在時間6處,線程3正等待另一線程。文本視圖域 260中可見的附加細節(jié)示出線程3在時間5處執(zhí)行的寫數據函數之后等待。事件軌 跡2642指示線程4正執(zhí)行與寫數據相關聯(lián)的各種操作。事件軌跡2642指示,從時 間10開始,線程4花費大量時間來執(zhí)行一STRLEN函數。該信息可允許人類用戶迅 速標識正在測試的程序.110的性能問題。
通過顯示程序執(zhí)行的線程視圖和事件軌跡兩者,性能工程師可迅速標識問題 的來源??墒褂脠D形表示來標識要進一步調查的特定區(qū)域,且這些特定區(qū)域的細節(jié) 可以文字形式提供。此外,更改每一域中所示的時間值的子范圍的能力還有助于使 性能工程師易于標識問題。例如,線程3和4在時間23處示出類似的模式,指示 在時間23處,線程3可能也在對線程4執(zhí)行的函數進行調用。然而,在時間23 處示出的實例中,線程4的活動時間比時間5處所示的實例中的短得多。性能數據 的這種模式可指示,當線程3調用寫數據函數時,有些時候比起其它時候,操作會 花費長得多的時間。這樣的性能模式使得難以從匯總的數據標識哪一函數是特定性 能問題的來源。然而,通過允許用戶在可選子范圍上檢查不同線程中在時間上相關 的事件,可更容易地標識性能問題。
圖3示出了用戶接口 210的另一特征。在圖3所示示例中,展開了線程視圖 域230的時間標尺232。在該圖示中,其中顯示線程視圖域230的窗口與圖2中的 大小一樣,但時間標尺232所覆蓋的子范圍約為圖2所示的1/10。結果,以更高的 分辨率顯示了線程視圖域230中所示的線程內的事件。時間標尺232的分辨率可例 如基于用戶輸入來調節(jié)。用戶可例如使用鼠標146 (圖l)將光標置于時間標尺232 上,并右擊該域以打開屬性對話框或允許用戶輸入指定時間標尺232的所需分辨率 的信息的其它控件。然而,可使用提供輸入的任何合適的方法來指定時間標尺。
圖3示出了與文本視圖域260相關聯(lián)的時間標尺262也具有可編程的分辨率。 在圖3的示例中,時間標尺262的分辨率與時間標尺232的分辨率匹配。然而,可 使用任何合適的手段來設置時間標尺262的分辨率,且時間標尺262的分辨率不必 與時間標尺232的分辨率匹配。
圖3示出了可通過改變諸如232或262的時間標尺的分辨率來實現(xiàn)的優(yōu)點。 在圖2所示的分辨率下,線程4顯現(xiàn)為在函數一STRLEN上花費長時間。使用圖3 所示的分辨率,可看到線程4在函數一STRLEN內花費的時間的一部分花費在調用諸如一funcl的其它函數上。
圖3還示出用戶接口 210的另一方面。通過操縱鼠標146 (圖1),光標312 可被置于一事件的任何圖形表示上。可獲取關于用戶接口 210中圖形描繪的每一事 件的附件信息。在圖3的示例中,用戶將光標312置于標記344上。用戶可提供輸 入,諸如右擊標記344或僅將光標"懸停"在標記344上。響應于該用戶輸入,分 析程序130可在文本框310中提供關于該標記的附加信息。出現(xiàn)在文本框310中的 信息可取決于用戶所選的圖形對象所表示的具體事件,且可在顯示器上提供關于任 何所需事件——包括SQL事件、OS內核事件或web服務器事件的信息。
圖4示出了根據本發(fā)明的替換實施例的用戶接口410。在該實施例中,文本視 圖域460配備諸如430i、 4302和4303的多個選項卡。可通過用戶接口由操縱鼠標 146將光標置于選項卡上方并對其點擊來選擇每一選項卡。每一選項卡當其被選中 時,可在文本視圖域460內顯示不同種類的信息。選項卡430,呈現(xiàn)關于諸如有時 由現(xiàn)有技術中的性能分析系統(tǒng)呈現(xiàn)的函數的匯總信息。當被選中時,選項卡43(^ 顯示列出正在測試的軟件程序110執(zhí)行期間所調用的函數的列420,。相鄰列提供 關于列420,中所列出的每一函數的信息。例如,列4202指示正在測試的軟件程序 110的執(zhí)行期間所記錄的進入該函數的次數。列4203指示該函數內匯總的執(zhí)行時 間。該選項卡中所呈現(xiàn)的信息是匯總或統(tǒng)計信息,它并不以編年基準來示出事件。
當選項卡4302被選中時,它可顯示類似于現(xiàn)有技術的性能分析系統(tǒng)中所顯示 的調用樹的一調用樹??捎尚阅芊治鱿到y(tǒng)生成的、不論是現(xiàn)在已知還是在今后開發(fā) 的任何其它類型的數據均可通過提供可被選中來訪問該數據的選項卡選擇性地為 人類用戶顯示??杉せ钸x項卡4303來提供諸如圖3中所描繪的事件軌跡。
圖4示出了用戶接口 410的附加方面。在此示例中,線程視圖域230正示出 在圖2中所示的時間子范圍之后的時間子范圍。從而,時間指示符226較之圖2 出現(xiàn)在時間線域220中更靠右方。
圖5示出用戶接口 410的又一方面??苫谟脩糨斎雭磉x擇線程視圖域230 中所表示的線程。允許用戶選擇線程通過允許用戶在不同的軌跡中并置的事件圖形 表示來推動標識性能問題的過程。以此方式,用戶可標識線程之間的依賴關系,并 標識由這些依賴關系所引起的性能問題。
圖5給出了可用于允許用戶選擇用于顯示的線程的一種機制的示例。在此示 例中,用戶接口 410在菜單欄212上包括選擇區(qū)510。選擇區(qū)510可被實現(xiàn)為如傳 統(tǒng)上在圖形用戶接口中所使用的菜單項,當其被選中時將打開列表框512。
列表框512包括正在測試的程序110中的線程的列表,每一個旁邊均帶有一
個復選框。每一復選框進而是當被選中時使相應線程被包括在線程視圖窗口 230
中所顯示的線程列表中的控件。
線程選擇的其它方面也可通過用戶接口 410中的控件來實現(xiàn)。例如,控件可 允許用戶指定線程在線程視圖窗口 230中的排序。
上述特征向用戶提供以便于容易地理解多線程程序的動態(tài)交互的方式組織關 于正在測試的程序的性能數據的能力。它提供多層向下鉆取,這允許性能工程師或 其它用戶使用有效的過程來對程序進行性能工程設計。在典型的情形中,該過程可 包括使用時間線域220來標識程序執(zhí)行期間值得進一步調查的子區(qū)域。例如,可標 識并進一步調查其中發(fā)生密集活動或非常少活動的子區(qū)域。
一旦選擇了要進一步研究的子區(qū)域之后,可檢查該子區(qū)域中的具體線程。用 戶可調節(jié)線程視圖域230中要顯示的時間標尺,以更好地標識單個線程內的各點或 是線程間交互的組合減慢程序執(zhí)行的點。線程視圖域230中的視覺指示符,諸如標 記和活動條可引導用戶標識問題區(qū)。
用戶然后可通過選擇要顯示在文本視圖窗口 460中的某些線程來獲取關于這 些線程的具體交互的更詳細的信息。可按照編年的格式呈現(xiàn)事件,或可呈現(xiàn)函數或 其它程序元素的匯總數據。
顯示區(qū)如在眾多圖形用戶接口中常見的那樣可打開、關閉、最小化或在顯示 屏上重新放置使得用戶可自定義顯示的外觀。
可按照無論是現(xiàn)在已知還是今后開發(fā)的任何合適的方式,來實現(xiàn)用戶接口中 的控件。例如,軟件開發(fā)環(huán)境通常具有允許菜單項被包括在程序的圖形用戶接口中 的可擴展接口。此外,這樣的開發(fā)環(huán)境也允許具有為應用程序定制的動作的預定義 控件被包括到圖形用戶接口內。諸如滾動條、文本框以及下拉式列表的控件均是當 前已知的用于圖形用戶接口中的控件的示例,且可例如被實現(xiàn)為Active-X對象。
在操作中,可按照任何合適的方式生成在圖形用戶接口上所顯示的信息。如 上所述,在緩沖區(qū)中收集關于事件的信息。對緩沖區(qū)進行索引使得能夠容易地處理 信息。如本領域中已知的,分析程序130可計算匯總數據。分析程序130也可使用 緩沖區(qū)中按時間排序的信息來標識信號通知開始和結束的事件。
分析程序可以是使用諸如〔++等任何合適的程序設計語言來準備的程序。它 可被存儲在與任何合適的處理器相關聯(lián)的計算機可讀介質中,這些處理器諸如有與 性能工程師所使用的工作站相關聯(lián)的處理器。至此描述了本發(fā)明的至少一個實施例的若干方面,可以理解,本領域的技術 人員可容易地想到各種更改、修改和改進。
這樣的更改、修改和改進旨在是本公開的一部分,且旨在處于本發(fā)明的精神 和范圍內。從而,前述描述和附圖僅用作示例。
可按照眾多方式中的任一種來實現(xiàn)本發(fā)明的上述實施例。例如,可使用硬件、 軟件或其組合來實現(xiàn)各實施例。當使用軟件實現(xiàn)時,軟件代碼可在無論是在單個計 算機中提供的還是在多個計算機之間分布的任何合適的處理器或處理器的集合上 執(zhí)行。
而且,此處略述的各種方法或過程可被編碼為可在采用各種操作系統(tǒng)或平臺 中任何一種的一個或多個處理器上執(zhí)行的軟件。此外,可使用多種合適的程序設計 語言和/或常規(guī)程序設計或腳本工具中的任何一種來編寫這樣的軟件,它們且可被 編譯為可執(zhí)行機器語言代碼。
在此方面,本發(fā)明可被具體化為編碼了一個或多個程序的一個或多個計算機 可讀介質(例如,計算機存儲器、 一個或多個軟盤、緊致盤、光盤、磁帶等),當 這些程序在一個或多個計算機或其它處理器上執(zhí)行時,它們執(zhí)行實現(xiàn)本發(fā)明上述各 個實施例的方法。這一個或多個計算機可讀介質可以是可移動的,使得其上存儲的 程序可被加載到一個或多個不同的計算機或其它處理器上以便實現(xiàn)本發(fā)明上述的 各個方面。
此處以一般的意義使用術語"程序",來指可被用來對計算機或其它處理器 編程以實現(xiàn)本發(fā)明上述的各個方面的任何類型的計算機代碼或指令集。此外,應理 解,根據本實施例的一個方面,當被執(zhí)行時實現(xiàn)本發(fā)明的方法的一個或多個計算機 程序不必駐留在單個計算機或處理器上,而可以模塊化的方式分布在多個不同的計 算機或處理器之間以實現(xiàn)本發(fā)明的各方面。
本發(fā)明的各個方面可單獨、組合或使用未在前述實施例中特別討論的各種安 排來使用,從而并不將其應用限于前述描述中所述或附圖中所示的組件的細節(jié)和安 排。例如, 一個實施例中描述的各方面可使用任何方式與另一實施例中描述的各方 面組合。
在權利要求書中使用諸如"第一"、"第二"、"第三"等序數詞來修飾權 利要求元素本身并不意味著一個權利要求元素較之另一個權利要求元素的優(yōu)先級、 先后次序或順序、或者方法的各動作執(zhí)行的時間順序,而僅用作將具有某一名字的 一個權利要求元素與具有同一名字(除序數詞的使用之外)的另一元素區(qū)分開的標
簽以區(qū)分各權利要求元素。
而且,此處所用的短語和術語是為描述起見而不應被認為是限制。此處對"包 括"、"包含"、或"具有"、"含有"、"涉及"及其變型的使用旨在包括其后 所列的項目及其等效物以及其它項目。
權利要求
1.在含有包括顯示器和用戶接口設備的圖形用戶接口的計算機系統(tǒng)中,一種顯示關于正在測試的軟件程序的性能信息的方法,所述正在測試的軟件程序適于在多個各自適于執(zhí)行的線程中執(zhí)行,所述方法包括以下步驟a)在第一顯示區(qū)中顯示所述正在測試的軟件程序執(zhí)行的時間范圍的表示;b)通過所述用戶接口設備接收指示所述第一顯示區(qū)中所顯示的所述時間范圍的指示部分的用戶輸入;以及c)在第二顯示區(qū)中顯示多個圖形指示符,每一圖形指示符表示所述多個線程之一在所述時間范圍的子范圍期間的執(zhí)行中的事件,所述子范圍包括所述第一顯示區(qū)中所表示的所述時間范圍的所述指示部分。
2. 如權利要求l所述的方法,其特征在于,a) 所述第一顯示區(qū)中的時間范圍的表示包括圖形表示;以及b) 所述用戶接口設備包括定點設備,且接收指示所述時間范圍的指示部分的 用戶輸入包括感知所述用戶使用了所述定點設備來拖曳所述時間范圍的一部分的 指示符,并將其放在所述時間范圍的所述圖形表示的一位置上。
3. 如權利要求l所述的方法,其特征在于,所述正在測試的軟件程序以一活 動程度執(zhí)行,且所述第一顯示區(qū)還包括所述正在測試的軟件程序的執(zhí)行的活動程度 的圖形表示。
4. 如權利要求l所述的方法,其特征在于,還包括接收指示所述第二顯示區(qū) 的時間標尺的用戶輸入,以及響應于所述指示時間標尺的用戶輸入調節(jié)所述子范 圍。
5. 如權利要求4所述的方法,其特征在于,所述第二顯示區(qū)還包括滾動條, 并且所述方法還包括通過所述用戶接口設備接收移動所述滾動條的用戶輸入,以及 響應于所述移動滾動條的用戶輸入調節(jié)所述第二顯示區(qū)中所顯示的所述子范圍。
6. 如權利要求l所述的方法,其特征在于,還包括在第三顯示區(qū)中顯示至少 一個文字表示,所述文字表示包括對由所述第二顯示區(qū)中的圖形標識符所表示的所 述多個線程之一的執(zhí)行中的各事件的指示,所述事件包括在所述線程內進行的函數 調用。
7. 如權利要求6所述的方法,其特征在于,所述正在測試的軟件程序包括當所述正在測試的軟件程序執(zhí)行時被執(zhí)行的函數,且在第三顯示區(qū)中顯示還包括a) 接收指定要在所述第三顯示區(qū)顯示的所述文字信息的屬性的用戶輸入;以及b) 響應于所述指定文字信息的屬性的用戶輸入,選擇性地顯示表征所述正在 測試的軟件程序內各函數的執(zhí)行的特征的匯總信息。
8. 如權利要求l所述的方法,其特征在于,其中a) 所述正在測試的軟件程序包括在包含操作系統(tǒng)的平臺上執(zhí)行的應用程序;以及b) 顯示表示事件的多個圖形指示符包括,指示對所述操作系統(tǒng)的預定部分或 對所述正在測試的軟件程序的預定部分的函數調用的執(zhí)行。
9. 一種顯示設備,該顯示設備上繪制在正在測試的軟件程序的執(zhí)行期間運行 的多個線程的性能信息,在所述正在測試的軟件程序的執(zhí)行期間時常發(fā)生運行事 件,對于所述多個線程中的每一個,所述性能信息包括表示所述線程的運行的線程區(qū),所述線程區(qū)具有至少一個指示符,每一指示 符表示所述線程的一運行事件,所述多個線程中每一個的線程區(qū)被如下安置,以使 得所述多個線程的線程區(qū)中的指示符圖形地示出所述多個線程中的運行事件在時 間上的關聯(lián)。
10. 如權利要求9所述的顯示設備,其特征在于,所述線程區(qū)中的每一個在 所述顯示屏上包括一拉長的區(qū)域,且在所述多個線程區(qū)的至少一部分內, 一指示符 表示由所述線程區(qū)表示的線程因等待另一線程而被阻塞的時間范圍。
11. 如權利要求9所述的顯示設備,其特征在于,所述線程區(qū)中的每一個在 所述顯示屏上包括一拉長的區(qū)域,且在所述多個線程區(qū)的至少一部分內, 一指示符 表示由所述線程區(qū)表示的線程在活動的時間范圍。
12. 如權利要求10所述的顯示設備,其特征在于,所述多個線程區(qū)的至少其 中之一包括表示從由所述線程區(qū)表示的所述線程內訪問一預定函數的指示符。
13. 如權利要求12所述的顯示設備,其特征在于,所述正在測試的軟件程序 是運行在操作系統(tǒng)上的應用程序,并且所述預定函數包括所述應用程序內的函數。
14. 如權利要求9所述的顯示設備,其特征在于,還包括與所述線程區(qū)相鄰 的時間標尺區(qū),所述時間標尺區(qū)與所述由指示符表示的多個線程中的所述事件在時 間上相關聯(lián)。
15. 如權利要求9所述的顯示設備,其特征在于,還包括時間線區(qū),所述時 間線區(qū)圖形地指示在所述正在測試的軟件程序的執(zhí)行期間的處理強度。
16. 如權利要求9所述的顯示設備,其特征在于,還包括文字區(qū),所述文字 區(qū)包括至少一個線程的運行期間的事件的有序清單,所述事件有序清單包括函數進入、函數退出以及由SQL事件、OS內核事件和web服務器事件組成的組中的至 少一個事件。
17. —種含有用于分析正在測試的軟件程序的性能的計算機可執(zhí)行組件的計 算機可讀介質,所述正在測試的軟件程序適于在多個線程中執(zhí)行,所述計算機可執(zhí)行組件包括a) 數據收集組件,適于收集關于所述正在測試的軟件程序中的所述多個線程 的執(zhí)行的數據;b) 分析組件,適于分析所收集的數據以得到關于所述多個線程的執(zhí)行信息;以及C)報告組件,適于以人類可感知的形式顯示關于所述多個線程的至少一部分 的執(zhí)行信息,所述人類可感知形式包括對應于所述部分中的多個線程中的每一個的 作為時間的函數的執(zhí)行信息的圖形表示,所述部分中所述多個線程中的每一個的圖 形表示以使所述部分中所述多個線程中的每一個中的各個事件的時間能夠相關聯(lián) 的格式被顯示。
18. 如權利要求17所述的計算機可讀介質,其特征在于,所述報告組件適于 顯示所述多個線程的至少其中之一的圖形表示,所述圖形表示包括對何時至少一個 線程在等待來自所述多個線程中的另一線程的響應時被阻塞的指示。
19. 如權利要求18所述的計算機可讀介質,其特征在于,所述正在測試的軟 件程序適于在包括可執(zhí)行預定事件的操作系統(tǒng)的平臺上執(zhí)行,并且所述報告組件適 于顯示對所述部分中所述多個線程的至少其中之一的圖形表示,所述圖形表示包括 對所述線程是否觸發(fā)所述操作系統(tǒng)執(zhí)行所述預定事件的指示。
20. 如權利要求18所述的計算機可讀介質,其特征在于,所述正在測試的軟 件程序包括至少一個API,所述數據收集組件適于收集指示所述API被訪問的數 據,并且所述報告組件適于顯示所述部分中所述多個線程的至少其中之一的圖形表 示,所述圖形表示包括對是否是從所述線程內訪問了所述API的指示。
全文摘要
一種用于顯示軟件的性能測試信息的系統(tǒng)(140)。該系統(tǒng)包括以允許容易地標識性能問題及其原因的格式來顯示信息的圖形用戶接口(210)。該接口包括描繪正在測試的程序在執(zhí)行期間的活動程度(222,224,226)的時間線視圖(220)。程序執(zhí)行期間的時間子范圍中的事件可使用揭示組成該程序的各線程的交互的信息來被顯示。可在其它顯示域中顯示附加信息,包括文字信息(264)。所顯示的信息當中許多是以圖形表示的,這使性能工程師能夠迅速地標識問題區(qū)來進一步調查。
文檔編號G06F9/44GK101208659SQ200680009047
公開日2008年6月25日 申請日期2006年4月3日 優(yōu)先權日2005年4月15日
發(fā)明者E·C·李, S·M·卡羅爾, S·默查姆 申請人:微軟公司