那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

容器核心技術Cgroups和Namespace

阿銘linux ? 來源:阿銘linux ? 2023-03-28 09:47 ? 次閱讀

| 什么是Cgroups

簡單一句話描述Cgroups:Cgroups是Linux內核提供的一種可以限制單個進程或者多個進程所使用資源的機制,可以對 cpu,內存等資源實現精細化的控制。
Cgroups全稱是Control Groups,Cgroup為每種可以控制的資源都定義了一個子系統。它的子系統有:

cpu子系統:限制進程的cpu使用率;

cpuacct子系統:統計Cgroups中進程cpu使用報告;

cpuset子系統:為Cgroups中的進程分配單獨的cpu節點或者內存節點;

memory子系統:限制進程的memory使用量;

blkio子系統:限制進程的塊設備io;

devices子系統:控制進程能夠訪問某些設備;

net_cls子系統:標記cgroups中進程的網絡數據包,然后可以使用tc模塊(traffic control)對數據包進行控制;

freezer子系統:掛起或者恢復cgroups中的進程;



其它的具體可以通過這個命令查看:

ls /sys/fs/cgroup/


| 理解Cgroups如何限制資源
在cpu子系統下創建目錄
cd /sys/fs/cgroup/cpu


mkdir container


ls container #下面會自動生成諸多文件,這些文件就是資源限制文件


cgroup.clone_children  

cpuacct.usage         

cpuacct.usage_percpu_sys   

cpuacct.usage_user  

cpu.rt_period_us   

cpu.stat


cgroup.procs           

cpuacct.usage_all     

cpuacct.usage_percpu_user  

cpu.cfs_period_us   

cpu.rt_runtime_us  

notify_on_release


cpuacct.stat           

cpuacct.usage_percpu  

cpuacct.usage_sys          

cpu.cfs_quota_us    

cpu.shares         

tasks
執行一個耗費cpu資源的進程
while : ; do : ; done &  #這樣會做一個死循環進程,會導致cpu達到100%




[1] 39963


查看quota_us和period_us
[root@localhost container]# cat cpu.cfs_quota_us  ##-1表示未做任何限制


-1 


[root@localhost container]# cat cpu.cfs_period_us  ##這里的100000為us,也就是100ms


100000


兩個值組合在一起,就達到了一個限制的作用,修改上面兩個值
echo 30000 > cpu.cfs_quota_us  ##改為30ms,意思是100ms內,將cpu的限額最多給到30ms,也就是30%


再將上面的死循環進程id,做一下限制
echo  39963 > tasks


再次用top查看cpu使用率,會發現最終會使用30%,這就是Cgoups的限制。

| 總結Cgroups

Linux Cgroups的設計還是比較易用的,簡單粗暴地理解呢,它就是一個子系統目錄加上一組資源限制文件的組合。

而對于Docker等Linux容器項目來說,它們只需要在每個子系統下面,為每個容器創建一個控制組(即創建一個新目錄),然后在啟動容器進程之后,把這個進程的PID填寫到對應控制組的tasks文件中就可以了。

而至于在這些控制組下面的資源文件里填上什么值,就靠用戶啟動容器時的參數指定了。

| 什么是Namespace

Namespace(命名空間)是一種隔離機制,用于將全局系統資源劃分為多個獨立的邏輯部分,以便不同的進程或應用程序之間能夠使用不同的資源名稱或標識符,避免沖突和混淆。

Linux的Namespace是一種由內核直接提供的全局資源封裝,它是內核針對進程設計的訪問隔離機制。

進程在一個獨立的 Linux Namespace中會認為它擁有這臺 Linux 主機上的一切資源,不僅文件系統是獨立的,還有著獨立的 PID 編號(比如擁有自己的 0 號進程,即系統初始化的進程)、UID/GID 編號(比如擁有自己獨立的 root 用戶)、網絡(比如完全獨立的 IP 地址、網絡棧、防火墻等設置),等等。

| Namespace分類

事實上,Linux的Namespace設計最早只針對文件系統,但到了后來,要求系統隔離其他訪問操作的呼聲就愈發強烈,從 2006 年起,內核陸續添加了UTS、IPC等命名空間隔離,后續Linux命名空間支持了以下八種資源的隔離(內核的官網Kernel.org上仍然只列出了前六種,從 Linux 的 Man 命令能查到全部八種):


命名空間 說明 內核版本
Mount 文件系統隔離 2.4.19
UTS 主機的Hostname、Domain names 2.6.19
IPC 隔離進程間通信的渠道 2.6.19
PID 隔離進程編號,無法看到其它命名空間的PID 2.6.24
Network 隔離網絡資源,如網卡、網絡棧、IP地址、端口 2.6.29
User 隔離用戶和用戶組 3.8
Cgroup 隔離Cgroup信息,進程有自己的Cgroup的根目錄視圖 4.6
Time 隔離系統時間 5.6




容器技術的產生就是因為Linux的Namespace的存在,在Linux系統里要想運行多個容器,那么容器與宿主機之間、容器與容器之間必須要做到相互隔離,它們會認為自己擁有了整個硬件以及軟件資源。可以說如果沒有Namespace技術,就不會有容器技術。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210417
  • 容器
    +關注

    關注

    0

    文章

    499

    瀏覽量

    22125

原文標題:容器核心技術Cgroups和Namespace

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    一文帶你搞懂Docker容器核心基石Cgroups

    可以限制、記錄任務組所使用的物理組員(比如 CPU、Memory、IO等),為容器實現虛擬化提供了基本保證,是構建 Docker 等一些列虛擬化管理工具的基石。今天我們就來詳細介紹一下 cgroups 相關的內容。
    發表于 11-24 09:54 ?624次閱讀

    最新視頻編碼標準H.264及其核心技術

    最新視頻編碼標準H.264及其核心技術H.264是ITU-T和ISO聯合研究制定的編碼效率高、網絡適應性強的最新數字視頻編碼國際標準.H.264是面向視頻電話、視頻會議等實際應用的標準,它能以低
    發表于 06-25 11:42

    佳靈變頻器故障與維修核心技術

    佳靈變頻器故障與維修核心技術
    發表于 08-05 20:55

    藍牙核心技術概述

    藍牙核心技術概述(一):藍牙概述藍牙核心技術概述(二):藍牙使用場景藍牙核心技術概述(三): 藍牙協議規范(射頻、基帶鏈路控制、鏈路管理)藍牙核心技術概述(四):藍牙協議規范(HCI、
    發表于 11-24 16:06

    【原創】Android視頻直播核心技術

    【原創】Android視頻直播核心技術回復即可獲取下載鏈接[hide=d15]鏈接:http://pan.baidu.com/s/1cC6wbW 密碼:smj8 學習群:150923287 [/hide]
    發表于 07-26 17:43

    31歲無核心技術,迷茫

    再有3個月31整,再有9月就到2019了。回首發現,無核心技術,身價也越來越編制,職位上升無望,改怎么辦?同齡的你,有什么高見!!!期待您的回復。
    發表于 03-27 11:39

    云計算的五大核心技術

    云計算的核心技術有哪些?大數據云計算學習路線
    發表于 06-28 09:41

    五大核心技術如何實現物聯網

    以下是實現物聯網的五大核心技術核心技術之感知層:傳感器技術、射頻識別技術、二維碼技術、微機電系統1.傳感器
    發表于 07-25 06:38

    Small Cell是什么?Small Cell的核心技術包括哪些?

    Small Cell是什么?Small Cell的核心技術包括哪些?
    發表于 05-24 06:11

    無線遠程監控系統主要包括哪些核心技術

    無線遠程監控系統主要包括哪些核心技術
    發表于 05-25 06:45

    H.264與AVS視頻標準核心技術有什么不同?

    H.264與AVS視頻標準核心技術有什么不同?
    發表于 06-03 06:57

    視頻標準核心技術對比分析哪個好

    視頻標準核心技術對比分析哪個好
    發表于 06-07 06:12

    單片機應用的核心技術是什么?

    單片機應用的核心技術是什么?單片機神奇的工作原理是什么?匯編語言很難學怎么辦?
    發表于 11-02 06:17

    Arm Cortex-A65核心技術參考手冊

    Arm Cortex-A65核心技術參考手冊
    發表于 08-02 07:38

    Linux namespacecgroups簡介

    先放結論,namespace 是用來做資源隔離, cgroup 是用來做資源限制。
    的頭像 發表于 03-16 09:03 ?1813次閱讀
    德州扑克概率| 百家乐技巧发布| 17pk棋牌官方下载| A8百家乐官网赌场娱乐网规则| 大发888娱乐真钱游戏下载| 正品百家乐官网的玩法技巧和规则| 佳豪国际| 百家乐自动投注| 澳门百家乐官网破解| 大发888电话多少| 风水上看做生意养金毛好吗| 阜阳市| 神州百家乐的玩法技巧和规则| 百家乐官网官网站| 吴旗县| 百家乐赌台| 百家乐官网现金游戏注册送彩金| 大发888 赌场娱乐网规则| 李雷雷百家乐官网的奥妙| 易赢百家乐官网软件| 大发888客户端| 百家乐规则好学吗| 北京百家乐官网网上投注| bet365提款时间| 百家乐五湖四海娱乐| 娱乐网百家乐官网的玩法技巧和规则| 88娱乐城天上人间| 威尼斯人娱乐城是波音| 现金百家乐人气最高| 百家乐官网走势图| 湾仔区| 大发888大发888娱乐游戏| 百家乐娱乐城怎么样| 百家乐官网打鱼秘籍| 滕州市| 大发888蜜月旅行| 永利百家乐娱乐网| 新加坡百家乐官网规则| 百家乐官网投注庄闲法| 线上娱乐城| 大发888吧|