Linux核心Adaptive RED實現

2021-10-08 21:55:13 字數 1055 閱讀 6684

ared在red的基礎上實現了最大報文標記概率max_p的自動調整,以便將平均佇列長度控制在目標區間內。

在red初始化函式red_init中,設定ared定時器adapt_timer用於定期執行ared演算法,定時處理函式為red_adaptative_timer。

static int red_init(struct qdisc *sch, struct nlattr *opt, struct netlink_ext_ack *extack)

通過tc命令設定red佇列時,如果指定了adaptive選項,將會向核心下發tc_red_adaptative標誌,核心將啟動adapt_timer定時器,時長為hz/2,即500毫秒。

static int red_change(struct qdisc *sch, struct nlattr *opt,

struct netlink_ext_ack *extack)

根據ared演算法定義,maxp的最大值為0.5,而maxp的最小值為0.01,但是由於核心中p->max_p變數的值等於:probability * pow(2, 32),增大了2^32 倍,所以,巨集max_p_max和max_p_min的定義也進行了2^32 倍的放大。

#define red_one_percent ((u32)div_round_closest(1ull<<32, 100))

#define max_p_min (1 * red_one_percent)

#define max_p_max (50 * red_one_percent)

另外,按照ared演算法,beta的值為0.9,在以上演算法實現函式red_adaptative_algo中,通過(p->max_p/10)*9實現。alpha的值定義為:min(0.01, max_p / 4)兩者之間的最小值,其由巨集定義max_p_alpha實現:

#define max_p_alpha(val) min(max_p_min, val / 4)
核心版本 5.0

dubbo原始碼之Adaptive註解

一 原始碼 documented retention retentionpolicy.runtime target public inte ce adaptive 二 adaptive相關類的載入 呼叫extensionloader類的loadfile 掃瞄介面實現類時,如果類上有adaptive ...

Linux核心 了解Linux核心搶占

目錄 無強制搶占 可搶占核心 自願核心搶占 完全實時搶占 在配置linux核心時,我們可以設定一些影響系統行為的引數。您可以使用不同的優先順序,排程類和搶占模型。了解並選擇正確的引數非常重要。在這篇文章中,我將介紹不同的搶占模型,以及每種模型如何影響使用者和核心行為 如果配置核心 使用make me...

Linux 核心 vs Windows 核心

windows 和 linux 可以說是我們比較常見的兩款作業系統的。windows 基本占領了電腦時代的市場,商業上取得了很大成功,但是它並不開源,所以要想接觸原始碼得加入 windows 的開發團隊中。這兩個作業系統各有千秋,不分伯仲。作業系統核心的東西就是核心,這次我們就來看看,linux 核...