AMD поправи грешка в ядрото на Linux 6.13, заради която времето за зареждане на системи с AMD Zen 1 и Zen 2 процесори понякога нарастваше до няколко минути.
Въпреки че на Linux може да отнеме известно време за зареждане на стар хардуер, операционната система не е известна като особено бавна. Дори оптимизация, направена през август, която съкрати само 0,035 секунди от времето за зареждане, се счита за забележителна, тъй като Linux вече е силно оптимизирана операционна система.
Преди четири седмици обаче един от служителите на Nokia забелязал, че на повече от 10 сървъра, базирани на Zen 1 процесори Epyc, им отнема известно време да стартират.
Обикновено тази стъпка от процеса на зареждане би била около 12 секунди със само 1-2 секунди разлика при различните зареждания. Но при прилагането на споменатата кръпка вариацията се увеличава. При повечето зареждания не се забелязва никакво въздействие, при някои зареждания времето се увеличава с няколко до десетки секунди, а в екстремни случаи дори с няколко минути (!).Инженера от Nokia в имейл до служител на AMD и екипа на Linux ядрото.
Инженерът също така е установил, че проблемът се дължи на промяна, която е била добавена в Linux 6.11 още през май 2023 г. Наречена „късно натоварване на двете нишки“, тя трябваше да се отнася до актуализациите на микрокода за процесорите на AMD, които имат едновременно многонишково управление (SMT).
Това по същество обхваща всеки процесор, базиран на Zen, от 2017 г. насам.
Според служителя на AMD, който е написал кода за „двете нишки“, Linux първоначално е проверявал дали дадена актуализация на микрокода може да се приложи само на една нишка или трябва да се приложи и на двете нишки. Пачът обаче е премахнал тази проверка, което означава, че актуализациите на микрокода винаги ще се изпълняват на двете нишки.
Инженерът на Nokia обаче твърди, че актуализациите на микрокода биват успешно приложени към едната нишка, а след това биват приложени към другата.
Въпреки че това е ненужно и води до драстично увеличаване на времето за зареждане.
Твърди се, че допълнителното късно зареждане не вреди на нито един процесор, по-нов от Bulldozer. И все пак, въз основа на моите наблюдения, смятам, че това твърдение може да е невярно.
По-малко от месец по-късно кръпката за ядрото 6.13-rc1, която отстранява проблема, вече е факт. Тя премахва актуализациите на микрокода от буфера на паметта на процесора, предотвратявайки преминаването на актуализацията за втори път.
Според Phoronix тази поправка трябва да бъде прехвърлена и към предишни стабилни версии на ядрото на Linux. Това ще позволи на дистрибуциите, базирани на ядра отпреди 6.13, да получат поправката за бавното зареждане.
Като се има предвид, че проблемът е забелязан едва този месец, въпреки че съществува от повече от година, вероятно той не е повлиял на много потребители или организации. Това не е изненадващо, тъй като оригиналните процесори Zen дебютираха през 2017 г., а чиповете Zen 2 се появиха през 2019 г. Към този момент няма толкова много компютри, които все още работят с тези сравнително стари процесори. И то за важни задачи.
Източник: Kaldata
Leave a Reply