The OpenNET Project / Index page

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

Сборка realtime ядра Linux


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова:  (найти похожие документы)
From: Romik <http://romik-g.livejournal.com/>; Date: Mon, 15 Jan 2007 14:31:37 +0000 (UTC) Subject: Сборка realtime ядра Linux Оригинал: http://romik-g.livejournal.com/22641.html Нашел в закоулках диска переведенную мною для fantoo.org (не работает в наст.момент) и неизвестно кем (кажется сам amax) написанную статью, которую и привожу. Русский перевод чуть ниже. Извиняюсь за не очень качественный перевод. Год с лишним назад у меня язык был хуже.. Области применения Реалтайм ядро активно используется для выполнения таких задач как: 1. Разработка, отладка и профилирование программ, измерение скорости их исполнения 2. Обработка звука, микширование, вещание 3. Работа с video, монтаж, capturing, вещание 4. Работа с тяжело нагруженными internet сервисами (например Java + SOAP) для обеспечения maximal HIT's per seconds 5. 3D игры (создание, тестирование и отладка) 6. Работа с различными контроллерами, внешним оборудованием, для SCADA систем 7. Для научных работников, занимающихся моделированием различных процессов (физики, биологи) Возможности * ядро сделано полностью преемтабельным 95% всего времени * обработчики каждого прерывания работают теперь в контексте своего ядрового треда * почти все спинлоки превращены в мутексы * возможность управлять приоритетами для каждого процесса IRQ XX Особенности * тратится время на два переключения контекста для каждого прерывания и усложнённой логики * большее количество переключений контекста означает большую нагрузку на кэш L2 и следовательно существенно меньшую производительность у кэш/memory bound процессов * прерывания системного таймера не "бесплатные" и на них тратится время, приблизительно 1% процессорного времени при HZ=1000 Настройка ядра 2.6.14 в разделе Code maturity level options ---> [*] Prompt for development and/or incomplete code/drivers в разделе Processor type and features ---> [*] Generic x86 support [*] HPET Timer Support [*] Ktimers 64bit scalar representation [*] High Resolution Timer Support (10000) High Resolution Timer resolution (nanoseconds) Preemption Mode (Complete Preemption (Real-Time)) ---> [*] Local APIC support on uniprocessors [*] IO-APIC support on uniprocessors [*] enhanced IO-APIC support High Memory Support (off) ---> [*] 1Gb Low Memory Support Timer frequency (250 HZ) ---> в разделе Device Drivers ---> Block devices ---> IO Schedulers ---> <*> CFQ I/O scheduler Если у Вас ide прерывание вешается на один IRQ вместе со звуковым, вам надо сделать следующее: в разделе Device Drivers ---> ATA/ATAPI/MFM/RLL support ---> [ ] Sharing PCI IDE interrupts support В противном случае - необходимо включить [*] (Если не включать, то потребуется больше тредов для прерываний) [*] Sharing PCI IDE interrupts support Теперь необходимо выключить опции отладки: в разделе Kernel hacking ---> [ ] Paraniod Timekeeping Checks [ ] Wakeup latency timing (NEW) [ ] Automatic spinlock/rwlock/mutex/rwsem deadlock detection (NEW) в разделе Security options ---> [*] Enable different security models <M> Default Linux Capabilities ПРИМЕЧАНИЯ: * Все настройки рекомендованы для ядра 2.6.14-rt22 * Рекомендуемое значение при работе с JACK для Timer frequency (CONFIG_HZ) = 250 (при значении 100 возникает наименьшее количество XRUN при большой нагрузке, зато "плохеет" RT) - ОБЯЗАТЕЛЬНО ЧИТАТЬ [23]http://kerneltrap.org/node/464 - в остальных случаях стоит ставить значение 1000 (могут быть залипоны при max нагрузке на CPU) * Разумный минимум для High Resolution Timer resolution - 10000 (чем ниже это значение тем больше нагрузка на процессор, в vanilla kernel нету HRT, разрешение таймера в vanilla равно 1000000). Требуемые программы Необходимо установить пакеты: * sys-process/schedutils >= 1.4.0 * sys-apps/realtime-lsm >= 0.8.5-r1 * sys-libs/pam >= 0.78-r4 Тюнинг системы Для начала, подумаем, что мы хотим получить. Например НЕ заикающийся звук. Отлично! Сперва придётся попытаться сконфигурировать настройки bios таким образом, чтобы ваша звуковая карта имела своё собственное прерывание (IRQ) cat /proc/interrupts Мы получим примерно похожий результат: localhost ~ # cat /proc/interrupts CPU0 0: 19252716 IO-APIC-edge [........N/ 0] pit 1: 572 IO-APIC-edge [........./ 0] i8042 4: 4 IO-APIC-edge [........./ 3] serial 7: 0 IO-APIC-edge [........./ 0] parport0 8: 2 IO-APIC-edge [........./ 0] rtc 9: 0 IO-APIC-level [........./ 0] acpi 14: 2002 IO-APIC-edge [........./ 1] ide0 15: 85407 IO-APIC-edge [........./ 1] ide1 16: 39512 IO-APIC-level [........./ 0] eth0 17: 168862 IO-APIC-level [........./ 0] libata 18: 970071 IO-APIC-level [........./ 0] ehci_hcd:usb1, uhci_hcd:usb2, uhci_hcd:usb3, uhci_hcd:usb4, uhci_hcd:usb5 19: 976309 IO-APIC-level [........./ 0] ohci1394, ohci1394, nvidia 20: 7017826 IO-APIC-level [........./ 0] EMU10K1 NMI: 0 LOC: 1132111 ERR: 0 MIS: 0 localhost ~ # где мы видим, строку: 20: 7017826 IO-APIC-level [........./ 0] EMU10K1 Это означает что на IRQ 20 находится звуковая карта SB Audigy для поднятия приоритетов (в нашем случае звуковой карты) необходимо иметь установленным пакет sys-process/schedutils версии 1.4.0 или выше. Типовые значения приоритетов для звуковой карты: * 99 * 60 Для того чтобы установить максимальный приоритет для процесса IRQ 20, выполним команду: chrt -f -p 99 `pidof "IRQ 20"` и проверим результат chrt -p `pidof "IRQ 20"` ВНИМАНИЕ Установка приоритетов для IRQ требует специальных знаний, а так же особенностей вашего железа. Не делайте этой операции если вы не знаете, нужна ли она вам на 100% ! ЗАПОМНИТЕ, что устанавливая наобум приоритеты для IRQ вы СУЩЕСТВЕННО нарушаете правильную работу OS. Вы предупреждены. Ссылки Вы всегда можете скачать последний .ebuild для sys-kernel/realtime-sources из Fantoo SVN репозитория: https://fantoo.ru/svn/sys-kernel/realtime-sources/ Или установить один общий патч на vanilla kernel 2.6.14 (Для ЛЮБЫХ дистрибутивов Linux) http://chronos.nsu.ru/fantoo/realtime/linux-2.6.14_p22-realtime-r5.patch.bz2 Оригинальный патч от Ingo Molnar можно скачать тут http://people.redhat.com/~mingo/realtime-preempt/ Дискуссия о realtime-sources на сайте forums.gentoo.org в разделе Unsupported http://forums.gentoo.org/viewtopic-p-2951922.html Описание CONFIG_HZ * http://kerneltrap.org/node/464 * http://www.uwsg.iu.edu/hypermail/linux/kernel/0311.0/0126.html Благодарности * Ingo Molnar - за его чудесную реализацию RT патча * Con Kolivas - за наработки в области планировщиков и тюнинга ядра * Serge Belyshev [ssb] - за НЕОЦЕНИМУЮ помощь в освоении этого RT патча, за его багфиксы и помощь в написании документации

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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