Inżynierowie firmy Red Hat pracują nad tym, aby rozwiązanie problemu Indirect Branch Restricted Speculation (IBRS) było zbyt kosztowne, aby złagodzić Spectre V2 i Retbleed na starszych procesorach Intel Xeon Scalable. Wypuszczono nową łatkę, która wyłącza IBRS w stanie bezczynności i działa dobrze przynajmniej w systemie Red Hat Enterprise Linux 9, chociaż nie jest jeszcze jasne, czy zostanie zaakceptowana przez nadrzędne jądro.

Łatka firmy Waiman Long firmy Red Hat wyjaśnia problemy, z którymi wciąż borykają się firmy Intel IBRS w przypadku Spectre i Retbleed:

Dla procesorów Intel, które muszą włączyć IBRS w celu ochrony przed Spectre v2 i Retbleed, bit IBRS w SPEC_CTRL MSR wpływa na wydajność całego rdzenia, nawet jeśli tylko jeden wątek włącza go podczas pracy w jądrze. W przypadku aplikacji obciążających przestrzeń użytkownika wpływ na wydajność okazjonalnego włączania IBRS podczas wywołań systemowych nie powinien być znaczący. Niestety, nie dzieje się tak, gdy wątek rodzeństwa jest bezczynny w jądrze. W takim przypadku wpływ na wydajność może być znaczący.

Gdy program DPDK działa na izolowanym wątku procesora, przetwarzając pakiety sieciowe w przestrzeni użytkownika, podczas gdy jego wątek równorzędny jest bezczynny. Wydajność zajętego wątku DPDK z włączonym i wyłączonym IBRS w równorzędnym bezczynnym wątku to:

IBRS włączony IBRS wyłączony
—————
pakiety/sekundę: 7,8 mln 10,4 mln
średnia liczba cykli tsc/pakiet: 282,26 209,86

To spadek wydajności o 25%. System testowy to procesor Intel Xeon 4114 @ 2,20 GHz.

Ta seria poprawek wyłącza IBRS w różnych trybach bezczynności, aby wyeliminować wpływ bezczynnego wątku na jego zajęty wątek równorzędny.

Och, 25% trafienia na Xeon Scalable Skylake dla pakietu Data Plane Development Kit (DPDK) typu open source.
Jest ten wątek jądra, w którym publikowana jest łatka wyłączająca IBRS w czasie bezczynności. Wybitny inżynier Linuksa Intela, Peter Zijlstra, zasugerował inną poprawkę, która nie jest obecnie przenoszona wstecz do RHEL9. Dodatkowo możliwość korzystania z funkcji Call Depth Stuff/Tracking zamiast IBRS. W moich testach funkcja Call Depth Tracking, którą można znaleźć w głównym systemie Linux 6.2+, faktycznie oferuje pomoc w odzyskaniu utraconej wydajności na procesorach z ery Intel Skylake, które w przeciwnym razie opierają się na IBRS. Zobaczymy więc, dokąd zmierzają działania nadrzędne jądra lub czy Red Hat skończy po prostu przenosić tę łatkę jako część jądra RHEL9 na razie, dopóki nie przeniesie żadnych nowych opcji. W każdym razie ten najnowszy wątek listy dyskusyjnej jądra nadal pokazuje problemy z łagodzeniem, których nadal doświadczają korporacyjni użytkownicy Linuksa w połowie 2023 r. na starszych platformach.

Categories: IT Info