====== Semana 23 de 2022 ====== ===== Aleatórios do final de semana ===== * Ocorreu recentemente o encontro dos desenvolvedores dos componentes de gerenciamento de memória, dispositivos de bloco, sistemas de arquivo e BPF do kernel do Linux (LSF/MM/BPF summit). * O tópico de meu interesse é o [[BPF]]. Essa parte do summit foi documentada em http://vger.kernel.org/bpfconf2022.html. * A apresentação de Yonghong Song tratou da [[http://vger.kernel.org/bpfconf2022_material/lsfmmbpf2022-clang.pdf | agradabilidade do desenvolvimento de aplicações BPF]]. Existem dois arcabouços (frameworks) para o desenvolvimento de programas BPF: [[https://github.com/iovisor/bcc | bcc (BPF Compiler Collection)]] e libbpf-tools. O bcc foi o primeiro disponível para isso, então ainda muito utilizado. No entanto, [[https://github.com/iovisor/bcc/issues/3976 | ele não é mais a forma recomendada para desenvolvimento de aplicações BPF]]. Assim, devemos focar no libbpf. * Na apresentação BPF Observability tools update, por Brendan Gregg, um tópico que foi abordado foi o desempenho dos user probes (uprobe). Isso muito nos interessa, porque é o calcanhar de Aquiles ao usar BPF com programas em Java. * Na apresentação BPF Guidelines for newcomers, também por Brendan Gregg, temos diretivas para uso do BPF: https://tinyurl.com/bpfguidelines2022 (ou https://docs.google.com/document/d/1pzkUqyQU65V0WIukqK4EU_u3f8h35i-ddORI9WbYatw). * Outro evento relacionado foi o [[https://kernel-recipes.org/en/2022/ | Kernel Recipes 2022]]. O vídeo completo do evento está disponível em https://www.youtube.com/watch?v=v--rVT4RsCE * A [[https://kernel-recipes.org/en/2022/talks/test-driven-kernel-releases/ | palestra de Guillaume Tucker sobre testes no Kernel do Linux]] propõe que o desenvolvimento e lançamento de novas versões do kernel sejam dirigidas a testes automatizados (vídeo disponível em https://youtu.be/v--rVT4RsCE?t=15731). Atualmente temos uma infraestrutura razoável para teste: KUnit para escrita de testes de unidade; LTP e kselftest. No entanto, os resultados das atividades de teste são restritas a poucos desenvolvedores (geralmente os responsáveis pelos subsistemas) e não são amplamente compartilhados. Algumas ferramentas que atualmente disponibilizam os resultados das atividades de teste são: [[https://syzkaller.appspot.com | syzbot]], [[https://linux.kernelci.org/job | KernelCI]], [[https://datawarehouse.cki-project.org | RedHat CKI]], [[https://linux-regtracking.leemhuis.info/regzbot/mainline/ | regzbot]]. No entanto, é necessário deixar os testes mais claros para o desenvolvimento. Várias sugestões foram feitas nesse sentido: incluir os casos de teste com o código do Kernel do Linux (hoje são mantidos separadamente); incluir na mensagem de commit informações sobre a execução de casos de teste (quem executou e onde estão disponíveis os resultados). * Outra apresentação sobre teste aconteceu em https://youtu.be/ELPENQrtUas?t=19587. Basicamente é um tutorial sobre testes para o Kernel do Linux. * História do BPF: https://youtu.be/ELPENQrtUas?t=11302 * Ainda da turma de BPF, descobri que o acme (Arnaldo Carvalho de Melo, ex-Conectiva) está trabalhando com isso agora. Palestra em https://www.youtube.com/watch?v=nhJqaZT94z0&t=21593s * Outra apresentação interessante: ftrace (https://www.youtube.com/watch?v=v--rVT4RsCE&t=18395s). Agora temos pontas de prova (probes) para eventos (além de funções do kernel: kprobes): eprobes. * ORT (OSS Review Toolkit, https://github.com/oss-review-toolkit/ort) é uma ferramenta interessante para encontrar problemas quanto a licenças de softwares utilizados em um projeto de código aberto. Ela suporta diversos gerenciadores de dependências ;-) * cadCAD (https://cadcad.org/): ferramenta para simulação de sistemas complexos em Python. Ocorrerá um sprint sobre ela no [[https://www.scipy2022.scipy.org/ | SciPy 2022]] (participação gratuita!).