În kernelul Linux 6.0, a cărui lansare este așteptată luni viitoare, a fost adoptată o modificare care rezolvă problemele de performanță ale sistemelor pe procesoare AMD Zen. Sursa căderii de performanță a fost un cod adăugat acum 20 de ani pentru a ocoli o problemă hardware din anumite chipseturi. Problema hardware a fost deja rezolvată și nu mai apare în chipseturile actuale, dar vechea ocolire a fost uitată și a devenit o sursă de scădere a performanței pe sistemele bazate pe CPU-uri AMD moderne. Noile sisteme cu CPU Intel nu sunt afectate de vechea ocolire, deoarece acestea accesează ACPI prin intermediul unui driver separat intel_idle, și nu prin driverul comun processor_idle.
Ocolirea a fost adăugată în kernel în martie 2002 pentru a bloca manifestarea erorii în chipseturi, asociată cu absența unei instalări corecte a stării de inactivitate (idle) din cauza întârzierii în procesarea semnalului STPCLK#. Pentru a ocoli această problemă în implementarea ACPI, a fost adăugată o instrucțiune suplimentară WAIT, care încetinea procesorul pentru a permite chipsetului să treacă în starea de inactivitate. În urma profilării utilizând instrucțiunile IBS (Instruction-Based Sampling) pe procesoarele AMD Zen3, s-a constatat că procesorul petrece un timp semnificativ executând o fereală care duce la o interpretare greșită a stării de încărcare pe procesor și la stabilirea unor moduri de somn mai profunde (C-State) de către procesorul cpuidle.
O astfel de comportare se reflectă în scăderea performanței în sarcinile în care stările de inactivitate (idle) și activitate (busy) se alternează frecvent. De exemplu, utilizând un patch care dezactivează ocolirea, mediile testului tbench cresc de la 32191 MB/s la 33805 MB/s.
Sursa: opennet.ro
