Capitolo 9. Kernel
I parametri del kernel, SHMMAX e SHMALL, sono stati reimpostati su valori predefiniti.
In precedenza i valori di
kernel.shmmax
e kernel.shmall
, impostati nel file /usr/lib/sysctl.d/00-system.conf
, erano troppo bassi. A causa di questa impostazione alcune applicazioni, ad esempio SAP, non erano in grado di operare correttamente. Gli override non corretti sono stati rimossi, al loro posto vengono utilizzati i valori predefiniti del kernel.
le transparent huge pages non causano più la corruzione della memoria
Le Transparent huge pages non venivano sincronizzate correttamente durante le operazioni di lettura e scrittura, ne risultava una corruzione della memoria quando le transparent huge pages venivano abilitate. A tale scopo sono state aggiunte alcune barriere per la gestione delle transparent huge page le quali non permettono più alcuna corruzione della memoria.
Aggiornamento SCSI LIO
Il target del kernel SCSI, LIO, è stato aggiornato da Linux-4.0.stable. L'aggiornamento apporta numerose correzioni, in particolare per iSER, ma include anche il supporto per i comandi XCOPY, WRITE SAME e ATS; ed il supporto per l'integrità dei dati DIF.
makedumpfile supporta ora il nuvo formato di sadump fino a 16 TB di memoria fisica
Il comando makedumpfile supporta ora il nuovo formato di sadump con uno spazio di memoria fisica maggiore di 16 TB. Questo nuovo formato permette agli utenti di makedumpfile di leggere i file dump con una dimensione maggiore a 16 TB, generati da sadump su alcuni nuovi modelli di server.
La rimozione o l'aggiornamento del kernel non mostra più alcun messaggio d'avviso
Lo script weak-modules, usato da
kmod
per gestire i link simbolici del modulo compatibile con kABI, rimuoveva /lib/modules/<version>/weak-updates
durante la rimozione dei file associati con un kernel. La directory apparteneva al pacchetto kernel, e la sua rimozione causava un livello di inconsistenza tra il file system e lo stato previsto da rpm
. Questo comportamento causava un messaggio d'avvertimento ogni qualvolta un kernel veniva aggiornato o rimosso.
Questo script è stato aggiornato, ora verranno rimossi solo i contenuti della directory
weak-updates
senza toccare la directory stessa. Così facendo non saranno più visualizzati i messaggi d'avvertimento.
Nuovo pacchetto: libevdev
Libevdev è una libreria semplice per l'interfaccia del dispositivo degli eventi d'input del kernel di Linux. Questa libreria fornisce una interfaccia sicura per l'interrogazione delle capacità del dispositivo e degli eventi dei processi. Questa libreria è una dipendenza per le versioni correnti di xorg-x11-drv-evdev e xorg-x11-drv-synaptics.
Tuned è ora in grado di essere eseguito in modalità no-daemon
In precedenza Tuned poteva essere eseguito solo come demone. Questa impostazione diminuiva le prestazioni di sistemi più piccoli a causa del footprint della memoria del demone Tuned. Con questo aggiornamento la modalità no-daemon (one shot), la quale non richiede alcuna memoria residente, è stata aggiunta a Tuned. La modalità no-daemon è disabilitata per impostazione predefinita poichè gran parte della funzionalità di Tuned non è disponibile in questa modalità.
Nuovo pacchetto: tuned-profiles-realtime
È stato aggiunto un nuovo pacchetto tuned-profiles-realtime a Red Hat Enterprise Linux Server e Red Hat Enterprise Linux per Real Time. Nel suo interno è disponibile un profilo realtime usato dall'utilità
tuned
per isolare la CPU e ottimizzare IRQ. Se attivato, questo profilo è in grado di consultare una sezione variabile, la quale specifica le CPU da isolare, modificando altresì la posizione di tutti i thread che potevano essere spostati dalle suddette CPU.
Programmazione Multiqueue I/O con blk-mq
Red Hat Enterprise Linux 7.2 rende disponibile un nuovo meccanismo per la programmazione I/O per code multiple di dispositivi a blocco, conosciuto come blk-mq. Il suo utilizzo permette di migliorare le prestazioni tramite la mappatura delle richieste I/O su code software o hardware multiple da parte di alcuni driver del dispositivo. Riducendo la contesa del blocco presente quando thread multipli eseguono un I/O per un dispositivo, sarà possibile migliorare le prestazioni. I dispositivi più recenti, come ad esempio Non-Volatile Memory Express (NVMe), sono in grado di sfruttare al massimo i vantaggi offerti da questa funzione, a causa del supporto nativo per code e per trasmissioni hardware multiple, e delle caratteristiche di rendimento a bassa latenza. I miglioramenti delle prestazioni dipendono dal carico di lavoro e dal tipo di hardware.
È attualemente implementata, e abilitata per impostazione predefinita, la funzione blk-mq nei seguenti driver: virtio-blk, mtip32xx, nvme e rbd.
La funzione scsi-mq permette ai driver del dispositivo Small Computer System Interface (SCSI) di utilizzare l'infrastruttura blk-mq. scsi-mq è disponibile come Anteprima di tecnologia in Red Hat Enterprise Linux 7.2. Per abilitare scsi-mq specificare
scsi_mod.use_blk_mq=y
nella linea di comando del kernel. Il valore predefinito è n
(disabilitato).
Il target multipath del device mapper (DM), il quale utilizza le richieste basate su DM, può essere configurato per l'infrastruttura di blk-mq se l'opzione
dm_mod.use_blk_mq=y
è stata specificata. Il valore predefinito è n
(disabled).
Se i dispositivi SCSI sottostanti utilizzano blk-mq può essere utile impostare
dm_mod.use_blk_mq=y
, così facendo è possibile ridurre l'overhead del blocco a livello del DM.
Per determinare se DM multipath utilizzi blk-mq su un sistema eseguire cat sul file
/sys/block/dm-X/dm/use_blk_mq
, dove dm-X
viene sostituito dal dispositivo DM multipath relativo. Questo è un file di sola lettura e riflette il valore globale in /sys/module/dm_mod/parameters/use_blk_mq
al momento della creazione del dispositivo DM multipath.
Ora è più semplice interpretare i messaggi d'errore SCSI
In precedenza le modifiche apportate sul kernel che riguardavano la funzione printk() generavano messaggi d'errore Small Computer System Interface (SCSI) su linee multiple. Ne conseguiva che in presenza di errori multipli su diversi dispositivi, era estremamente complesso interpretare correttamente i messaggi d'errore. Questo aggiornamento modifica il codice di registrazione degli errori SCSI, e permette di utilizzare l'opzione dev_printk() la quale associa ogni messaggio con il dispositivo che ha generato l'errore.
Driver e sottosistema libATA aggiornati
Questo aggiornamento fornisce un certo numero di correzioni e miglioramenti dei driver e del sottosistema libATA
Aggiornati FCoE e DCB
I componenti Fibre Channel over Ethernet (FCoE) e Data Center Bridging (DCB) sono stati aggiornati all'ultimissima versione upstream. Ora sono disponibili diverse correzioni e miglioramenti rispetto alle versioni precedenti.
perf aggiornato alla versione 4.1
I pacchetti perf sono stati aggiornati alla versione 4.1 dell'upstream. Sono ora disponibili un certo numero di miglioramenti e correzioni relative alle prestazioni e alla stabilità rispetto alla versione precedente. In particolare, questo aggiornamento rende disponibile le funzioni Intel Cache QoS Monitoring e AMD IBS Ops, e fornisce un supporto per Intel Xeon v4, per i moduli kernel compressi, per gli eventi parametrizzati e la possibilità di specificare la lunghezza dei punti d'interruzione. Sono state aggiunte altresì un certo numero di opzioni allo strumento perf, come ad esempio
--system-wide
, top -z
, top -w
, trace --filter-pids
e trace --event
.
Supporto per TPM 2.0
Questo aggiornamento aggiunge un supporto a livello-driver per i dispositivi Trusted Platform Module (TPM) conformi alla versione 2.0.
Turbostat fornisce ora un output corretto
In precedenza turbostat era in grado di rilevare la presenza del supporto del dispositivo MSR attraverso la lettura del file /dev/cpu/0/msr per
cpu0
, al posto di cpu
. Ne risultava che disabilitando una CPU causava la rimozione delle CPU dall'output di turbostat. Questo bug è stato corretto, ora l'esecuzione del comando turbostat ls
ritorna un output conforme.
Supporto per il processore Xeon v5 di Intel
Con questo aggiornamento è stato introdotto su turbostat il supporto al processore Xeon v5 di Intel
zswap utilizza l'API zpool
In precedenza zswap utilizzava zbud, un pool di archiviazione in grado di archiviare pagine compresse con un rapporto di 2:1 (quando complete). Questo aggiornamento introduce l'API zpool per mezzo della quale è possibile accedere ai pool zbud o zsmalloc: zsmalloc archivia le pagine compresse con una densità potenzialmente più elevata, ne consegue così una richiesta maggiore di memoria per pagine altamente comprimibili. Con questo aggiornamento zsmalloc è stato promosso ai driver /mm, ora zpool funziona come previsto.
La lunghezza del file /proc/pid/cmdline è ora illimitata
Il limite della lunghezza del file /proc/pid/cmdline per il comando ps era precedentemente impostato nel kernel su 4096 caratteri. Con questo aggiornamento la lunghezza di /proc/pid/cmdline è illimitata. Questa impostazione è utile per l'ascolto dei processi con argomenti della linea di comando molto lunghi.
Ora è disponibile il supporto per dma_rmb e dma_wmb
Questo aggiornamento introduce due nuove primitive per la sincronizzazione dei processi di scrittura e lettura della memoria coerente, dma_wmb() e dma_rmb(). Questa funzione sarà disponibile per un uso appropriato nei driver.