在Linux系統(tǒng)中,cgroup(Control Group)是一種資源管理和限制的機制,用于限制、記錄和隔離進程組使用的物理資源(如CPU、內存、I/O等)。例如,memory cgroup用于控制內存資源的使用,而cpuacct cgroup用于記錄cgroup中任務所使用的CPU報告信息。在上述兩種cgroup中負責統(tǒng)計信息的功能分別為memsli和sched_sli。本文為您介紹在Alibaba Cloud Linux 3中,memsli和sched_sli功能在memory cgroup及cpuacct cgroup中新增的延時統(tǒng)計功能及其使用說明。
使用限制
使用memcg以及task cgroup中的延時統(tǒng)計功能,您的實例需要滿足下述要求:
實例使用的操作系統(tǒng)必須為Alibaba Cloud Linux 3。
實例使用的內核版本為5.10.134-12及以上版本。
使用說明
開啟、關閉memsli延時統(tǒng)計功能
執(zhí)行以下命令,開啟memsli延時統(tǒng)計功能。
echo 1 | sudo tee /proc/memsli/enabled
說明memsli延時統(tǒng)計功能默認為開啟狀態(tài)。
執(zhí)行以下命令,關閉memsli延時統(tǒng)計功能。
echo 0 | sudo tee /proc/memsli/enabled
開啟、關閉sched_sli延時統(tǒng)計功能
執(zhí)行以下命令,開啟sched_sli延時統(tǒng)計功能。
echo 1 | sudo tee /proc/cpusli/sched_lat_enabled
執(zhí)行以下命令,關閉sched_sli延時統(tǒng)計功能。
echo 0 | sudo tee /proc/cpusli/sched_lat_enabled
說明sched_sli延時統(tǒng)計功能默認為關閉狀態(tài)。
查詢memsli延時統(tǒng)計數據
memsli延時統(tǒng)計接口列表。
memsli延時查詢接口名稱
接口說明
memory.direct_compact_latency
在memcg分配內存時做內存整理的延時
memory.direct_reclaim_memcg_latency
在memcg超出limit限制時進行內存回收的延時
memory.direct_swapout_global_latency
在memcg分配內存時由于整機內存不足匿名頁交換到 swap空間的延時
memory.direct_reclaim_global_latency
在memcg內存分配時由于整機內存不足的回收延時
memory.direct_swapin_latency
在memcg內存回收時swap空間交換到內存的延時
memory.direct_swapout_memcg_latency
在memcg超出limit限制時進行內存回收匿名頁交換到swap空間的延時
memsli延時統(tǒng)計接口查詢示例。
運行以下命令,查詢memory.direct_reclaim_memcg_latency的延時情況。
sudo cat /sys/fs/cgroup/memory/memory.direct_reclaim_memcg_latency
回顯結果示例如下:
0-1ms: 0 1-5ms: 0 5-10ms: 0 10-100ms: 0 100-500ms: 0 500-1000ms: 0 >=1000ms: 0 total(ms): 0
查詢sched_sli延時統(tǒng)計數據
sched_sli延時統(tǒng)計接口列表。
重要只有cpu和cpuacct掛載于同一目錄下時,才可以使用sched_sli的延時功能,若不在同一目錄下,則無法使用該功能。在Alibaba Cloud Linux 3中,默認情況下,cpu和cpuacct被掛載在
/sys/fs/cgroup/
。sched_sli延時查詢接口名稱
接口說明
cpuacct.block_latency
cpuacct中uninterrupt進程從出隊到被響醒的延時時間
cpuacct.cgroup_wait_latency
cpuacct中調度組在runqueue等待的延時時間
cpuacct.ioblock_latency
cpuacct等待io的uninterrupt進程從出隊列到被響醒的延時時間
cpuacct.wait_latency
cpuacct中調度實例在runqueue等待的延時時間
sched_sli延時統(tǒng)計接口查詢示例。
運行以下命令,查詢cpuacct.ioblock_latency的延時情況。
sudo cat /sys/fs/cgroup/cpuacct/cpuacct.ioblock_latency
回顯結果示例如下:
0-1ms: 0 1-4ms: 0 4-7ms: 0 7-10ms: 0 10-20ms: 0 20-30ms: 0 30-40ms: 0 40-50ms: 0 50-100ms: 0 100-500ms: 0 500-1000ms: 0 1000-5000ms: 0 5000-10000ms: 0 >=10000ms: 0 total(ms): 0 nr: 0