K8S 1.31 新功能: 跨核分发CPU

​在Kubernetes的最新版本1.31中,一个超酷的新功能,叫做CPUManager的静态策略,里面有个选项叫做distribute-cpus-across-cores。虽然这个功能现在还在测试阶段,也就是alpha版,而且默认是藏起来的,但它的目的是让CPU的工作效率更高,特别是在那些有好多核心的处理器上,能让整个系统跑得更顺畅。

我们再来回顾一下Kubernetes的CPUManager是如何实现CPU资源分配的?

想象一下,Kubernetes的CPUManager就像个智能的管家,它负责把CPU资源分配给需要的容器。这整个过程是这样的:

  1. 资源请求:每个容器在启动时都会告诉CPUManager,它需要多少CPU资源,就像是说'嘿,我需要这么多CPU来干活'。

  2. 资源配额:CPUManager会看看集群的资源配额和限制,就像是看看家里有多少资源,然后决定能分给容器多少。

  3. CPU亲和性:有时候,容器可能更喜欢某些特定的CPU core,CPUManager会记下来,尽量满足它们的需求。

  4. 静态策略:在静态策略下,CPUManager会尝试把容器的CPU资源请求固定到特定的CPU core 上,就像是给每个容器分配一个固定的座位。

  5. 动态策略:动态策略就更灵活了,容器可以根据需要随时请求或释放CPU资源,就像是可以临时换座位。

  6. 资源调度:Kubernetes的调度器在分配容器到节点时,会看看哪个节点的CPU资源够用,确保每个容器都能得到它需要的资源。

  7. 资源监控:CPUManager还会时刻监控容器的CPU使用情况,确保它们不会超用。

  8. 资源回收:如果容器用得太多,CPUManager可能会限制它,保证其他容器也能正常运行。

通过这些办法,CPUManager确保了每个容器都能公平、高效地使用CPU资源,让整个集群的性能达到最佳。但是如果分配CPU资源的时候,总把它们都挤在一起,尽量用最少的物理core来处理的话,这样做有个问题,就是不同的CPU如果用同一个物理core,它们就得共享一些资源,比如缓存啊,执行单元这些,这就可能会影响效率。

所以呢,Kubernetes的这个新版本里就加了这个distribute-cpus-across-cores特性。即让CPUManager在分配CPU的时候,尽量把它们分散开,让每个CPU都能用上不同的物理core上。这样一来,每个CPU都有自己的空间,不用和其他CPU抢资源,运行起来自然就更顺畅,性能也能有所提升。

如果你想用这个distribute-cpus-across-cores新功能,首先得告诉Kubernetes的CPUManager用静态策略来管理CPU。这可以通过在启动kubelet的时候加个参数--cpu-manager-policy=static,或者在Kubelet的配置文件里设置cpuManagerPolicy: static来实现。

接下来,你还得告诉CPUManager用上这个分散CPU到不同核心的策略。这可以通过在配置里加上--cpu-manager-policy-options distribute-cpus-across-cores=true或者直接设置distribute-cpus-across-cores=true来做到。

不过得注意,这个新策略和另外两个选项full-pcpus-only或者distribute-cpus-across-numa是不能一起用的,别弄混了。

当然,每个新东西出来的时候,总有些限制,这个distribute-cpus-across-cores特性也不例外,尤其是它现在还在测试阶段。现在有个问题是,这个特性不能和其他一些可能会有冲突的CPU分配策略一起用。这可能会让一些需要特别资源管理的工作或者特定的部署环境用起来有点麻烦。

但是呢,别担心,社区正在努力改进这个特性。将来的更新会解决这些兼容性的问题,让这个策略能够和其他CPUManager的策略更好地配合。这样就可以打造一个既灵活又强大的CPU分配系统,能够满足各种不同的工作需求和性能目标。

最后,我们想一下,哪些场景可以使用 distribute-cpus-across-cores这个特性呢?

  1. 多核处理器优化:就像你有很多帮手,但大家都挤在一个小厨房里做饭,效率肯定不高。这个特性就是让每个容器都有自己的空间,避免大家挤在一起,提高效率。

  2. 缓存局部性:好比你的口袋里有各种工具,如果都放在一起,找起来就慢。分散开,每个工具有自己的位置,用起来就快多了。

  3. 避免资源争用:就像交通高峰期,大家都想走同一条路,结果就是堵车。这个特性就是让交通更顺畅,每个容器都有自己的路。

  4. 异构工作负载:如果你有各种各样的任务要处理,这个特性就能帮你把资源分配得更均匀,保证每个任务都能顺利进行。

  5. 性能敏感型应用:对于那些需要快速反应的应用,比如在线游戏或者股票交易,这个特性能确保它们总能拿到足够的CPU资源。

  6. 避免NUMA效应:在一些复杂的系统里,CPU和内存可能不在同一个地方,就像超市里不同区域的商品,拿起来会慢一些。这个特性就是减少这种延迟。

  7. 测试和开发:开发者可以用这个特性来试试看不同的CPU分配策略,就像是在做实验,看看哪种方法最好。

  8. 集群资源管理:管理员可以用这个特性来更好地管理资源,就像是在规划怎么分配家里的房间,让每个人都住得舒服。

总的来说,这个特性就像是个智能的资源分配器,特别适合那些需要精细控制CPU资源,让系统跑得更快更稳的场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/52716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯提出一种新的针对风格化角色和逼真服装动画的生成3D运动转移方法,生成效果逼真!

来自腾讯XR视觉实验室的研究团队提出了一种创新的3D运动转移方法,专门针对风格化角色和逼真服装动画的生成。该方法能够将源动作准确地映射到目标角色上,同时考虑了角色身体的刚性变形和服装的局部物理动态变形。 与现有技术相比,这技术不仅…

docker Desktop报错 error pulling image configuration 处理

问题描述 在 docker 拉数据 出现以下错误 error pulling image configurarion: 这个问题 主要是 可能应该某些原因不能网络无法连上镜像 原因分析: 1。 2024年 5月以后 国内很多IP都 。。。懂的都懂,很多 VPN 也是。。。 懂的都懂&#x…

C++类和对象(5)——运算符重载(以日期类为例)

运算符重载的作用 假设我们此时实现了日期类的运算符重载,我们就可以 实现如图的很多功能,完成日期计算器的底层代码。 运算符重载关键字 运算符重载的关键字是operator。 比如你想重载‘’运算符,那么语法格式就是 返回类型 operator …

【Linux】系统管理(第六篇)

目录 1.ps命令详解:查看正在运行的进程 2.top命令详解:持续监听进程运行状态 3.pstree命令:查看进程树 4.lsof命令:列出进程调用或打开的文件信息 5.kill命令详解:终止进程 6.进程中常见得信号 7.Linux命令放入后…

跨境多账号登录如何防止IP、cookie和设备关联?

在当今数字化时代,拥有某个平台的多个账号是必要的,但如何防止这些账号之间产生关联,进而导致封号,却是一个需要谨慎对待的问题。 一、 多账号关联的主要因素 1. IP地址 2. Cookie和缓存 3. 设备指纹 二、如何防关联&#xff…

跨vue、react、angular框架渲染

应用场景 A 框架项目渐进式迁移到 B 框架一码多框架,开发一套组件,各个框架的应用复用;微前端实现【无沙箱能力】 思路 在 A 框架中渲染 B 框架的组件,将 B 框架的组件渲染成真实 dom 再挂载到对应位置。 实现demo 待补充&am…

SQL视图:简化复杂查询的利器

SQL视图:简化复杂查询的利器 在数据库管理系统中,视图(View)是一种虚拟表,其内容由SQL查询定义。视图可以简化复杂的查询,提高数据的安全性,并使得数据的展示更加直观。本文将详细介绍如何使用…

算法设计与分析:实验三 回溯法——地图填色问题

实验内容与要求: 问题描述: 我们可以将地图转换为平面图,每个地区变成一个节点,相邻地区用边连接,我们要为这个图形的顶点着色,并且两个顶点通过边连接时必须具有不同的颜色。附件是给出的地图数据&#…

仿华为车机UI--图标从Workspace拖动到Hotseat同时保留图标在原来位置

基于Android13 Launcher3,原生系统如果把图标从Workspace拖动到Hotseat里则Workspace就没有了,需求是执行拖拽动作后,图标同时保留在原位置。 实现效果如下: 实现思路: 1.如果在workspace中拖动,则保留原来“改变图标…

Scratch教学案例-《三顾茅庐》:让编程学习如同故事般引人入胜

三顾茅庐-小虎鲸Scratch资源站 在编程的世界里,我们常常寻找那种既能激发创意,又能提升技能的学习方式。今天,小虎鲸Scratch资源站为您带来了一款独特的教学作品——《三顾茅庐》。这是一部将经典故事与编程教学巧妙结合的Scratch项目&#x…

在docker中安装skywalking + es

ES的版本和官网 es版本: Past Releases of Elastic Stack Software | Elastic es版本logstash版本JDK版本对应关系 支持一览表 | Elastic skywalking的版本说明和官网 Advanced deployment | Apache SkyWalking skywalking和es的对应关系,在网页的…

读书笔记:《深入理解Java虚拟机》(4)

垃圾收集器与内存分配策略 一、对象已死? 堆中几乎放着所有的对象实例,对堆垃圾回收前的第一步就是要判断哪些对象已经死亡(即不能再被任何途径使用的对象)。 引用计数法 给对象中添加一个引用计数器: 每当有一个…

day03-面向对象-内部类泛型常用API

一、内部类 内部类是类中的五大成分之一(成员变量、方法、构造器、代码块、内部类) 如果一个类定义在另一个类的内部,这个类就是内部类。 场景:当一个类的内部,包含了一个完整的事物,且这个事物没有必要单…

bitmap(位图)的使用

零存零取,整存零取,整存整取, 零存整取 bitmap介绍 位图不是真正的数据类型,它是定义在字符串类型中,一个字符串类型的值最多能存储512M字节的内容, 位上限:2^(9(512)10(1024)10(1024)3(8b1B))2^32b 语句操作: s…

【Node】m1 mac 使用 nvm 安装 node v14 报错

author: jayzhen date: 20240826 报错内容 nvm 0.39.3macbook m1pro os14.6.1 v8_compiler/deps/v8/src/compiler/backend/instruction-selector.o.d.raw -c In file included from ../deps/v8/src/compiler/backend/frame-elider.cc:5: In file included from ../deps/v8/…

Python中使用pip换源的详细指南

在Python开发过程中,我们经常需要安装各种第三方库。pip是Python的包管理工具,用于安装和管理Python库。然而,由于网络原因,有时访问默认的Python包索引(PyPI)可能会比较慢。这时,我们可以通过更…

[报错] nvcc -V 找不到

报错: nvcc : 无法将“nvcc”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,ObjectNotFound: (nvcc:String) [], CommandNotFoundExceptionFullyQualifiedErrorId : CommandNotFoundException 找不到 nvcc -V,试过…

鸿蒙(API 12 Beta5版)【通过文本生成码图】

基本概念 码图生成能力支持将字符串转换为自定义格式的码图。 场景介绍 码图生成能力支持将字符串转换为自定义格式的码图,包含条形码、二维码生成。 可以将字符串转成联系人码图,手机克隆码图,例如将"HUAWEI"字符串生成码图使…

深度学习系列71:表格检测和识别

1. pdf处理 如果是可编辑的pdf格式,那么可以直接用pdfplumber进行处理: import pdfplumber import pandas as pdwith pdfplumber.open("中新科技:2015年年度报告摘要.PDF") as pdf:page pdf.pages[1] # 第一页的信息text pag…

【开端】基于nginx部署的具有网关的web日志分析

一、绪论 基于nginx部署的具有网关的web日志分析,我们可以分析的日志有nginx的access.log ,网关的日志和应用的日志 二、日志分析 1、nginx日志 参数 说明 示例 $remote_addr 客户端地址 172.17.0.1 $remote_user 客户端用户名称 -- $time_lo…