我今天发现/var/log/dmesg
包含了关于所谓的信息几十行gran_size
和*BAD*gran_size
,紧接着做什么似乎是一个指令对我来说:
[ 0.000000] mtrr_cleanup: can not find optimal value
[ 0.000000] please specify mtrr_gran_size/mtrr_chunk_size
我需要按照说的做吗?我怎么会
我今天发现/var/log/dmesg
包含了关于所谓的信息几十行gran_size
和*BAD*gran_size
,紧接着做什么似乎是一个指令对我来说:
[ 0.000000] mtrr_cleanup: can not find optimal value
[ 0.000000] please specify mtrr_gran_size/mtrr_chunk_size
我需要按照说的做吗?我怎么会
Answers:
MTRR代表“内存类型”范围寄存器,这是一种在系统中分区和管理内存资源的新方法。由于内存大小越来越大,此功能已被放置在处理器中。必须有一种方法可以更有效地分配和寻址内存。
MTRR的主要功能是映射系统中PCI或AGP组件的位置,以便软件,驱动程序可以快速有效地访问它们。
(来自Gentoo Wiki)
阅读了解决Linux MTRR问题后,当mtrr sanitizer无法从内存布局的多个选项中进行选择时,似乎会报告您看到的错误。它应该在错误消息旁边打印可能选项的列表。为了使消息消失,您需要指定类似
enable_mtrr_cleanup mtrr_spare_reg_nr=1 mtrr_gran_size=32M mtrr_chunk_size=128M
在内核启动参数中(实际值来自消毒程序建议的选项之一)。
该文章的作者声称
现在ram的24MiB已经消失了,但是我的3d工作负载(基本上是webgl内容和google Earth内部的隐藏飞行模拟器)都以明显更高的帧速率运行。
这让我非常感兴趣...需要检查dmesg
我所有的机器。
根据RHEL6的[Redhat知识库] [1](于2017年1月更新),“请指定mtrr_gran_size / mtrr_chunk_size”表示:
- 这些消息不是问题,仅是警告。它们可以忽略。
- 在/boot/grub/grub.conf中的内核参数中添加disable_mtrr_cleanup disable_mtrr_trim会禁用引发这些错误的代码路径,并阻止它们出现在系统上。
我当然知道Redhat不是Ubuntu,但是总的来说,它们运行相同的内核,因此如果Ubuntu的内核不相同,我会感到非常惊讶。提供该答案作为“第二意见”。
[1]:https://access.redhat.com/solutions/2852191-(需要订阅)