Aggiornamento del TLB "lazy" su Linux 4.19: +1-2% di prestazioni

Aggiornamento del TLB "lazy" su Linux 4.19: +1-2% di prestazioni

Linux 4.19 porterà a un incremento (seppur ridotto) delle prestazioni sulle CPU x86: tale cambiamento è dovuto a una patch che modifica la gestione del TLB, portando a un +1-2% di prestazioni

di pubblicata il , alle 09:01 nel canale Sistemi Operativi
Linux
 

Una novità in preparazione per Linux 4.19 è l'impiego di una politica lazy per la procedura di flush del TLB sulle CPU x86. Tale politica permetterebbe di ottenere dei piccoli incrementi prestazionali.

Il TLB, o Translation Lookaside Buffer, è una cache pensata per ridurre i tempi di accesso alla memoria in sistemi con memoria paginata: anziché accedere alla memoria centrale ogni volta che viene fatto un riferimento a una pagina (con la conseguente necessità di controllare nella page directory prima e nella page table dopo), le traduzioni degli indirizzi più utilizzate vengono direttamente contenute nella TLB. L'impiego di una cache di questo tipo porta a miglioramenti sensibili, dato che c'è una differenza di un ordine di grandezza nell'accesso alla cache rispetto alla RAM. A ogni context switch di processo (ma non di thread) è necessario azzerare il TLB o quantomeno renderne i valori specifici del processo non validi.

La patch prevista per Linux 4.19 fa sì che gli aggiornamenti del TLB siano "pigri", cambiando semplicemente il valore del registro CR3 (che specifica l'indirizzo di base della page directory) anziché effettuare un flush completo del TLB durante il context switch.

Nei sistemi multiprocessori c'è il rischio che l'accesso speculativo alla memoria da un core porti a un crash del sistema per via di un riferimento in TLB a una pagina non più disponibile a causa di cambiamenti effettuati su un altro processore (TLB shootdown). Attualmente la gestione dei TLB shootdown differisce per politica da quella generale della TLB. Questi crash possono essere evitati semplicemente facendo sì che il TLB shootdown avvenga solo quando si libera una pagina, oppure utilizzando la stessa modalità lazy anche per il TLB shootdown.

Il risultato di questa patch è un incremento delle prestazioni nell'ordine dell'1-2%, come riporta Phoronix.

Resta aggiornato sulle ultime offerte

Ricevi comodamente via email le segnalazioni della redazione di Hardware Upgrade sui prodotti tecnologici in offerta più interessanti per te

Quando invii il modulo, controlla la tua inbox per confermare l'iscrizione.
Leggi la Privacy Policy per maggiori informazioni sulla gestione dei dati personali

2 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - info
WarDuck01 Agosto 2018, 23:10 #1
Non è proprio così.

Quotando l'originale:
Originariamente inviato da: "
Lazy TLB mode can result in an idle CPU being woken up by a TLB flush, when all it really needs to do is reload %CR3 at the next context switch, assuming no page table pages got freed... This patch reduces total CPU use in the system by about 1-2% for a memcache workload on two socket systems, and by about 1% for a heavily multi-process netperf between two systems


Il meccanismo di aggiornamento lazy della TLB già esiste, l'unica cosa è che questo può portare, inutilmente, al risveglio di una CPU in idle (a causa di un inter-processor interrupt).

L'aggiornamento del registro CR3 provoca sempre l'immediato flush della TLB e questa è un operazione che viene fatta al context switch del processo.

Quindi di fatto quello che si sta dicendo è che l'aggiornamento della TLB per le CPU in idle (per cui viene eseguito l'idle task) può essere posticipato direttamente a quando la CPU non sarà più idle perché c'è un task schedulabile (e quindi viene forzato un context-switch ).
zappy08 Agosto 2018, 14:24 #2
Originariamente inviato da: WarDuck
Non è proprio così.

Quotando l'originale:
...

tradotto per gli ignoranti, in pratica più che una caratteristica che aumenta le prestazioni, serve alla maggior efficienza energetica, ho capito giusto?

Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".

La discussione è consultabile anche qui, sul forum.
 
^