Uau. Obviamente, você está atrás de peças e peças muito particulares para resolver um problema em particular. Ou então você não percebe que acabou de assinar a próxima semana de sua vida para pesquisar. Passar por todos os elementos internos do kernel para os seus tópicos será doloroso, então aqui está o que você precisa fazer: perguntar um , simples e iniciar o rastreamento. Dada uma pergunta simples e não confusa para focar, há muitos desenvolvedores na Lista de discussão do Kernel do Linux que são especialistas em explicando porque os internos se comportam da maneira que fazem na sua situação. Pode levar algumas rodadas, mas elas podem ajudar.
Outro método que você pode usar, com uma única pergunta, é rastrear uma atividade questionável no kernel e aprender sobre as partes individuais que ele toca, em vez de tentar entender tudo. Felizmente para você, existe um comando chamado ftrace
ou mesmo SystemTap ( stap
) que iniciará sua aventura. Muitos desenvolvedores do kernel querem que mais pessoas façam perguntas importantes sobre o kernel e essas ferramentas irão ajudá-los a fazer isso. Linux Weekly News publicou vários artigos sobre ftrace
ultimamente: Rastreamento: não há falta de opções (julho de 2008), Uma olhada no ftrace (mar 2009), Depurando o kernel usando ftrace - Parte 1 (dezembro de 2009) e Parte 2 (dezembro de 2009), Secrets da função Ftrace (Jan 2010) e, finalmente, o bom e velho documentação que acompanha o kernel (2008).
Usando um utilitário de rastreamento, você aprende sobre como o kernel armazena em buffer e uma série de outras coisas exclusivas de seu kernel, hardware (controlador, chipset, CPU, tecnologia de disco), sistema de arquivos, agendador de I / O. Cada distribuição é diferente a esse respeito. Se você tiver dispositivos de armazenamento complexos (Cluster FS, SAN com Enterprise Array, SSD), esteja preparado para aprender também sobre suas peculiaridades. Uma palavra de aviso sobre sistemas de arquivos em cluster: eles freqüentemente envolvem um componente do espaço do usuário que pode causar muitos atrasos inesperados que a maioria de nós atribui ao kernel, mas são muito mais complexos que isso.
De longe, o melhor texto que consegui encontrar até agora foi escrito por Neil Brown em 2009, intitulado " padrões de design do kernel Linux ". Neil atinge muitos tópicos que você mencionou e muitos mais.
Uma coisa que eu sei com certeza é que esse cenário está mudando continuamente, especialmente na arena de agendamento. Apenas tente entender o que está acontecendo em seu canto específico e conte suas bênçãos que você não precisa codificar para um desses componentes.