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

 
 
> Увеличение скорости загрузки ядра Linux
xor.kruger
сообщение Nov 3 2011, 10:58
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 290
Регистрация: 17-08-08
Из: Чернигов
Пользователь №: 39 647



Доброго времени суток!
Интересует вопрос о том, как достигнуть максимальной скорости загрузки ядра Linux. В частности загрузка ядра на Microblaze. Возможно помимо какой либо тонкой настройки кернела можно хитро настроить Microblaze.

Например в книге "Embedded Linux system design and development" даются следующие советы:

Цитата
• Отключение в ядре печати: если печать ядра направлена в последовательную консоль (которая является медленным устройством), то печать может привести к большой задержке во время инициализации ядра. Чтобы избежать этого, печать ядра можно отключить с помощью опции командной строки ядра quiet. Однако, эти сообщения можно просмотреть позже командой dmesg.
• Жёсткое кодирование в ядре значения loops_per_jiffies: как уже говорилось в Главе 2, инициализация ядра включает в себя вызов функции calibrate_delay() для вычисления значения loops_per_jiffies. В зависимости от архитектуры процессора это может занять до 500 мс. Если частота процессора может быть известна в момент компиляции ядра, то это значение может быть жёстко прописано внутри ядра, либо может быть добавлена опция командной строки ядра, чтобы передать значение этой переменной во время загрузки ядра.
• Сокращение времени инициализации драйвера: разные драйверы имеют разное время инициализации. Это может быть вызвано циклами в драйвере. Вызвать увеличение время загрузки может также зондирования аппаратных устройств на некоторых шинах, таких как PCI. Тонкая настройка времени инициализации в таких случаях означала бы изменения в драйверах, такие как предустановка в них значений, уже известных на момент сборки ядра.
• Использование подходящей корневой файловой системы: разные файловые системы имеют разное время инициализации. Время загрузки для журналируемых файловых систем, таких как JFFS2, чрезвычайно большое, поскольку они сканируют для поиска записей во время инициализации всю flash-память. Файловые системы только для чтения, такие как с CRAMFS и ROMFS, имеют более короткое время инициализации.


Может еще что нибудь подскажите.
Заранее благодарен за любые ответы! sm.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
xor.kruger
сообщение Nov 3 2011, 14:39
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 290
Регистрация: 17-08-08
Из: Чернигов
Пользователь №: 39 647



На данный момент запускается Linux на refboard от Xilinx Spartan3A1800DSP.
Linux (2.6.37) качался git'ом с http://xilinx.wikidot.com/microblaze-linux и там же брался тулчейн (BigEndian, gcc ver. 4.1.2)
В качестве Rootrf используется initramfs с минимальным набором приложений (Busybox ver. 1.13.2)

Опции ядра Microblaze:
Microblaze 8.20a: MMU enable; Enable Barrel Shifter; FPU disable; Enable Integer Multiplier 64MUL; Enable Integer Divider; Enable MSRI; Enable Pattern Comparator; Ins Cache 16k; Data Cache 16k; PVR Full.

Лог загрузки ядра:

Код
early_printk_console is enabled at 0x84000000

Ramdisk addr 0x00000003, Compiled-in FDT at 0xc0192b70

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 2.6.37 (kruger@x32) (gcc version 4.1.2) #13 Tue Nov 1 21:37:27 EET 2011
[    0.000000] setup_cpuinfo: initialising
[    0.000000] setup_cpuinfo: Using full CPU PVR support
[    0.000000] cache: wt_msr_noirq
[    0.000000] setup_memory: max_mapnr: 0x8000
[    0.000000] setup_memory: min_low_pfn: 0x48000
[    0.000000] setup_memory: max_low_pfn: 0x50000
[    0.000000] On node 0 totalpages: 32768
[    0.000000] free_area_init_node: node 0, pgdat c020d9e8, node_mem_map c0351000
[    0.000000]   Normal zone: 256 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 32512 pages, LIFO batch:7
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
[    0.000000] Kernel command line: console=ttyUL0,115200 root=/dev/ram
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Memory: 126380k/131072k available
[    0.000000] SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS:32
[    0.000000] xlnx,xps-intc-1.00.a #0 at 0xc8000000, num_irq=2, edge=0x3
[    0.000000] xlnx,xps-timer-1.00.a #0 at 0xc8004000, irq=0
[    0.000000] microblaze_timer_set_mode: shutdown
[    0.000000] microblaze_timer_set_mode: periodic
[    0.000000] Console: colour dummy device 80x25
[    0.002160] Calibrating delay loop... 30.40 BogoMIPS (lpj=60800)
[    0.064662] pid_max: default: 32768 minimum: 301
[    0.066398] Mount-cache hash table entries: 512
[    0.111689] Initializing cgroup subsys ns
[    0.111872] ns_cgroup deprecated: consider using the 'clone_children' flag without the ns_cgroup.
[    0.112113] Initializing cgroup subsys cpuacct
[    0.112335] Initializing cgroup subsys devices
[    0.112669] Initializing cgroup subsys freezer
[    0.139872] devtmpfs: initialized
[    0.174162] bio: create slab <bio-0> at 0
[    0.179241] XGpio: /plb@0/gpio@81440000: registered
[    0.181303] XGpio: /plb@0/gpio@81420000: registered
[    0.182987] XGpio: /plb@0/gpio@81400000: registered
[    0.185706] Switching to clocksource microblaze_clocksource
[    0.188569] microblaze_timer_set_mode: oneshot
[    2.601271] Skipping unavailable RESET gpio -2 (reset)
[    2.601436] GPIO pin is already allocated
[    2.710788] msgmni has been set to 246
[    2.711890] io scheduler noop registered (default)
[    2.718607] 84000000.serial: ttyUL0 at MMIO 0x84000000 (irq = 1) is a uartlite
[    5.669448] console [ttyUL0] enabled
[    5.823412] brd: module loaded
[    5.901300] loop: module load%[    5.938763] Freeing unused kernel memory: 893k freed
Starting rcS...
++ Creating device points
++ Mounting filesystem
++ Loading system loggers
++ Starting telnet daemon
rcS Complete
/bin/sh: can't access tty; job control turned off
/ #
/ #



2 gormih:
Спасибо.
Так и есть. Используется только самый необходимый набор драйверов.




Забыл сказать
Систему пока гружу с помощью XMD с ОЗУ
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 21:44
Рейтинг@Mail.ru


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