日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Group Identity功能說明

Alibaba Cloud Linux 2(內核版本4.19.91-24.al7開始)和Alibaba Cloud Linux 3(內核版本5.10.46-7.al8 開始)支持Group Identity功能 ,您可以通過該功能為每一個CPU cgroup設置不同的身份標識,以區分不同CPU cgroup中進程任務的優先級。

前提條件

說明
  • 當Alibaba Cloud Linux 2的內核版本(使用uname -r查詢)是4.19.91-264.19.91-26.14.19.91-26.2或者4.19.91-26.3時,內核配置中關閉了Group Identity,所以不支持使用Group Identity功能。

  • 當Alibaba Cloud Linux 3的內核版本(使用uname -r查詢)是5.10.112-11.al85.10.112-11.1.al85.10.112-11.2.al85.10.134-12.al85.10.134-12.1.al8或者5.10.134-12.2.al8時,內核配置中關閉了Group Identity,所以不支持使用Group Identity功能。

  • 當Alibaba Cloud Linux 2內核版本是4.19.91-25.1.al7~4.19.91-25.5.al7時,Alibaba Cloud Linux 2使用Group Identity功能時會出現宕機現象。請先升級內核版本至4.19.91-25.6.al7或更高版本。具體操作,請參見相關問題

  • 當Alibaba Cloud Linux3內核版本是5.10.134-12.2.al8且系統架構為x86_64時,可以通過如下方式使用Group Identity功能:

    yum makecache
    sudo yum install scheduler-group-identity.x86_64 -y
  • 當Alibaba Cloud Linux 2的內核版本大于等于4.19.91-26.4、Alibaba Cloud Linux 3的內核版本大于等于5.10.134-13.al8時,Group Identity新增開關/proc/sys/kernel/sched_group_identity_enabled。在使用Group Identity之前需要先執行sudo sh -c 'echo 1 > /proc/sys/kernel/sched_group_identity_enabled'命令,打開該開關,否則無法使用Group Identity功能。

背景信息

在業務的混合部署(延遲敏感型和計算型任務混合部署在同一臺實例)場景中,Linux內核調度器需要為高優先級任務賦予更多的調度機會以最小化調度延遲,并需要把低優先級任務對內核調度帶來的影響降到最低。基于該場景,Alibaba Cloud Linux提供了Group Identity功能,為CPU cgroup新增了配置調度優先級的接口,且不同優先級的任務具有以下特點:

  • 高優先級任務的喚醒延遲最小化。

  • 低優先級任務不會對高優先級任務造成性能影響。主要體現在:

    • 低優先級任務的喚醒不會對高優先級任務造成性能影響。

    • 低優先級任務不會通過共享硬件unit而對高優先級任務造成性能影響。

功能原理

Group Identity功能可以對每一個CPU cgroup設置身份標識,以區分cgroup中的任務優先級。Group Identity核心是雙紅黑樹設計,在CFS(Completely Fair Scheduler)調度隊列的單紅黑樹基礎上,新增了一棵低優先級的紅黑樹,用于存放低優先級任務。

系統內核在調度包含具有身份標識的任務時,會根據不同的優先級做相應處理。具體說明如下表:

身份標識(按優先級由高到低排序)

說明

ID_HIGHCLASS

高優先級任務,相較于低于其優先級的任務會有更多的資源搶占機會。

CFS調度器在調度高優先級任務時,會有以下行為的變化:

  • 如果當前運行的是低優先級任務,當高優先級任務被喚醒時,可無條件進行資源搶占。

  • 如果當前運行的是普通優先級任務,當高優先級任務被喚醒時,vruntime小于普通優先級任務,則高優先級任務可以無視原有調度策略(任務在CPU上運行的時間小于最小運行時間時不可以進行資源搶占),進行資源搶占。

  • 在排隊運行任務的場景中,如果當前運行的是普通或低優先級的任務,當高優先級任務的vruntime小于當前任務時,高優先級任務可以無視原有調度策略(任務在CPU上運行的時間小于最小運行時間時不可以進行資源搶占),進行資源搶占。

ID_NORMAL

普通優先級任務,相較于低于其優先級的任務會有更多的資源搶占機會。

CFS調度器在調度普通優先級任務時,會有以下行為的變化:

  • 如果當前運行的是低優先級任務,當普通優先級任務被喚醒時,可無條件進行資源搶占。

  • 在排隊運行任務的場景中,如果當前運行的是低優先級任務,當普通優先級任務vruntime小于低優先級任務時,普通優先級任務可以無視原有調度策略(任務在CPU上運行的時間小于最小運行時間時不可以進行資源搶占),進行資源搶占。

ID_UNDERCLASS

低優先級任務。

CFS調度器在調度低優先級任務時,會有以下行為的變化:

如果SMT對端CPU運行了SMT驅逐者(ID_SMT_EXPELLER)任務,則低優先級任務無法被調度至CPU上,即等同于被踢出了任務運行隊列。

以上身份標識的作用范圍遵從CPU cgroup的資源管理策略:

  • 在同一層級的cgroup中的任務,身份標識的優先級生效。

  • 相對于父層級的cgroup,任務身份標識的優先級不生效;相對于子層級的cgroup,任務身份標識的優先級生效。

  • 同優先級的身份標識之間的資源競爭基本服從CFS調度器的策略,但需要注意ID_UNDERCLASSID_NORMAL身份標識的任務沒有最小運行時間的保障。

其他身份標識說明:

身份標識

說明

ID_SMT_EXPELLER

SMT驅逐者,當其被調度到CPU上運行時,驅逐SMT對端CPU上的ID_UNDERCLASS身份標識的任務。

ID_IDLE_SEEKER

表示當任務被喚醒時,會在調度器策略范圍內最大限度地嘗試找到空閑CPU(Idle CPU)。

ID_IDLE_SAVER

與內核參數sched_idle_saver_wmark結合使用,您可以通過sched_idle_saver_wmark自行配置空閑時長水位線。當ID_IDLE_SAVER身份標識的任務被喚醒時,只會嘗試找到高于該水位線的空閑CPU,不會嘗試找到低于該水位線的空閑CPU。

接口說明

  • 身份標識配置接口

    Group Identity提供了兩個用于設置任務身份標識的接口:/sys/fs/cgroup/cpu/$cg/cpu.identity/sys/fs/cgroup/cpu/$cg/cpu.bvt_warp_ns。其中變量$cg表示任務實際所在的子cgroup目錄節點。在使用身份標識配置接口前,您需要注意:

    • cpu.bvt_warp_ns接口是快捷配置接口,寫入后會轉換為identity。

    • cpu.identity接口與cpu.bvt_warp_ns接口都是對cgroup的identity做更改。

    • cpu.identity接口寫入后會覆蓋cpu.bvt_warp_ns接口上次的寫入值,但不會在cpu.bvt_warp_ns接口中體現。

    • cpu.bvt_warp_ns接口寫入后會覆蓋cpu.identity接口上次的寫入值,但不會在cpu.identity接口中體現。

    • 您只需要使用任一接口設置任務的身份標識,不建議同時設置兩個接口。

    • 如果您不熟悉操作系統內核的相關操作,不建議使用cpu.identity接口。

    接口說明如下:

    接口

    說明

    cpu.identity

    默認取值為0,表示身份標識為ID_NORMAL

    該接口是一個位段,一共有5個比特位,該接口各個比特位的取值說明如下:

    • 空值:表示身份標識為ID_NORMAL

    • 比特位0:表示身份標識為ID_UNDERCLASS

    • 比特位1:表示身份標識為ID_HIGHCLASS

    • 比特位2:表示身份標識為ID_SMT_EXPELLER

    • 比特位3:表示身份標識為ID_IDLE_SAVER

    • 比特位4:表示身份標識為ID_IDLE_SEEKER

    例如,如果設置一個cgroup的身份標識為ID_HIGHCLASSID_IDLE_SEEKER,那么將比特位1和4置為1,其他比特位置為0,得到的二進制表示為:10010,轉化為十進制為:18,則執行echo 18 > /sys/fs/cgroup/cpu/$cg/cpu.identity即可完成寫入。

    cpu.bvt_warp_ns

    默認取值為0,表示身份標識為ID_NORMAL。該接口的取值說明如下:

    • 2:表示同時具有身份標識ID_SMT_EXPELLERID_IDLE_SEEKERID_HIGHCLASS,對應的identity值為22。

    • 1:表示同時具有身份標識ID_HIGHCLASSID_IDLE_SEEKER,對應的identity值為18。

    • 0:表示身份標識為ID_NORMAL,對應的identity值為0。

    • -1:表示同時具有身份標識ID_UNDERCLASSID_IDLE_SAVER,對應的identity值為9。

    • -2:表示同時具有身份標識ID_UNDERCLASSID_IDLE_SAVER,對應的identity值為9。

    說明

    Alibaba Cloud Linux默認支持cgroup v1接口,在Alibaba Cloud Linux 3內核版本大于等于5.10.134-13的5.10內核中,Group Identity也支持cgroup v2接口

    /sys/fs/cgroup/$cg/cpu.identity/sys/fs/cgroup/$cg/cpu.bvt_warp_ns,其中變量$cg表示任務實際所在的子cgroup目錄節點。

  • 調度特性開關配置接口

    運行以下命令,您可以通過sched_features接口查看到內核調度特性的默認配置。

    sudo cat /sys/kernel/debug/sched_features

    具體說明如下:

    調度特性

    說明

    默認值

    ID_IDLE_AVG

    該特性與ID_IDLE_SAVER身份標識配合,把ID_UNDERCLASS任務的運行時間計入空閑時長,防止只有ID_UNDERCLASS任務運行時仍保留空閑CPU(Idle CPU)的問題,避免資源浪費。

    ID_IDLE_AVG:表示特性為啟用狀態。

    ID_RESCUE_EXPELLEE

    該特性作用于負載均衡場景,如果任務無法找到可用的CPU資源,則正在進行驅逐ID_UNDERCLASS任務的CPU會成為負載均衡的目標。用于幫助ID_UNDERCLASS任務盡快擺脫被驅逐的狀態。

    ID_RESCUE_EXPELLEE:表示特性為啟用狀態。

    ID_EXPELLEE_NEVER_HOT

    該特性被啟用后,正在被驅逐的任務在判斷是否需要遷移至其他CPU時,不會因為熱緩存的原因而造成拒絕遷移。用于幫助ID_UNDERCLASS任務盡快擺脫被驅逐的狀態。

    NO_ID_EXPELLEE_NEVER_HOT:表示特性為關閉狀態。

    ID_LOOSE_EXPEL

    該特性被啟用后,CPU不會在每次選擇任務時更新驅逐狀態,而是根據內核參數sched_expel_update_interval設置的時間自動更新。該特性的開關僅影響CPU選擇任務時的狀態更新,不影響處理IPI中斷的更新。

    NO_ID_LOOSE_EXPEL:表示特性為關閉狀態。

    ID_LAST_HIGHCLASS_STAY

    該特性被啟用后,CPU上最后一個運行的ID_HIGHCLASS任務不會被遷移至其他CPU上。

    ID_LAST_HIGHCLASS_STAY:表示特性為啟用狀態。

    ID_EXPELLER_SHARE_CORE

    • 該特性開啟時允許ID_SMT_EXPELLER的任務優先選擇已經有ID_SMT_EXPELLER任務的物理核,該特性關閉時則不允許。

    • 該特性關閉時可以盡可能地把ID_SMT_EXPELLER的任務分散到各個物理核上,從而避免ID_SMT_EXPELLER任務之間的相互干擾。

    ID_EXPELLER_SHARE_CORE:表示特性為啟用狀態。

    ID_ABSOLUTE_EXPEL

    在Alibaba Cloud Linux 3的5.10.134-16.3內核中引入,在內核版本大于等于5.10.134-16.3的5.10內核中可以使用。開啟該特性后,身份為ID_UNDERCLASS的任務將受到絕對壓制,即運行隊列中只要有ID_NORMAL或者ID_HIGHCLASS任務,ID_UNDERCLASS的任務就無法得到調度,最壞情況將導致ID_UNDERCLASS任務餓死,因此開啟該特性前需評估混合部署場景中各種身份任務的負載情況。

    NO_ID_ABSOLUTE_EXPEL:表示特性為關閉狀態。

    ID_LOAD_BALANCE

    在Alibaba Cloud Linux 3的5.10.134-16.3內核中引入,在內核版本大于等于5.10.134-16.3的5.10內核中可以使用。開啟該特性后,調度器在負載均衡時,會將只有ID_UNDERCLASS任務的CPU視為空閑CPU,并會嘗試將ID_HIGHCLASS任務遷移到這種CPU上,會盡量將ID_HIGHCLASS打散,避免ID_HIGHCLASS任務之間的CPU競爭和HT干擾,使每個ID_HIGHCLASS任務都能獲得充足的CPU資源。

    NO_ID_LOAD_BALANCE:表示特性為關閉狀態。

  • 用于sysctl配置內核參數的接口

    Group Identity的部分功能的實現需要以內核參數的取值作為參考。相關內核參數的具體說明如下表:

    內核參數

    說明

    單位

    默認值

    /proc/sys/kernel/sched_expel_update_interval

    CPU在選擇任務時,驅逐狀態的自動更新時間間隔。僅在ID_LOOSE_EXPEL特性開啟時生效。

    ms

    10

    /proc/sys/kernel/sched_expel_idle_balance_delay

    CPU在驅逐狀態下,idle balance的最小時間間隔。取值為-1時表示不允許進行idle balance

    當CPU上均為ID_UNDERCLASS任務且任務在被驅逐時,CPU的狀態可以理解為空閑狀態,在該狀態下CPU會進行idle balance以提高負載均衡的效果,但會對ID_UNDERCLASS任務造成損傷。通過設置sched_expel_idle_balance_delay參數可以緩解該問題。

    ms

    -1

    /proc/sys/kernel/sched_idle_saver_wmark

    設置CPU空閑時間的水位線。當ID_IDLE_SAVER任務被喚醒時,只會嘗試找到高于該水位線的空閑CPU,不會嘗試找到低于該水位線的空閑CPU。

    ns

    0

    /proc/sys/kernel/sched_group_identity_enabled

    4.19.91-26.4開始,Group Identity新增開關/proc/sys/kernel/sched_group_identity_enabled。在使用Group Identity功能之前需要先執行echo 1 > /proc/sys/kernel/sched_group_identity_enabled打開該開關,否則將無法使用該功能。

    開啟該開關后,如果cgroup的cpu.bvt_warp_ns或者cpu.identity非零,則無法向/proc/sys/kernel/sched_group_identity_enabled接口寫入數據。

    說明

    當內核版本為4.19.91-26.4.al74.19.91-26.5.al74.19.91-26.6.al7時,如果sched_group_identity_enabled已經被置為1,并且有cgroup的bvt被置為非零值,讀取/proc/sys/kernel/sched_group_identity_enabled會報error,這是接口讀取bug,不影響正常使用。4.19.91-27.al7以上版本的內核已修復該問題。

    不涉及

    0

信息輸出說明

在使用Group Identity功能期間,您可以運行以下命令,查看多維度的參數信息。

cat /proc/sched_debug

輸出的參數說明如下:

參數

說明

nr_high_running

當前CPU上運行的ID_HIGHCLASS任務數量。

nr_under_running

當前CPU上運行的ID_UNDERCLASS任務數量。

nr_expel_immune

當前CPU上運行的非ID_UNDERCLASS任務數量。

smt_expeller

當前CPU是否有ID_SMT_EXPELLER任務在運行。參數值為1表示有;參數值為0表示無。

on_expel

SMT調度器的對端是否有ID_SMT_EXPELLER任務在運行。參數值為1表示有;參數值為0表示無。

high_exec_sum

當前CPU上ID_HIGHCLASS任務的累計運行時間。

under_exec_sum

當前CPU上ID_UNDERCLASS任務的累計運行時間。

h_nr_expel_immune

當前cfs_rq上運行的非ID_UNDERCLASS任務數量。

expel_start

CPU在驅逐任務的開始階段,兩個紅黑樹結構的最小虛擬運行時間的差距。

expel_spread

由于CPU驅逐狀態造成的兩個紅黑樹結構最小虛擬運行時間的累計差距。

min_under_vruntime

低優先級紅黑樹結構的最小虛擬運行時間。

相關問題

問題:如何將內核版本從4.19.91-25.1.al7~4.19.91-25.5.al7升級至4.19.91-25.6.al7或更高版本?

解決方案:

  1. 遠程登錄ECS實例。

    具體操作,請參見通過密碼或密鑰認證登錄Linux實例

  2. 查詢內核版本。

    uname -r
  3. 升級內核至最新版本。

    sudo yum update kernel -y
  4. 運行以下命令,重啟ECS實例至新的內核版本。

    sudo reboot