排隊理論之效能分析,排隊理論效能
瞭解一個系統的效能通常是參考一些度量值(Metric),而如何計算出這些Metric就是我們要討論的。Little Law(排隊理論:利特兒法則)和Utilization Law是Performance Engineering(System Engineering的一部分)常用的法則,它們都是數學理論,因此可作為效能計算的理論依據。詳細分析兩個法則超出了我個人的知識範圍,因此我將僅僅談一下如何應用。
在這之前我有寫過儲存系統效能 - 頻寬計算,其中就應用到了Little Law和Utilization Law,大家可以參考一下。
Little Law 是由Philip M.Morse在1954年提出,公式為L = λW,但當時並沒有被證明,所以僅僅假設為正確,而一直被人們使用著,Philip希望讀者能夠提供這種關係所不適用的情況來推翻它。John Little在1961年證明了並沒有一種情況不適用於Little Law,從而為Little Law的正確性提供了理論證明。
Little Law定義了(以超市為例):在一個穩定的系統中,長時間觀察到的平均顧客數量L = 長時間觀察到的有效顧客到達速率λ * 平均每個顧客在系統中花費的時間W,即L = λW。本法則適用於任何系統,甚至是一個系統中的子系統,比如一家銀行的客戶隊列。唯一的要求就是系統必須是穩定的,非搶佔式的。
為了更好的理解Little Law,請考慮一家僅有一個櫃檯的小型超市,櫃檯每次只能服務一位顧客,並且假設所有人都會買東西,這個系統的工作流程可以化簡為:入店 -> 瀏覽 -> 結賬 -> 離開,這是一個穩定的系統。如果【顧客進入超市的速率 > 顧客離開超市的速率】,即Arrival rate > Exit rate,那麼系統就會開始不穩定,因為等待的客戶隊列會逐漸層得無限長。
- Little Law告訴我們:超市內的平均客戶數量L = 客戶到達速率λ * 客戶在逾時內的逗留時間W,即L = λW
- 假設客戶達到速率為10人/小時,平均每個人在超市內逗留0.5小時,那麼該超市在任何一個時間點的顧客數量 L= 10 * 0.5 = 5人
- 現假設顧客開始蜂擁,達到速率增長至20人/小時,如果顧客逗留時間不變依然為0.5小時,那麼超市必須能夠容納 L=20*0.5 = 10人,否則都多出的5人需要在超市外等待;如果超市暫時無法擴容,即只能容納5人,為了讓多出的5人不需要在超市外等待,必須縮短顧客逗留時間W = 5/20 = 0.25小時。
總結來說,在流量增加的情況下,為了保證系統穩定運行(保持一個可接受的隊列長度,從而保證可接受的回應時間),即超市在任意時間點都能保證能夠服務5位顧客的能力,根據Little Law法則,有兩種方案:
- 第一:擴大超市容量(建造更大的超市)
- 第二:減少顧客逗留時間(提高櫃檯效率,比如增加櫃檯數量,培訓櫃檯人員)
====================================================
說了那麼多都沒提到效能,別急,如果我們把同樣的例子應用到磁碟系統,即:
l 確保磁碟穩定運行所允許的最大請求數量 L
l I/O請求達到速率 λ
l 磁碟處理每一個I/O所花費的時間 W
因此,保證一塊磁碟穩定運行所允許的最大I/O請求數量 L = I/O請求達到速率λ * 磁碟處理每一個I/O所花費的時間W,即L = λW;同理,對於一個I/O控制器,到達速率必須 < 服務速率,或者說服務時間必須 < 內部到達時間,否則I/O控制器的處理能力無法滿足過量的I/O請求,必然會導致效能下降。
結合Utilization Law(不介紹了,直接應用,它可用於描述I/O控制器的利用率),公式為 U = λ * Rs
l U = I/O控制器的利用率
l Rs = 服務時間,即控制器處理一個I/O的平均時間,對於磁碟來說,服務時間 Rs = 尋道時間 + 旋轉延遲 + 內部傳輸速率(資料從一個盤面上的單個磁軌傳輸到Buffer的速率),所以通常是一個定值,由磁碟本身的物理特性決定。
l λ = 到達速率
Little Law + Utilization Law可以推匯出如下公式(推導過程省略,直接用)
l 平均回應時間 R = Rs / (1-U)
l 平均隊列長度 Nq = U^2 /(1-U)
有了如上這些公式,我們來考慮這樣一個磁碟系統, λ = 100個/秒,Rs = 8ms,我們可以得到
l 磁碟利用率 U = Rs / Ra = 8/10 = 0.8或80%
l 回應時間R = Rs / (1-U) = 8/(1-0.8) = 40ms
l 平均隊列長度Nq = U^2 / (1-U) = 0.8^2 / (1-0.8) = 3.2
l 一個請求在隊列中的等待時間 = 【U * Rs】或【回應時間 – 服務時間】 = 40 – 8 = 32ms
若把控制器處理能力加倍,則服務時間和利用率都會減半,Rs = 4ms,U = 40%。此時,回應時間R可以大大降低;同理,如果處理能力減半,那麼服務時間和利用率都會極大增加。這裡有一個非常重要的概念,就是我們經常提到的,隨著利用率增加到某一個點,如果繼續上升,那麼回應時間會呈指數形式增長,也就是說R和U並不是線性關係,我們分析一下【回應時間R = Rs / (1-U)】來看看是為什麼:
平均回應時間 R = Rs / (1-U),Rs是定值,可見,當U = 1時,也就是控制器飽和時,【回應時間R】趨近於無窮大,這是一個極限的概念, ,當U趨向於1時,又Rs是常量,所以R趨向於無窮大。因此,處於100%利用率的控制器就是瓶頸所在,它會迫使I/O序列化(I/O serialization),即每個I/O都必須在隊列中等待它前面的I/O被處理完畢之後才能得到服務。一旦隊列無限加大(一般buffer會有控制機制阻止隊列的無限增長,比如Fiber Channel BB Credit,TCP Window,Ethernet PAUSE等等),回應時間會急劇上升。
通常我們都認為當利用率達到70%以後,未來的繼續增長會使得效能以指數形式下降,而不是線性。為什麼是非線性,大家可以嘗試畫一下 R= Rs/ (1-U) 的函數映像,在U逐漸趨向於1時,R趨向於無窮大,垂直漸近線是 x = 1。不過我不明白70%是如何計算出來的,可能是求U在 [0,1)範圍內的導數通過比較斜率變動率來判斷的?事實上,當U取0.9,0.99,0.999,....,0.9999999時,你會發現R = 10Rs, 100Rs, 1000Rs,....,10000000Rs,R以指數形式增長。而U取0.1,0.11,0.111時,R的增加就緩慢很多。隨著U的取值增加,R的上升趨勢也會以非線性方式呈上升趨勢。70%可能是通過數學方式計算得到,也可能只是一個比較得來的經驗值,擅長數學的朋友可以補充說明一下。
什是排隊論?
日常生活中存在大量有形和無形的排隊或擁擠現象,如旅客購票排隊,市內電話佔線等現象。排隊論的基本思想是1910年丹麥電話工程師A.K.埃爾朗在解決自動電話設計問題時開始形成的,當時稱為話務理論。他在熱力學統計平衡理論的啟發下,成功地建立了電話統計平衡模型,並由此得到一組遞推狀態方程,從而匯出著名的埃爾朗電話損失率公式。自20世紀初以來,電話系統的設計一直在應用這個公式。30年代蘇聯數學家А.Я.欣欽把處於統計平衡的撥打電話流稱為最簡單流。瑞典數學家巴爾姆又引入有限後效流等概念和定義。他們用數學方法深入地分析了撥打電話的本徵特性,促進了排隊論的研究。50年代初,美國數學家關於生滅過程的研究、英國數學家D.G.肯德爾提出嵌入馬爾可夫鏈理論,以及對排隊隊型的分類方法,為排隊論奠定了理論基礎。在這以後,L.塔卡奇等人又將組合方法引進排隊論,使它更能適應各種類型的排隊問題。70年代以來,人們開始研究排隊網路和複雜排隊問題的漸近解等,成為研究現代排隊論的新趨勢。
排隊論是研究服務系統中排隊現象隨機規律的學科。數學運籌學的分支學科。排隊論研究的內容有3個方面 : 系統的性態 ,即與排隊有關的數量指標的機率規律性;系統的最佳化問題 ;統計推斷,根據資料合理建立模型。其目的是正確設計和有效運行各個服務系統,使之發揮最佳效益。
隨機服務系統由以下3個部分組成 :①輸入過程 。即顧客到達的規律 。 比如有定長輸入 、泊松輸入 、埃爾朗輸入、獨立輸入等。②排隊規則。如有損失制、等待制、混合制等。③服務中心。
排隊理論應用在零售行業
在零售裡匯入理論知識比較難實現,反正我屢試屢敗,,不過針對單一的配置人員運用排隊理論,我覺得可行性還是有的,具體提取排隊理論中的“混合排隊”,例如,將所有人不分工種進行集合,然後根據他們喜歡的或者業務需要進行有目的的分配,最簡單的比喻就是:在大多數銀行排隊的時候,銀行採取的排隊方式和火車站的不同,一進入銀行就要排隊,然後根據哪個視窗空就安排顧客去哪個視窗!這樣所產生的積極性應該比平時要多點,不過壞處也很多,比如待遇和難易度還有升值空間等等全部都是因素,不過做好了,可以最佳化不必要的散人出局。。。。我解釋不來,你深入的思考下下就應該啟發點思想的。有問題留言我