Я знаю, що важко ізолювати процесор, але помилки, які я бачу, припускають, що це проблема.
Це, безумовно, не є несправною / несправною апаратною проблемою . Я працюю в 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
- ubuntu-gnome-16.04.1-desktop-amd64.iso
Для Arch - проблема полягала лише у переривчастому завантаженні з USB-накопичувача. Мені вдалося встановити Arch на розділ 100 Гб 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 також продовжує обіцяти, що вирішує проблему
Виправлення рекурсивної несправності, але перезавантаження потрібне!
Я бажаю..
Intel ucode
Я також спробував встановити intel-ucode
пакет у моїй програмі Arch. Я побачив у dmesg
журналах, що мікрокоди були оновлені, але це, на жаль, не вирішило моєї проблеми.
Що може бути проблемою? Як це можна виправити?
EDIT
Додаткова примітка.
Повідомлення про помилки загального захисту та повідомлення типу "блокування виявлених" зазвичай посилаються на ЦП. Я бачив 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
здавалося, що система змусила працювати лише з 1 процесором, я встановив gnome, а потім побігsystemctl enable gdm.service
Тепер, коли я перезавантажуюсь, я знову повертаю всі свої помилки, але цього разу всі вони трапляються на CPU0
Тож здається, що все-таки щось спричиняє порушення пам’яті навіть з 1 процесором.
EDIT4
нолапічний
Тому використання, 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