Отслеживание глубины вызовов согласуется с Linux 6.2, чтобы снизить снижение производительности для Intel Skylake

В то время как окно слияния Linux 6.1 только что прошло, а исправления «Отслеживание глубины вызовов» разрабатывались последние несколько месяцев, похоже, что для ядра Linux 6.2 будет введена эта альтернативная техника смягчения последствий, помогающая компенсировать некоторые из значительных снижение производительности процессоров эпохи Intel Skylake в результате недавних мер по устранению уязвимостей системы безопасности ЦП.

Питер Зейлстра из Intel работал над подходом к смягчению последствий «Отслеживание глубины вызовов» для оборудования эпохи Intel Skylake, для которого теперь в противном случае необходимо включить смягчение последствий спекуляций с ограниченным доступом к непрямым ветвям (IBRS) в результате уязвимости Retbleed.

Отслеживание глубины вызовов вместо IBRS для затронутых процессоров Intel эпохи Skylake показало, что производительность значительно снижается. См. эту более раннюю статью для получения более подробной информации об этом альтернативном смягчении Retbleed.

За последние несколько месяцев серия исправлений постепенно приближалась к основной ветке, в то время как теперь пропущено окно слияния Linux 6.1. ядро 6.2.

После закрытия окна слияния на этих выходных и выпуска Linux 6.1-rc1 ветвь x86/core TIP была перебазирована в соответствии с 6.1-rc1 и поверх этой серии исправлений для отслеживания глубины вызовов. Таким образом, работа по отслеживанию глубины вызовов теперь подлежит тестированию в TIP x86/core. Учитывая, что он находится в x86/core, а не x86/urgent, это еще одно указание на то, что он будет отложен до следующего цикла ядра, а не будет пытаться проложить себе путь в качестве «исправления» для 6.1.

Томас Глейкснер резюмирует эту новую работу по смягчению последствий в этом патче:
Полностью безопасным средством устранения недостаточного переполнения RSB на процессорах Intel SKL является IBRS, который накладывает до 30% штрафа за патологические тяжелые рабочие нагрузки системных вызовов.

Программное отслеживание глубины вызовов и пополнение RSB не идеальны, но значительно уменьшают поверхность атаки. Штраф за патологический случай составляет около 8%, что все еще раздражает, но определенно более приемлемо, чем IBRS.

Добавьте параметр командной строки retbleed=stuff, чтобы включить отслеживание глубины вызова и пополнение программного обеспечения RSB.

Это дает администраторам выбор. IBeeRS безопасны и вызывают головную боль, отслеживание глубины вызовов считается достаточно безопасным.

Патч, добавляющий X86_FEATURE_CALL_DEPTH, также продолжает критиковать стоимость существующей Skylake IBRS:
Процессоры Intel SKL возвращаются к другим предикторам, когда значение RSB становится недостаточным. Единственным смягчением микрокода является IBRS, который безумно дорог. Производительность снижается до 30% в зависимости от нагрузки.

Более дешевый, но, тем не менее, ужасный способ смягчения последствий — отслеживать глубину вызовов в программном обеспечении и слишком активно заполнять RSB, когда возвраты ниже счетчика программного обеспечения.

Укажите символ конфигурации и бит неисправности ЦП.

Да, включение этого отслеживания глубины вызовов осуществляется с помощью параметра retbleed=stuff в пропатченном ядре. Включенное состояние смягчения через sysfs на затронутых ЦП также будет указано как «Смягчение: Stuffing» для Retbleed. Помимо retbleed=stuff, исправленное ядро ​​​​Linux также должно быть собрано с включенным CALL_DEPTH_TRACKING.

Хотя, к сожалению, отсутствует окно слияния Linux 6.1, работа по отслеживанию глубины вызовов находится в недавно перебазированном x86/core TIP и, мы надеемся, будет найдена в цикле Linux 6.2 в начале следующего года, чтобы помочь компенсировать значительные затраты на производительность, вызванные IBRS. с момента раскрытия Retbleed для пользователей Intel Skylake.
Поделиться:

Похожие публикации

Тут ничего нет

Нет комментариев