如何设置 intel_idle.max_cstate=0 来禁用 c 状态?

2024-04-10

我想在我的计算机上禁用 c 状态。

我在 BIOS 上禁用了 c-state,但没有获得任何结果。不过,我找到了一个解释: “大多数较新的 Linux 发行版,在配备 Intel 处理器的系统上,使用“intel_idle”驱动程序(可能编译到内核中,而不是单独的模块)来使用 C 状态。该驱动程序使用各种 CPU 的知识来控制 C 状态,而无需来自系统固件 (BIOS) 的输入。此驱动程序将主要忽略任何其他 BIOS 设置和内核参数”

我找到了两个解决方案来解决这个问题,但我不知道如何应用:

1) “所以如果你想控制 C 状态,你应该使用内核参数“intel_idle.max_cstate=0”来禁用这个驱动程序。”

我既不知道如何检查( intel_idle.max_cstate 的值)也不知道如何更改其值。

2)“要动态控制C状态,请打开文件/dev/cpu_dma_latency并向其写入最大允许延迟。这将防止使用转换延迟高于指定值的C状态,只要文件/ dev/cpu_dma_latency 保持打开状态。将最大允许延迟写入 0 将使处理器保持在 C0 状态”

我无法读取文件 cpu_dma_latency。

感谢您的帮助。

电脑: 英特尔至强 CPU E5-2620 侏儒2.28.2 Linux 2.6.32-358


要在引导时更改该值,您可以修改 GRUB 配置或即时编辑它 - 修改方法因发行版而异。This https://wiki.ubuntu.com/Kernel/KernelBootParameters是用于单次启动或永久更改内核参数的 Ubuntu 文档。对于 RHEL 派生的发行版,我没有看到非常清晰的文档,但您可以直接修改 /boot/grub/grub.conf 以在每个可引导节的“kernel”行上包含参数。

对于问题的第二部分,许多设备文件是只读或只写的。您可以使用像这样的小 perl 脚本(未经测试且不是很干净,但应该可以工作)来保持文件打开:

#!/usr/bin/perl

use FileHandle;
my $fd = open (">/dev/cpu_dma_latency");
print $fd "0";
print "Press CTRL-C to end.\n";

while (1) {
    sleep 5;
}

Redhat 在知识库文章中有一个 C 代码片段here https://access.redhat.com/site/articles/65410以及参数的更多描述。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置 intel_idle.max_cstate=0 来禁用 c 状态? 的相关文章

  • Linux中的CONFIG_OF是什么?

    我看到它在很多地方被广泛使用 但不明白在什么场景下我需要使用它 What is 配置 OF OF 的全名是什么 打开固件 这是很久以前发明的 当时苹果公司正在生产基于 PowerPC CPU 的笔记本电脑 而 Sun Microsystem
  • 如何在Linux内核源代码中打印IP地址或MAC地址

    我必须通过修改 Linux 内核源代码来稍微改变 TCP 拥塞控制算法 但为了检查结果是否正确 我需要记录 MAC 或 IP 地址信息 我使用 PRINTK 函数来打印内核消息 但我感觉很难打印出主机的MAC IP地址 printk pM
  • 模块参数权限

    我是内核编程的新手 当我正在经历module param 我对权限值 0 感到困惑 有人解释说它不会在 sysfs 中获得条目 而其他人则喜欢S IRUGO将获得一个条目 我无法理解这个概念 perm 值 0 表示什么 我们什么时候需要 s
  • 检测从内核扩展的文件复制

    我正在尝试构建 POC 该 POC 可以使用 fileop 范围回调来识别来自基于 kauth 的内核扩展的文件复制活动 但是 复制文件似乎涉及两个单独的身份验证操作 从中打开 src 文件并创建新文件 我的目标相当简单 在填充数据后检测新
  • 读取文件而不从操作系统页面缓存中逐出

    这主要适用于 Linux 或者理想情况下适用于任何 POSIX 系统 当我阅读以下页面时 我正在寻找一种读取大量文件 其中任何一个文件本身可能高达 1GB 的方法 具有以下特征 如果相关磁盘页面已在文件系统缓存中 则使用该页面 如果相关页面
  • 我应该如何以非 root 身份读取 Linux 上的 Intel PCI 非核心性能计数器?

    我想要一个库 允许对 Linux 可执行文件的关键部分进行 自我分析 就像人们可以使用一个部分计时一样获取当日时间 http linux die net man 2 gettimeofday or RDTSC http www strchr
  • .ko 文件是如何构建的

    我正在尝试将我自己的驱动程序移植到Beagle 板 xm arm cortex A8 在移植时我试图弄清楚如何 ko文件实际构建 在我们的Makefile我们只有一个命令来构建 o file 怎样是一个 ko文件已建立 使用Linux 2
  • 为什么 call_usermodehelper 大多数时候都会失败?

    从内核模块中 我尝试使用 call usermodehelper 函数来执行可执行文件 sha1 该可执行文件将文件作为参数并将文件的 SHA1 哈希和写入另一个文件 名为输出 可执行文件完美运行 int result 1 name hom
  • 我的属性太活泼了,我该怎么办?

    在 Linux 设备驱动程序中 创建 sysfs 属性probe太活泼了 具体来说 它经历了与用户空间的竞争条件 http kroah com log blog 2013 06 26 how to create a sysfs file c
  • 如何在C程序中直接改变显存映射来绘制像素(无需库函数)

    是否可以通过使用 C 程序更改 RAM 中屏幕 视频即监视器 内存映射中的值来显示黑点 我不想使用任何库函数 因为我的主要目标是学习如何开发简单的操作系统 我尝试访问起始屏幕内存映射 即 0xA0000 在 C 中 我尝试运行该程序 但由于
  • ARM 的内核 Oops 页面错误错误代码

    Oops 之后的错误代码给出了有关 ARM EX 中的恐慌的信息 Oops 17 1 PREEMPT SMP在这种情况下 17 给出了信息 在 x86 中它代表 bit 0 0 no page found 1 protection faul
  • 在 4.x 内核上的 64 位内存中查找系统调用表

    我正在尝试编写一个简单的内核模块来查找 Linux 中的 sys call table 但遇到了一些麻烦 我在这里找到了 32 位 Linux 的基本指南 https memset wordpress com 2011 03 18 sysc
  • 如何获取内核转储中Section对象的内容

    来自 3thParty 供应商的节对象被命名为rpsPdf10 mutex它的预期用途是通过向信号量写入布尔标志来模拟信号量 使用 LiveKd 并在 SO 的大量帮助下 我发出了以下命令试图获取此部分对象的详细信息 0 kd gt pro
  • 在 Linux 内核中使用断言

    我有一个问题assert 在Linux中 我可以在内核中使用它吗 如果不是 例如 如果我不想输入 NULL 指针 您通常会使用什么技术 对应的内核宏是BUG ON and WARN ON 前者适用于当您想让内核恐慌并使系统崩溃 即不可恢复的
  • 在内核中创建一个简单的只写过程条目

    include
  • 编译Linux内核模块时出现错误:“CONFIG_X86_X32已启用,但没有binutils支持”和不需要的“n”字符

    我想得到Rasta Ring0 调试器 http rr0d droids corp org 在我的 x86 64 Linux 中编译的 0 3 版本 它是一个 Linux 内核模块 我已将 32 位内联汇编替换为 64 位汇编 如我的问题中
  • 使用 gdb 调试 Linux 内核模块

    我想知道 API 在内核模块 中返回什么 从几种形式可以知道 这并不是那么简单 我们需要加载符号表来调试内核模块 所以我所做的就是 1 尝试找到内核模块的 text bss和 data段地址 2 在 gdb 中使用 add symbol f
  • 我什么时候应该编写 Linux 内核模块?

    有些人出于某种原因想要将 Linux 中的代码从用户空间移动到内核空间 很多时候 原因似乎是代码应该具有特别高的优先级 或者只是 内核空间更快 这对我来说似乎很奇怪 我什么时候应该考虑编写内核模块 有一套标准吗 我怎样才能激励将代码保存在
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 当存在 copy_from_user 时应用 get_user

    在Linux内核编程中 我看到get user and 从用户复制从用户空间执行读取 前一个读取固定的 1 2 或 4 个字节 而后一个从用户空间读取任意数量的字节 get user 需要什么 copy from user 是否在 get

随机推荐