Linux Embedded

Le blog des technologies libres et embarquées

Étiquette : kernel

Ordonnancement temps réel souple et affinité CPU sous Linux Vanilla

Linux est un système d’exploitation préemptif offrant des interfaces très riches pour bien ordonnancer, synchroniser et contrôler l’affinité de chaque processus (ou thread) utilisateur.En effet, les fonctionnalités temps réel déja disponibles sous Linux vanilla (appelé aussi Linux standard) sont généralement largement suffisantes pour répondre à nos besoins temps réel souple et applications industrielles non critiques. Echéances des tâches et sources…

Overcommit memory in Linux

On Linux systems (including real time ones with PREEMPT-RT), C programs allocates memory using the system libc, usually using malloc(). On modern systems, the dynamic memory allocation uses the principle of overcommit. This is based on MMU and the interruption generated when accessing non-mapped memory (or mapped memory with wrong flags, like write on read-only page). When this principle is applied (not…

Storing crash data of the Linux kernel for post-crash debugging

Logging problems are key features of any complex system in order to detect and locate any unexpected behavior. On Linux system, there are lots of solutions to generate debugging information for an unexpected behavior of a userspace application (log messages, core dump). But what could we do if there is a kernel problem ? Few solutions exist although none are trivial.…

FlameGraph

Introduction Les outils de profilage permettent lors de l’exécution d’un logiciel de contrôler la liste des fonctions appelées, le temps passé dans chacune d’elle, l’utilisation des ressources processeur ou l’utilisation mémoire par exemple. Sous Linux une multitude d’outils sont disponibles et si vous avez déjà utilisé Perf ou eBPF vous avez sans nul doute remarqué que la quantité de log…

Le Temps Reel sous Linux

Dans cet article, nous allons discuter de l’intérêt ainsi que des avantages et inconvénients d’utiliser un noyau Linux temps réel. L’objectif de cet article n’est pas de décrire ce qu’est le temps réel mais pourquoi et comment l’utiliser. Aux lecteurs curieux et intéressés par le temps réel, je recommande le livre de Christophe Blaess, Solutions temps réel sous Linux. Introduction Historique…

My first Linux kernel built with Clang compiler!

Following his internship at Smile in 2018 on LLVM/Clang integration into Buildroot [1], Valentin Korenblit still maintains these packages on his spare time (thanks to him!), up to the latest current version llvm/Clang 8.0.0. At the same time the Linux kernel continues evolving to support Clang compiler thanks to Google engineers. See Phoronix article [2] and « Compiling the Linux kernel…

Les secrets du traceur eBPF

Introduction Le traçage permet d’instrumenter un noyau pour capturer les événements bas niveau (allocation mémoire, changement de contexte, réception d’un paquet réseau, …,etc). Le traçage a fait l’objet des deux articles précédents, nous avons présenté des outils tels que Ftrace, Perf et Lttng. Dans cet article, nous allons décrire eBPF, le traceur le plus performant sous Linux. Quelques généralités sur…

Les traceurs sous linux (2/2)

Introduction Les applications et les systèmes d’exploitation sont devenus très complexes, de nombreux outils de traçage sont apparus au cours de la dernière décennie. Leur but est d’instrumenter et optimiser la qualité des programmes en termes de performances et de robustesse. Après l’article précédent sur Ftrace, nous allons apprendre a utiliser les traceurs Perf et LTTng. Perf Perf est un…

Les traceurs sous linux (1/2)

Introduction L’analyse des performances est essentiel pour tout processus de développement d’une application logicielle. En plus du débogage, il est nécessaire d’utiliser des pratiques d’instrumentation pour garantir les performances attendues d’une application (ou même d’un noyau). L’instrumentation consiste essentiellement à surveiller et à mesurer les performances, à diagnostiquer les erreurs et à écrire des informations de suivi dans les environnements…