Western Digital já está trabalhando em um driver NVMe escrito em Rust

Rust Linux

A integração do Rust no Linux teve um alto nível de aceitação pela comunidade e desenvolvedores

Durante a conferência “Linux Plumbers 2022” que estava em andamento nos dias de hoje, um engenheiro da Western Digital fez uma apresentação sobre o desenvolvimento de um controlador experimental para SSD NVM-Express (NVMe) escrito em Rust e rodando no nível do kernel Linux.

A pesar de que o projeto ainda está em fase inicial de desenvolvimento, os testes realizados mostraram que o desempenho do driver Rust NVMe corresponde ao driver NVMe escrito em C no kernel.

Eu sou Matthew Wilcox, sou um dos autores da especificação NVMe, fui eu quem sugeriu que eu fizesse um driver NVMe para demonstrar o valor do Rust. Foi um sucesso além das minhas expectativas mais loucas. 

Sobre o relatório apresentado o atual driver NVMe C é considerado totalmente satisfatório para desenvolvedores, mas o subsistema NVMe é uma boa plataforma para explorar a viabilidade de desenvolver drivers em Rust, pois é bastante simples, amplamente utilizado, possui requisitos de alto desempenho, possui implementação de referência comprovada para comparação e suporta várias interfaces ( dev, pci, dma, blk-mq, gendisk, sysfs).

É observado que o driver Rust PCI NVMe já fornece a funcionalidade necessária para operação, mas ainda não está pronto para uso generalizado, pois requer aprimoramentos separados.

Os planos para o futuro incluem a eliminação de bloqueios inseguros existentes, suporte para remover o dispositivo e baixar o driver, suporte a interface sysfs, implemente a inicialização lenta, crie um controlador para blk-mq e experimente um modelo de programação assíncrona para queue_rq.

Além disso, podemos apontar os experimentos realizados pelo Grupo NCC para desenvolver controladores na linguagem Rust para o kernel do FreeBSD. Como exemplo, um controlador de eco simples que retorna dados gravados no /dev/rustmodule. Na próxima fase de experimentação, o NCC Group está considerando retrabalhar os principais componentes do Rust para melhorar a segurança das operações de rede e arquivos.

Dito isto, embora tenha sido demonstrado que é possível criar módulos simples em Rust, uma integração mais estreita do Rust no kernel do FreeBSD exigirá trabalho adicional.

Por exemplo, ele menciona a necessidade de criar um conjunto de camadas de abstração sobre os subsistemas e estruturas do kernel, semelhantes aos plugins preparados pelo projeto Rust para Linux. No futuro, planejamos realizar experimentos semelhantes com o núcleo Illumos e destacar abstrações comuns em Rust que podem ser usadas em drivers escritos por Rust para Linux, BSD e Illumos.

De acordo com a Microsoft e o Google, cerca de 70% das vulnerabilidades em seus produtos de software se devem ao gerenciamento de memória inseguro.

O uso da linguagem Rust deve reduzir o risco de vulnerabilidades causado pelo manuseio inseguro da memória e eliminará a ocorrência de erros como acesso a uma área da memória após sua liberação e estouro de buffer.

A segurança da memória é fornecida no Rust em tempo de compilação, verificando referências, rastreando a propriedade do objeto e o tempo de vida do objeto (escopo), bem como avaliando a correção do acesso à memória durante a execução do código.

Ferrugem também fornece proteção contra estouro de inteiro, exige que as variáveis ​​sejam inicializadas antes do uso, trata melhor os erros na biblioteca padrão, reforça o conceito de variáveis ​​e referências imutáveis ​​por padrão e oferece tipagem estática forte para minimizar erros lógicos.

Vale a pena mencionar que pode ser possível que o trabalho futuro ande de mãos dadas com o trabalho que Miguel Ojeda apresentou em seus drivers "Rust for Linux", que foram apresentados como uma série de patches.

Finalmente se você estiver interessado em saber mais sobre isso, você pode verificar os detalhes em o seguinte link.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.