没有合适的资源?快使用搜索试试~ 我知道了~
动态容器达米安·卡弗引用此版本:达米安·卡弗。动态容器的高级整合。操作系统[cs.OS]。索邦大学,2019年。英语。NNT:2019SORUS513。电话:02393773v3HAL ID:电话:02393773https://theses.hal.science/tel-02393773v3提交日期:2021年HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire由PARIS编辑的博士学院(ED130)我形成了,电信化和电子S.Orbonne大学博士学位论文专业领域:I工程/S系统I计算机科学回复人:D'AmienCArverP我们获得的等级:D产科医生 德 你的智慧之泉论文的主题:D型动力C型Ontainers的改进型C型一体化将于2019年17月17日举行,评审团成员包括:报告员:奥伦特·R·韦勒雷波尔多大学教授G群岛 G里莫里尔第一大学教授检查员:G·伊尔斯·穆勒Inria博士在莱恩·T·查纳尼斯大学教授B.艾蒂斯· B·埃拉德索邦大学JEAN-PIERRE LOZIOracle实验室技术人员高级成员框架:我的儿子萨瓦勃朗峰大学教授尤利安歌剧院索邦大学高级讲师DIMITRI REFAUVELETC.T.O.,Magency2谢谢你,没有你是不可能的。C.天线内容31引言72资源虚拟化112.1虚拟机:硬件级虚拟化. ... ... ... ... ... ... ... ... ... ...... ... ... ... ... ...112.1.1机器虚拟化。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...122.1.2提高全面虚拟化环境中的利用率。... ... ... ... ... ... ... ... ...132.1.3改善半虚拟化环境中的使用。. . . . . . . . ...132.2容器:操作系统级虚拟化。... ... ... ... ... ... ... ... ... ... ... ... ... ... ...132.2.1使用cgroups隔离物理资源。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...142.2.2使用命名空间隔离资源可见性。... ... ... ... ... ... ... ... ... ... ... ... ...172.2.3具有安全功能的限制攻击面。... ... ... ... ... ... ... ... ... ... ...202.3容器和虚拟机比较。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...222.3.1比较独立开销。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...232.3.2比较性能隔离和过度承诺。... ... ... ... ... ...232.3.3虚拟机是否应该模仿容器?. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...242.4整合和隔离,两全其美。... ... ... ... ... ... ... ... ... ... ... ... ... ...252.4.1资源整合。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...262.4.2绝缘。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...262.4.3说明CPU cgroups的整合和隔离。... ... ...26块I/O,类似于CPU的基于时间的资源。... ... ... ... ... ... ... ... ... ... ... ...292.5内存是一种空间资源,但不是基于时间的资源。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...315.1结论。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... ... ... ... ... ... ...333内存和cgroup353.1将数据存储在主内存。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...353.1.1内存层次结35构。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... ...3.1.2空间复用。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......363.1.3时分复用。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...363.1.4需要内存cgroup。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...37使用cgroup计算和限制内存。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...373.2.1事件、统计和页面计数器。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...383.2.2最小、最大、软限制和硬限制。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...4034内容3.3隔离cgroup内存回收413.3.1Linux内存池413.3.2拆分内存池423.4动态内存池的443.4.1解析匿名和文件内存池3.4.2解析cgroup内存池463.5结论504巩固时的绝缘缺陷514.1建模整合514.1.1模型假设514.1.2对策534.1.3Magency54的工业应用4.2以前是解决方案,现在是问题4.2.1与集装箱合并544.2.2没有集装箱的合并564.2.3测量合并误差564.3吸取的教训595捕获活动转移615.1旋转比:LRU相关度量615.1.1使用RR62检测浪费内存的I/O模式5.1.2使用RR64平衡匿名和文件存储器5.1.3RR可能产生假阴性645.1.4额外的force_ scan成本CPU时间和影响隔离645.1.5结论675.2怠速比:一个独立的露露指标675.2.1IR准确监控闲置页面的设置5.2.2CPU时间成本和IR5.2.3结论705.3结论706cgroup71的持续分离6.1使用force_ scan71刷新dll6.1.1结论736.2构建选择:松弛的最优解736.2.1在层次结构的所有级别应用soft_ limits6.2.2使用reclaim_ order按活动级别对cgroups进行756.2.3堆叠通用字体766.3猜测活动级别786.3.1预测活动的计量驱动方法786.3.2对活动变化作出反应的事件驱动方法6.4结论82内容57指标和事件驱动方法的评估837.1实验设置837.1.1工作负载7.1.2活动转移和资源配置的时间表857.1.3Blkio cgroup85的油门问题7.1.4实验配置867.2性能分析897.2.1控制实验897.2.2基于事件的解决方案897.2.3基于Metric的解决方案907.3页面传输分析907.3.1旋转比溶液927.3.2怠速比解决方案927.3.3基于事件的解决方案927.4结论938结论和未来工作958.1短期挑战968.1.1将争用传播到最不活动的容器978.1.2确保所有容器处于活动状态时的属性8.2长期展望988.2.1确保集群级别的隔离和整合988.2.2利用有限的内存最大限度地提高整体性能参考书目101学术参考101技术参考107索引1151一、引言云计算现在是数字行业的心脏。 它通过向任何人(从Web服务提供商到HPC科学家,从智能手机用户到视频游戏玩家)提供远程产品,明确了拥有和操作物理硬件的需求[5 3,68,69,7 9]。这种从采购模式到租赁模式的转变在很大程度上是通过资源的虚拟化实现的。客户看重虚拟资源而不是物理资源的原因有很多。客户端可以在有或没有时间承诺的情况下按需租用虚拟资源,并且它们可以根据其负载自动调整所租用的虚拟实例的数量[78,57]。 一旦购买,虚拟资源就可以立即访问,并且不需要发送ping。借助代理缓存或预定义的磁盘映像,在云中优化了新虚拟资源上的通用软件部署。虚拟资源的启动时间也很快,因为生产中的计算机很少关闭。此外,虚拟资源可以迁移到在硬件故障或维护事件中保持可用,并在新硬件可用时保持最新。开发工程师G.Klok建模称,在Amazon Web Service上租用 100个m4.2倍大的实例比在运营商酒店中构建等效集群要便宜。云提供商也不再后悔事实上,一旦物理资源被分配给客户端,就几乎不可能将该资源用于任何其他目的。 虚拟资源更加灵活,并且它们启用了这种资源多路复用。这一属性导致了云计算中一个有争议的做法:出售比物理可用资源更多的虚拟资源。即使超额预订没有得到广泛的建议,它已经成为云的必要。 在其他行业,避免浪费是常见的做法。当买家被期望部分消耗他们的实体资源时,过度销售保证所有可用的资源都将被使用。[76]云提供商在这个事实上赌博。因此,他们需要工具来检测和7CH A P T E R8第一章. 引言将资源整合到保证隔离级别的边界内。例如,Amazon Web Service提供现货实例,而GoogleCloud Platform提供可抢先的实例。这些产品应该出售未售出的资源,但不允许云提供商出售未使用的资源。传统的基于虚拟机管理程序的虚拟化技术能够有效地整合vC-PU,但它们仍然难以在虚拟机之间快速传输未使用的内存。问题的核心是两个实体之间缺乏合作已经提出了一些整合内存的技术(Ballooning [84]、PUMA [30]),但这些技术很难简单,而且经常是侵入性的(修改来宾操作系统)、缓慢的(需要在虚拟机之间同步)和手动的(自动化建议仍在原型中)。最近,基于轻量级容器的虚拟化解决方案已经开始出现,如果容器取代虚拟机,许多解决方案现在都令人惊讶。即使虚拟机比容器更不容易受到安全攻击,但由于它们共享相同的内核,因此在提供性能隔离和整合方面更胜一筹。简而言之,性能隔离是客户关心的问题:他们希望虚拟资源的性能与专用单晶资源一样好。整合是提供商所关心的:他们希望虚拟资源自动转移给真正使用它们的客户。我的博士由Magency [73]和ANRT [56]赞助的论文研究了Linux容器之间内存整合和性能隔离的尽管容器做出了创新的承诺,但当Magency试图使用容器来提高资源利用率时,他们面临着一个问题。他们最活跃的应用程序遇到了暂时的减速,因为它们正在运行内存不足。但是,由于内存被分配给其他非活动应用程序,因此许多内存未使用。简而言之,我们发现Linux容器在将内存从未使用的位置传输到需要的位置时失败内存管理结构中对隔离的需求剥夺了Linux内核正确识别计算机上最未使用内存的能力。这位博士面临的挑战论文是两倍的。首先,它必须使内核意识到存在使用少量内存的容器和需要更多内存的容器。另一方面,它还必须使ker-nel能够正确识别预期的容器。 满足此挑战将使内核能够真正提供整合和性能隔离。本研究的贡献包括:• 一个简单的实验突出了Google Perfkit [66](MySQL [75]和Cassandra [58])使用的实际应用程序在生产环境中可能存在的问题• 对Linux内核的仔细代码分析的综合,抓住了内存管理结构中问题的根源9• 两个内核级方法的设计和实现试图检测哪些容器具有太多的内存和哪些容器具有太小的内存。两种方法都意识到容器的内存需求必须排序,但第一种方法依赖于度量来做出这种区分,而另一种方法依赖于内核事件。• 在两种活动模型下,使用两种类型的工作负载(SysBench [144]和Memtier [74])进行更全面的评估,这将两种方法推向了各自的极限。本文档的组织如下:第2章介绍了虚拟化资源的两种技术,第3章介绍了理解Linux为什么在容器之间正确传输内存所需的技术背景,第4章通过一个可能在生产中占用的简单实验来解决这个问题,第5章研究了可以检测内存未使用时的两个内核指标,第6章提出了在整合期间保持内核隔离的内核修改,第7章评估了我们的解决方案,第8章总结并介绍了未来的工作。在深度方面,章节如下:资源虚拟化是云的基石,但第2章建议,出于效率原因,部署在虚拟机中的一些工作负载应该转移到容器中。第一部分介绍了促成云计算诞生的虚拟机的特性 从设计上讲,硬件级虚拟化如何引入了限制云效率的额外成本。在第二部分中,第2章揭穿了容器的配方,它只不过是Linux内核功能的混合,这些功能是随着时间的推移单独开发的,以满足不同第三部分介绍了将容器与虚拟机进行比较的文献,并得出结论,前者比后者更有效。第四部分通过具体的实验介绍和说明了本文的两个核心概念:性能隔离和巩固。虽然在CPU和磁盘带宽的情况下可以保证这两种属性,但本章的最后一部分表明,在内存的情况下很难保证这两种属性。为了充分理解本文所解决的问题,第3章深入探讨了Linux内核中内存和cgroup第一部分将存储器呈现为在页面单元中管理并且可以在空间和时间上多路复用的资源。第二部分详细介绍了Linux内核中的内存计算方式和限制方式第三部分解释了Linux如何将页面存储在池中以排序它们的实用程序,然后解释了为什么它们不能存储在单个池中。最后一部分解释了如何动态调整同一容器中的内存池,但由于相关工作原理,相同的原则不能应用于不同容器中的池。前面提到的问题通常很难解决,但第4章表明,加固过程中的一些绝缘缺陷是可以预防的。第一部分介绍了一个特定的内存活动模型,其中隔离应该持续,以及这个模型是如何受到Magency应用的启发。 第二部分用一个简单的实验再现了在Magency遇到的问题。此外,它还通过微观基准测试表明,不需要隔离的工作负载在以下情况下得到了正确整合:10第一章. 引言在没有容器的情况下部署,但在容器中部署时合并不正确。最后,最后一部分应用第3章中获得的知识来解释这些实验中观察到的结果解决此问题的第一步是使用内存相关指标捕获活动转移在第5章中,研究了两个指标:旋转比和闲置比。其成本和准确性的测量是在活动发生变化的情况下提供的,但没有合并内存的意图。第6章介绍了我们在内核中开发的更改,以在合并期间保持cgroups的隔离开发的第一个机制允许用户控制转子比率的新鲜度。在第二部分中,描述了一系列的机制。它们使通用内存回收策略能够被表达,特别是,它们使相对最优的解决方案能够被表达。 在最后一部分中,提出了两类解。他们的目标是像最优解一样准确地猜测活动级别:一个类基于第5章中介绍的度量,另一个类基于内核事件,即"页面请求"和"页面激活"。对这些解决方案的评估见第7章。第一部分介绍了我们的实验设置的方法论,该设置使用两种工作负载类型和两种空闲模块。这些实验比第4章中介绍的实验更难巩固。剩余部分报告解决方案的性能和合并错误,并考虑到性能最低的容器。 该评估突出了不同解决方案的优缺点,并显示了它们与最佳解决方案相比的局限性,最佳解决方案完全了解活性水平。第八章总结并提出了未来的工作和展望。它总结了所做的工作,并突出了我们能够实现的一些实验结果。在短期内,我们预计随着集装箱数量的增加,我们的原型会出现问题。 然后,当所有容器都处于活动状态时,我们提供了一些关于如何将我们的工作扩展到过度提交的上下文中的指导。最后,我们建议本文中研究的指标和事件也应该在集群级别进行研究,以解决节点平衡、启动和关闭的挑战。2R资源 V实施在本章中,我们将介绍云环境中使用的虚拟化技术,以及如何使用这些技术来提高机器的性能。硬件级虚拟化引入了使云诞生的关键属性,但最近,操作系统级虚拟化已开始成为提供类似属性的轻量级替代方案。2.1虚拟机:硬件级虚拟化硬件级虚拟化基本上是通过引入虚拟机管理程序来实现的:虚拟机管理程序是客户机操作系统和主机硬件之间的一个新的软件层如A. Tanen-baum解释说,有两种类型的虚拟机管理程序:类型1虚拟机管理程序在裸露的基础上运行图2.1:虚拟机管理程序类型11CH A P T E R12第二章资源虚拟化metal和type 2虚拟机管理程序利用底层操作系统(OS)提供的抽象(参见图2)。1)。另一方面,虚拟机管理程序的目标是在一台计算机上托管多个虚拟机(VM)虚拟机是真实机器的精确、隔离和高效的副本。虚拟机的使用产生了几个有趣的特性:1. 虚拟机管理程序会造成虚拟机负责硬件的假象。这种单独托管任何操作系统的能力导致了从运行传统软件到运行操作系统独占软件,以及从调试内核开发到调试多操作系统软件开发的许多应用程序。2. 安全性:虚拟机管理程序比操作系统更不容易出现错误,因为它们做了一件被排除在外的事情--相当多:模拟香气的多个副本。 错误和故障不太可能从虚拟机传播到虚拟机或虚拟机管理程序。3. 虚拟机管理程序通常不允许多个虚拟机同时访问给定的物理资源。与进程级别相比,VM级别的攻击面较小。不幸的是,这两种表面对硬件设计都很敏感[28,26]。4. 经济性:虚拟机管理程序节省了数据中心硬件、电力和机架空间方面的资金,因为当单个计算机多路复用到多个虚拟机时,需要更少的物理机。专门从事数据中心管理并配备该领域专家的公司利用了这些属性,并通过允许客户通过虚拟化远程访问其物理资源来实现云计算的诞生。云 虚 拟 机对客户具有不可否认的吸引力,因为与物理机不同,它们是可扩展的,并且已经由提供商提供、冷却、维护和升级。一方面,通过在同一台计算机上部署多个客户端可以实现规模经济,但另一方面,他们的隐私和服务质量将面临风险。2.1.1机器虚拟化成本为了尽可能提高虚拟化的效率,我们做出了巨大的努力。在硬件辅助虚拟化之前,用于防止虚拟机执行敏感指令的陷阱和仿真技术是不够的,虚拟机管理程序必须动态地转换这些指令。今天,由于硬件辅助功能(英特尔VT-x、AMD-V),机器虚拟化的成本现在是可以接受的:(i)在CPU方面,纳入了补充说明,以满足Popek和Goldberg的正式要求1。(ii)在内存方面,结合了附加寄存器以允许MTU访问双地址转换所需的嵌套页表(Adams和Agesen[1])。(iii)IO-wise,IOMMU的添加可以提供设备隔离[9],以及所有敏感指令(可能影响虚拟机管理程序)必须是特权指令(可能被虚拟机管理程序捕获)。2.2. 容器:操作系统级虚拟化13SR-IOV设备现在可以显示为多个独立的设备。不幸的是,据报道,尽管在具有几个核心的机器上是小型的,但开销在大型NUMA机器上变得不可接受。此外,虚拟机不能最大化资源利用率,必须设计无计数的专用方案来解决这一限制。2.1.2提高整个虚拟化环境中的利用率很少有方案符合完整的虚拟化范例,其中虚拟机是无法修改的非合作黑匣子最常见的方案针对由部署同一来宾操作系统的多个实例引起的相同数据的重复。感谢Linux KSM [5]这样的工作,虚拟机管理程序尝试删除重复数据以节省内存。VSwapper[3]是另一种尊重完全虚拟化并试图解决双页异常的方案。当虚拟机管理程序和虚拟机都运行终止彼此冲突的退出策略时,会发生这种异常情况。 Goldberg指出,虚拟机内存大小的增加而其实际内存大小没有相应的增加,可能导致页面错误数量的显著增加。由虚拟机管理程序进行的内存热插电仿真也被建议作为在虚拟机之间动态平衡内存的一种方法。2.1.3提高半虚拟化环境中的可用性由于虚拟机和虚拟机管理程序之间缺乏协作,剩余的大多数方案都落入了半虚拟化领域,从而产生了太多的复杂性。最极端形式的半虚拟化要求客户操作系统通过使用超调用显式移植以与虚拟机管理程序通信 在半虚拟化的另一端,一些非侵入性方案利用客户机操作系统中的现有接口来插入附加通信逻辑。气球化[46,8 4]使用Linux virtio驱动程序[41]并允许虚拟机管理程序请求客户端释放其内存。 PUMA [3 0,29]使用Linux的Cleancache API [90],并允许一个虚拟机将其未使用的内存提供给另一个远程虚拟机。总的来说,机器虚拟化增加了执行时间和内存空间,并增加了软件和硬件开发负担。幸运的是,容器不受这些回退的影响,并为更高效的云打开了大门。2.2容器:操作系统级虚拟化Lambda用户最需要的虚拟化属性是封装和运行整个环境(包括软件依赖项、库、运行时代码和数据)的能力。 奇点是唯一专注于这一思想的容器引擎之一,[27]但大多数容器引擎都利用了所有可用的内核特性来强制隔离。没有容器内核对象这样的东西。[104 因此,可以将容器定义为内核隔离功能的集合。例如,Docker14第二章资源虚拟化C组资源CPUCPU时间cpusetCPU核心和内存节点内存RAM使用blkio块输入输出冷冻机暂停/不暂停设备在设备文件pids流程数量hugetlbnet_ prionet_ cls性能事件大页面(2 MB,1 GB)网络数据包上队列规范的优先级过滤和分类网络数据包。汇总性能公用事业事件。表2.1:C组类型和相关资源它将其容器引擎作为"在任何地方构建、交付和运行任何应用程序"的解决方案进行销售,但在后台,它使用2.2.1使用cgroups隔离物理资源在cgroups之前,诸如nice、ionice、mlock、madvise、fadvise、taskset、numactl、trickle[16]和setrlimit等实用程序可以用来控制单个进程,但没有这样的东西可以用来控制进程组C组代表这是一个Linux内核特性,它以受控和可配置的方式沿层次结构进行高层次处理和分配系统资源[147,125]。 容器使用cgroups来限制、计算和隔离物理资源使用。N. Brown解释说,对于将这种过程分组视为组织层次结构还是分类层次结构,存在一些分歧,但两者都是正确的。 在分类层次结构中,并非所有成员都在内部节点中,但在组织层次结构中,负责管理其他成员的成员被放置在内部节点中。cgroups的当前API版本在资源上非常混乱和不一致,但这些问题将在版本2中得到解决[126,15 0]。cgroup API公开为安装在/sys/fs/cgroup的虚拟文件系统,进程可以在/proc/PID/cgroup查看其成员身份。本小节的其余部分详细介绍了表2.1中列出的cgroup子系统。 由于cgroups仍在开发中,将添加额外的cgroup子系统,如cgrouprdma [1]和cgroups内存库和CPU高速缓存[51]。可以设计更多的cgroup子系统;例如,简单地设计一个控制内存带宽的cgroup可能是明智的。2.2. 容器:操作系统级虚拟化15CPU组Cgroup CPU有两个主要功能。第一个功能是静态油门任务。 它可以被视为CPU配额或CPU带宽。 它有两个参数:一个定义CPU上可以运行多少时间任务,另一个定义刷新主机运行配额所需的时间段。第二个功能在CPU空闲时间不剩时动态加速任务。它具有一个共享参数,该参数保证任务至少能够获得与参数2成比例的CPU时间量。 两个功能相辅相成。第一个帮助避免CPU短缺,而另一个则在完全公平调度程序(CFS)必须处理CPU短缺时向其提供指导。cpusetcgroupcpuset功能取代了通用cgroup实现,是第一个添加的功能。 它限制进程在CPU子集上运行,并强制它们在内存节点子集上分配内存。cpusetcgroup提供了许多更多的功能:核心和节点可以成为排他性的,内存压力可以被监控,内存分配可以在所有节点上传播,而不是首选进行分配的节点,负载平衡可以被分区到域中,等等。内存cgroup内存cgroup子系统是本文的核心,在第3章中有详细介绍。 在nutshell中,当任务试图超过其cgroup的内存限制时,它会加速任务。然而,当它们达到限制时,任务被迫运行页面框架回收算法,该算法回收它们的一些现有内存。内存cgroup还控制内核对象、交换和TCP缓冲区的内存消耗BlkioC组blkiocgroup类似于cpucgroup。它可以以每秒字节数或每秒操作数为单位静态加速每个设备的读写。它还具有每个设备的权重参数,当设备饱和时,该权重参数动态地引导完全公平队列(CFQ)I/O调度程序。冷冻机cgroup冻结功能最初是为休眠而开发的,它比SIGSTOP/SIGCONT机制更强大,因为它不会被进程捕获。freezercgroup可用于从用户空间调度批处理作业[109,65,157],但也可用于检查点和CRIU迁移[62]。当用户冻结cgroup时,会向其所有进程发送错误信号,但也会向其某些子进程发送错误信号。当它收到一个2实时调度程序(R-T)不提供共享参数3提供为设备启用CFQ(/sys/block/Device/queue/scheduler)。16第二章资源虚拟化在信号4中,如果进程的cgroup状态为frozen,则进程将转到冰箱5此外,新创建的进程无法逃脱冻结机制,因为当进程分叉时,freezercgroup会收到通知。当用户看到cgroup时,进程被唤醒并离开冰箱。设备cgroupcgroup设备为副文件的块和字符提供强制访问控制(MAC)。 它考虑到了层次结构:子级的权限不得超过父级。当用户更新cgroup6的权限时,i)新的限制总是传播给它的子项,并且ii)从它的父项请求新的权限,父项可以拒绝它们。因此,权限检查比其启动日期相对更快,因为不需要遍历层次结构。当进程调用打开和mknod时,通过两个新的内核函数检查每个cgroup的读取、写入和创建权限。PidsC组pids cgroup控制分叉系统调用,并在其cgroup的进程数超过其最大限制时阻止创建新进程。由于计数是分层的,当子cgroup或其任何父cgroup达到其限制时,分叉系统调用失败,返回"重试乍一看,进程可以被视为内存中的内核结构,因此,限制属于cgroup的内核对象的内存消耗在理论上可以防止进程标识符(pids)被丢弃。但实际上,系统中的pids总数目前限制为8到10。222. 因此,如果没有pidscgroup,分叉炸弹可以很容易地用-填充pid表这会影响内核对象内存限制。HugetlbC组大型页面用于最大限度地减少要在页面表中查找的条目,从而最小化-模仿TLV丢失(翻译查找辅助缓冲区)。 一旦分配到全局池(最好在启动时),就不能将大型页面用于其他目的,也不能将其交换。cgrouphugetlb控制允许cgroups分配的大型页面的数量net_ cls和net_ priocgroups网络cgroups(net_ cls和net_ prio)提供了识别数据包所有权和覆盖数据包优先级的方法,但它们不会利用层次结构get_signal函数调用try_ to_ freeze,然后再处理挂起的信号。5冰箱是一个循环的时间表。devcgroup_ UPDATE_ access函数修改MAC。函数devcgroup_ inode_ permission和devcgroup_ inode_ mknod用于强制MAC。8请参阅/proc/sys/kernel/pid_ max。2.2. 容器:操作系统级虚拟化17命名空间分离物层次结构用户用户和组ID是的PID进程ID是的安装文件系统挂载点传播规则网络网络套接字、设备、表等。否IPCSystem V IPC、POSIX消息队列否C组Cgroup路径名,根cgroup否UTS主机名和NIS域名否表2.2:命名空间类型和隔离资源。并且还没有直接提供限制、计数和隔离功能。网络cgroups扩展了以下内核对象:i)网络设备对象现在具有每个cgroup9的优先级,以及ii)套接字对象现在具有两个额外字段,称为classid和prioidx。当进程创建新套接字时,classid和prioidx字段将使用其所属的cgroup的值进行初始化。prioidx对应于优先级数组中的cgroup索引,同时从用户空间设置classid然后,classid可以与iptables一起使用以选择性地过滤数据包(防火墙规则),但也可以与TC(流量控制)一起使用以在网络调度期间对数据包进行分类。 同时,优先级值可用于覆盖分组递送和延迟的排队规程所使用的SO_PRIORITY选项[61,60]。性能事件cgroupperf_ contentcgroup是最基本的cgroup。它允许perf(Linux的性能分析工具)收集和聚合属于cgroup的进程的性能数据。perf_ eventcgroup使用层次结构,因此还收集属于被监视cgroup的子进程的进程的度量。结论Cgroups是Linux内核的一个集成良好的独立特性默认情况下,有一个单一的根cgroup在其中产生进程,但容器引擎甚至公共Linux发行版都会创建额外的cgroup来隔离资源使用。 然而,正如我们将在第4章中看到的,大多数用户都没有意识到创建多个cgroups可能会导致不必要的陷阱。2.2.2使用命名空间隔离资源可见性在命名空间之前,chroot或pivot_root等实用程序可以用于本地重构文件系统的视图,但没有通用API可以实例化任何给定资源的并发视图优先级存储在netprio_ map阵列中,可以从用户空间进行配置如果CPU上下文cgroup _是cgroup事件的后代,则10个性能
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功