The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Разработчики MontaVista рассказали о методах сокращения загрузки Linux до 1 сек.

07.03.2010 20:28

Летом прошлого года компания MontaVista продемонстрировала загружаемый менее чем за 1 секунду вариант своего Linux дистрибутива для встраиваемых устройств. На днях разработчики MontaVista дали интервью изданию EDN, в котором рассказали о дальнейшем продвижении в оптимизации процесса загрузки. Сокращение времени от включения устройства до готовности к работе пользовательского приложения особенно востребовано для нетбуков, мобильных устройств и такого оборудования, как информационные табло.

Современные процессоры способны выполнять миллиарды операций в секунду, основные задержки в процессе загрузки главным образом связаны с инициализацией оборудования и операциями ввода/вывода. Для того чтобы добиться уменьшения времени загрузки до 1 секунды, в MontaVista работа была разделена на три стадии:

  1. Оптимизация работы загрузчика и сокращение объема загружаемого кода. Так как основная цель разработки - мобильные устройства, был принят тезис, что аппаратное окружение между перезагрузками не изменяется, что позволило заведомо исключить из ядра ненужные драйверы и проверки. В итоге, время загрузки было сокращено до 7 секунд.
  2. Оптимизация процесса инициализации. С учетом особенностей текущего аппаратного обеспечения, процесс инициализации был разделен на несколько параллельных ветвей, для одновременного выполнения задач в которых в процессе загрузки активно используется DMA (direct-memory-access). DMA-агенты перемещают различные загрузочные задачи между Flash-памятью и памятью CPU, что используется для фонового выполнения операций с минимальной нагрузкой на CPU, кэша в котором вполне хватает для выполнения подобных вещей в параллельном режиме. Использование DMA позволило сократить время загрузки с 7 до 4 секунд.
  3. Оптимизация запуска пользовательских приложений. Для запуска первичных приложений используется RAM-диск. Приложения загружаются прямо в кэш страниц памяти ядра, минуя стадию связывания и запуска. Дополнительно, при взаимодействии с разработчиками прикладных программ, проводится разделение приложения на логические части. Вместо загрузки всей программы, осуществляется загрузка лишь самого необходимого для начала работы кода. В итоге, время загрузки удалось свести к примерно 1 секунде.


  1. Главная ссылка к новости (http://www.edn.com/article/CA6...)
  2. OpenNews: Демонстрация загрузки Linux менее чем за секунду
  3. OpenNews: Linux достиг времени загрузки в 1 секунду
  4. OpenNews: Подробности метода сокращения загрузки Asus EeePC до 5 секунд
Лицензия: CC-BY
Тип: К сведению
Ключевые слова: linux, boot, optimization
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (18) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, DFX (?), 21:25, 07/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    ну за'hard'кодить всё, это понятно, но вот эти неведомые оптимизации инициализации они в busybox отослали или нет, интересно ^_^
    и что там куда конкретно перемещается тоже...

    фраза типа: "Для запуска первичных приложений ... минуя стадию связывания и запуска." тоже требует пояснения:
    со связыванием они имеют ввиду, что догадались статично собрать ?
    а что означает "для запуска оно минует стадию запуска" :) ?

    а вообще, молодцы проприетарщики, ага. постарались...

     
     
  • 2.2, pavlinux (ok), 21:54, 07/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > но вот эти неведомые оптимизации
    > и что там куда конкретно перемещается
    > тоже требует пояснения:
    > а что означает

    Prelink, Preload, COW, XIP,...  


    ----

    Ну из интересного, раскололись только про DMA-агенты, остальное баяны вековые.

     
     
  • 3.6, Twin (??), 07:00, 08/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Интересно тогда узнать, почему не берут на вооружение эти баяны ?
     
     
  • 4.8, Damon (??), 10:32, 08/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Почему же не берут? Берут. Например, preload:

    "Разработчики ищут пути уменьшения времени загрузки OpenOffice под Linux" -- http://www.opennet.ru/opennews/art.shtml?num=7298

    Касательно prelink'а, небольшая цитата ( http://citkit.ru/articles/168 ):
    "Конечно, без некоторых подводных камней и тут не обойтись. Я уже говорил, что для достижения этого счастья, очень возможно, потребуется перекомпилировать ряд программ (причем из числа самых времяемких). Далее, при обновлении (или просто пересборке) любой из библиотек, с которыми осуществлялось предварительное связывание каких-либо приложений, последние должны быть непременно также перекомпилированы..."

    Т.ч., одно дело смарт, к примеру, где Вы _целиком_готовую_прошивку_ обновляете, и другое дело выборочное обновление пакетов на десктопе...

    Выводы можете сделать сами.

     

  • 1.3, Vasia (??), 22:12, 07/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересно было бы узнать на счет безопасности. Если в страницу кэша памяти ядра впихнуть, ну предположим вирус, как быть тогда с безопасностью и, в случае МонтаВисты, РТ системой?
     
     
  • 2.5, XoRe (ok), 01:25, 08/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Интересно было бы узнать на счет безопасности. Если в страницу кэша памяти
    >ядра впихнуть, ну предположим вирус, как быть тогда с безопасностью и,
    >в случае МонтаВисты, РТ системой?

    А расскажите, как туда впихнуть вирус)

     
     
  • 3.7, trdm (ok), 09:06, 08/03/2010 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Производители антивирусов под Linux уже работают над этим...
     
     
  • 4.16, XoRe (ok), 22:26, 09/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Производители антивирусов под Linux уже работают над этим...

    Над чем?
    Над антивирусом для жутко специализированной и кастомизированной системы?

     
     
  • 5.17, Дмитрий Телегин (?), 07:19, 10/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>Производители антивирусов под Linux уже работают над этим...
    >Над чем?
    >Над антивирусом для жутко специализированной и кастомизированной системы?

    Думаю, тут предполагалось, что производители антивирусов создают и вирусы для увеличения продаж своих продуктов. Может и такая урезанная система кого-нибудь заинтересует :)

     

  • 1.9, polymorphm1 (ok), 14:40, 08/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    ясно какие у них "методы" ...

    ...ненада мне такой загрузки за 1 секунду :-)

    (уж лучше 10 секунд подождать,,, но чтобы всё работало со всеми нужными проверками, и уровнями абстракции (а не НАПРЯМУЮ <кудато> там <чтото> в память)...)

     
     
  • 2.10, Карбофос (ok), 11:31, 09/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    ну почему же? ежели у меня на железке меняются только железки, подключенные через usb интерфейс, то зачем мне нужен балласт?

    кстати, что там с dma агентами, как из заточить не под флешки, а под sata?

     

  • 1.11, sluge (ok), 12:24, 09/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    хибернейт рулит
    у меня 3 гига на ноуте закидываются в оперативку за 4 сек
     
     
  • 2.12, s69 (?), 13:52, 09/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    3*1024/90=34 сек даже если учесть  что все содержимое ужать в 3 раз  получается > 10 Сек
    и это для самого быстрого из ноутбучных винтов , или у тебя SSD ? Но даже с ним должно быть гораздо медленнее. Скорее всего у тебя из 3 гигов RAM занято от силы пол гига вот так быстро и получается.
     
     
  • 3.18, sluge (ok), 15:48, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    винт скорпио блю 500Гб-не самая медленная модель. я не думаю что перед спячкой оперативка сортируется по заполненности/незаполненности. скорей всего кидается на диск как иесть
     
  • 2.13, Damon (??), 17:46, 09/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >хибернейт рулит
    >у меня 3 гига на ноуте закидываются в оперативку за 4 сек

    А вы hibernate и suspend-to-ram не путаете? Честно говоря, очень похоже на то...

     
     
  • 3.15, Damon (??), 21:47, 09/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Пожалуй, я погорячился -- при использованных 845 метрах оперативы загрузился (примерно) секунд за 4-5. При этом половину страниц оставил в свопе:

    До хиберната:
    [code]
    $ free -m
                 total       used       free     shared    buffers     cached
    Mem:          3037       2774        262          0        284       1645
    -/+ buffers/cache:        845       2192
    Swap:         3341         17       3323
    [/code]

    после:
    [code]
    $ free -m
                 total       used       free     shared    buffers     cached
    Mem:          3037        580       2456          0          1        102
    -/+ buffers/cache:        477       2559
    Swap:         3341        452       2889
    [/code]

    Т.ч. грузит он, действительно, далеко не все...

     
  • 3.19, sluge (ok), 15:49, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>хибернейт рулит
    >>у меня 3 гига на ноуте закидываются в оперативку за 4 сек
    >
    >А вы hibernate и suspend-to-ram не путаете? Честно говоря, очень похоже на
    >то...

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

     
  • 2.14, BSA (?), 20:48, 09/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Начнем с того, что не 3 гига, а гораздо меньше. Линукс сохраняет не всю память на диск, а только используемые страницы памяти. А когда восстанавливает, то ничто не мешает ему загрузить только критически важные участки (например, список используемых страниц и данные процессов), а остальное оставить в свопе для подгрузки по мере необходимости.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру