Работа над ядром Linux 7.3 продолжается, и необычный источник прислал исправление ошибки: сам Линус. Ну, вроде того…
Новое исправление имеет заголовок Не раздавайте плоское хранилище CCS как доступную видеопамять, и оно исходит от императорского пингвина Линуса Торвальдса.
Теперь, когда вышло ядро 7.2, команда усиленно работает над тем, что станет ядром 7.3, а это значит массовое исправление ошибок. Однако, хотя Торвальдс по-прежнему руководит общим проектом ядра, как он не раз говорил, в том числе со сцены в ноябре прошлого года, «последние почти 20 лет я не был программистом».
Эта ошибка является исключением из этого правила, но лишь отчасти. Сама техническая проблема была не слишком интересной. Из-за оплошности в драйвере ядра для графики Intel Xe машины зависали во время загрузки, как раз в тот момент, когда ОС переключается в графический режим для показа экрана входа. Уже одно это затрудняет диагностику.
Проблема заключалась в том, как графический драйвер резервировал память, используемую Intel Compute Command Streamer (или сокращенно CCS), который документация драйвера Intel i915 описывает как: «Движок, имеющий доступ к конвейерам медиа и GPGPU, но не к 3D-конвейеру». Драйвер пытается определить его местоположение, берет память под ним и после некоторых других шагов округляет её до кратного 128 кБ и устанавливает как свободную для использования видеопамять.
Проблема заключалась в округлении вверх — потому что иногда это означало пометку как доступной памяти, которая уже используется. Следовало округлять вниз. Это однострочное исправление, но проблема заключалась в поиске ошибки.
Здесь история становится интересной по нескольким причинам. Одна из них — в сопутствующем письме содержится необычно большое примечание, которое гласит следующее:
Здесь есть несколько интересных моментов. Во-первых, исправление от самого Линуса. Во-вторых, необычно пространное примечание. Третье и, пожалуй, самое важное — он использовал бота для поиска ошибки. Он также использовал его для написания отчета об ошибке, что объясняет, почему эта часть такая скучная и безжизненная. (Описание патча, однако, отмечает, что если просто перезапустить программу, показывающую экран входа — в данном случае GDM, GNOME Display Manager — всё работает, потому что во второй раз она получает другой блок памяти.)
Это хороший пример того, как боты для написания кода являются по-настоящему полезным инструментом для разработчиков. Похоже, он не использовал бота для написания самого исправления — в этом не было необходимости, это однострочное исправление — но бот написал 42 фрагмента тестового кода, которые позволили Линусу найти ошибку. Похоже, это была тяжелая работа. (Сорок два, а? Должно быть, потребовалась глубокая мысль.)
Как примечание, также интересно отметить продолжающиеся проблемы, вызванные тем, что большинство современных графических контроллеров ПК имеют собственный отдельный блок ОЗУ, который не разделяется с процессором. Некоторые машины на Arm64 — в частности, на Apple Silicon — избегают этого, имея единый пул ОЗУ, общий для обоих. Поскольку память дорожает из-за вызванного AI-гиперскейлерами дефицита ОЗУ, мы наблюдаем другие патчи в этой области.
Если у вас мало основной системной памяти, но GPU хорошо оснащены, патч NBD-VRAM Шона Лобджойта позволяет машине под Linux использовать любую оставшуюся видеопамять в качестве очень быстрой области подкачки. И наоборот, Натали Вок из Valve написала патч, который ускоряет недорогие GPU AMD при попытке выделить больше видеопамяти, чем у них есть, и она объяснила это гораздо подробнее на прошлой неделе.
Как мы предполагали ранее в этом году, мы подозреваем, что более тесная интеграция кремния Apple и единый общий пул памяти — это путь, по которому в конечном итоге пойдет индустрия.
Примечание редакции
Мы благодарим нашего уважаемого коллегу Саймона Шарвуда за прозвище «Императорский пингвин» — мы считаем, что на The Reg он впервые использовал его десять лет назад. Мы также благодарим его за то, что он указал нам на это исправление. ®
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Liam Proven




