реклама на сайте
подробности

 
 
> Быстрая загрузка Linux - возможно ли?
Itch
сообщение Jun 18 2009, 14:48
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 358
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410



Во многих встраиваемых устройствах требуется максимально быстро прийти к рабочему состоянию после подачи питания или перезагрузки. Обычный линукс грузится довольно таки медленно, пока он прогрузит все драйвера, проходит секунд 10-20, если не больше. Можно ли сделать так, чтобы образ работающего (полностью загруженного) линукса со всеми драйверами сохранить во флеш-памяти и при старте системы просто копировать этот образ в оперативную память? Т.е. сделать аналог Hibernate в Windows.
Хотелось бы добиться времени старта в 1-2сек максимум.
Если да, то кто будет инициализировать железо в таком случае (видео, сеть, UART...), в компе это делает частично BIOS, частично сама Windows? Использовать планирую ucLinux, но, по идее, особой разницы быть не должно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Itch
сообщение Jun 18 2009, 18:20
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 358
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410



Использовал демобоард на RM9200 от Черкашина, линукс качал с его же сайта. Я не спец в этом, да и давно это было, но там похоже что распаковывалось все из сжатого образа. Время загрузки было действительно большое, причем сама распаковка - секунд 5, потом потихоньку запускался линукс, выводя в консоль строки.

Если даже прикинуть, пусть образ будет хранится в отдельной последовательной флешке (SD карта). Скорость чтения с нее пусть 10МВ/sec. За 1 секунду 8MB образ можно закачать в SDRAM. Либо вообще, хранить линукс в NAND флешке, с него же пусть и работает. Тогда даже копировать ничего не надо. Вопрос в том, можно ли такое проделать с линуксом?

Кстати, есть автонавигатор. Там стоит 64М NAND флеши и 64М SDRAM. ОС - WinCE 5.0, полность грузится за 11 сек, картинка на экране рисуется через 3 сек. Из спящего режима вообще моментально выходит.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 18 2009, 19:42
Сообщение #3


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Скорость чтения из SD вы сильно преувеличили если конечно не подразумеваете самые свежие навороченные чипсеты с повышеной частотой SD контроллера.
Вообщем будет у вас в случае FAT не больше 4 МВ/sec. На NAND не намного больше. Еще сильно зависит от кривизны драйверов которые вам достанутся из дистрибутива на чип.
Прога из NAND флеши выполняться не может, это не есть память с произвольным доступом.
Для старта из памяти нужна NOR Flash.
Ядро Линукса можно скомпилировать в конфигурации XIP (eXecution In Place) и без сжатия.
Бутлодер надо будет подточить для этого. Кстати он тож время кой-какое забирает.
Но самая досадная фигня в Линуксе это файловая система.
Тут есть дилема.
Либо вы делаете файловую систему быструю и в RAM, но тогда надо ее туда долго грузить из NAND или SD и получаете ее не персистентную, либо сразу запускаете драйвер какой либо файловой системы на Flash и стартуете файловую систему достаточно быстро, но потом имеете низкоскоростной доступ.
Кстати не всякая файловая система на Flash быстро стартует, ибо особо хитрые компактные embedded системы начинают читать весь диск для постороения базы данных для wear leveling, соответственно старт откладывается.
Еще у некоторых систем идет сжатие на лету при записи, тож тормоза дополнительные.
Поскольку в Линуксе ничего без файловых операций не обходится, то скорость файловой системы на старте имеет большое значение.

При объеме ядра где-то в 3 мега, файловая система будет минимум занимать 8 мег со всякими либами, busybox-ами и приложением.

Кстати старт картинки на QNX- 0.5 сек. Стоит подумать wink.gif

Цитата(Itch @ Jun 18 2009, 21:20) *
Использовал демобоард на RM9200 от Черкашина, линукс качал с его же сайта. Я не спец в этом, да и давно это было, но там похоже что распаковывалось все из сжатого образа. Время загрузки было действительно большое, причем сама распаковка - секунд 5, потом потихоньку запускался линукс, выводя в консоль строки.

Если даже прикинуть, пусть образ будет хранится в отдельной последовательной флешке (SD карта). Скорость чтения с нее пусть 10МВ/sec. За 1 секунду 8MB образ можно закачать в SDRAM. Либо вообще, хранить линукс в NAND флешке, с него же пусть и работает. Тогда даже копировать ничего не надо. Вопрос в том, можно ли такое проделать с линуксом?

Кстати, есть автонавигатор. Там стоит 64М NAND флеши и 64М SDRAM. ОС - WinCE 5.0, полность грузится за 11 сек, картинка на экране рисуется через 3 сек. Из спящего режима вообще моментально выходит.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jun 19 2009, 05:36
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(AlexandrY @ Jun 18 2009, 23:42) *
Скорость чтения из SD вы сильно преувеличили если конечно не подразумеваете самые свежие навороченные чипсеты с повышеной частотой SD контроллера.
Вообщем будет у вас в случае FAT не больше 4 МВ/sec.

все
Оптимисты вы тут wink.gif сомневаюсь что на RM9200 вы получите больше 1 мб/сек, а на небуферизованном посекторном чтении и того меньше - 100-150 кб/сек. Кстати - а зачем загрузчику вообще какая-то фс ?

Цитата
Но самая досадная фигня в Линуксе это файловая система.
Тут есть дилема.
Либо вы делаете файловую систему быструю и в RAM, но тогда надо ее туда долго грузить из NAND или SD и получаете ее не персистентную, либо сразу запускаете драйвер какой либо файловой системы на Flash и стартуете файловую систему достаточно быстро, но потом имеете низкоскоростной доступ.


О - опять про фс smile.gif фс в рам требуется только для устаревшего initrd, в образе initramfs никакой настоящей фс нет- там аналог tmpfs и работает действительно быстро.

Цитата
Поскольку в Линуксе ничего без файловых операций не обходится, то скорость файловой системы на старте имеет большое значение. При объеме ядра где-то в 3 мега, файловая система будет минимум занимать 8 мег со всякими либами, busybox-ами и приложением.


Для старта ядра вообще фс не нужна, она нужна для корня и запуска Init, опять же с initramfs вообще никаких тормозов нет, можно хранить там все необходимые для старта а все остальное просто подмонтировать.

Цитата
Кстати старт картинки на QNX- 0.5 сек. Стоит подумать wink.gif


я подумал - а чего так медленно ? smile.gif

имхо болше всего времни при старте уходит на распаковку и на поиск-инициализацию устройств а кто будет их инициализировать при быстром старте ?
Go to the top of the page
 
+Quote Post
Itch
сообщение Jun 19 2009, 07:03
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 358
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410



Цитата(sasamy @ Jun 19 2009, 12:36) *
все
Оптимисты вы тут wink.gif сомневаюсь что на RM9200 вы получите больше 1 мб/сек, а на небуферизованном посекторном чтении и того меньше - 100-150 кб/сек. Кстати - а зачем загрузчику вообще какая-то фс ?

По идее, нафиг не не надо FS. Есть 8М RAM, в котором лежит запущенная ОСь. Просто сохраняем в отдельную флеш 8М и все. Когда надо стартануть просто копируем обратно в память. AT45DB642D емкостью в 8МБайт поддерживает скорость по SPI до 66МГц, т.е. ~8М/сек. Для Blackfin, на котором я собираюсь делать плату, это точно не проблема.
Цитата(sasamy @ Jun 19 2009, 12:36) *
имхо болше всего времни при старте уходит на распаковку и на поиск-инициализацию устройств а кто будет их инициализировать при быстром старте ?

Вот и интересно. Должен быть системный вызов для переинициализации драйверов устройств. Опять же, времени на то, чтобы записать несколько регистров много не надо. Если конфигурация платы известна, ничего никогда не меняется, то никаких особых Plug'n'Play не нужно.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jun 19 2009, 08:16
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(Itch @ Jun 19 2009, 11:03) *
Для Blackfin, на котором я собираюсь делать плату, это точно не проблема.


не вопрос - можно получить хорошие скорости, я просто конкретно про rm9200 ситуацию уточнил

Цитата
Должен быть системный вызов для переинициализации драйверов устройств.


Видели наверно в конце загрузки ядра сообщение типа Freeing unused kernel memory: Nk freed так вот это ядро избавляется от того самого кода и данных инициализации который вы хотите вызвать повторно smile.gif Он помечен __init в драйверах, после загрузки ядра его нет больше в памяти.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 19 2009, 08:35
Сообщение #7


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Весь Analog Devices не смог решить проблему, а для вас нивапрос? biggrin.gif
Цитата(sasamy @ Jun 19 2009, 11:16) *
не вопрос - можно получить хорошие скорости, я просто конкретно про rm9200 ситуацию уточнил


В конфигурации XIP ничего не удаляется. Смотрите файл линкера *.lds
Цитата(sasamy @ Jun 19 2009, 11:16) *
Видели наверно в конце загрузки ядра сообщение типа Freeing unused kernel memory: Nk freed так вот это ядро избавляется от того самого кода и данных инициализации который вы хотите вызвать повторно smile.gif Он помечен __init в драйверах, после загрузки ядра его нет больше в памяти.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Itch   Быстрая загрузка Linux - возможно ли?   Jun 18 2009, 14:48
- - AlexandrY   А че у вас драйвера так тормозят? По моему этот во...   Jun 18 2009, 17:44
|- - AlexandrY   Вы еще не поняли с чем связались На нормальной R...   Jun 19 2009, 07:41
||- - sasamy   Цитата(AlexandrY @ Jun 19 2009, 11:35) Ве...   Jun 19 2009, 09:52
|- - Itch   Цитата(sasamy @ Jun 19 2009, 15:16) Видел...   Jun 19 2009, 10:14
|- - sasamy   Цитата(Itch @ Jun 19 2009, 13:14) Экономя...   Jun 19 2009, 11:02
- - Itch   Поwikiл слово XIP, нашел интересную pdf-ку. Оказыв...   Jun 19 2009, 03:59
|- - AlexandrY   Какая точно марка чипа? Что, так и написано: ...   Jun 19 2009, 06:04
|- - Itch   Цитата(AlexandrY @ Jun 19 2009, 13:04) Ка...   Jun 19 2009, 08:37
|- - AlexandrY   Эт к щастью на этой конфе знают все. Новость в том...   Jun 19 2009, 08:46
|- - Itch   Цитата(AlexandrY @ Jun 19 2009, 15:46) Эт...   Jun 19 2009, 08:55
- - faa   Цитата(Itch @ Jun 18 2009, 18:48) Хотелос...   Jun 20 2009, 08:49
- - Harbour   у меня на desktop'e мамка годичной давности as...   Jun 21 2009, 05:53
- - RW9UAO   QNX на rm9200 из датафлэш (4 мегабайта), дрова уса...   Jun 25 2009, 13:58
|- - sasamy   Цитата(RW9UAO @ Jun 25 2009, 17:58) QNX н...   Jun 25 2009, 15:35
- - Harbour   в дополнение : http://www.linux.org.ru/view-messa...   Jul 17 2009, 15:24


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th August 2025 - 05:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01436 секунд с 7
ELECTRONIX ©2004-2016