Patch dimenticata trovata nel kernel Linux che influisce sulle prestazioni della CPU AMD

Il kernel Linux 6.0, che dovrebbe essere rilasciato lunedì prossimo, ha adottato una modifica che risolve i problemi di prestazioni sui sistemi basati su processori AMD Zen. La fonte del calo delle prestazioni si è rivelata essere il codice aggiunto 20 anni fa per aggirare un problema hardware in alcuni chipset. Il problema hardware è stato risolto da tempo e non compare nei chipset attuali, ma la vecchia soluzione alternativa è stata dimenticata ed è diventata una fonte di degrado delle prestazioni sui sistemi basati sulle moderne CPU AMD. I nuovi sistemi con CPU Intel non sono interessati dalla vecchia soluzione alternativa, poiché accedono ad ACPI utilizzando un driver intel_idle separato e non un driver processor_idle comune.

Nel marzo 2002 è stata aggiunta una soluzione alternativa al kernel per bloccare la manifestazione di un bug nei chipset relativo all'impostazione non corretta dello stato di inattività a causa del ritardo di elaborazione del segnale STPCLK#. Per aggirare il problema nell'implementazione ACPI, è stata aggiunta un'ulteriore istruzione WAIT, che rallenta il processore in modo che il chipset abbia il tempo di entrare nello stato di inattività. Durante la profilazione utilizzando le istruzioni IBS (Instruction-Based Sampling) sui processori AMD Zen3, è stato rivelato che il processore impiega una quantità significativa di tempo nell'esecuzione di uno stub, il che porta a un'interpretazione errata dello stato di caricamento sul processore e all'impostazione di modalità di sospensione più profonde (C-State) dal gestore cpuidle.

Questo comportamento si riflette nel degrado delle prestazioni sotto carichi di lavoro che spesso si alternano tra stati inattivi e occupati. Ad esempio, quando si utilizza una patch che disabilita la manovra di bypass, i punteggi medi del test tbench aumentano da 32191 MB/s a 33805 MB/s.

Fonte: opennet.ru

Aggiungi un commento