生產者消費者模式效能分析

2021-07-03 20:10:19 字數 1663 閱讀 2532

注:快取區的作用主要用於生產者於消費者解耦並且當 某一時間段中生產速率大於消費速度時保證生產者不阻塞並且資料不丟失

• 生產者:

– vp(單位生產速度),np(生產者個數)

• 消費者:

– vc(單位消費速度),np(消費者個數)

• 緩衝區:

– smax(緩衝區大小),sinit(初始容量)

• 生產者生產總量:(vp*np)*t

• 消費者消費總量:(vc*nc)*t

• 緩衝區數量增長速度:(vp*np- vc*nc)

• 緩衝區中剩餘數量:(vp*np- vc*nc)t

• 說明:

– 生產速度大於消費速度,由此會導致緩衝區資料堆積無法存入資料,最終導致生產者閒置

• 說明:

– 生產速度小於消費速度,由此會導致緩衝區無資源滯留,消費者很難爭取到資源,最終導致消費者閒置

• 說明

– 生產速度等於消費速度,緩衝區資料量平穩,無生產者或消費者閒置

• 總生產速度:=10/ms

• 總消費速度:=9/ms

• 資料大小:1k

• 緩衝區大小:=100000

• 緩衝區增長速度:=(10-9)/ms=1/ms

• 資料大小:100000k=100m

• 總生產速度:=9/ms

• 總消費速度:=10/ms

• 緩衝區大小:=100000

• 緩衝區增長速度:=(9-10)/ms=-1/ms(不增長)

說明– 其中生產者也作為消費者,需要等待上一級提供資源,類似工廠流水線

• 由上面生產和消費速度可以得出,在處理最

慢的環節會導致在其之上的環節都會由於

速度大於他而導致生產過剩閒置,之下環節

資源不足而閒置( 木桶短板效應-------個人覺得更像沙漏狀 )

• 1.生產者消費者模式中總生產速度與總消費速度達到相對平衡可以減少系統資源浪費

• 2.在無法達到相對平衡速度時,讓消費速度大於生產速度,雖然消費者會閒置,但是可以減少資料滯留時間

• 3.在生產者消費者模式鏈中找到處理最慢環節加以優化可以提公升系統效能

• 4.在系統效能已達標的情況下減少除最慢環節意外部分的執行緒數可以減少系統資源消耗(多執行緒模式)

• 生產者消費者模式的缺點

– 如果快取模組掛死,即快取資源全部丟失(如:乙個大小為100緩衝區,在資料滿的時候掛死,這就意味這個100個指令不會正確執行).

(第一次就交代到這裡了,,排版很醜不喜勿噴,如果有不對的地方請斧正)

生產者消費者 生產者與消費者模式

一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...

生產者 消費者模式

一 我哥們把資料存入redis快取區 生產者 二 我從緩衝器取資料,並作處理!消費者 詳細 如下 取訂單並判斷 redis new redis conn flag redis connect redis translate usefull host,redis translate usefull p...

生產者消費者模式

常見場景 某個模組負責產生資料,這些資料由另乙個模組來負責處理。產生資料的模組,就形象地稱為生產者 而處理資料的模組,就稱為消費者。該模式還需要有乙個緩衝區處於生產者和消費者之間,作為乙個中介。生產者把資料放入緩衝區,而消費者從緩衝區取出資料 緩衝區作用 1.解耦,生產者和消費者只依賴緩衝區,而不互...