Essa é uma noticia mais de um mês atrás. mas já que estamos falando sobre o toybox na série "Muito além do GNU" essa semana, porque não estender mais o assunto para conhecer mais sobre a ferramenta?
Na Embedded Linux Conference que aconteceu do dia 21 a 23 de Fevereiro deste ano em Portland, Michael Opdenacker da Free Electrons apresentou a palestra sobre como reduzir o tamanho do sistema (tando o kernel quando o user space) já que Linux estava cedendo espaço na IoT para os RTOSes.
Link para o artigo com o vídeo em linux.com
Nessa, Michael apresentou utilizando ferramentos como o LLVM/Clang 3.8.1 no lugar do GCC (mesmo que o GCC 6.2 tenha apresentado melhoria diante o GCC 4.7 no ARM). Com o GCC podemos utilizar a opção -Os para reduzir o espaço enquanto que o LLVM/Clang faz isso “out of the box sem precisar fazer nada”. O LLVM/Clang compila o kernel também para a otimização de desempenho tornando-se melhor do que o que temos hoje com o GCC LTO hoje.
Chegaram a sugerir patches de melhoras para o GCC, mas os patches causaram novos problemas e os desenvolvedores temeram que isso criaria novos bugs dificeis de serem rastreados e por isso os patches não foram aceitos.
Outras tecnicas foram aparesentadas para utilizar com o GCC como a opção -mthumb (que no compilador do Ubuntu vem por padrão) para fazer uma mescla de instruções de 16 e 32 bits aos invés de somente 32 em procedores ARM, a opção “make tinyconfig” que é utilizada desde o kernel 3.18, para combinar junto ao “make allnoconfig” com mais algumas configurações e assim reduzir o tamanho dos binários
“ela utiliza gcc optimize for size, assim o código pode ser mais lento mas se torna menor”
“Você habilita a compressão XZIP do kernel, e você economiza entre 6 a 10KB.”
Habilitar a opação obj-y no kernel Makefiles podendo compilar o kernel sem a necessidade do ptrace o tempo todo, que em ARM consome 14KB.
no lado do user space, foram sugeridas ferramentas como o próprio toybox:
Site oficial to toybox
“Toybox possui as mesmas aplicações e a maioria dos mesmos recursos que o busybox, mas utiliza somente 84KB ao invés de 100KB,”
“Se você quiser um shell com apenas algunas algumas utilidades na linha de comando, toybox poderia lhe economizar milhares de bytes, embora ele seja menos configurável."
O uso da Musl que utiliza menos espaço do que glibc (sem duvida) ou que a uclibc foi outra opção sugerida por Michael. apresentando um teste de comparação entre bibliotecas compilando um programa hellho.c com o GCC 6.2, o resultado final com a musl foi de 7.3kb, 67KB com a uclibc-ng 1.0.22 e 49KB com a glibc.
Para reduzir o filesystem, Michael sugeriu o uso do initramfs que lhe permite realizar boot mais rápido uma vez que não inicializa um filesystem e drivers armazenados. Para sistemas com mais RAM, Michael sugere o uso de filesystems mais compactos com o squashfs, JFFS2 ou ZRAM. Michael conclui que ainda há melhorias significativas a serem feitas no kernel space e no userspace. Daí eu imagino:
Se Linux já é bom, imagina tendo essas melhorias. Espero ainda ver isso =)
QUER APRENDER A UTILIZAR LINUX DE VERDADE, ENTÃO VENHA APRENDER COMIGO ;) |
Nenhum comentário:
Postar um comentário
Viu algum erro e quer compartilhar seu conhecimento? então comente aí.
Observação: somente um membro deste blog pode postar um comentário.