Некоторые системные файлы Windows забиты мусором метаданных от Adobe

b3635fd368d5e8740dc2b48cb7a7f2a5.png
Доля мусора Adobe XMP в системных файлах Explorer.exe и ApplicationFrame.dll

Объём системных файлов Windows вырос с 250–350 МБ в Windows 98 до 700–800 МБ в Windows XP, а затем до 10–15 ГБ в Windows 7 и продолжает расти. Если вы задавались вопросом, почему дистрибутив Windows 10 занимает так много места на диске, а система потребляет так много оперативной памяти (по сравнению с Linux), то знайте, что маленькая, очень маленькая часть вины за это лежит на компании Adobe. Именно Adobe разработала и продвигает технологию Extensible Metadata Platform (XMP), которая раздувает размер файлов (например, PNG), а затем эти раздутые файлы PNG включаются в состав системных бинарников Windows.

Доля XMP невелика в общем объёме дистрибутива Windows 10 (всего лишь 5341271 лишний байт), хотя в отдельных файлах значительная часть занята лишними метаданными. И это не какие-то цифровые подписи от крякнутой программы Sound Forge, с помощью которой создавались системные WAV-файлы для Windows 95, а совершенно ненужные и неинформативные метаданные PNG.
Что такое Adobe XMP? Попросту говоря, эта платформа метаданных, которая позволяет запихивать разнообразную информацию в файлы форматов PNG, GIF, JPEG, PSD, TIFF и многих других. Сама платформа позволяет разным программам обмениваться данными через XMP. То есть одна программа может сохранить туда, например, цветовой профиль, а другая программа извлечёт его. В эти контейнеры внедряют различные заголовки, идентификаторы, координаты GPS, цветовую информацию и прочее.

Обычно XMP представляется конструкциями из подмножества модели RDF, которые в свою очередь обычно сериализуется в виде XML. К сожалению, многие пользователи сами того не зная раздувают размеры графических файлов и заполняют их мусором Adobe XMP при сохранении файлов. Просто в некоторых программах таковы настройки сохранения по умолчанию. Например, таковы дефолтные параметры в Adobe Photoshop.

В формате XML эти данные занимают довольно много места. Кроме того, они потребляют ресурсы CPU при парсинге XML во время обработки файлов.

a1fffd553dfc0a0ba254b6f4793e5ce3.png

Программист и пользователь Windows 10 Рафаэль Ривера (Rafael Rivera) заинтересовался:, а сколько же на самом деле мусора Adobe XMP в разных файлах? Чтобы ответить на этот вопрос, он написал утилиту eoraptor, исходный код которой опубликован на Github.

Рафаэль говорит, что очень удивился, когда программа нашла огромное количество мусора XMP даже в системных файлах Windows 10! Он писал программу вовсе не для анализа этого детища Microsoft, а для быстрого изучения графических файлов. Но выяснилось, что и разработчики Microsoft небезгрешны — и внедряют ненужную информацию даже в системные файлы!

Например, системный Проводник (Windows Explorer), который загружается в память при старте операционной системы, на целых 20% состоит из мусора. Или взять другой системный файл ApplicationFrame.dll, который тоже загружается в память на старте системы — он отвечает за заголовки и рамки окон приложений. В ней ненужный XML-контент занимает 41% всего объёма библиотеки!

Рафаэль Ривера пишет, что содержимое XMP неизбежно проникает в разные системные компоненты, связанные с графикой, программы для просмотра изображений и связанные компоненты.

Эта проблема кажется пустяковой, но на самом деле показывает некоторую неоптимизированность операционной системы. Лишние компоненты в системных файлах немножечко сказываются на всех аспектах производительности ОС: на времени загрузки, на размерах образа и занимаемом месте на диске после установки системы, на объёме обновлений, на валидации при исполнении файлов с цифровой подписью Authenticode и т. д. Что характерно, в Microsoft есть отдел, который занимается оптимизацией производительности Windows. По идее, это должно быть в сфере его компетенции. Именно такие вещи они должны бы отслеживать.

Microsoft может довольно быстро и просто исправить ситуацию, просто сжав все изображения PNG, которые входят в состав системных файлов. Благо существует много утилит, которые оптимизируют PNG без потери качества, эффективно удаляя оттуда ненужные метаданные. Возможно, компания проведёт такую оптимизацию и обновит системные файлы с ближайшим билдом.

А сейчас приходится констатировать, что работа по оптимизация операционной системы в Microsoft поставлена не на высшем уровне или у разработчиков есть какие-то причины сохранять метаданные XMP в системных файлах. Наверное, им стоит брать пример со своих коллег из группы разработки браузера Microsoft Edge. Они уже провели оптимизацию всех файлов: избавились от лишнего мусора в PNG с помощью PNGDistill, а затем дополнительно сжали бинарники с помощью алгоритма Google ZopFli.

Менеджер программы Microsoft Internet Explorer Эрик Лоуренс недавно рассказывал о проведённой оптимизации.

Каждый владелец сайта может сэкономить трафик, просто обработав свои файлы PNG утилитой PNGDistill (модуль на Python).

© Geektimes