5 research outputs found
Improvement of schedulability bound by task splitting in partitioning scheduling
International audienceWe focus on the class of static-priority partitioning scheduling algorithm on multiprocessor. We are interested in improving the schedulability of these algorithms by splitting the tasks which cannot be successfully allocated on processors
Dynamic contracts for verification and enforcement of real-time systems properties
Programa de Doutoramento em Informática (MAP-i) das Universidades do Minho, de Aveiro e do PortoRuntime veri cation is an emerging discipline that investigates methods and tools to enable
the veri cation of program properties during the execution of the application. The goal is
to complement static analysis approaches, in particular when static veri cation leads to
the explosion of states. Non-functional properties, such as the ones present in real-time
systems are an ideal target for this kind of veri cation methodology, as are usually out of
the range of the power and expressiveness of classic static analyses.
Current real-time embedded systems development frameworks lack support for the veri -
cation of properties using explicit time where counting time (i.e., durations) may play an
important role in the development process. Temporal logics targeting real-time systems
are traditionally undecidable. Based on a restricted fragment of Metric temporal logic with
durations (MTL-R), we present the proposed synthesis mechanisms 1) for target systems
as runtime monitors and 2) for SMT solvers as a way to get, respectively, a verdict at
runtime and a schedulability problem to be solved before execution. The later is able to
solve partially the schedulability analysis for periodic resource models and xed priority
scheduler algorithms. A domain speci c language is also proposed in order to describe
such schedulability analysis problems in a more high level way.
Finally, we validate both approaches, the rst using empirical scheduling scenarios for unimulti-
processor settings, and the second using the use case of the lightweight autopilot
system Px4/Ardupilot widely used for industrial and entertainment purposes. The former
also shows that certain classes of real-time scheduling problems can be solved, even though
without scaling well. The later shows that for the cases where the former cannot be used,
the proposed synthesis technique for monitors is well applicable in a real world scenario
such as an embedded autopilot
ight stack.A verificação do tempo de execução e uma disciplina emergente que investiga métodos e ferramentas para permitir a verificação de propriedades do programa durante a execução da aplicação. O objetivo é complementar abordagens de analise estática, em particular quando a verificação estática se traduz em explosão de estados. As propriedades não funcionais, como as que estão presentes em sistemas em tempo real, são um alvo ideal para este tipo de metodologia de verificação, como geralmente estão fora do alcance do poder e expressividade das análises estáticas clássicas.
As atuais estruturas de desenvolvimento de sistemas embebidos para tempo real não possuem suporte para a verificação de propriedades usando o tempo explicito onde a contagem de tempo (ou seja, durações) pode desempenhar um papel importante no processo de desenvolvimento. As logicas temporais que visam sistemas de tempo real são tradicionalmente indecidíveis. Com base num fragmento restrito de MTL-R (metric temporal logic with durations), apresentaremos os mecanismos de síntese 1) para sistemas alvo como monitores de tempo de execução e 2) para solvers SMT como forma de obter, respetivamente, um veredicto em tempo de execução e um problema de escalonamento para ser resolvido antes da execução. O ultimo é capaz de resolver parcialmente a analise de escalonamento para modelos de recursos periódicos e ainda para algoritmos de escalonamento de prioridade fixa. Propomos também uma linguagem especifica de domínio para descrever esses mesmos problemas de analise de escalonamento de forma mais geral e sucinta.
Finalmente, validamos ambas as abordagens, a primeira usando cenários de escalonamento empírico para sistemas uni- multi-processador e a segunda usando o caso de uso do sistema de piloto automático leve Px4/Ardupilot amplamente utilizado para fins industriais e de entretenimento. O primeiro mostra que certas classes de problemas de escalonamento em tempo real podem ser solucionadas, embora não seja escalável. O ultimo mostra que, para os casos em que a primeira opção não possa ser usada, a técnica de síntese proposta para monitores aplica-se num cenário real, como uma pilha de voo de um piloto automático embebido.This thesis was partially supported by National Funds through FCT/MEC (Portuguese
Foundation for Science and Technology) and co- nanced by ERDF (European Regional
Development Fund) under the PT2020 Partnership, within the CISTER Research Unit
(CEC/04234); FCOMP-01-0124-FEDER-015006 (VIPCORE) and FCOMP-01-0124-FEDER-
020486 (AVIACC); also by FCT and EU ARTEMIS JU, within project ARTEMIS/0003/2012,
JU grant nr. 333053 (CONCERTO); and by FCT/MEC and the EU ARTEMIS JU within
project ARTEMIS/0001/2013 - JU grant nr. 621429 (EMC2)
Multicore Scheduling of Real-Time Irregular Parallel Algorithms in Linux
Face à estagnação da tecnologia uniprocessador registada na passada década, aos principais fabricantes
de microprocessadores encontraram na tecnologia multi-core a resposta `as crescentes
necessidades de processamento do mercado. Durante anos, os desenvolvedores de software viram
as suas aplicações acompanhar os ganhos de performance conferidos por cada nova geração
de processadores sequenciais, mas `a medida que a capacidade de processamento escala em função
do número de processadores, a computação sequencial tem de ser decomposta em várias partes
concorrentes que possam executar em paralelo, para que possam utilizar as unidades de processamento
adicionais e completar mais rapidamente.
A programação paralela implica um paradigma completamente distinto da programação sequencial.
Ao contrário dos computadores sequenciais tipificados no modelo de Von Neumann, a
heterogeneidade de arquiteturas paralelas requer modelos de programação paralela que abstraiam
os programadores dos detalhes da arquitectura e simplifiquem o desenvolvimento de aplicações
concorrentes. Os modelos de programação paralela mais populares incitam os programadores a
identificar instruções concorrentes na sua lógica de programação, e a especificá-las sob a forma
de tarefas que possam ser atribuídas a processadores distintos para executarem em simultâneo.
Estas tarefas são tipicamente lançadas durante a execução, e atribuídas aos processadores pelo
motor de execução subjacente. Como os requisitos de processamento costumam ser variáveis, e
não são conhecidos a priori, o mapeamento de tarefas para processadores tem de ser determinado
dinamicamente, em resposta a alterações imprevisíveis dos requisitos de execução.
`A
medida que o volume da computação cresce, torna-se cada vez menos viável garantir as
suas restrições temporais em plataformas uniprocessador. Enquanto os sistemas de tempo real se
começam a adaptar ao paradigma de computação paralela, há uma crescente aposta em integrar
execuções de tempo real com aplicações interativas no mesmo hardware, num mundo em que
a tecnologia se torna cada vez mais pequena, leve, ubíqua, e portável. Esta integração requer
soluções de escalonamento que simultaneamente garantam os requisitos temporais das tarefas de
tempo real e mantenham um nível aceitável de QoS para as restantes execuções. Para tal, torna-se
imperativo que as aplicações de tempo real paralelizem, de forma a minimizar os seus tempos
de resposta e maximizar a utilização dos recursos de processamento. Isto introduz uma nova
dimensão ao problema do escalonamento, que tem de responder de forma correcta a novos requisitos
de execução imprevisíveis e rapidamente conjeturar o mapeamento de tarefas que melhor
beneficie os critérios de performance do sistema.
A técnica de escalonamento baseado em servidores permite reservar uma fração da capacidade de processamento para a execução de tarefas de tempo real, e assegurar que os efeitos de latência
na sua execução não afectam as reservas estipuladas para outras execuções. No caso de tarefas
escalonadas pelo tempo de execução máximo, ou tarefas com tempos de execução variáveis,
torna-se provável que a largura de banda estipulada não seja consumida por completo. Para
melhorar a utilização do sistema, os algoritmos de partilha de largura de banda (capacity-sharing)
doam a capacidade não utilizada para a execução de outras tarefas, mantendo as garantias de
isolamento entre servidores.
Com eficiência comprovada em termos de espaço, tempo, e comunicação, o mecanismo de
work-stealing tem vindo a ganhar popularidade como metodologia para o escalonamento de tarefas
com paralelismo dinâmico e irregular. O algoritmo p-CSWS combina escalonamento baseado
em servidores com capacity-sharing e work-stealing para cobrir as necessidades de escalonamento
dos sistemas abertos de tempo real. Enquanto o escalonamento em servidores permite
partilhar os recursos de processamento sem interferências a nível dos atrasos, uma nova política
de work-stealing que opera sobre o mecanismo de capacity-sharing aplica uma exploração de
paralelismo que melhora os tempos de resposta das aplicações e melhora a utilização do sistema.
Esta tese propõe uma implementação do algoritmo p-CSWS para o Linux. Em concordância
com a estrutura modular do escalonador do Linux, ´e definida uma nova classe de escalonamento
que visa avaliar a aplicabilidade da heurística p-CSWS em circunstâncias reais. Ultrapassados
os obstáculos intrínsecos `a programação da kernel do Linux, os extensos testes experimentais
provam que o p-CSWS ´e mais do que um conceito teórico atrativo, e que a exploração heurística
de paralelismo proposta pelo algoritmo beneficia os tempos de resposta das aplicações de tempo
real, bem como a performance e eficiência da plataforma multiprocessador.With sequential machines approaching their physical bounds, parallel computers are rapidly becoming
pervasive in most areas of modern technology.
To realize the full potential of parallel platforms, applications must split onto concurrent parts
that can be assigned to different processors and execute in parallel. Parallel programming models
abstract the myriad of parallel computer specifications to simplify the development of concurrent
applications, allowing programmers to decompose their code onto concurrent tasks, and leaving
it to the runtime system to schedule these tasks for parallel execution. The resulting parallelism
is often input-dependent and irregular, requiring that the mapping of tasks to processors be performed
at runtime in response to dynamic changes of the workload.
Motivated by the promises of performance scalability and cost effectiveness, real-time researchers
are now beginning to exploit the benefits of parallel processing, with ground-breaking
scheduling heuristics to improve the efficiency of time-sensitive concurrent applications. Realtime
developments are switching to open scenarios, where real-time tasks of variable and unpredictable
size share the available processing resources with other applications, making it essential
to utilize as much of the available processing capacity as possible.
The p-CSWS algorithm employs bandwidth isolation, capacity-sharing and work-stealing to
exploit the intra-task parallelism of hard and soft real-time executions on parallel platforms. This
thesis proposes an implementation of the p-CSWS scheduler for the Linux kernel, to evaluate its
applicability to real scenarios and bring Linux one step closer to becoming a viable open real-time
platform.
To the best of our knowledge we are the first to employ scheduling heuristics to exploit dynamic
parallelism of real-time tasks on the Linux kernel.
Through extensive tests, we show that...
Preemptive Multiprocessor Scheduling Anomalies
Preemptive scheduling of periodically arriving tasks on a multiprocessor is considered. We show that many common multiprocessor real-time scheduling algorithms suffer from scheduling anomalies, that is, deadlines are originally met, but a decrease in execution times or an increase in periods of tasks can cause deadlines to be missed. We propose a partitioned multiprocessor fixed-priority scheduling algorithm with the prominent features that (i) it does not suffer from such scheduling anomalies and (ii) if less than 41% of the capacity is used then deadlines are met