估計新程序需要的資源
對未編寫的程序進行精確估計是不可能的。編碼階段發生的創作和重新設計是難以預見的,但下面的準則可以幫助您對需求有一個全面了解。作為一個起點,最小程序需要以下條件:
大約 50 毫秒的 CPU 時間,大部分是系統時間。
實內存
一個程序文本頁面
大約 15 個頁面(其中 2 個是暫存頁面)用于工作(數據)段
對 libc.a 進行訪問。通常這和所有其它程序共享,并當作操作系統基本成本的一部分。
大約 12 個頁面調進的磁盤 I/O 操作(如果程序最近尚未編譯、復制或使用)。否則什么都不需要。
除了上述一些方面,還有由設計所隱含要求的基本成本容差(給出的單元僅作示例用):
CPU 時間
不包含高級迭代或昂貴子例程調用的普通程序的 CPU 消耗小得幾乎不可測量。
如果提到的程序包含計算復雜的算法,則開發一個原型,對算法進行評估。
如果提到的程序使用計算復雜的庫子例程,如 X 或 Motif 構造或 printf() 子例程,則用其它小程序對它們的 CPU 消耗進行評估。
實內存
每個程序文本頁面允許大約 350 行代碼,其中每行大約 12 字節。不要忘了編碼風格與編譯器選項可在任一方面產生一兩種因素的差異。該容差是針對與您典型情況相關的頁面的。如果您的設計在可執行程序的結束處安插有執行次數很少的子例程,則那些頁面通常不消耗實內存。
引用共享庫而不是 libc.a 會增加內存需求,僅從這個意義上來說,那些庫并不與其它程序或正在估計程序的實例共享。為量度這些庫的大小,請編寫一個長期運行的引用那些庫的小程序,并對進程使用 svmon -P 命令。
估計在設計中所確定的數據結構所需存儲量大小。集中到最靠近的頁面。
在短時間的運行中,每一個磁盤 I/O 操作使用一個內存頁面。假設頁面必須已是可用的。不要假設程序會等待另一個程序的頁面釋放。
磁盤 I/O
對于順序 I/O,每讀或寫 4096 字節導致一個 I/O 操作,除非文件最近剛被訪問過并且一些頁面仍留在內存中。
對于隨機 I/O,每一次對不同的 4096 字節頁面的訪問,無論大小,都會導致一個 I/O 操作,除非文件最近剛被訪問過并且一些頁面仍留在內存中。
每一次對大文件進行 4 KB 頁面的順序讀寫會占用大約 100 個單元。每一次進行 4 KB 頁面的隨機讀寫會占用大約 300 個單元。記住實際文件不一定順序存儲在磁盤上,盡管程序對它們進行順序寫和讀。因此,與順序存取成本相比,實際磁盤存取的典型 CPU 成本與隨機存取成本更接近。
通信 I/O
如果磁盤 I/O 實際上是對網絡文件系統(NFS)遠程安裝的文件系統的,則磁盤 I/O 在服務器上執行,但客戶機會承擔更高的 CPU 和內存要求。
任何一種 RPC 對 CPU 負載都有非常大的貢獻。設計中提出的 RPC 應該預先進行最小化、批處理、原型化和評估。
每一次進行 4 KB 頁面的順序 NFS 讀或寫會占用客戶機大約 600 個單元。每一次進行 4 KB 頁面的隨機 NFS 讀或寫會占用客戶機大約 1000 個單元。
Web 瀏覽和 Web 服務暗示有大量的網絡 I/O,同時 TCP 連接的打開和關閉非常頻繁。
變換程序級別估計為工作負載估計
估計高峰和典型資源需求的最好方法是使用排隊模型,如 BEST/1。您可以使用靜態模型,但有冒高估或低估高峰資源的危險。在任一情況下,從資源需求的觀點出發,您都需要理解工作負載中的多個程序是如何交互的。
如果您正在構建一個靜態模型,請使用時間間隔,這是對大多數頻繁運行或苛求的程序(通常兩者是相同的)而言可接受性最差的響應時間。決定在每個時間間隔中通常運行哪些程序,這要基于您所規劃的用戶數、他們的思考次數、擊鍵輸入速率以及預期的混合操作。
使用以下準則:
CPU 時間
在時間間隔中運行的所用程序的 CPU 需求總和。包括程序正要執行的磁盤和通信 I/O 的 CPU 需求。
如果在時間間隔中這個數字大于可用 CPU 時間的 75%,則應考慮減少用戶數或增加 CPU。
實內存
操作系統內存需求隨物理內存大小而變化。操作系統本身使用 6 到 8 MB。單機系統中該數字更小。后一個數字是對 LAN 連接以及使用 TCP/IP 和 NFS 的系統而言的。
在時間間隔中運行的程序所有實例的工作段需求總和,包括為程序數據結構所估計的空間。
即將運行的每個不同程序文本段的內存需求(一個程序文本副本為該程序所有實例服務)的總和。記住來自非共享庫的任何(且僅僅)子例程將成為可執行程序的一部分,但這些庫本身并不在內存中。
每一個由工作負載中任何程序使用的共享庫所消耗的空間大小總和。再次強調,一個副本可供所有實例使用。
為了提供足夠的空間用作某種文件高速緩存和自由列表,您的內存規劃總和不應超過要使用的機器大小的 80%。
磁盤 I/O
每個程序的每個實例所暗示的 I/O 總數。分別計算小文件(或隨機讀寫的大文件)與完全順序讀或寫的大文件(大于 32 KB)的 I/O 總數。
除去那些您認為可以從內存中獲得的 I/O。前一個時間間隔的任何讀或寫記錄在當前時間間隔中很可能仍然可用。此外,檢查提出的機器的大小并與機器工作負載的總 RAM 需求對比。操作系統需求與工作負載需求之外的所有剩余空間可能包含最近讀或寫的文件頁面。如果您的應用程序設計如上面所述,那么很有可能您會重新使用最近訪問過的數據,您可以針對高速緩存的效果計算容差。記住重新使用是在頁面級別上,而不是記錄級別上。如果重新使用一條給定記錄的可能性很低,但每個頁面又有大量記錄,則在任何給定時間間隔中需要的一些記錄可能會像最近使用過的其它記錄一樣落在同一頁面中。
把凈 I/O 需求(每張磁盤每秒鐘的磁盤 I/O)與當前磁盤驅動器的近似容量相比較。如果隨機或順序需求超過要保存應用程序數據的相應的磁盤總容量的 75%,那么就有必要在應用程序運行時進行調諧(并且可能是擴展)。
通信 I/O
計算工作負載的帶寬消耗。如果 LAN 上所有節點的總帶寬消耗大于額定帶寬的 70%(以太網中的 50%),您可能想使用帶寬更高的網絡。
對要加在服務器上的額外負載的 CPU、內存和 I/O 需求進行類似分析。
注:
記住只有當不可能進行綜合評估時,這些準則才有用。任何可用來代替某個準則的應用程序特定的評估都會顯著提高估計的精確性。
文章來源于領測軟件測試網 http://www.kjueaiud.com/