[RESOLVIDO] Problema para desabilitar o Hyperthread do Intel

1. [RESOLVIDO] Problema para desabilitar o Hyperthread do Intel

augusto
marimbondo

(usa Outra)

Enviado em 26/11/2019 - 23:40h

Olá boa noite.

Eu estou tentando desabilitar o Hyper Thread do meu processador Intel i7 Skylake da 6a geração.

Quando desabilito na BIOS e tento entrar no servidor do X para rodar o XFCE, tenho um erro: xf86EnableIOPorts failed to set IOPL for I/O.

Eu tenho instalado o acpi e o acpid.

Bom, eu reativei o Hyper Thread, mas tem uma outra opção na BIOS que desabilita núcleos múltiplos (o meu tem 2 núcleos reais).

Enfim, se desabilito ele, também tenho o mesmo erro.

Esses dias, estava lendo que alguns computadores mais novos nem tem mais a opção de desabilitar o Hyper Thread, e o povo do BSD este ano, tem oferecido uma maneira para poder oferecer uma maneira de desabilitar o Hyper Thread nessas situações, não sei se já está tudo implementado no kernel deles. Também não sei se tem uma opção no Linux para isso.

Será que o Hyper Thread agora está tão bugado que nem essa coisa conseguimos mais desabilitar?
Alguém sabe uma maneira de contornar esse bug??

OBSERVAÇÃO: Consegui resolver o problema, veja minha mensagem seguinte, seção RESPOSTA.




  


2. Re: Problema para desabilitar o Hyperthread do Intel

augusto
marimbondo

(usa Outra)

Enviado em 28/11/2019 - 17:09h

Vou responder a minha pergunta, para ficar de referência.

Parece que os bugs do Meltdown e Spectre foram primeiramente observados bem no meu processador, um Skylake.
Deve ser um Spectre extremamente violento no Skylake, para ele ser o primeiro processador que acharam essa classe de bugs...
Isso me estimula a não persseguir mais o porquê de _não_ conseguir desabilitar o hyperthreading na BIOS sem que isso me traga problemas com o servidor de X...
Intel's Skylake and Kaby Lake CPUs have nasty hyper-threading bug
https://www.theregister.co.uk/2017/06/25/intel_skylake_kaby_lake_hyperthreading/

Uma maneira de desabilitar o hyperthreading sem usar um comando de boot do kernel é com alguns "echos".
Eu testei aqui, e só consigo desabilitar o hyperthread com o método descrito abaixo na referência.
Se colocar o comando de "nosmt" pra fazer o boot do Linux, também me causa problemas..
(por exemplo, echo 0 > /sys/devices/system/cpu/cpu3/online
How to disable or enable hyper threading on my Linux server
https://www.golinuxhub.com/2018/01/how-to-disable-or-enable-hyper.html

Existe um comando de kernel para lançar para o Linux desativar o hyperthread. Antigamente, era o 'noht', mas ele foi descontinuado faz tempo.
[noht] is obsolete since at least Linux 2.6.18. The noht kernel option was removed. This is unfortunate, because Linux enables a workaround for some Haswell perf-counter errata (BJ122, BV98, HSD29) only if HT is on, and this happens before initramfs is even loaded

https://serverfault.com/questions/235825/disable-hyperthreading-from-within-linux-no-access-to-bios

Atualmente, o que se usa é o 'nosmt'.
SMT significa 'Simultaneous Multithreading' e o Hyper Threading da Intel é um tipo de SMT.

Para quem não precisa se preocupar com esses espectros e não liga para segurança nenhuma, tem um comando de kernel para desabilitar (quase) todas as mitigações que é o 'mitigations=off'.
Parametros do kernel 5.3
https://www.kernel.org/doc/html/v5.3/admin-guide/kernel-parameters.html
Para desabilitar as mitigações para kerneis abaixo de 5.1.3, veja:
https://linuxreviews.org/HOWTO_make_Linux_run_blazing_fast_(again)_on_Intel_CPUs

Desde junho de 2018 quando descobriram os Spectres, somente o povo do BSD (kernel BSD) tem se preocupado com isso.
Inclusive, no BSD, o hyperthreading foi desabilitado por padrão. Agora estão bolando uma forma fácil para reabilitar o hyperthreading quem quiser.
OpenBSD Disables Intel CPU Hyper-Threading Due to Security Concerns
https://www.bleepingcomputer.com/news/security/openbsd-disables-intel-cpu-hyper-threading-due-to-sec...

O povo do BSD foi massacrado por causa disso. Porém, somente agora recentemente o povo do Linux se deu conta que desabilitar o hyperthread é necessário.
Running on Intel? If you want security, disable hyper-threading, says Linux kernel maintainer
https://www.theregister.co.uk/2019/10/29/intel_disable_hyper_threading_linux_kernel_maintainer/

Quanto se perde com o desligamento do hyperthreading?
Teoricamente, 50% de velocidade. Porém, não é verdade que o desempenho caia.

Uma observação muito importante feita pelo mantenedor do BSD Mark Kettenis:
Note that SMT doesn't necessarily have a posive effect on performance; it highly depends on the workload. In all likelyhood it will actually slow down most workloads if you have a CPU with more than two cores.

https://www.mail-archive.com/source-changes@openbsd.org/msg99141.html

Eu prefiro um carro muito seguro do que um carro sem nenhuma segurança.
Fora isso, nada te impede de pegar um carro que parece um foguete e acelerar a mil por hora na estrada cheia de buracos da web...


RESPOSTA:

Consegui desarmar o HT da Intel e entrar no X server!

O problema era na escolha do driver gráfico para o X Server. Vai depender muito das suas configurações de processador, se tem um cartão integrado, e se tem um cartão da NVIDIA, etc.

Depois de instalados os drivers da nvidia e do bumblebee (pois tenho um cartão gráfico da NVIDIA e o integrado da Intel), e desinstalar quaisquer outros divers que não precisavam (eu havia instalado vários drivers do xorg xorg-drivers sem saber se eram necessários), consegui fazendo o seguinte:

Primeiro, não havia o arquivo /etc/X11/xorg.conf. Nos fóruns do Arch, eles falam que não precisa se preocupar em configurar o xorg.conf, "geralmente".

Há duas maneiras de se gerar um xorg.conf. A primeira é entrando como root e rodando "# Xorg :0 -configure" no TTY1.
Porém, esse arquivo gerado não funcionou no meu caso.

O que realmente resolveu foi primeiro apagar o arquivo xorg.conf gerado e depois rodar "# nvidia-xconfig" como root no TTY1. É importante desconectar os monitores externos... Depois, mudei a linha do /etc/X11/xorg.conf gerado:

Driver "nvidia"
VendorName "NVIDIA Corporation"

para:

Driver "intel"
VendorName "Intel driver"


(Re)instalei também, por via das dúvidas: xf86-video-intel, xf86-video-nouveau, xf86-input-libinput, libva-intel-driver e xf86-video-fbdev, mas não tive tempo de testar um por um para ver quais eram realmente necessários.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts