Доля мусора 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 во время обработки файлов.
Программист и пользователь 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).
Комментарии (56)
imanushin
26.04.2017 20:43+11хорошо иллюстрирует, насколько неоптимизирован код операционной системы
Типичный обман от журналиста. Это не код, а ресурсы. Тогда уж "ряд ресурсов системы неоптимально используют дисковое пространство".
Al_Azif
29.04.2017 19:05+1«а система потребляет так много оперативной памяти (по сравнению с Linux)»
Рабочая станция — 2гб потребляет винда.
Рядом ноут с linux mint — постоянно забито 8гиг и ноут взлетает на вентиляторах, когда идёт копирование через wi-fi, т.к. по какой-то причине постоянно одно ядро работает на 100%.
Дальше можно статью не читать.
pda0
26.04.2017 21:22+4А мне вот наоборот, xmp помог. Надо было именно сохранить метаданные в картинках. Exif только в jpeg можно. Хорошо про xmp нагуглил.
Забавно другое, если чуть ли не в каждом файле windows есть xmp, чего же тогда проводник его читать не умеет?braineater
27.04.2017 11:58В пнг после маркера окончания файла можно любые данные пихать. Правда и прочитать такие данные можно только чем-то самописным.
pda0
27.04.2017 13:29+1Rarjpeg наше всё? ;-) Так можно почти куда угодно что угодно добавлять. А вот у xmp есть шанс пережить даже редактирование и перезапись файла (если выполнялось в графическом редакторе, понимающим xmp, вроде photoshop или gimp).
mogaika
27.04.2017 07:31Кроме того, они потребляют ресурсы CPU при парсинге XML во время обработки файлов.
/bombit_yellow_mode on
Если софт парсит — то ему это надо (ps, gimp), если нет — то он неизвестные секции пропускать будет просто. Давайте тогда скажем сколько много cpu тратится на сравнение длинных имен файлов.
Эх, еще бы узнать сколько на диске занимают пустоты после файлов (когда в кластер не укладывается), а еще всякая служебная информация…
Я не говорю что это хорошая практика, проблема с лишними метаданными есть, но зачем столь малозначительный факт в таком искаженном виде после купания в желтой краске? Если проблема майкрософт (критикуется их продукт), где сравнение с конкурентами? Не уверен что при разработке сайтов много кто заботится о оптимизации секций png. Почему продукты adobe по дефолту добавляют мусор в png — не это корень зла? или может это не мусор?
отдел, который занимается оптимизацией производительности Windows
Им баг зарепортили, или нет? В прочем, надеюсь, они занимаются более значимыми проблемами в системе (хотя, не удивлюсь если они их еще и плодят).mihmig
27.04.2017 09:57+1Они занимаются более важными делами — например доказательством своей нужности.
cepera_ang
27.04.2017 13:59Потому что это ализар и ПЯТЬ МЕГАБАЙТ никогда не обрабатываемых xml'лек в ресурсах на двадцатигигабайтную операционку — это дикий пример неоптимизированности кода. Осталось только в конце написать: вендекапец близко!
nikerossxp
27.04.2017 09:32+2работа по оптимизация операционной системы в Microsoft поставлена не на высшем уровне
Ага. Сборщики кастомных образов правят за ними ошибки в установщике, а баг с русским mui в серверной винде, где невозможно создать некоторые групповые политики (например, параметры меню пуск) до сих пор не исправили.
Crandel
27.04.2017 09:57Винду невозможно почистить — это не набор утилит как в юниксах, тут все связано, удалишь что-то одно — перестанет работать все. Нужно очень много времени выгребать то гамно, что они напихали туда.
sumanai
27.04.2017 11:24+1Вы думаете, что какая-то часть ОС может сломаться от отсутствия мусора в изображениях ресурсов?
Crandel
28.04.2017 11:44Да, это же винда
sumanai
28.04.2017 16:04А пруфы будут, или простое балабольство? Именно поломки от изменения метаданных в изображениях ресурсов.
Crandel
28.04.2017 16:14Там помимо метаданных куча мусора, которого никто чистить не будет. скоро 100 гиг только винде нужно будет
sumanai
28.04.2017 17:08Понятно, пруфов не будет. Приходите, когда кроме пустых слов будут факты.
Crandel
28.04.2017 17:14У меня нету винды уже года 4. Хотите пруфоф — удалите любой файл из system32
sumanai
28.04.2017 17:46+1Так вы удалите любой файл из системного каталога любой ОС, и получите аналогичный результат. Впрочем, удалить системный файл в Windows не так то просто.
Crandel
28.04.2017 18:32Нет, я могу удалить половину системных файлов на линуксе и он по прежнему будет запускаться. Нолько в винде все завязано намертво
sumanai
28.04.2017 18:50+1Нет, я могу удалить половину системных файлов на линуксе и он по прежнему будет запускаться.
Удалите каталог /boot/, раз вы настолько всемогущий.
Нолько в винде все завязано намертво
Установочный образ XP урезали до 75мб. Посчитать процент оставшихся файлов от оригинального образа в 600 мегабайт оставляю вам.Crandel
28.04.2017 19:06-2Установочный образ XP урезали до 75мб. Посчитать процент оставшихся файлов от оригинального образа в 600 мегабайт оставляю вам.
Вот вы и подтвердили мои слова, что мусора там дофига, а спорите то как. Я не знаю, сколько времени ушло на эту чистку, но сомневаюсь, что в некрософт будут этим заниматься.qw1
28.04.2017 20:00Можно удалить DirectX, API для работы с принтерами и сканерами, утилиты типа regedit или chkdsk, diskpart, аплет управления громкостью и разрешением экрана, и система загрузится. Значит ли это, что всё перечисленное — мусор?
Crandel
28.04.2017 20:07Конечно, часть из перечисленного вами мусор. И что же нужно для того, чтобы это все удалить?
qw1
28.04.2017 23:14Читайте документацию. По каждому разделу API есть документация, какими DLL это API реализовано.
Кроме того, в системных файлах есть метаданные. В частности, краткое описание компонента. Есть желание разбираться — садитесь, читайте всё внимательно, думайте.
sumanai
28.04.2017 20:13Вот вы и подтвердили мои слова, что мусора там дофига, а спорите то как.
Ваша ОС конечно же весит меньше, и вы прямо сейчас предоставите доказательства.
Ладно, это слишком жестоко. Окей, посчитайте, сколько будет весить дистрибутив вашей любимой ОС в минимальной комплектации. Но с GUI и прочим рабочем окружением, пусть и в минимальной комплектации.
Впрочем, я жду, когда вы удалите каталог /boot/ и перезагрузитесь. Я же вижу, что вы этого ещё не сделали.Crandel
28.04.2017 20:18Я не сказал, что все можно удалить и ось загрузится, я сказал что можна удалить часть системных файлов.
Окей, посчитайте, сколько будет весить дистрибутив вашей любимой ОС в минимальной комплектации. Но с GUI и прочим рабочем окружением, пусть и в минимальной комплектации.
sumanai
28.04.2017 20:42Я не сказал, что все можно удалить и ось загрузится, я сказал что можна удалить часть системных файлов.
Я и не прошу у вас удалить всё. Я лишь прошу удалить пару файлов в каталоге /boot/, который вне всякого сомнения является системным и содержит системные же файлы.
Lightweight_Linux_distribution
Либо размер сопоставим с XP, либо ОС без гуя и вообще без ничего. Конкретно можете сказать, какая ОС весит копейки, имея всё необходимое?Crandel
28.04.2017 20:55Я и не прошу у вас удалить всё. Я лишь прошу удалить пару файлов в каталоге /boot/, который вне всякого сомнения является системным и содержит системные же файлы.
Это не системный каталог, это каталог загрузчика, он к системе не имеет отношения, он лишь позволяет ее загрузить.
/bin /usr /etc и /var — системные каталоги и часть файлов из них можно удалить.
То что вы привыкли к кнопочкам, не означает, что без них невозможно работать. Базовый образ арча весит 70-80 мб и в нем после установки уже можно работать. Точного веса иксов не знаю, но где-то в районе 200 метров, не больше.
Вот даже инструкция есть, как ужать убунту
sumanai
28.04.2017 22:20+1часть файлов
Часть не равно случайно. Так же как и часть файлов в system32 можно удалить, а часть нет.
То что вы привыкли к кнопочкам, не означает, что без них невозможно работать.
Я прекрасно работаю в консоли веб-сервера. Но для десктопа GUI лучше.
Базовый образ арча весит 70-80 мб и в нем после установки уже можно работать.
Отлично! Вы утверждаете, что в Windows полно мусора, хотя её образ того же размера имеет GUI и кучу инструментов, а у вашего любимого Linux в виде Arch там помещается только голая консоль.Crandel
28.04.2017 22:34-2То что установочный образ ужали до 100 Мб не означает, что он столько занимает после установки. Вот только арч летает, моментально отзываясь на команды, а винда — жуткий тормоз, думает при каждом нажатии кнопки.
Пользуйтесь чем хотите, меня это не волнует, я знаю, что винда — ущербная ось для домохозяек. Линукс надо подпиливать, с этим не спорю, но это как раз прекрасно, никто тебя не ограничивает, можна собрать тот конструктор, что именно тебе подходит.sumanai
28.04.2017 23:54+2Что за стереотипы? Работа ОС зависит исключительно от пользователя. У меня под виндой ничего не глючит и не тормозит, а при попытках настроить убунту как мне хочется та начала ронять иксы и под конец перестала загружаться. Но я не говорю, что линь плохой, а признаю, что у меня не хватает знаний по настройке этой ОС.
А вот вы никак не хотите признать недостаток ваших знаний в Windows и упорно талдычите свои мифы про мусор и тормоза при нажатии на каждую кнопку.
Error1024
02.05.2017 03:45+1я знаю, что винда — ущербная ось для домохозяек
Типичное мнение ко ко ко веб-питуха, текущего от консоли если с оной.
Error1024
27.04.2017 12:28+2В UNIX все проще — ничего не работает.
Crandel
28.04.2017 11:43+1Да в юникс все проще, сам настроил и оно себе просто работает, не перезагружаясь, не посылая личные данные на сервера, не запуская долбанные обновления, не думая но несколько минут при нажатии кнопки
Заголовок спойлераumbabaraumma
27.04.2017 19:59Хорошо что я уже давно использую linux.
Error1024
02.05.2017 03:46«И таскаю всякий мусор в виде не нужных в данный момент драйверов — прямо в ядре!»
umbabaraumma
02.05.2017 20:37-1Меня это как раз устраивает. Когда ставишь винду то чтоб появился интернет надо скачать из интернета драйвер для сетевой карты. Попробуйте решить эту задачу без интернета и без драйверов. При установке линукса все железо сразу начинает работать не требуя установки драйверов.
sumanai
02.05.2017 20:49+1Когда ставишь винду то чтоб появился интернет надо скачать из интернета драйвер для сетевой карты.
Как там, в 2008? Ибо начиная с семёрки такое редко встречается. Дистрибутив Windows постоянно растёт в объёме как раз из-за наличия в нём кучи драйверов. Но они грузятся в память только при необходимости.
umbabaraumma
02.05.2017 23:19Неделю назад ставил семерку, пришлось ставить кучу драйверов, и то не все удалось найти и поставить.
sumanai
02.05.2017 23:55+2Дык оборудование новее ОС лет на пять. Попробуйте поставить туда же убунту 8.04, я посмотрю, заведётся ли она там вообще. Вы бы ещё в пример XP привели, мол в попытках установить ОС 2001 года на ПК 2017 возникают проблемы.
umbabaraumma
06.05.2017 14:49Так там и железо было пятилетней давности, а то и старее, по этому и ставил 7-ку а не 8-ку или 10-ку.
umbabaraumma
02.05.2017 23:38-1«И таскаю всякий мусор в виде не нужных в данный момент драйверов — прямо в ядре!»
Ибо начиная с семёрки такое редко встречается. Дистрибутив Windows постоянно растёт в объёме как раз из-за наличия в нём кучи драйверов. Но они грузятся в память только при необходимости.
Смешно.
TheOleg
06.05.2017 15:08Я недавно «оптимизировал» сайт одного заказчика. Там jpg и png были по 5мб, после пересохранения с тем же качеством, размер был меньше ста кб. В исходниках файлов были похожие метаданные от Маковского фотошопа. Кто-нибудь может подсказать КАК это вообще возможно было сделать?
hurtavy
5 мегабайт из двух десятков гигабайт — это, конечно же, «хорошо иллюстрирует, насколько неоптимизирован код операционной системы»
Lelushak
Я думаю, имелось в виду то, что вряд ли такой случай единичный. И если есть 5 мегабайт от adobe, то вполне может быть и 500 из какого-нибудь другого источника.
clicky
Вы что-то прокомментировали в интернете. Вряд ли такой случай единичный. Вполне возможно, что вы и наркотиками в интернете торгуете.
Aingis
Справедливости ради, тут говорилось о 5 МБ ресурсов, которые грузятся в память с каждым запущенным процессом. Например, для explorer.exe — это оболочка с кнопкой «Пуск» и каждое окно Проводника (чуть ли не включая диалоговые окна «Открыть файл»).
cepera_ang
Грузятся ли? Операционная система чуток умнее, и если они вот прямо сейчас не нужны, то ничего не грузится, а ресурсы из файла отображаются в память процесса и для нескольких процессов просто мапится нужное количество раз. А т.к. записи в исполняемые файлы обычно не происходят, то и копирования не происходит, зачем, если можно подтянуть всегда с диска при обращении? А после первого обращения лежит в файловом кеше в памяти, пока/если не понадобится для других задач.
hurtavy
Справедливости ради, там ссылка на результат обработки. Проверено 29265 файлов, судя по всему, смонтированного install.wim. Сейчас проверил, да, не два десятка гигабайт, а всего один… Поэтому исправлю свой комментарий:
5341278 байт из почти 10 гигибайт — это, конечно же, «хорошо иллюстрирует, насколько неоптимизирован код операционной системы»