not*_*bot 6 sensors cpu overclocking lm-sensors 16.04
我已经构建了一台新 PC 并且价格便宜我没有购买 Windows,所以我第一次尝试使用 Ubuntu 16.04 的 Linux。我知道 lm-sensors 是访问我想要的信息的标准方法,这实际上只是电压,尤其是 VCore。我希望能够监控 VCore 电压以促进超频(因为我的主板不允许固定电压,我无法通过自动 VID 监控危险电压)。
我安装了以下相关软件包:lm-sensors (v. 1:3.4.0-2), libsensors4 (v. 3:4.0-2), libsensors-applet-plugin0 (v. 3.0.0+git5-0.1ubuntu1 )
CPU为i5-6600K,主板为华擎Z170A-X1/3.1
我跑了sensors-detect,它发现的唯一传感器是 coretemp。这已添加到我的模块中,它适用于温度。以下是正在运行的传感器的示例输出:
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +47.0°C (high = +80.0°C, crit = +100.0°C)
Core 0: +46.0°C (high = +80.0°C, crit = +100.0°C)
Core 1: +47.0°C (high = +80.0°C, crit = +100.0°C)
Core 2: +34.0°C (high = +80.0°C, crit = +100.0°C)
Core 3: +45.0°C (high = +80.0°C, crit = +100.0°C)
Run Code Online (Sandbox Code Playgroud)
我怀疑需要额外的传感器来访问电压,因为大多数指南显示sensors-detect导致添加的模块不仅仅是 coretemp。就我而言,发现了一个未知设备,它怀疑可能是一个传感器......
Some Super I/O chips contain embedded sensors. We have to write to
standard I/O ports to probe them. This is usually safe.
Do you want to scan for Super I/O sensors? (YES/no): y
Probing for Super-I/O at 0x2e/0x2f
Trying family `National Semiconductor/ITE'... No
Trying family `SMSC'... No
Trying family `VIA/Winbond/Nuvoton/Fintek'... Yes
Found unknown chip with ID 0xd121
(logical device B has address 0x290, could be sensors)
Probing for Super-I/O at 0x4e/0x4f
Trying family `National Semiconductor/ITE'... No
Trying family `SMSC'... No
Trying family `VIA/Winbond/Nuvoton/Fintek'... No
Trying family `ITE'... No
Run Code Online (Sandbox Code Playgroud)
我曾经dmesg在内核环形缓冲区中查看提到的地址 0x290 并发现了这一行,这对我来说大多是不可理解的,但我放在这里供您参考。
[ 0.206389] system 00:00: [io 0x0290-0x029f] has been reserved
Run Code Online (Sandbox Code Playgroud)
此外,我还有其他应用程序,它们能够显示的信息有限。例如,I-NEX 有点像 Windows 上的 CPU-Z(如果你知道的话,建议一些更好的东西),仅限于基本的 CPUID 内容,例如处理器 ID 字符串、光刻、插槽类型、支持的功能等。为 CPU VCore 和其他领域报告。无论我的 BIOS 超频设置如何,时钟速度、BLCK 速度、倍频器、turboclock 都会报告为库存值(不正确,因为我能够使用系统监视器监控 CPU 速度)。像这样的工具可能都依赖于lm-sensors,我认为这是我这里问题的根源,所以这并不奇怪。
我也尝试过使用 WINE 运行 CPU-Z,但结果基本相同:显示基本的 CPUID 内容,但不显示我正在寻找的更详细的传感器内容。这是在初始化期间发生错误之后:错误代码 0x2(2)。
这只是不支持主板的情况吗?如果是这样,是否会添加支持?有什么方法可以手动添加支持吗?lm-sensors 有什么替代品吗?有没有另一种方法,例如,手动接近硬件级别并通过 bash 以某种方式访问电压?我应该从本质上尝试重新安装不同的版本/发行版吗?如果是这样,我一定会丢失此安装及其文件吗?
您可以使用以下方法监控最新(SNB 及更高版本)Intel CPU 上的核心电压1:
watch -n1 'echo "scale=2; $(sudo rdmsr 0x198 -u --bitfield 47:32)/8192" | bc'
Run Code Online (Sandbox Code Playgroud)
分解一下:
sudo rdmsr 0x198 -u --bitfield 47:32
Run Code Online (Sandbox Code Playgroud)
这将读取 MSR_PERF_STATUS MSR,并提取十进制的第 32 至 47 位,其中包含核心电压:
接下来,我们通过管道bc将其除以 8192:
echo "scale=2; $(...)/8192" | bc
Run Code Online (Sandbox Code Playgroud)
指定scale=22 个小数位,因为默认值 0 将始终显示 1V!
最后,我们将整个过程传递给watch -n1重复执行命令(每秒一次)并显示输出。如果您只想获取电压,则只需单引号内的部分即可。
1安装后msr-tools,这是rdmsr命令所需要的。
小智 4
Wine 不会让你到达处理器的ring0。可以执行权限指令的地方。
Linux 提供了一个内核模块 msr.ko,它允许读取/写入英特尔架构软件开发人员手册中描述的模型特定寄存器。与 AMD 的 BIOS 和内核开发人员指南相同
https://software.intel.com/en-us/articles/intel-sdm
http://developer.amd.com/resources/developer-guides-manuals/
对于 6600K,您可能会幸运地在其数据表中找到电压信息。将查询 PCI 以获取值。
您将在 MSR 寄存器和 CPUID 指令叶的帮助下对算法进行编程,以获得处理器 Turbo 比率,并通过按时间间隔采样的两次 TSC 读取来估计 BCLK。
Turbo 频率是比率和基本时钟的乘积
我已经对 CoreFreq 进行了编程,它除了 vcore 之外还会显示频率和空闲状态。请随意挖掘源代码中的算法:
https://github.com/cyring/CoreFreq
| 归档时间: |
|
| 查看次数: |
11345 次 |
| 最近记录: |