日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

目錄
  • 前言
  • 一、對CPU使用率的控制
    • 1、 使用stress工具測試CPU和內(nèi)存使用情況
    • 2、設(shè)置CPU資源占用比(設(shè)置多個容器時才有效)
    • 3、限制 CPU 使用周期速率
    • 4、限制 CPU 內(nèi)核使用
  • 二、對內(nèi)存限額
    • 三、對-Block IO的限制
      • 四、bps 和iops 的限制
        • 五、總結(jié)
          • Cgroups如何工作的?
          • cgroup對cpu限制小結(jié)
          • cgroup對內(nèi)存的限制小結(jié)
          • 資源限制的幾種方式
          • 資源限制的狀態(tài)查詢

        前言

        1.docker 使用cgroup控制資源,K8S 里面也有l(wèi)imit(使用上限)

        2.docker通過cgroup來控制容器使用的資源配額,包括CPU、內(nèi)存、磁盤三大方面,基本覆蓋了常見的資源配額和使用量控制。

        3.Cgroup 是 Control group 的簡寫,是 Linux 內(nèi)核提供的一種限制所使用物理資源的機制,包括 CPU、內(nèi)存 和 IO 這三大方面,基本覆蓋了常見的資源配額和使用量控制

        4.cgroup是一種資源控制手段,也是容器隔離的6個名稱空間的一種實現(xiàn)手段

        一、對CPU使用率的控制

        1、 使用stress工具測試CPU和內(nèi)存使用情況

        mkdir /opt/stress
        vim /opt/stress/Dockerfile
         
        ——————————————————————————————————————————————————————————————————————————————
         
        FROM centos:7
        RUN yum -y install wget
        RUN wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo		#epel源,可以使用擴展軟件包(stress)
        RUN yum -y install stress		#可以指定產(chǎn)生線程,使用循環(huán)語句,測試用'
         
        ——————————————————————————————————————————————————————————————————————————————
        cd /opt/stress/
        systemctl restart docker.service		#建議重啟docker,不然下面的操作可能會失敗,卡在wget
        docker build -t centos:stress .		#生成鏡像
        ...
        ...
        Successfully built 7e69cc4d1b07
        Successfully tagged centos:stress
         
         
        docker images 
         
        #以下可以使用該鏡像為基礎(chǔ)產(chǎn)生的容器進行測試:'

        docker資源控制管理Cgroup的實現(xiàn)

        2、設(shè)置CPU資源占用比(設(shè)置多個容器時才有效)

        Docker通過–cpu-shares指定CPU份額,默認(rèn)值為1024,值為1024的倍數(shù)。
        資源分配結(jié)果取決于同時運行的其他容器的CPU分配和容器中進程運行情況。
        cgroups只在容器分配的資源緊缺時,即在需要對容器使用的資源進行限制時,才會生效。因此,無法單純根據(jù)某個容器的CPU份額來確定有多少CPU資源分配給它。

        示例:創(chuàng)建兩個容器為cpu512和cpu1024, 若只有這兩個容器,設(shè)置容器的權(quán)重,使得cpu512和cpu1024的CPU資源占比為1/3和2/3。

        docker run -itd --name cpu512 --cpu-shares 512 centos:stress stress -c 10    #-c 10表示產(chǎn)生10個子線程,測試用
        docker run -itd --name cpu1024 --cpu-shares 1024 centos:stress stress -c 10
         
        #查看容器的資源使用狀態(tài)(動態(tài)更新)
        docker stats
         
        資源是用cadvisor收集的

        docker資源控制管理Cgroup的實現(xiàn)

        3、限制 CPU 使用周期速率

        cat /sys/fs/cgroup/cpu/docker/[容器ID]/cpu.cfs_quota_us
        #-1,表示不做控制
         
        #例如:容器進程需要每Ⅰ秒使用單個cPU的 0.2秒時間,可以將 --cpu-period 設(shè)置為1000000(即1秒),cpu-quota 設(shè)置為200000 0.2秒)。
        #當(dāng)然,在多核情況下,如果允許容器進程完全占用兩個CPU,則可以將cpu-period 設(shè)置為 100000(即 0.1秒),cpu-quota 設(shè)置為200000 (0.2秒)。
        docker run -itd --name test01 --cpu-period 100000 --cpu-quota 200000 centos:stress 
         
        #也可以直接去修改文件vim /sys/fs/cgroup/cpu/docker/[容器ID]/cpu.cfs_quota_us
         
        #法一:進入指定容器查看
        docker exec -it test01 bash
        cd /sys/fs/cgroup/cpu
        cat cpu.cfs_period_us 
        cat cpu.cfs_quota_us
         
        #法二:docker inspect 容器ID
        docker inspect 6ccc4ddcb6ad

        4、限制 CPU 內(nèi)核使用

        • 可以通過配置,使得某些程序獨享 CPU 內(nèi)核,以提高其處理速度
        • 對多核CPU的服務(wù)器,Docker還可以控制容器**運行使用哪些CPU內(nèi)核**,即使用–cpuset-cpus參數(shù)。這對具有多CPU的服務(wù)器尤其有用,可以對需要高性能計算的容器進行性能最優(yōu)的配置
        docker run -itd --name cpu1 --cpuset-cpus 0-1 centos:stress
        #執(zhí)行以上命令需要宿主機為雙核,表示創(chuàng)建的容器只能用0、1兩個內(nèi)核。最終生成的 cgroup的 CPU內(nèi)核配置如下
         
        cat /sys/fs/cgroup/cpuset/docker/[容器ID]/cpuset.cpus
         
        docker exec -it cpu1 /bin/bash -c "stress -c 10"

        二、對內(nèi)存限額

        docker run -itd -m 200M --memory-swap 300M --name test01 centos:stress
        docker stats

        三、對-Block IO的限制

        • 默認(rèn)情況下,所有容器能平等地讀寫磁盤,可以通過設(shè)置–blkio-weight參數(shù)來改變?nèi)萜?block IO的優(yōu)先級。
        • –blkio-weight 與–cpu-shares類似,設(shè)置的是相對權(quán)重值,默認(rèn)為500。

        在下面的例子中,容器A讀寫磁盤的帶寬是容器B的兩倍。

        #容器A
        docker run -it --name container_A --blkio-weight 600 centos:stress
        cat /sys/fs/cgroup/blkio/blkio.weight
        #容器B
        docker run -it --name container_B --blkio-weight 300 centos:stress
        cat /sys/fs/cgroup/blkio/blkio.weight

        四、bps 和iops 的限制

        bps 是byte per second,每秒讀寫的數(shù)據(jù)量。
        iops是io per second,每秒IO的次數(shù)。
        可通過以下參數(shù)控制容器的bps 和iops:
        –device-read-bps,限制讀菜個設(shè)備的bps。
        –device-write-bps,限制寫某個設(shè)備的bps。
        –device-read-iops,限制讀某個設(shè)備的iops。
        –device-write-iops,限制寫某個設(shè)備的iops

        #下面的示例是限制容器寫/dev/sda 的速率為5MB/s
        docker run -it --device-write-bps /dev/sda:5MB centos:stress 
        dd if=/dev/zero of=test bs=1M count=100 oflag=direct
        100+0 records in
        100+0 records out
        104857600 bytes (105 MB) copied, 20.0018 s, 5.2 MB/s
         
        #通過dd命令測試在容器中寫磁盤的速度。因為容器的文件系統(tǒng)是在 host /dev/sda 上的。
        #在容器中寫文件相當(dāng)子對host /dev/sda進行寫操作。另外,oflag=direct指定用direct IO 方式寫文件,這樣--device-write-bps才能生效。
        #結(jié)果表明限速 5MB/s左右。作為對比測試,如果不限速,結(jié)果如下。
        docker run -it centos:stress 
        dd if=/dev/zero of=test bs=1M count=100 oflag=direct
        100+0 records in
        100+0 records out
        104857600 bytes (105 MB) copied, 0.0470107 s, 2.2 GB/s

        五、總結(jié)

        Cgroups如何工作的?

        CPU —>VCPU–>以進程的方式體現(xiàn)在workstation環(huán)境(docker環(huán)境中) —》docker表現(xiàn)形式是容器,–>Vcpu以進程的方式控制容器–》容器中的應(yīng)用需要的是服務(wù)進程支持–》宿主機內(nèi)核中cpu可以被cgroup管理(通過分配資源手段)–》linux內(nèi)核中的cgroup可以直接控制VCPU的資源分配,而VCPU在workstation中是以進程的方式管理docker容器的,所以,也可以認(rèn)為Cgroups在直接/間接管理docker容器中的應(yīng)用。

        cgroup對cpu限制小結(jié)

        Cgroups 控制的是內(nèi)核資源—》間接控制vw中vcpu的資源—》控制著vwM中進程資源—》docker容器的資源—》docker容器內(nèi)應(yīng)用的資源

        控制的主體包括:CPU、內(nèi)存、I/O

        主要介紹的是CPU資源的控制而CPU資源控制的方式主要有:

        ①cpu-shares權(quán)重指的是多個容器使用同一個CPU的情況下,被分配到CPU資源的機會占比

        ②cpu-period周期指的是,CPU在給于當(dāng)前管理、控制的容器分配資源時,CPU的分配周期,默認(rèn)是1s,此項配置,可以在運行時直接指定

        ③cpuset-cpus指定容器,僅能使用指定的CPU,按照CPU的下標(biāo)來表示

        cgroup對內(nèi)存的限制小結(jié)

        Cgroups 對于內(nèi)存的限制,主要體現(xiàn)在以下兩個部分:

        ①內(nèi)存使用上限(硬限制)

        ②內(nèi)存+swap使用上限(硬限制)

        類比于K8s中的資源限制手段,也是使用的cgroups的技術(shù),體現(xiàn)為limit

        respones:
          request:    #分配的初始資源
            cpu:100m
            memory:100m
          limits:
            cpu:300m
            memory:200m

         資源限制的主要類型

        • CPU權(quán)重shares、 quota、 cpuset
        • 磁盤BPS、 TPS限制, 指定使用哪個磁盤、磁盤分區(qū)
        • 內(nèi)存 -m – swap 內(nèi)存、交換分區(qū)

        大部分做的是上限的限制

        資源限制的幾種方式

        build構(gòu)建鏡像時,可以指定該鏡像的資源限制
        run將鏡像跑為容器的時候,可以指定容器的資源限制
        容器啟動之后可以在宿主機對應(yīng)容器的目錄下,修改資源限制,然后重載
        /sys/ fs/cgroup/* (cpu、b1k、 mem) /docker/容 器ID/ ——>修改對應(yīng)的資源限制文件參數(shù)就可以

        資源限制的狀態(tài)查詢

        docker inspect 鏡像ID/容器ID
        直接查看宿主機對應(yīng)容器ID資源限制的文件
        cgroup資源docker 原理之一, namespaces 6個名稱空間

        像時,可以指定該鏡像的資源限制

        run將鏡像跑為容器的時候,可以指定容器的資源限制
        容器啟動之后可以在宿主機對應(yīng)容器的目錄下,修改資源限制,然后重載
        /sys/ fs/cgroup/* (cpu、b1k、 mem) /docker/容 器ID/ ——>修改對應(yīng)的資源限制文件參數(shù)就可以

        分享到:
        標(biāo)簽:Docker 控制 服務(wù)器 管理 資源
        用戶無頭像

        網(wǎng)友整理

        注冊時間:

        網(wǎng)站:5 個   小程序:0 個  文章:12 篇

        • 51998

          網(wǎng)站

        • 12

          小程序

        • 1030137

          文章

        • 747

          會員

        趕快注冊賬號,推廣您的網(wǎng)站吧!
        最新入駐小程序

        數(shù)獨大挑戰(zhàn)2018-06-03

        數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

        答題星2018-06-03

        您可以通過答題星輕松地創(chuàng)建試卷

        全階人生考試2018-06-03

        各種考試題,題庫,初中,高中,大學(xué)四六

        運動步數(shù)有氧達人2018-06-03

        記錄運動步數(shù),積累氧氣值。還可偷

        每日養(yǎng)生app2018-06-03

        每日養(yǎng)生,天天健康

        體育訓(xùn)練成績評定2018-06-03

        通用課目體育訓(xùn)練成績評定