O que poderia ser feito para tornar a inicialização do Embedded Linux mais rápida?

3

Minha equipe está desenvolvendo um software para uma solução Embedded Linux. O problema que estamos enfrentando é que leva muito tempo para o sistema estar pronto para começar a executar nossos aplicativos desejados (isto é, muito tempo para carregar o Kernel Linux). Geralmente, leva de 38 a 43 segundos para que isso aconteça. Nós já revisamos a configuração do kernel removendo os arquivos que sabíamos que não precisamos, mas ainda está demorando muito.

Minhas perguntas: o que mais pode ser feito para tornar o kernel mais rápido (preferencialmente sem mudanças no hardware)? É normal que um Linux Embarcado demore tanto tempo para cobrar? É possível pedir ao kernel do Linux para fazer com que ele inicie nossos aplicativos antes que o kernel esteja totalmente carregado?

O sistema é um OMAP L138 da Texas Instruments .

O que se segue são imagens com todas as mensagens mais relevantes que são mostradas no Terminal quando o kernel está inicializando. Se alguém não tem uma resposta (geral) para minhas perguntas, mas sabe algo sobre uma das linhas que podem ajudar a melhorar a velocidade de inicialização do kernel, sinta-se à vontade para responder também!

    
por Momergil 18.11.2014 / 20:18

1 resposta

4

Na sua saída, o ponto em que o kernel é realmente carregado é este:

Init version 2.86 booting

Qual é depois de 23 segundos. Depois disso, init , um processo de espaço de usuário, assume e inicia a configuração do espaço de usuário, embora isso inevitavelmente provoque a ativação de vários núcleos drivers, possivelmente incluindo o carregamento de módulos apropriados.

Você não disse qual é a plataforma, mas, por exemplo, no pi de framboesa de núcleo único de 700 Mhz, isso é de ~ 4 segundos. Então, isso ainda é muito lento, indicando um problema.

Se subtrairmos a diferença entre 0 e 19 segundos, você estará no que pode ser esperado. Esta lacuna termina com um comentário sobre MII PHY - este é um driver de dispositivo de ethernet . Se for possível inicializar o sistema sem rede, você pode confirmar isso configurando o driver ethernet do kernel e verificando se isso alcança init mais rápido.

Após a marca de 23 segundos, o gargalo principal provavelmente será E / S no sistema de arquivos raiz. Por alguma razão, há um intervalo de 5 segundos entre 25 a 30 segundos terminando com um comentário sobre um erro do sistema de arquivos FAT. Na verdade, há alguns erros de fs lá. Isto implica que o sistema init está tentando montar sistemas de arquivos que não existem, o que será um desperdício de tempo.

Entre 33 e 37 segundos você tem mais erros indicativos de falhas envolvendo como os sistemas de arquivos são organizados e / ou como o software que depende disso é configurado . Uma dessas dependências pode ser um sistema de arquivos tmpfs que deveria ter sido criado na RAM, mas falhou (portanto, falta de arquivos em /var/ e /tmp ). Você poderia fazer uma pergunta separada postando seu /etc/fstab e pedir a alguém para explicá-lo, se o ponto aqui não estiver claro.

    
por 18.11.2014 / 21:01