Сборщик мусора jffs2 работает, даже если раздел смонтирован RO

Я использую раздел JFFS2 как корневой, устанавливая его в командной строке (и fstab) как RO. Это Montavista 5.0 Linux (2.6.18).

Все работает, за исключением того, что когда linux приходит в мое приложение, оно занято jffs2_gcd_mtd3 около 15 секунд с 98% процессорного времени. Это неприемлемо в моем случае.

Я искал код Linux и увидел, что поток GC запускается ТОЛЬКО при монтировании RW, но в моем случае он тем не менее запускается!

Я пытался смонтировать его rw и размонтировать afterwords, но...

Спасибо вперед.

ОБНОВЛЕНИЕ: Заявление о демоне GC неверно - я видел его по ошибке. Основная причина проблемы — ОЧЕНЬ ОЧЕНЬ медленная работа JFFS2 по сравнению с YAFFS2, которая была у меня ранее. Для сравнения - мое приложение в формате ELF объемом 14МиБ загрузилось из YAFFS2 за 2-2,5 секунды, а из JFFS2 за 8 секунд!!! Это навело меня на мысль, что что-то блокирует Linux...

Теперь вопрос изменился на: что может сделать JFFS2 ТАКОЙ УЖАСНО медленной!?!? Опять раздел монтируется RO!


person leonp    schedule 10.02.2014    source источник


Ответы (1)


ОК, ответ таков:
JFFS2 требуется ОЧЕНЬ много времени, чтобы смонтировать раздел размером 120 МиБ — что-то около 10 секунд на ARM5, работающем на частоте 300 МГц. Тут ничего не помогает - sumtools, размонтировать с помощью R/W (чтобы написать сводку).
Решил проблему следующим образом:
- не включать ненужное/неиспользуемое пространство в линуксовые разделы;
- разделить остальное 70 МБ на два: один 55 МБ со всем Linux, один из 15 МБ с моим приложением и его файлами.

Это решило проблему. Время около 2-3с

person leonp    schedule 16.02.2014