2013-04-26 108 views
-1

我正在處理的項目包含一個固定大小的緩衝區FIFO):第一個輸入第一個輸出,其中客戶端將其請求發送到該緩衝區,並由系統處理它們。當緩衝區滿時,我必須應用以下超載策略之一(丟棄策略):
DRPH:從緩衝區頭部刪除一個請求。
DRPT:從緩衝區尾部刪除一個請求。
DRPR:隨機丟棄緩衝區中25%的元素。
BLCK:阻止新的連接,直到緩衝區中的空間可用。

我做了一個模擬測量性能使用Httperf每秒發送很多請求和測量響應時間,但我有不穩定的響應時間值,尤其是當請求數量很大時。所以通過模擬我無法得到最佳的下降策略。我每次重複模擬很多次,得到不同的值。

現在的問題是:
從理論上來說,什麼是最好的緩存管理丟棄策略所提到的政策中? 。什麼是最好的緩衝區管理丟棄策略?

+0

定義'最佳'。也許真正的解決方案是沒有固定大小的緩衝區。不是一個真正的問題。 – EJP 2013-04-26 09:59:07

+0

@EJP:我的意思是:什麼樣的政策會取得最佳表現。它僅限於使用固定大小的緩衝區。 – houssam 2013-04-26 11:22:59

+1

這完全取決於客戶沒有得到迴應時的行爲,例如,他們是否重試,多久使用/不使用回退,多少次等等。如果沒有重試,最佳性能將會達到總是放棄所有這些。你的項目*的目的肯定是評估這些政策?爲什麼這些具體的四個選擇?仍然不是一個真正的問題。 – EJP 2013-04-26 23:34:15

回答

0

這絕對取決於您的數據和它需要的順序。但通常,對於FIFO,緩衝區末尾的數據是最老的,因此最不可能再次需要的數據。所以DRPR可能是最好的解決方案。但是,只有當你能承受失去的數據(例如,因爲它可以在以後重新插入)。如果不是這種情況,則必須阻止連接,直到緩衝區空間再次可用。

另一件事:我會爭取一個動態的緩衝區。從合理的默認大小開始,看看它充滿了多快。超過一定的速率會增加緩衝區的大小(並且低於某個閾值,您可以再次降低)達到某個最大值。

+0

謝謝,這是一個有用的答案,現在,但不是確切的想要的答案。 – houssam 2013-04-27 00:44:07