0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

容器进程调度时是该优先考虑CPU资源还是内存资源

冬至配饺子 来源:开发内功修炼 作者:张彦飞allen 2022-08-16 18:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

问题是这样的:有 A B 两台服务器,其中 A 服务器 cpu 快满了,内存很空闲。另外一台 B 服务器 cpu 很空闲,但内存快满了。现在 k8s 有一个新的任务要调度,请问应该选择哪台服务器?这其实是现在非常火的 k8s 的经典应用场景。

有的同学看到这个问题后的第一个想法是应该先评估一下新任务是计算密集型的业务还是 io 密集型的。然后再决定往哪个机器上调度。这么思考倒是也不能算错,只不过是没有抓到问题的关键点上。

这个问题的关键点是在于要思考一下调度到某个机器上可能会出现什么问题。

1. 调度到 CPU 比较满的 A 服务器

假设我们调度到 CPU 比较满的 A 机器上会出现什么状况呢?因为 CPU 资源是分时来调度的,每个进程都会得到一些时间片进行执行。所以 A 机器上不管 CPU 有多忙,再加一个的进程来运行话其实影响无非就是所有的进程都运行的更慢了一些。再换个说法,就是 CPU 资源是可以超卖的,是属于可压缩资源。

这里提一下,部分读者反馈说自己的云虚机在 CPU 飙升到 100% 的时候,云厂商为了保护主机,直接宕机。这种情况在各大公司的 IDC 机房内不太可能出现,所以这种情况咱们暂时不考虑。

2. 调度到内存比较满的 B 服务器

再假设我们调度到内存比较满的 B 机器上会出现什么状况呢?不知道你有没有遭遇过线上进程被 oom kill 掉的场景。这种情况下就是当机器物理内存不是很充足的时候,如果申请的内存过大,操作系统就可能会挑选在运行的一些进程将其杀掉。

这里稍微展开说一下,操作系统选择要杀掉的进程也不一定是内存消耗最多的服务。而是会综合内存消耗和进程的 oom_score_adj(可配置) 值来进行选择。在一些在离线混部的服务器上,往往会将在线服务进程的被杀的优先级调的低一些,离线服务进程的被杀优先级调高。这样充分保障在线服务的稳定运行。

先不考虑在离线混部的情况,假设都是在线服务,那么无论哪一个服务的进程被 Linux 给 oom kill掉影响都是非常大的。还得重新调度,而且还有可能影响服务的稳定性,以及接口的正确返回。

这里有的同学可能会说,Linux 上不是支持将内存 swap 到磁盘上吗?但其实在线上服务器中,由于磁盘的性能比内存低太多了,所以大部分的线上服务器都不会开启 swap 这个特性。因为服务的内存一旦被 swap 到内存,即使是能运行,性能也会有急剧的下降。所以一般不怎么会开启。

结论

所以对比来看,新任务在调度的时候应该优先选择 A 服务器,因为它的空闲内存比较多,不太可能出现进程被杀死的情况。虽然它的 CPU 比较满,但所有的服务仍然可以运行。

在实际中,k8s 的 API Server接受客户端提交Pod对象创建请求后的操作过程中,有一个重要的步骤就是由调度器程序kube-scheduler从当前集群中选择一个可用的最佳节点来接收并运行它。

当然实际中 k8s 的调度策略不是这么简单的,系统默认的 kube-scheduler 调度器外还有直接指定Node主机名、节点亲和性、Pod亲和性、nodeSelector 等等调度策略。

就单拿系统默认的 kube-scheduler 调度器来说的话,还会综合考虑单独和整体的资源请求、硬件/软件/策略限制、亲和以及反亲和要求、数据局域性、负载间的干扰等等这些因素对可调度节点打分,然后选出其中得分最高的 Node 来运行 Pod。


审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11216

    浏览量

    222859
  • 服务器
    +关注

    关注

    13

    文章

    10093

    浏览量

    90855
  • 操作系统
    +关注

    关注

    37

    文章

    7328

    浏览量

    128605
  • Linux系统
    +关注

    关注

    4

    文章

    609

    浏览量

    29629
  • SWAP
    +关注

    关注

    0

    文章

    52

    浏览量

    13549
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux多线程对比单线程的优势

    在Linux系统中,线程是操作系统能够进行运算调度的最小单位。线程被包含在进程之中,是进程中的实际运行单位。一个进程可以拥有多个线程,这些线程共享相同的
    发表于 12-01 06:11

    图像综合调度系统建设与应用全景报告:以资源整合 + 可视化指挥赋能智慧检察

      随着 5G、大数据、人工智能等信息化技术的深度融合与成熟落地,检察机关在案件办理、司法监督、协同执法等工作中,对音视频资源的整合能力、调度效率和可视化水平提出了更高要求。当前,市检察机关面临多类
    的头像 发表于 11-25 14:43 43次阅读
    图像综合<b class='flag-5'>调度</b>系统建设与应用全景报告:以<b class='flag-5'>资源</b>整合 + 可视化指挥赋能智慧检察

    FreeRTOS任务调度优先级问题

    都有容错,但是心里没底,想向大家了解一下实际工作中有没有遇到到类似的问题,如果有又是怎么解决的呢? 另外有前辈可以分享一下任务的优先级在实际项目中基于什么原则来划分呢?
    发表于 11-06 02:18

    蜂鸟E203内核优化方法

    。 修改内核参数:对蜂鸟E203的内核参数进行相应修改,可以优化内核运行效率,提高系统性能,比如调整缓存大小、内存分配策略等。 资源管理:进行有针对的资源管理,例如调度算法的修改,调整
    发表于 10-21 07:55

    企业级HDFS高可用与YARN资源调度方案

    作为一名在大数据运维领域摸爬滚打8年的老兵,我见过太多因为基础架构不够健壮而导致的生产事故。今天,我想和大家分享一套经过实战检验的 HDFS 高可用与 YARN 资源调度方案,这套方案帮助我们团队将平台可用性从 99.5% 提升到 99.99%,年故障时间从 43 小时降
    的头像 发表于 09-08 17:15 532次阅读

    ArkUI-X资源分类与访问

    优先从相匹配的限定词目录中寻找资源。只有当resources目录中没有与设备状态匹配的限定词目录,或者在限定词目录中找不到资源时,才会去
    发表于 06-23 22:39

    HarmonyOS优化应用预置图片资源加载耗时问题性能优化

    CPU解压缩生成的图片资源会占用较多的内存空间,给内存造成更大的压力,可能会引起卡顿掉帧。此时可以借助纹理压缩技术,将预置图片在构建过程中进行转码和压缩,节省
    发表于 05-29 16:11

    云游戏的基础资源类型

    云游戏的基础资源类型 可根据功能与部署模式划分为以下类别,其核心构成及细分如下: 一、按功能划分的资源类型 计算与渲染资源‌ 硬件规格‌:云端服务器需配置高性能CPU、GPU集群,例如
    的头像 发表于 04-09 10:18 498次阅读
    云游戏的基础<b class='flag-5'>资源</b>类型

    Linux进程状态详解

    进程状态是task_struct内的一个整数;进行:进程调度队列中,进程的状态都是running,阻塞:等待某种设备或者资源就绪。
    的头像 发表于 04-01 09:46 803次阅读
    Linux<b class='flag-5'>进程</b>状态详解

    进程、线程、协程傻傻分不清?一文带你彻底扒光它们的\"底裤\"!

    :操作系统分配资源的最小单位,自带「独立户口本」(虚拟地址空间)和「保镖团队」(系统级资源)。 技术细节: 每个进程都有自己独立的内存空间(就像你家的房子,别人不能随便进) 创建
    发表于 03-26 09:27

    DeepSeek企业级部署服务器资源计算 以raksmart裸机云服务器为例

    以RakSmart裸机云服务器为例,针对DeepSeek企业级部署的服务器资源计算指南,涵盖GPU/CPU/内存/存储/网络等核心维度的详细计算方法与配置推荐,主机推荐小编为您整理发布以raksmart裸机云服务器为例,Deep
    的头像 发表于 03-21 10:17 811次阅读

    云端安全守护者,华为云 Flexusx 上的 AWVS 容器化部署与安全扫描实践

    能利用容器的轻量、可移植与快速部署特性,实现Web 安全扫描的自动化、高效与精准。Flexus x 实例的智能调度与弹性伸缩能力,为 AWVS 扫描任务提供强大资源支持,无论是日常小范围扫描
    的头像 发表于 12-30 14:54 689次阅读
    云端安全守护者,华为云 Flexusx 上的 AWVS <b class='flag-5'>容器</b>化部署与安全扫描实践

    深入解析Linux程序与进程

    关于某个数据集合的一次运行活动。作为系统进行资源分配和调度的基本单位,是操作系统结构的基础。 程序与进程的关系 进程的状态 基础进程状态 创
    的头像 发表于 12-18 11:01 829次阅读
    深入解析Linux程序与<b class='flag-5'>进程</b>

    Linux之CPU调度策略和CPU亲和性

    决定在某一时间点上哪个进程在运行。调度器必须平衡几个选项: 快速决定下一个运行的进程 进程可以公平的活动
    的头像 发表于 12-05 16:38 1666次阅读
    Linux之<b class='flag-5'>CPU</b><b class='flag-5'>调度</b>策略和<b class='flag-5'>CPU</b>亲和性

    遥感技术在水资源管理中的应用

    资源是地球上最宝贵的自然资源之一,对于维持生态平衡、保障人类生活和经济发展至关重要。随着人口增长、城市化进程和气候变化的影响,水资源管理面临着前所未有的挑战。遥感技术作为一种先进的监
    的头像 发表于 12-05 10:26 1887次阅读