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

如何避免因cgroup引起的應(yīng)用性能抖動?

控制群組(control group)簡稱為cgroup,是Linux的內(nèi)核功能。系統(tǒng)通過cgroup可以對系統(tǒng)內(nèi)的資源進(jìn)行分配、管理、監(jiān)控等操作。不合理的cgroup層級或數(shù)量可能引起系統(tǒng)中應(yīng)用性能的不穩(wěn)定。本文主要介紹問題現(xiàn)象以及如何避免該類問題的出現(xiàn)。

問題現(xiàn)象

在容器相關(guān)的業(yè)務(wù)場景下,系統(tǒng)中的應(yīng)用偶然會出現(xiàn)請求延時(shí)增大,并且容器所屬宿主機(jī)的CPU使用率中,sys指標(biāo)(內(nèi)核空間占用CPU的百分比)達(dá)到30%及以上。例如,通過top命令查看Linux系統(tǒng)性能數(shù)據(jù)時(shí),CPU的sy指標(biāo)達(dá)到30%。

top - 16:21:19 up 22 days,  1:59,  3 users,  load average: 40.02, 30.02, 25.06
Tasks: 193 total,   3 running, 190 sleeping,   0 stopped,   0 zombie
%Cpu(s):  20.0 us,  30.0 sy,  0.0 ni, 45.0 id,  5.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 24130808 total,  2071424 free,  1832512 used, 20226872 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 19737776 avail Mem

可能原因

例如,運(yùn)行cat /proc/cgroups 查看當(dāng)前所有控制群組的狀態(tài),發(fā)現(xiàn)memory對應(yīng)的cgroup數(shù)目高達(dá)2040。

#subsys_name  hierarchy num_cgroups enabled
cpuset  2     200     1
cpu     2     200     1
cpuacct 2     200     1
blkio   6     62      1
memory  10    2040    1
devices 5     59      1

此時(shí)您可以通過perf工具動態(tài)分析,定位出現(xiàn)問題的原因。

  1. 運(yùn)行以下命令,安裝perf工具。

    yum install perf -y
  2. 運(yùn)行以下命令,對系統(tǒng)的進(jìn)程進(jìn)行采樣、分析。

    perf record -a -g sleep 10
  3. 運(yùn)行以下命令,查看分析結(jié)果。

    perf report

    命令行返回結(jié)果示例,如下所示:

    31.04%  [kernel]                                      [k] memcg_stat_show
    18.61%  [kernel]                                      [k] memcg_sum_events.isra.22
    9.41%  [kernel]                                      [k] mem_cgroup_iter
    6.94%  [kernel]                                      [k] css_next_descendant_pre
    6.11%  [kernel]                                      [k] _find_next_bit
    3.96%  [kernel]                                      [k] mem_cgroup_usage.part.43
    1.75%  [kernel]                                      [k] find_next_bit
    1.38%  [kernel]                                      [k] mem_cgroup_node_nr_lru_pages

    從分析結(jié)果中,可得出Linux內(nèi)核運(yùn)行時(shí)間大多集中在memcg_stat_show函數(shù),這是由于memory對應(yīng)的cgroup數(shù)量過多,系統(tǒng)在遍歷這些cgroup所導(dǎo)致的內(nèi)核長時(shí)間運(yùn)行。

    除了memory之外,cpuacct、cpu對應(yīng)的cgroup過多還可能使CFS、load-balance的性能受影響。

解決方案

當(dāng)您對Linux實(shí)例運(yùn)維時(shí),可參考以下兩條建議,避免因cgroup引起的應(yīng)用性能抖動。

  • cgroup的層級建議不超過10層。

  • cgroup的數(shù)量上限建議不超過1000,且應(yīng)當(dāng)盡可能地減少cgroup的數(shù)量。