当前位置: 首页 > news >正文

AMD ThinkSystem服务器上的 Linux 和 C 状态设置 - Lenovo ThinkSystem

受影响的配置

该系统可以是以下任何Lenovo服务器:

  • ThinkSystem 、SR645( ThinkSystem )
  • ThinkSystem ,SR645 V3( ThinkSystem )
  • ThinkSystem ,SR635 V3( ThinkSystem )
  • ThinkSystem SR635( ThinkSystem )
  • ThinkSystem 、SR655( ThinkSystem )
  • ThinkSystem ,SR655 V3( ThinkSystem )
  • ThinkSystem ,SR665 V3( ThinkSystem )
  • ThinkSystem 、SR665( ThinkSystem )
  • ThinkSystem ,SR675 V3( ThinkSystem )

该系统至少配置有以下操作系统之一:

  • Linux

问题

所有受支持的 Linux 发行版都使用acpi_idle cpuidle driver与列出的ThinkSystem AMD 服务器上的 CPU C 状态进行交互。此driver的默认行为是遵循 UEFI C 状态设置。然而,如果 cpuidle 函数不可用,Linux 空闲线程将尝试架构默认例程,这会导致系统在 x86 上进入 C1。因此,要禁用 Linux 上的所有 C 状态,仅在 UEFI 中关闭 C 状态是不够的。

解决方法

  1. 在 UEFI 中禁用 C 状态

    列出的系统的默认 UEFI 设置启用 C 状态。

    UEFI 中的以下设置将全局禁用 AMD ThinkSystem服务器上的 C 状态,并将 AMD CPU 保持在 CC0 或 CC1:
    系统设置 > 处理器 >全局 C 状态控制:禁用
    系统设置 > 处理器 > 处理器MONITOR/MWAIT:禁用(此选项仅适用于 v3 系统)

    有关 UEFI 设置选项的详细说明,请参阅所配置的特定系统的 UEFI 手册。手册位于Lenovo服务器页面的 UEFI 手册上。

  2. 在 Linux 中完全禁用 C 状态

    idle=poll添加到内核参数列表

    红帽企业 Linux 服务器:
    编辑 /boot/grub/grub.conf 并在 RHEL 6 及更低版本中添加“ idle=poll ”,或者在 /etc/sysconfig/grub 中的 RHEL 7 中的GRUB_CMDLINE_LINUX行上添加“idle=poll”。请记住,您需要将更改传播到在 RHEL 7 中使用 grub2-mkconfig 磁盘。

    SUSE Linux 企业服务器:
    编辑 /boot/grub/menu.lst 并将“ idle=poll ”参数添加到内核行。

细节

Linux空闲子系统包括几个部分:cpuidle核心、cpuidle调控器、cpuidle驱动程序、idle线程。 C状态的进入和退出由空闲线程控制:空闲线程与cpuidle交互来选择C状态并进入它。

但如果 cpuidle 功能不可用,则空闲线程会尝试默认的 CPU 空闲例程,该例程特定于 CPU 架构。对于x86,默认的CPU空闲例程是执行HALT或MWAIT指令,这将使CPU进入C1。因此,要完全禁用 C 状态,还需要禁用默认的 CPU 空闲例程。

有几个内核参数控制空闲子系统的各个部分:

  1. cpuidle.off=1:关闭cpuidle核心
  2. processor.max_cstate=0:限制acpi_idle driver仅进入C0和C1
  3. intel_idle.max_cstate=0:禁用 intel_idle driver 。请注意,intel_idle driver仅支持Intel平台。
  4. 空闲:控制空闲线程和相关的cpuidle驱动程序

    idle=poll:禁用 cpuidle 驱动程序和默认的 CPU 空闲例程
    空闲 = 停止:禁用 cpuidle 驱动程序
    idle=nomwait:禁用 intel_idle driver

因此,“idle=poll”单独禁用 Linux 上的所有 C 状态。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • sqlgun靶场漏洞挖掘
  • 解码未来:H.265与H.266技术对比及EasyCVR视频汇聚平台编码技术优势
  • SpringBoot集成Thymeleaf模板引擎,为什么使用(详细介绍)
  • 【计算机网络】数据链路层深度解析
  • 初写MySQL四张表:(3/4)
  • 编译QT源码时的configure参数须知
  • vue使用TreeSelect设置带所有父级节点的回显
  • k8s多节点集群搭建
  • 【运维】好用的线上项目运维命令
  • Java之线程篇四
  • 知识|智能网联汽车多域电子电气架构会如何发展?
  • unity 图片置灰shader
  • Datawhale------Tiny-universe学习笔记——Qwen(1)
  • 算法——贡献法
  • k8s 微服务 ingress-nginx 金丝雀发布
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • HTTP中GET与POST的区别 99%的错误认识
  • PHP 小技巧
  • python大佬养成计划----difflib模块
  • React Transition Group -- Transition 组件
  • select2 取值 遍历 设置默认值
  • TypeScript实现数据结构(一)栈,队列,链表
  • webgl (原生)基础入门指南【一】
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 记一次删除Git记录中的大文件的过程
  • 聊聊flink的TableFactory
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前端技术周刊 2019-02-11 Serverless
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​如何使用QGIS制作三维建筑
  • #pragma 指令
  • #大学#套接字
  • $.proxy和$.extend
  • (8)STL算法之替换
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (一)插入排序
  • (转)http协议
  • (转载)PyTorch代码规范最佳实践和样式指南
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .Net 4.0并行库实用性演练
  • .NET MAUI Sqlite数据库操作(二)异步初始化方法
  • .net MVC中使用angularJs刷新页面数据列表
  • .Net mvc总结
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET8 动态添加定时任务(CRON Expression, Whatever)
  • .Net--CLS,CTS,CLI,BCL,FCL
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .net实现头像缩放截取功能 -----转载自accp教程网