Как тормозят современные версии Linux в виртуальной машине и решение проблемы
Предисловие
Linux и проблемы, хм, довольно типичная ситуация... Казалось бы, какие ещё чудеса вечно проблемных линуксов можно обнаружить в 2024 году? А ведь можно, линуксоиды очень любят создавать проблемы там, где изначально не было проблем, например ломая llvmpipe драйвер и Mesa3D в целом, или ломая обратную совместимость в самом линуксе.
Причём важно заметить, если говоря про линуксы обычно подразумеваются дистрибутивы Linux, то сейчас говорить буду в основном про само ядро Linux, ибо недавно выявленная проблема зависит именно от ядра, а не дистрибутивов на его основе.
А проблема проявляет себя в виртуальной машине VirtualBox, и возможно в других виртуальных машинах, но другие не тестировал, так что не скажу ничего за другие виртуальные машины.
Проблема
Вообще, эту проблему я обнаружил уже давно, однако не обращал особо внимания, ведь при установке линуксов на реальный ПК она себя не проявляет, однако сейчас мой дистрибутив Chimbalix работает на ядре Linux 6.9, и чем новее версия линукса - тем сильнее проявляется проблема по моим наблюдениям...
Продолжать работу над новыми версиями Chimbalix довольно проблематично, ибо спустя некоторое время всё начинает зависать в виртуальной машине по вине "дряхлого пингвина", потому взялся за это, и не безрезультатно.
Суть проблемы состоит в том, что операционная система на основе Linux постепенно начинает тормозить, чем дольше используется - тем больше тормозов, причём искать в интернете решение бесполезно, ведь там будут тонны иных линуксоидных проблем, и найти "то самое" просто невозможно по итогу:
Эту проблему Linux довольно сложно продемонстрировать скриншотами, потому было решено записать наглядную демонстрацию в формате видео:
Зависит ли проблема от версии VirtualBox?
На самом деле сложно проверять старые версии VirtualBox под линуксом, ведь разработчики ядра Linux постоянно ломают обратную совместимость, от чего страдают не только нормальные драйверы видеокарт NVIDIA (вину за это перекладывают на саму NVIDIA), но и такие вещи как виртуальные машины, ведь они не могут скомпилировать модули из-за поломанной обратной совместимости в ядре (опять виноваты кто угодно, но не вечно кривой Linux?)...
По итогу минимальная протестированная версия это 7.0.12, но проблема ничуть не менялась, да и более старые версии с Linux 6.9 не дружат, увы, это вам не Windows:
Ну а что до новых версий VirtualBox начиная с 7.1.x... Впрочем, ничего нового, разработчики опять поломали что нормально работало раньше, просто идеальное сообщение об ошибке:
Хотя нет, вот идеальное сообщение об ошибке, хотя уже от другого линуксоидного софта, забавно, не правда ли, сколько всяких интересных ошибок можно обнаружить с линуксами, если ими действительно пользоваться, а не на словах и паре скриншотов как у постоянно ноющих линуксоидов под неугодными статьями в интернете:
Так что лучше подожду пока выпустят хотя бы два десятка новых версий с исправлениями, прежде чем притронусь к новой "Ритуальной Коробке", хотя это не гарантирует что всё исправят... Вон, разработчики Mesa3D с 2021 года как поломали драйвер llvmpipe, так и не починили даже в 2024 году, наоборот, ещё больше поломали всякого.
Есть ли зависимость от настроек виртуальной машины?
Нет, такой зависимости не обнаружил, какие бы настройки не трогал - результат всегда однозначный, дистрибутивы с ядром Linux 6.6 и новее независимо от настроек заканчивали тормозами как на видео, либо просто постоянными тормозами из-за неподходящего драйвера графики виртуальной машины, я даже аудио устройство полностью отключал, и с параметрами накопителя ковырялся, ничего не помогало:
Какие версии ядра Linux подвержены проблеме?
Начиная с Linux 6.6 и всё что новее, с Linux 6.5 и старее не заметил проблем, эх, в линуксах всегда так, ломают что нормально работало раньше, а потом возмущаются, почему никому и даром не сдались вечно кривые линуксы...
Есть ли зависимость от основной операционной системы (HOST)?
Нет, такой зависимости не обнаружено, проблема проявляется сугубо внутри виртуальной машины, и никак не зависит от внешних факторов, хоть там Windows, хоть Nobara с ядром Linux 6.10, перезагрузка гостевой системы без сброса виртуальной машины позволяет "начать заново" без тормозов, это значит что тормозит не виртуальная машина, а именно Linux работающий в виртуальной машине.
Ухудшается ли ситуация с новыми версиями Linux?
Неоднозначно, но по наблюдениям, с каждой новой версией ядра в пределах одного и того же дистрибутива проблема проявляет себя немного агрессивнее, хотя это не точно.
Какие ещё известны проявления?
Помимо зависаний и тормозов графического интерфейса есть проявления со стороны аудио, при наличии проблемы звук может прерываться, заикаться, искажаться, но может и не быть проблем со звуком, хотя это редко бывает, обычно с тормозами графического интерфейса следом идут и проблемы с аудио.
-
--
Решение
Вероятно каждый столкнувшийся хоть раз в жизни с линуксами на ПК и ноутбуках знает не по наслышке, какое это болото проблем и терминального мракобесия, едва ли пригодного для нормального использования...
Так вот, Linux превзошёл сам себя в плане вечных проблем, ведь на реальный ПК устанавливать дистрибутивы линукса весьма неразумное решение, порой чреватое потерей информации на диске, иначе некоторые дистрибутивы невозможно установить, но в виртуальной машине Linux тормозит безбожно, а ведь любой разумный человек именно в виртуальную машину будет устанавливать линуксы если захочет попробовать.
Самое элементарное решение состоит в установке более старого ядра Linux, например стандартное для Debian 12 ядро версии 6.1, или любое другое до версии 6.5 включительно, но, как все уже догадались, это такой себе компромисс в вечно недоразвитой экосистеме линуксов, разработчики которой несутся в бездонную адскую дыру из вечно поломанных драйверов и модулей, просто потому что не осилили нормальную обратную совместимость хотя бы как в Windows...
Изначально я вообще не мог понять, как подойти к проблеме зависаний линукса, читать помойку из линуксоидных логов конечно вариант, но я решил пойти более простым путём и проанализировать имеющуюся информацию.
В итоге пришёл к выводу, что проблема может таиться в графической части ядра Linux, и не прогадал, ведь если отключить загрузку графических драйверов параметром "nomodeset" - проблема испаряется (параметр нужно вписать вручную):
Однако появляется другая проблема, так как система работает в "безопасном режиме" - виртуальная машина не может управлять разрешением экрана гостевой системы, хотя никто не мешает настроить экран через контрольную панель, но есть и проблема похуже:
Правильно, интерфейс системы работает не так плавно и быстро, как должен, и 3D ускорение невозможно включить, вернее возможно, но внутри виртуальной машины оно ничего не даст, ведь с параметром загрузки "nomodeset" драйверы DRM (не путать с вредоносными системами "защиты авторских прав") и fbdev не загружаются.
Вот для сравнения система загружена с параметром "nomodeset" и без параметра, грубо говоря в первом случае всё рисуется сугубо процессором, интерфейс очень неприятно работает, зато нет проблем с зависаниями спустя некоторое время использования, во втором случае уже обычная работа большинства дистрибутивов, но спустя время начнутся зависания даже несмотря на активное 3D ускорение, да, оно хоть и работает в данном случае, но не решает проблему зависаний и тормозов спустя время:
Из этого всего следует, что начиная с Linux 6.6 в очередной раз что-то поломали и не починили, а страдать конечно же пользователям линуксоидных поделок.
-
--
Заключение
Вот так в здоровенную копилку добавилась ещё одна проблема, исправят ли её в самом ядре Linux, где и поломали? Или может исправлять будут кто угодно, но не те, кто поломал? Или оставят поломанным, чтобы доломать ещё больше в будущем, как это делают с Mesa3D...
Сложно сказать, но проблема есть, и её не было раньше, то есть она создана и до сих пор не исправлена, хотя чему тут удивляться, ведь так часто происходит в линуксах, а потом адепты ноют в комментариях под всеми неугодными статьями в интернете, мол, почему это подавляющее большинство людей недолюбливают Linux как операционную систему для ПК и ноутбуков... Даже не знаю, пользователи наверное глупые, криворукие вендузятники, или как там обычно ворчат линуксоиды.
Никакие вопли от заядлых линуксоидов в интернете, к сожалению, не исправят многие подобные проблемы, ну а для меня это всё означает очередные пляски с бубном при разработке дистрибутива, и возможно необходимость в разделении дистрибутива на несколько веток, как порой делают другие...
С одной стороны можно и в режиме "nomodeset" работать над новыми версиями Chimbalix, и плевать что там в очередной раз поломали Linux, ведь на реальном ПК нормально работает (в смысле, нормально для линуксов), но с другой стороны приятнее когда всё нормально работает и в виртуальной машине, но с ядром 6.1-6.5, однако это лишние танцы над бубном, ведь установка дополнительного ядра это порой не просто установить дополнительное ядро и пользоваться, нет, конфликты линуксоидных модулей никто не отменял из-за поломанной обратной совместимости в ядре.
Вроде и есть решения для линуксоидной проблемы, но в любом случае это компромиссы, увы, ибо я не возьму и не перепишу "дряхлого пингвина", чтобы он наконец нормально заработал, особенно когда есть масса других забот, просто ведро помоев на голову людям постоянно всё ломающим, что раньше нормально работало в таких базовых вещах как ядро Linux, драйверы Mesa3D и т.п...
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила