Доля мусора 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)


  1. hurtavy
    26.04.2017 20:18
    +8

    5 мегабайт из двух десятков гигабайт — это, конечно же, «хорошо иллюстрирует, насколько неоптимизирован код операционной системы»


    1. Lelushak
      26.04.2017 23:50
      +1

      Я думаю, имелось в виду то, что вряд ли такой случай единичный. И если есть 5 мегабайт от adobe, то вполне может быть и 500 из какого-нибудь другого источника.


      1. clicky
        27.04.2017 09:38
        -7

        Вы что-то прокомментировали в интернете. Вряд ли такой случай единичный. Вполне возможно, что вы и наркотиками в интернете торгуете.


    1. Aingis
      27.04.2017 13:22

      Справедливости ради, тут говорилось о 5 МБ ресурсов, которые грузятся в память с каждым запущенным процессом. Например, для explorer.exe — это оболочка с кнопкой «Пуск» и каждое окно Проводника (чуть ли не включая диалоговые окна «Открыть файл»).


      1. cepera_ang
        27.04.2017 13:50
        -1

        Грузятся ли? Операционная система чуток умнее, и если они вот прямо сейчас не нужны, то ничего не грузится, а ресурсы из файла отображаются в память процесса и для нескольких процессов просто мапится нужное количество раз. А т.к. записи в исполняемые файлы обычно не происходят, то и копирования не происходит, зачем, если можно подтянуть всегда с диска при обращении? А после первого обращения лежит в файловом кеше в памяти, пока/если не понадобится для других задач.


      1. hurtavy
        27.04.2017 17:19
        +1

        Справедливости ради, там ссылка на результат обработки. Проверено 29265 файлов, судя по всему, смонтированного install.wim. Сейчас проверил, да, не два десятка гигабайт, а всего один… Поэтому исправлю свой комментарий:
        5341278 байт из почти 10 гигибайт — это, конечно же, «хорошо иллюстрирует, насколько неоптимизирован код операционной системы»


  1. imanushin
    26.04.2017 20:43
    +11

    хорошо иллюстрирует, насколько неоптимизирован код операционной системы

    Типичный обман от журналиста. Это не код, а ресурсы. Тогда уж "ряд ресурсов системы неоптимально используют дисковое пространство".


    1. Al_Azif
      29.04.2017 19:05
      +1

      «а система потребляет так много оперативной памяти (по сравнению с Linux)»

      Рабочая станция — 2гб потребляет винда.
      Рядом ноут с linux mint — постоянно забито 8гиг и ноут взлетает на вентиляторах, когда идёт копирование через wi-fi, т.к. по какой-то причине постоянно одно ядро работает на 100%.

      Дальше можно статью не читать.


  1. Rend
    26.04.2017 21:14
    +2

    Совсем не нужно пользоваться внешними утилитами, достаточно лишь отключить галочки записи метаданных в том же самом Adobe Photoshop.


    1. sumanai
      27.04.2017 05:20
      +2

      Эти внешние утилиты могут провести другие оптимизации, так что совсем не лишние.


    1. DjOnline
      27.04.2017 15:49
      +1

      File->Save for web же.


  1. pda0
    26.04.2017 21:22
    +4

    А мне вот наоборот, xmp помог. Надо было именно сохранить метаданные в картинках. Exif только в jpeg можно. Хорошо про xmp нагуглил.

    Забавно другое, если чуть ли не в каждом файле windows есть xmp, чего же тогда проводник его читать не умеет?


    1. braineater
      27.04.2017 11:58

      В пнг после маркера окончания файла можно любые данные пихать. Правда и прочитать такие данные можно только чем-то самописным.


      1. pda0
        27.04.2017 13:29
        +1

        Rarjpeg наше всё? ;-) Так можно почти куда угодно что угодно добавлять. А вот у xmp есть шанс пережить даже редактирование и перезапись файла (если выполнялось в графическом редакторе, понимающим xmp, вроде photoshop или gimp).


  1. dartraiden
    26.04.2017 23:08
    +14

    image


    1. beeruser
      27.04.2017 01:24
      -3

      Он вам не Лёха :-)


  1. mogaika
    27.04.2017 07:31

    Кроме того, они потребляют ресурсы CPU при парсинге XML во время обработки файлов.
    /bombit_yellow_mode on
    Если софт парсит — то ему это надо (ps, gimp), если нет — то он неизвестные секции пропускать будет просто. Давайте тогда скажем сколько много cpu тратится на сравнение длинных имен файлов.
    Эх, еще бы узнать сколько на диске занимают пустоты после файлов (когда в кластер не укладывается), а еще всякая служебная информация…
    Я не говорю что это хорошая практика, проблема с лишними метаданными есть, но зачем столь малозначительный факт в таком искаженном виде после купания в желтой краске? Если проблема майкрософт (критикуется их продукт), где сравнение с конкурентами? Не уверен что при разработке сайтов много кто заботится о оптимизации секций png. Почему продукты adobe по дефолту добавляют мусор в png — не это корень зла? или может это не мусор?
    отдел, который занимается оптимизацией производительности Windows
    Им баг зарепортили, или нет? В прочем, надеюсь, они занимаются более значимыми проблемами в системе (хотя, не удивлюсь если они их еще и плодят).


    1. mihmig
      27.04.2017 09:57
      +1

      Они занимаются более важными делами — например доказательством своей нужности.


    1. cepera_ang
      27.04.2017 13:59

      Потому что это ализар и ПЯТЬ МЕГАБАЙТ никогда не обрабатываемых xml'лек в ресурсах на двадцатигигабайтную операционку — это дикий пример неоптимизированности кода. Осталось только в конце написать: вендекапец близко!


  1. nikerossxp
    27.04.2017 09:32
    +2

    работа по оптимизация операционной системы в Microsoft поставлена не на высшем уровне

    Ага. Сборщики кастомных образов правят за ними ошибки в установщике, а баг с русским mui в серверной винде, где невозможно создать некоторые групповые политики (например, параметры меню пуск) до сих пор не исправили.


  1. Crandel
    27.04.2017 09:57

    Винду невозможно почистить — это не набор утилит как в юниксах, тут все связано, удалишь что-то одно — перестанет работать все. Нужно очень много времени выгребать то гамно, что они напихали туда.


    1. sumanai
      27.04.2017 11:24
      +1

      Вы думаете, что какая-то часть ОС может сломаться от отсутствия мусора в изображениях ресурсов?


      1. Crandel
        28.04.2017 11:44

        Да, это же винда


        1. sumanai
          28.04.2017 16:04

          А пруфы будут, или простое балабольство? Именно поломки от изменения метаданных в изображениях ресурсов.


          1. Crandel
            28.04.2017 16:14

            Там помимо метаданных куча мусора, которого никто чистить не будет. скоро 100 гиг только винде нужно будет


            1. sumanai
              28.04.2017 17:08

              Понятно, пруфов не будет. Приходите, когда кроме пустых слов будут факты.


              1. Crandel
                28.04.2017 17:14

                У меня нету винды уже года 4. Хотите пруфоф — удалите любой файл из system32


                1. sumanai
                  28.04.2017 17:46
                  +1

                  Так вы удалите любой файл из системного каталога любой ОС, и получите аналогичный результат. Впрочем, удалить системный файл в Windows не так то просто.


                  1. Crandel
                    28.04.2017 18:32

                    Нет, я могу удалить половину системных файлов на линуксе и он по прежнему будет запускаться. Нолько в винде все завязано намертво


                    1. sumanai
                      28.04.2017 18:50
                      +1

                      Нет, я могу удалить половину системных файлов на линуксе и он по прежнему будет запускаться.

                      Удалите каталог /boot/, раз вы настолько всемогущий.
                      Нолько в винде все завязано намертво

                      Установочный образ XP урезали до 75мб. Посчитать процент оставшихся файлов от оригинального образа в 600 мегабайт оставляю вам.


                      1. Crandel
                        28.04.2017 19:06
                        -2

                        Установочный образ XP урезали до 75мб. Посчитать процент оставшихся файлов от оригинального образа в 600 мегабайт оставляю вам.


                        Вот вы и подтвердили мои слова, что мусора там дофига, а спорите то как. Я не знаю, сколько времени ушло на эту чистку, но сомневаюсь, что в некрософт будут этим заниматься.


                        1. qw1
                          28.04.2017 20:00

                          Можно удалить DirectX, API для работы с принтерами и сканерами, утилиты типа regedit или chkdsk, diskpart, аплет управления громкостью и разрешением экрана, и система загрузится. Значит ли это, что всё перечисленное — мусор?


                          1. Crandel
                            28.04.2017 20:07

                            Конечно, часть из перечисленного вами мусор. И что же нужно для того, чтобы это все удалить?


                            1. qw1
                              28.04.2017 23:14

                              Читайте документацию. По каждому разделу API есть документация, какими DLL это API реализовано.

                              Кроме того, в системных файлах есть метаданные. В частности, краткое описание компонента. Есть желание разбираться — садитесь, читайте всё внимательно, думайте.


                        1. sumanai
                          28.04.2017 20:13

                          Вот вы и подтвердили мои слова, что мусора там дофига, а спорите то как.

                          Ваша ОС конечно же весит меньше, и вы прямо сейчас предоставите доказательства.
                          Ладно, это слишком жестоко. Окей, посчитайте, сколько будет весить дистрибутив вашей любимой ОС в минимальной комплектации. Но с GUI и прочим рабочем окружением, пусть и в минимальной комплектации.
                          Впрочем, я жду, когда вы удалите каталог /boot/ и перезагрузитесь. Я же вижу, что вы этого ещё не сделали.


                          1. Crandel
                            28.04.2017 20:18

                            Я не сказал, что все можно удалить и ось загрузится, я сказал что можна удалить часть системных файлов.


                            Окей, посчитайте, сколько будет весить дистрибутив вашей любимой ОС в минимальной комплектации. Но с GUI и прочим рабочем окружением, пусть и в минимальной комплектации.

                            Lightweight_Linux_distribution


                            1. sumanai
                              28.04.2017 20:42

                              Я не сказал, что все можно удалить и ось загрузится, я сказал что можна удалить часть системных файлов.

                              Я и не прошу у вас удалить всё. Я лишь прошу удалить пару файлов в каталоге /boot/, который вне всякого сомнения является системным и содержит системные же файлы.
                              Lightweight_Linux_distribution

                              Либо размер сопоставим с XP, либо ОС без гуя и вообще без ничего. Конкретно можете сказать, какая ОС весит копейки, имея всё необходимое?


                              1. Crandel
                                28.04.2017 20:55

                                Я и не прошу у вас удалить всё. Я лишь прошу удалить пару файлов в каталоге /boot/, который вне всякого сомнения является системным и содержит системные же файлы.

                                Это не системный каталог, это каталог загрузчика, он к системе не имеет отношения, он лишь позволяет ее загрузить.
                                /bin /usr /etc и /var — системные каталоги и часть файлов из них можно удалить.


                                То что вы привыкли к кнопочкам, не означает, что без них невозможно работать. Базовый образ арча весит 70-80 мб и в нем после установки уже можно работать. Точного веса иксов не знаю, но где-то в районе 200 метров, не больше.
                                Вот даже инструкция есть, как ужать убунту


                                ReducingDiskFootprint


                                1. sumanai
                                  28.04.2017 22:20
                                  +1

                                  часть файлов

                                  Часть не равно случайно. Так же как и часть файлов в system32 можно удалить, а часть нет.
                                  То что вы привыкли к кнопочкам, не означает, что без них невозможно работать.

                                  Я прекрасно работаю в консоли веб-сервера. Но для десктопа GUI лучше.
                                  Базовый образ арча весит 70-80 мб и в нем после установки уже можно работать.

                                  Отлично! Вы утверждаете, что в Windows полно мусора, хотя её образ того же размера имеет GUI и кучу инструментов, а у вашего любимого Linux в виде Arch там помещается только голая консоль.


                                  1. Crandel
                                    28.04.2017 22:34
                                    -2

                                    То что установочный образ ужали до 100 Мб не означает, что он столько занимает после установки. Вот только арч летает, моментально отзываясь на команды, а винда — жуткий тормоз, думает при каждом нажатии кнопки.
                                    Пользуйтесь чем хотите, меня это не волнует, я знаю, что винда — ущербная ось для домохозяек. Линукс надо подпиливать, с этим не спорю, но это как раз прекрасно, никто тебя не ограничивает, можна собрать тот конструктор, что именно тебе подходит.


                                    1. sumanai
                                      28.04.2017 23:54
                                      +2

                                      Что за стереотипы? Работа ОС зависит исключительно от пользователя. У меня под виндой ничего не глючит и не тормозит, а при попытках настроить убунту как мне хочется та начала ронять иксы и под конец перестала загружаться. Но я не говорю, что линь плохой, а признаю, что у меня не хватает знаний по настройке этой ОС.
                                      А вот вы никак не хотите признать недостаток ваших знаний в Windows и упорно талдычите свои мифы про мусор и тормоза при нажатии на каждую кнопку.


                                    1. Error1024
                                      02.05.2017 03:45
                                      +1

                                      я знаю, что винда — ущербная ось для домохозяек

                                      Типичное мнение ко ко ко веб-питуха, текущего от консоли если с оной.


    1. Error1024
      27.04.2017 12:28
      +2

      В UNIX все проще — ничего не работает.


      1. Crandel
        28.04.2017 11:43
        +1

        Да в юникс все проще, сам настроил и оно себе просто работает, не перезагружаясь, не посылая личные данные на сервера, не запуская долбанные обновления, не думая но несколько минут при нажатии кнопки

        Заголовок спойлера


  1. Idot
    27.04.2017 10:44
    -1

    Индусский код — это когда платят за количество строк, а когда платят за количество строк, то в код пихают мусор чтобы получилось побольше строк.


    1. Error1024
      02.05.2017 03:47

      Причем код?, тут метаданные в файлах.


  1. umbabaraumma
    27.04.2017 19:59

    Хорошо что я уже давно использую linux.


    1. Error1024
      02.05.2017 03:46

      «И таскаю всякий мусор в виде не нужных в данный момент драйверов — прямо в ядре!»


      1. umbabaraumma
        02.05.2017 20:37
        -1

        Меня это как раз устраивает. Когда ставишь винду то чтоб появился интернет надо скачать из интернета драйвер для сетевой карты. Попробуйте решить эту задачу без интернета и без драйверов. При установке линукса все железо сразу начинает работать не требуя установки драйверов.


        1. sumanai
          02.05.2017 20:49
          +1

          Когда ставишь винду то чтоб появился интернет надо скачать из интернета драйвер для сетевой карты.

          Как там, в 2008? Ибо начиная с семёрки такое редко встречается. Дистрибутив Windows постоянно растёт в объёме как раз из-за наличия в нём кучи драйверов. Но они грузятся в память только при необходимости.


  1. umbabaraumma
    02.05.2017 23:19

    Неделю назад ставил семерку, пришлось ставить кучу драйверов, и то не все удалось найти и поставить.


    1. sumanai
      02.05.2017 23:55
      +2

      Дык оборудование новее ОС лет на пять. Попробуйте поставить туда же убунту 8.04, я посмотрю, заведётся ли она там вообще. Вы бы ещё в пример XP привели, мол в попытках установить ОС 2001 года на ПК 2017 возникают проблемы.


      1. umbabaraumma
        06.05.2017 14:49

        Так там и железо было пятилетней давности, а то и старее, по этому и ставил 7-ку а не 8-ку или 10-ку.


  1. umbabaraumma
    02.05.2017 23:38
    -1

    «И таскаю всякий мусор в виде не нужных в данный момент драйверов — прямо в ядре!»

    Ибо начиная с семёрки такое редко встречается. Дистрибутив Windows постоянно растёт в объёме как раз из-за наличия в нём кучи драйверов. Но они грузятся в память только при необходимости.

    Смешно.


  1. umbabaraumma
    05.05.2017 21:03
    -2

    Набежали виндузятники и наставили минусов :)


  1. TheOleg
    06.05.2017 15:08

    Я недавно «оптимизировал» сайт одного заказчика. Там jpg и png были по 5мб, после пересохранения с тем же качеством, размер был меньше ста кб. В исходниках файлов были похожие метаданные от Маковского фотошопа. Кто-нибудь может подсказать КАК это вообще возможно было сделать?