Я знаю, что трудно изолировать процессор, но ошибки, которые я вижу, наводят на мысль, что это проблема.
Это определенно не является неисправной / сломанной аппаратной проблемой . Последние несколько дней я работал под управлением Windows 10, и эта штука работает быстро! Нет сбоя. Что еще более важно, я запустил проверку памяти Windows. Память все хорошо.
технические характеристики машины
Машина новенького Lenovo 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
- убунт-гном-16.04.1-настольный amd64.iso
Для Arch - проблема возникала только периодически при загрузке с флешки. Мне удалось установить Arch на раздел ext4 объемом 100 ГБ на диске. Эта установка имеет ту же проблему периодически (например, 90% времени) во время загрузки. Если я прошёл загрузку, то проблема появляется случайно после первой пары команд терминала, которые я выполняю, что в итоге приводит к полной тупиковой ситуации.
Для Ubuntu - флешка даже не загружается. Меня сразу же остановили эти самые ошибки. Тупик ...
Так много ошибок ...
Журнал заполнен ошибками, связанными с памятью, когда это происходит, но я вижу следующие ключевые ошибки:
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 также продолжает обещать, что это решает проблему
Исправление рекурсивной ошибки, но необходима перезагрузка!
Хотелось бы..
Intel Ucode
Я также попытался установить intel-ucode
пакет в моей установке Arch. Я видел в dmesg
журналах, что микрокоды были обновлены, но это, к сожалению, не решило мою проблему.
В чем может быть проблема? Как это можно исправить?
РЕДАКТИРОВАТЬ
Дополнительное примечание.
Сообщения об ошибках общей защиты и сообщения типа «обнаружение блокировки» обычно ссылаются на ЦП. Я видел CPU0
, CPU1
, CPU2
и CPU3
в этих сообщениях. Кажется, что что-то заставляет процессоры не ладить, как будто они все в тупике, пытаясь очистить кеш-память или что-то в этом роде.
EDIT2
BIOS упоминается по ошибке
Я вижу эту информацию в некоторых ошибках:
LENOVO 80U01LENOVO YOGA710-1 BIOS OGCN20WW(v1.04) 6/30/2016
Не уверен, что это поможет профессионалу понять проблему ...
EDIT3
maxcpus = 1
Я искал варианты отладки в документации параметров ядра и нашелmaxcpus
Если я установлю максимальное число процессоров равным 1, то проблема исчезнет. Так что может показаться, что проблема в каком-то нарушении общей кеш-памяти.
EDIT3
maxcpus = 1 + Gnome = снова сломан
Хотя maxcpus=1
казалось, что система работает только с одним процессором, я установил gnome и запустилsystemctl enable gdm.service
Теперь, когда я перезагружаюсь, я снова получаю все свои ошибки, но на этот раз они все происходят на CPU0
Таким образом, кажется, что что-то все еще вызывает нарушение памяти даже с 1 CPU.
EDIT4
nolapic
Таким образом, используя, nolapic
кажется, получить все "работает"
НО, используя nolapic
, я эффективно отключаю свой другой ЦП и всю многопоточность в 1 работающем ЦП.
Я пытаюсь использовать это для OpenMP, и после загрузки с nolapic
OpenMP и ядром Linux можно найти только 1 поток, 1 процессор. Это отстой!
Я тоже пробовал intel_idle.max_cstate=0
и 1
, 2
и т. Д. Но это не решает проблему загрузки.
Что еще может заставить ядро не использовать мою многоядерную машину?
nomodeset
и nouveau.mode=0
- не уверен, что это похоже)
maxcpus
- я установил его на 1, и проблема исчезла ... Но теперь я могу использовать только один процессор? :(
nomodeset nouveau.modeset=0
вместе, и если это не сработает, попробуйтеnomodeset i915.modeset=0 nouveau.modeset=0