我知道很难隔离CPU,但是我看到的错误表明这就是问题所在。
这绝对不是故障或损坏的硬件问题。在过去的几天里,我整天都在运行Windows 10,这件事很快!没有崩溃。更重要的是,我运行Windows内存检查器。记忆力很好。
机器规格
该机器是全新的联想Yoga 710 15英寸
x64
Intel i7-6500 CPU @ 2.50 GHz, 2601 Mhz, 2 Cores, 4 Logical Processors
SMBIOS Version 2.8
BIOS Mode UEFI
16.0 GB DDR4 Ram
256 MB SSD
隔离到Linux内核(?)
我在两个地方都遇到了相同的问题
- archlinux-2016.08.01-dual.iso
- ubuntu-gnome-16.04.1-desktop-amd64.iso
对于Arch,问题只是在从USB记忆棒启动时间歇出现。我设法将Arch安装在驱动器的100GB ext4分区上。该安装在引导期间会间歇性地出现相同的问题(例如90%的时间)。如果我通过了引导程序,那么在我执行第一对终端命令后,该问题就会随机出现,最终导致完全死锁。
对于Ubuntu-USB记忆棒甚至无法启动。我立即被这些相同的错误所制止。僵局...
这么多错误...
每当发生这种情况时,日志中都会塞满与内存相关的错误,但是我看到的主要错误是:
General protection fault 0000[#1] PREEMPT SMP
RIP kmem_cache_alloc
RIP kmem_cache_alloc_trace
对于这些错误,我已经多次看到一些相同的堆栈跟踪记录:
rbt_memtype_copy_nth_element
on_each_cpu
flusH_tbl_kernel_range
__purge_umap_area_lazy
um_unmam_aliases
change_page_attr_set_clr
set_memory_ro
frob_text.isra
module_enable_ro
kobject_create
kobject_create_and_add
load_module
__symbol_put
kernel_read
sys_finit_module
entry_SYSCALL_64_fastpath
kmem_cache_alloc_trace
allocate_cgrp_cset_links
...
sys_write
entry_SYSCALL-64_fastpath
Linux也一直承诺将解决问题
修复递归故障,但需要重新启动!
我希望..
英特尔ucode
我还尝试intel-ucode
在Arch安装中安装该软件包。我在dmesg
日志中看到微码已更新,但是不幸的是这并不能解决我的问题。
可能是什么问题?如何解决?
编辑
附加说明。
常规保护故障消息和“检测到锁定”类型的消息通常引用CPU。我已经看到了CPU0
,CPU1
,CPU2
并CPU3
在这些消息。似乎是某种原因导致CPU无法相处,就像它们都陷入了试图清除缓存或其他内容的僵局一样。
编辑2
错误提到BIOS
我在一些错误中看到了这些信息:
LENOVO 80U01LENOVO YOGA710-1 BIOS OGCN20WW(v1.04) 6/30/2016
不确定这是否对专业人士了解问题有帮助...
编辑3
maxcpus = 1
我在内核参数文档中寻找调试选项,发现maxcpus
如果我将最大CPU设置为1,那么问题就消失了。因此,似乎问题出在某种程度上是共享高速缓存内存冲突。
编辑3
maxcpus = 1 + Gnome =再次损坏
尽管maxcpus=1
似乎使系统只能使用1个CPU,但我安装了gnome,然后运行systemctl enable gdm.service
现在,当我重新启动时,我又恢复了所有错误,但这一次它们都在CPU0上发生
因此,即使使用1个CPU,似乎仍会导致内存冲突。
编辑4
空腹的
因此,使用nolapic
似乎可以使一切“正常运行”
但是,通过使用nolapic
,我有效地禁用了其他CPU以及1个正常工作的CPU中的所有多线程。
我正在尝试将其用于OpenMP,并且在使用引导之后nolapic
,OpenMP和Linux内核只能找到1个线程,1个CPU。糟透了!
我也尝试了intel_idle.max_cstate=0
和1
,2
等等。但这不能解决启动问题。
还有什么可能导致内核无法利用我的多核计算机?
nomodeset
和nouveau.mode=0
-不知道这是类似)
maxcpus
-我将其设置为1,问题就消失了……但是现在我只能使用一个处理器了?:(
nomodeset nouveau.modeset=0
一起尝试参数,如果那行不通,请尝试nomodeset i915.modeset=0 nouveau.modeset=0