最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

cgroup?blkio子系統(tǒng)對(duì)容器的讀寫限速詳解

 更新時(shí)間:2023年08月20日 11:27:06   作者:a朋  
這篇文章主要為大家介紹了cgroup?blkio子系統(tǒng)對(duì)容器的讀寫限速詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

如果多個(gè)容器同時(shí)read/write節(jié)點(diǎn)上的一塊磁盤,如何對(duì)每個(gè)容器的read/write操作限速,以防止其相互干擾、相互競(jìng)爭(zhēng)。

cgroup v1的blkio子系統(tǒng),可以限制磁盤的I/O。

一. 磁盤讀寫的指標(biāo)

衡量磁盤讀寫的常見指標(biāo):

  • IOPS(Input/Output Operations per Second): 每秒讀寫磁盤的次數(shù);
  • Throughput(吞吐量): 每秒讀寫磁盤的數(shù)據(jù)量,也稱為帶寬(BandWidth);

Throughput = 數(shù)據(jù)塊大小 * IOPS

在IOPS固定的情況下,讀寫的數(shù)據(jù)塊越大,吞吐量也越大。

二. cgroup v1的blkio子系統(tǒng)

blkio cgroup的虛擬文件系統(tǒng)掛載點(diǎn)/sys/fs/cgroup/blkio/,包含以下參數(shù):

  • blkio.throttle.read_iops_device:讀IOPS限制;
  • blkio.throttle.read_bps_device:讀吞吐量限制;
  • blkio.throttle.write_iops.device:寫IOPS限制;
  • blkio.throttle.write_bps_device:寫吞吐量限制;

比如,限制容器對(duì)磁盤/dev/vdb的吞吐量 <= 10MB/s:

## 1.首先拿到/dev/vdb的主次設(shè)備號(hào)
# 其中 252:16是/dev/vdb的主次設(shè)備號(hào)
# ls -l /dev/vdb -l
brw-rw---- 1 root disk 252, 16 Nov  2 08:02 /dev/vdb

## 2.然后寫cgroup
echo "252:16 10485760" &gt; $CGROUP_CONTAINER_PATH/blkio.throttle.write_bps_device

可以使用fio工具,在容器中進(jìn)行驗(yàn)證:

docker exec fio_test1 fio -direct=1 -rw=write -ioengine=libaio -bs=4k -size=100MB -numjobs=1 -name=/tmp/fio_test1.log

值得注意的是

Cgroupv1 blkio只能對(duì)Direct I/O進(jìn)行限速,不能對(duì)Buffered I/O進(jìn)行限制。

三. Direct I/O 與 Buffered I/O

Direct I/O和Buffered I/O發(fā)生在用戶  磁盤文件時(shí)。

  • Direct I/O:

    • 通過Linux內(nèi)核的filesystem --> block layer --> disk driver --> disk hardware;
  • Buffered I/O:

    • 用戶進(jìn)程將數(shù)據(jù)寫入Page cache后就返回了;
    • Linux內(nèi)核線程把內(nèi)存中的數(shù)據(jù)flush到磁盤;

在Linux中,基于性能考慮,絕大多數(shù)的應(yīng)用都使用Buffered I/O模式。

四. 為什么cgroup v1 blkio不能限制Buffered I/O

對(duì)下圖中的進(jìn)程 pid_y 的cgroup進(jìn)行限制,它分別屬于memory cgroup 和 blkio cgroup:

在blkio cgroup對(duì) pid_y 做磁盤I/O限制的時(shí)候,blkio不會(huì)關(guān)心:

  • pid_y 用了哪些內(nèi)存,哪些屬于Page cache,何時(shí)flush到磁盤;
  • pid_y 中的Page cache被flush到磁盤時(shí),由于是內(nèi)核線程執(zhí)行flush,產(chǎn)生的磁盤I/O不被計(jì)算到進(jìn)程 pid_y上;

也就是說(shuō):

cgroup v1 blkio獨(dú)立與memory子系統(tǒng),它無(wú)法統(tǒng)計(jì)由Page cache刷入磁盤的I/O;

即 cgroup v1 blkio不能對(duì)Buffered I/O進(jìn)行限速;

五. cgroup v2解決這一問題

cgroup v2解決了不能對(duì)Buffered I/O進(jìn)行限速的問題。

在cgroup v2中:

  • 一個(gè)進(jìn)程屬于一個(gè)控制組;
  • 每個(gè)控制組可以定義多個(gè)子系統(tǒng);

上圖中,pid_y 屬于控制組group2,而group2同時(shí)配置了io和memory子系統(tǒng);
在此情況下,cgroup對(duì) pid_y 的磁盤讀寫進(jìn)行限速的時(shí)候,就可以知道 pid_y 寫入Page Cache的數(shù)據(jù)量,這樣Buffered I/O的磁盤限速就實(shí)現(xiàn)了。

也就是說(shuō),在cgroup v2中:

內(nèi)核將Page cache flush到磁盤產(chǎn)生的I/O也會(huì)被計(jì)算到進(jìn)程的I/O中;

對(duì)磁盤限速時(shí),可以同時(shí)限制Directed I/O和Buffered I/O;

值得注意的是,目前runC、containerd和kubernetes剛開始支持cgroup v2,生產(chǎn)環(huán)境上cgroup v1遷移到cgroup v2還需要一個(gè)過程。

參考 blkio的文檔

https://www.kernel.org/doc/Documentation/cgroup-v1/blkio-controller.txt

以上就是cgroup blkio子系統(tǒng)對(duì)容器的讀寫限速詳解的詳細(xì)內(nèi)容,更多關(guān)于cgroup blkio容器讀寫限速的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • docker部署微信小程序自動(dòng)構(gòu)建發(fā)布和更新的詳細(xì)步驟

    docker部署微信小程序自動(dòng)構(gòu)建發(fā)布和更新的詳細(xì)步驟

    通過 Jenkins 和 Docker 部署微信小程序,并實(shí)現(xiàn)自動(dòng)構(gòu)建、發(fā)布和版本更新,主要涉及到幾個(gè)步驟,下面給大家分享docker部署微信小程序自動(dòng)構(gòu)建發(fā)布和更新的詳細(xì)步驟,感興趣的朋友一起看看吧
    2024-12-12
  • Docker?隔離與限制原理介紹

    Docker?隔離與限制原理介紹

    這篇文章主要介紹了Docker?隔離與限制原理,對(duì)于?Docker?等大多數(shù)?Linux?容器來(lái)說(shuō),Cgroups?技術(shù)是用來(lái)制造約束的主要手段,而?Namespace?技術(shù)則是用來(lái)修改進(jìn)程視圖的主要方法,下文相關(guān)介紹,需要的朋友可以參考一下
    2022-04-04
  • Docker容器修改配置文件的實(shí)現(xiàn)

    Docker容器修改配置文件的實(shí)現(xiàn)

    這篇文章主要介紹了Docker容器修改配置文件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 詳解Docker修改容器端口映射的方法

    詳解Docker修改容器端口映射的方法

    這篇文章主要介紹了詳解Docker修改容器端口映射的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2006-11-11
  • 什么是docker Docker入門教程第一篇

    什么是docker Docker入門教程第一篇

    什么是docker?這篇文章主要為大家分享了Docker簡(jiǎn)介與入門教程第一篇,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Docker中容器數(shù)據(jù)卷詳解

    Docker中容器數(shù)據(jù)卷詳解

    這篇文章主要介紹了Docker中容器數(shù)據(jù)卷詳解的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 詳解Docker 配置國(guó)內(nèi)免費(fèi)registry mirror

    詳解Docker 配置國(guó)內(nèi)免費(fèi)registry mirror

    本篇文章主要介紹了 Docker 配置國(guó)內(nèi)免費(fèi)registry mirror,具有一定的參考價(jià)值,有興趣的小伙伴們可以參考一下
    2017-07-07
  • Dockerfile文件詳細(xì)介紹

    Dockerfile文件詳細(xì)介紹

    Dockerfile 是一個(gè)文本文件,里面包含組裝新鏡像時(shí)用到的基礎(chǔ)鏡像和各種指令。使用dockerfile 文件來(lái)定義鏡像,然后運(yùn)行鏡像,啟動(dòng)容器。本文詳細(xì)介紹了Dockerfile文件,感興趣的小伙伴可以參考一下
    2023-04-04
  • Docker配置本地倉(cāng)庫(kù)web訪問的實(shí)現(xiàn)

    Docker配置本地倉(cāng)庫(kù)web訪問的實(shí)現(xiàn)

    本文主要介紹了Docker配置本地倉(cāng)庫(kù)web訪問的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • docker中使用GPU+rocksdb的詳細(xì)教程

    docker中使用GPU+rocksdb的詳細(xì)教程

    這篇文章主要介紹了docker中使用GPU+rocksdb,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-10-10

最新評(píng)論

西乌珠穆沁旗| 洪江市| 塘沽区| 景谷| 东平县| 上林县| 甘洛县| 仪征市| 武平县| 沧州市| 洪雅县| 修水县| 长顺县| 明星| 昭平县| 石台县| 威信县| 长乐市| 泗洪县| 偏关县| 松滋市| 东安县| 济阳县| 嵊泗县| 梨树县| 高青县| 永春县| 南和县| 佳木斯市| 浏阳市| 西林县| 晋宁县| 平度市| 乌兰察布市| 浦城县| 焉耆| 革吉县| 延寿县| 闵行区| 古蔺县| 巨鹿县|