Linux.Ру

Линус Торвальдс принимает обновление Microsoft Hyper-V, чтобы следующее поколение Linux загружалось быстрее

В то время как фанаты Windows и Linux любят часто ввязываться в жаркие клавиатурные войны, сами создатели ОС понимают сильные и слабые стороны друг друга. Нет сомнений, что Microsoft тоже это понимает и, по сути, она даже призывает пользователей попробовать Linux , хотя и с использованием своей Windows Subsystem of Linux (WSL).

Мало того, компания также часто продвигает обновления, которые призваны улучшить производительность Linux или расширить его функциональность. Например, еще в ноябре 2022 года Microsoft продвигала вложенную виртуализацию или поддержку вложенного Hyper-V . А в сентябре прошлого года руководитель Linux Линус Торвальдс принял улучшения Hyper-V, связанные с гостевыми системами AMD SEV-SNP и гостевыми системами Intel TDX , которые были отправлены главным архитектором Microsoft в Azure Machine Learning Вэй Лю. Торвальдс в очередной раз принял новые обновления Hyper-V от Лю для Linux 6.12, и одно из них, в частности, представляет особый интерес с точки зрения производительности. Его представил Саурабх Сингх Сенгар из Microsoft:

Получите обновления Hyper-V от Вэй Лю:

  • Оптимизация времени загрузки за счет одновременного выполнения hv_synic_init() (Саураб Сенгар)
  • Используйте помощников для чтения регистров управления в hv_snp_boot_ap() (Йосри Ахмед)
  • Добавить проверку выделения памяти в hv_fcopy_start (Чжу Цзюнь)

Описание патча объясняет, как распараллеливание функции hv_synic_init() может улучшить время загрузки на процессорах с большим количеством ядер и узлами NUMA (неравномерный доступ к памяти):

Оптимизация времени загрузки за счет одновременного выполнения hv_synic_init()

В настоящее время на очень большой системе с 1780 ЦП hv_acpi_init() занимает около 3 секунд для завершения. Это происходит из-за последовательной синергетической инициализации для каждого ЦП, выполняемой hv_synic_init().

Запланируйте эти задачи параллельно, чтобы каждый ЦП выполнял hv_synic_init() параллельно, чтобы в полной мере использовать преимущества нескольких ЦП.

Это решение экономит около 2 секунд времени загрузки системы с процессором 1780, что составляет улучшение примерно на 66% по сравнению с существующей логикой.

Сенгар также недавно сделал презентацию о своих открытиях под названием «Ускорение загрузки ядра Linux для больших многоядерных систем», в которой подробно рассматриваются детали этого патча и другие оптимизации, которые в настоящее время проводятся. Вы можете найти ее здесь, на веб-сайте Linux Plumbers Conference (LPC).