To polecenie rt-app, które można uruchomić w darmowym dostawcy hostingu OnWorks, korzystając z jednej z wielu naszych darmowych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS
PROGRAM:
IMIĘ
rt-app – aplikacja testowa do symulacji obciążenia okresowego w czasie rzeczywistym
STRESZCZENIE
aplikacja rt
aplikacja rt [opcje] -t : [:polityka[:powinowactwo procesora[:priorytet[:termin]]]] -t ...
WPROWADZENIE
aplikacja rt jest aplikacją testową, która uruchamia wiele wątków okresowych w celu symulacji
okresowe obciążenie w czasie rzeczywistym. Obsługuje SCHED_OTHER, SCHED_FIFO, SCHED_RR, a także
Struktura AQuoSA i SCHED_DEADLINE.
Kod jest obecnie dostępny w serwisie GitHub: https://github.com/gbagnoli/rt-app
WYMAGANIA
rt-app działa w systemie GNU/Linux. Wymaga autoconf, automake, libtool i najnowszego kompilatora.
(głównie: gcc) do podstawowych funkcji. Do zaawansowanego wykorzystania dostępne są następujące biblioteki opcjonalne.
potrzebne są: - qreslib do obsługi AQuoSA (i oczywiście jądro z poprawkami GENS_SCHED) -
SCHED_DEADLINE załatane jądro w celu obsługi polityki SCHED_DEADLINE. - zainstalowany json-c dla
Odczyt plików konfiguracyjnych. Jeśli biblioteka libjson nie jest dostępna dla Twojego systemu docelowego, możesz ją pobrać
i skompiluj json-c z http://oss.metaparadigm.com/json-c/
ZASTOSOWANIE
aplikacja rt gdzieconfigfiletisapełny/względnyścieżkadoajsonfilet(Patrzećdladoktor/dla an
przykładowy plik konfiguracyjny) lub "-" (bez cudzysłowów), aby odczytać dane JSON ze standardowego wejścia.
Do łączenia można użyć skryptu scalania w języku Python (/usr/share/doc/rt-app/examples/merge.py)
fragmenty kodu json do pliku konfiguracyjnego: np.: ./merge.py -o combined.json global.json
resources.json wątek 0.json wątek 1.json wątek 2.json wątek 3.json
LUB możesz użyć wiersza poleceń, aby zdefiniować zestaw zadań.
Pamiętaj, że w wierszu poleceń nigdy nie będzie możliwe zdefiniowanie zasobów i sposobu ich wykorzystania.
zadania uzyskują do nich dostęp.
rt-app [opcje] -t : [:powinowactwo procesora[:zasady[:termin[:prio]]]]
br POLITYKA: f=SCHED_FIFO, r=SCHED_RR, o=SCHED_OTHER, q=AQuoSA br POWIĄZANIE: rozdzielone przecinkami
indeks procesora (zaczynając od 0), czyli 0,2,3, XNUMX, XNUMX dla pierwszego, trzeciego i czwartego procesora
Uwaga: podczas korzystania z harmonogramu AQuoSA priorytet jest używany jako procentowy przyrost budżetu w stosunku do
czas wykonania
OPCJE
-h, --help
pokaż tę pomoc
-f, --fifo
ustaw domyślną politykę dla wątków na SCHED_FIFO
-r, --rr
ustaw domyślną politykę dla wątków na SCHED_RR
-s, --rozstaw
msec do oczekiwania między uruchomieniami wątków
-l, --logdir
zapisz dzienniki w innym katalogu
-b, --baselog
basename dla logów (implikuje -l . jeśli nie jest ustawione)
-G, --gnuplot
wygeneruj skrypt gnuplot (potrzebny parametr -l)
-D, --Trwanie
czas (w sekundach) przed zatrzymaniem wątków
-K, --nie-mlock
Nie blokuj stron w pamięci
-q, --qos
utwórz rezerwację AQuoSA
-g, --frag
fragment do rezerwacji
--fifo,--rr,--qos
ustawia domyślną politykę planowania dla wszystkich wątków. Opcja --qos jest dostępna tylko wtedy, gdy
skompilowano z włączoną obsługą AQuoSA.
--logdir,--baselog
Wyjście dziennika kontrolnego (rt-app tworzy jeden dziennik dla każdego wątku). Jeśli opcja --logdir nie jest
Obecnie rt-app loguje wszystko na standardowe wyjście. Podczas logowania do pliku i opcji -D (patrz poniżej)
jest obecny, plik jest zapisywany na końcu wykonywania, podczas którego wszystkie rejestry
dane są przechowywane w pamięci.
--gnuplot
jeśli jest obecny, rt-app wyprowadza przykładowe skrypty gnuplot do $logdir (który musi
być przekazanym zbyt
--odstępy,--czas trwania
kontrolować odstępy między wątkami i czas ich wykonywania, tj. każdy
Wątek jest uruchamiany co $spacing ms, a całkowity czas wykonania wynosi $duration.
--frag (AQuoSA tylko)
fragmentuje okres rezerwacji poprzez $fragmentation, tj. okres rezerwacji to
$frag razy mniejszy niż okres wątku.
--nie-mlock
nie blokuj stron pamięci wątków podczas korzystania z klas planowania w czasie rzeczywistym
Każdy wątek jest określony przez
--nitka : [:$POLICY[:termin[:prio]]]:
okres : okres wątku w mikrosekundach
exec : wątek WCET w mikrosekundach
polityka : jeden z f=SCHED_FIFO, r=SCHED_RR, o=SCHED_OTHER, q=AQuoSA (jeśli włączone)
powinowactwo
: indeks procesora oddzielony przecinkami (zaczynając od 0), tj. 0,2,3, XNUMX, XNUMX dla pierwszego, trzeciego i
czwarty procesor
priorytet : priorytet wątku w SCHED_FIFO/SCHED_RR/SCHED_OTHER, przyrost procentowy dla
Budżet rezerwacji AQuoSA wrt WCET.
ostateczny termin
:termin końcowy w mikrosekundach (używany TYLKO do tworzenia wykresów!)
Użyj rt-app online, korzystając z usług onworks.net