Probabilmente hai sentito parlare di Meltdown e Vulnerabilità dello spettro che ha influenzato molti processori moderni, inclusi alcuni processori Intel, AMD, System Z, Power e ARM. Per fortuna, gli sviluppatori del kernel hanno rilasciato patch di sicurezza per risolvere i problemi di Meltdown/Spectre. Nelle recenti versioni del kernel, le patch sono implementate per impostazione predefinita. Anche se le patch di sicurezza aiutano a mitigare le vulnerabilità, hanno anche influito sulle prestazioni del sistema. Sì, le attenuazioni causeranno un calo delle prestazioni. Se sei sicuro che i tuoi sistemi siano ben protetti e desideri ogni grammo di prestazioni che puoi ottenere dal tuo sistema personale, questa guida è per te. Questa breve guida spiega come rendere più veloce il sistema Linux su CPU Intel disattivando le mitigazioni Spectre e Meltdown.
Una parola di cautela
Prima di implementare la seguente soluzione, devo avvertirti:QUESTO È ALTAMENTE NON SICURO e NON RACCOMANDATO . Ciò disabiliterà tutte le attenuazioni di Spectre e Meltdown sulle CPU Intel e lascerà i tuoi sistemi Linux completamente aperti a tutti i rischi per la sicurezza. A meno che tu non sappia chiaramente cosa stai facendo, non farlo. Sei stato avvisato!
Se semplicemente non ti interessa la sicurezza, vai avanti e disabilita le attenuazioni come descritto di seguito.
Rendi il sistema Linux più veloce su CPU Intel
Modifica il tuo file GRUB utilizzando il tuo editor di testo preferito.
Su Debian , Ubuntu :
$ sudo nano /etc/default/grub
Se stai utilizzando Linux Kernel versione 5.1.13 e successive, aggiungi/modifica il seguente parametro Kernel come di seguito:
GRUB_CMDLINE_LINUX="mitigations=off"
Ciò disabiliterà tutte le attenuazioni CPU opzionali. Ciò migliora le prestazioni del sistema, ma può anche esporre gli utenti a diverse vulnerabilità della CPU.
Se stai utilizzando versioni del kernel precedenti alla 5.1.13, aggiungi/modifica invece quanto segue:
GRUB_CMDLINE_LINUX="noibrs noibpb nopti nospectre_v2 nospectre_v1 l1tf=off nospec_store_bypass_disable no_stf_barrier mds=off tsx=on tsx_async_abort=off mitigations=off"
Parametri del kernel per disabilitare tutte le mitigazioni Spectre e Meltdown
Questi sono i parametri del kernel che puoi utilizzare per disabilitare tutte le mitigazioni Spectre/Meltdown che stanno rallentando il tuo sistema Linux.
Scopri cosa fa ogni bandiera:
- noibr - Disabilita la speculazione limitata del ramo indiretto nel microcodice.
- noibpb - Disattiva le barriere di previsione dei rami indiretti.
- nopti - È uguale a pti=off. Tabella delle pagine di controllo Isolamento degli spazi degli indirizzi dell'utente e del kernel. La disattivazione di questa funzione rimuove il rafforzamento, ma migliora le prestazioni delle chiamate di sistema e degli interrupt.
- nospectre_v2 - Disattiva tutte le attenuazioni per la vulnerabilità Spectre variante 2 (previsione del ramo indiretto). Il sistema può consentire fughe di dati con questa opzione, che equivale a spectre_v2=off.
- nospectre_v1 - Disabilita le mitigazioni per la variante Spectre 1 (bypass controllo limiti). Con questa opzione sono possibili perdite di dati nel sistema.
- l1tf=off - Mitigazione del controllo della vulnerabilità L1TF sulle CPU interessate. La protezione dall'inversione PTE del kernel è abilitata incondizionatamente e non può essere disabilitata. Disabilita le attenuazioni dell'hypervisor e non emette alcun avviso. Riduce anche la dimensione dello scambio e la limitazione del limite di RAM disponibile sia sull'hypervisor che sul bare metal.
- nospec_store_bypass_disable - Disabilita tutte le attenuazioni per la vulnerabilità Speculative Store Bypass.
- nessuna_stf_barriera - Disabilita la barriera di inoltro al negozio (solo PPC).
- mds=off - Mitigazione del controllo per la vulnerabilità del campionamento dei dati della microarchitettura (MDS).
- tsx=on - Abilita il supporto TSX (Transactional Synchronization Extensions) di Intel.
- tsx_async_abort=off - Disattiva la mitigazione TAA (TSX Async Abort).
- mitigazioni=off - Disattiva tutte le attenuazioni.
Per maggiori dettagli su ciascuna bandiera, fai una rapida ricerca su Google.
Dopo aver aggiunto i parametri del kernel, aggiorna la configurazione di GRUB usando il comando:
$ sudo update-grub
Infine, riavvia il sistema:
$ sudo reboot
Su sistemi basati su RPM come CentOS e RHEL , modifica /etc/sysconfig/grub file:
$ sudo /etc/sysconfig/grub
Aggiungi i parametri sopra in GRUB_CMDLINE_LINUX. E quindi aggiorna la configurazione di GRUB usando il comando:
$ sudo grub2-mkconfig
Infine riavvia:
$ sudo reboot
In alcuni sistemi Linux, potrebbe essere necessario aggiungere questi parametri del kernel in "GRUB_CMDLINE_LINUX_DEFAULT="..." .
Ora abbiamo disabilitato tutte le mitigazioni di Spettro e Meltdown. Ciò aumenterà un po' le prestazioni del tuo sistema, ma potrebbe anche esporre gli utenti a diverse vulnerabilità della CPU.
Verifica se le mitigazioni Spectre/Meltdown sono disabilitate
Possiamo usare "spectre-meltdown-checker" strumento che ti aiuta a identificare le vulnerabilità di Spectre e Meltdown in Linux. È disponibile nei repository ufficiali di alcune distribuzioni Linux.
Su Debian, Ubuntu:
$ sudo apt install spectre-meltdown-checker
Su CentOS, RHEL:
$ sudo yum install epel-release
$ sudo yum install spectre-meltdown-checker
Su Fedora:
$ sudo dnf install $ sudo apt install spectre-meltdown-checker
Dopo aver installato spectre-meltdown-checker, eseguilo come utente root o con privilegi sudo per verificare se le mitigazioni Spectre e Meltdown sono disattivate:
Dovresti vedere un messaggio simile a quello di seguito.
[...] > STATUS: VULNERABLE (Vulnerable: __user pointer sanitization and usercopy barriers only; no swapgs barriers) [...] > STATUS: VULNERABLE (IBRS+IBPB or retpoline+IBPB is needed to mitigate the vulnerability) [...] > STATUS: VULNERABLE (PTI is needed to mitigate the vulnerability)
In alternativa, puoi controllare le vulnerabilità di Spectre/Meltdown come di seguito.
$ ls /sys/devices/system/cpu/vulnerabilities/
Risultato di esempio:
itlb_multihit l1tf mds meltdown spec_store_bypass spectre_v1 spectre_v2 tsx_async_abort
E..
$ grep . /sys/devices/system/cpu/vulnerabilities/*
Risultato di esempio:
/sys/devices/system/cpu/vulnerabilities/itlb_multihit:KVM: Vulnerable /sys/devices/system/cpu/vulnerabilities/l1tf:Mitigation: PTE Inversion /sys/devices/system/cpu/vulnerabilities/mds:Vulnerable; SMT Host state unknown /sys/devices/system/cpu/vulnerabilities/meltdown:Vulnerable /sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Vulnerable /sys/devices/system/cpu/vulnerabilities/spectre_v1:Vulnerable: __user pointer sanitization and usercopy barriers only; no swapgs barriers /sys/devices/system/cpu/vulnerabilities/spectre_v2:Vulnerable, STIBP: disabled /sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Not affected
controlla le vulnerabilità di Spectre e Meltdown
Esegui alcuni benchmark e controlla quante prestazioni guadagnerai, quindi decidi se vale la pena disattivare tutto.
Come ho già avvertito, questo suggerimento è un'opzione utile e sensata per i computer domestici o per utente singolo. Ma non consigliato per i sistemi di produzione.