
Quero falar sobre o artigo "A E / S é mais rápida que a CPU - Vamos particionar recursos
e Eliminate (Most) OS Abstractions " , publicado na página pessoal de um dos desenvolvedores do ScyllaDB, Pekka Enberg. Descobri sobre isso no vídeo .
Os autores deste artigo deveriam fazer uma apresentação no workshop HOTOS17 (Tópicos Quentes em Sistemas Operacionais) de 12 a 15 de maio de 2019. Até onde eu entendo, eles estão discutindo desenvolvimentos lá nos estágios iniciais de suas vidas.
Meu artigo é uma notícia para despertar mentes inquisitivas para pensar sobre esse tópico e pensar nos comentários.
Ponto geral
A E / S em servidores com placas de rede programáveis rápidas e memória não volátil se aproxima da velocidade da RAM volátil, e a velocidade do núcleo de um processador permanece em vigor. Os aplicativos não podem tirar proveito do hardware moderno porque forçado a usar interfaces criadas em abstrações envolvendo sistemas de E / S lentos.
Os autores propõem sua própria estrutura de sistema operacional chamada parakernel , eliminam a maioria das abstrações do sistema operacional e fornecem uma interface para aplicativos, para que eles possam usar todo o potencial do equipamento. O Parakernel facilita a simultaneidade no nível do aplicativo, compartilhando recursos com segurança e multiplexando recursos compartilhados.
A arquitetura dos sistemas operacionais modernos foi inventada quando a velocidade de E / S era muito menor e os aplicativos aguardavam a E / S. Atualmente, os dispositivos de E / S podem saturar facilmente o processador.
Segundo os autores, as pilhas de rede modernas fazem muito trabalho por pacote. Além disso, os sistemas operacionais normalmente implementam a API do soquete POSIX, que tem o alto custo de alternância de contexto e poluição do cache da CPU.
Pré-requisitos de hardware
Uma moderna placa de rede de 40 Gbps pode receber um pacote proporcional à linha de cache a cada 5 ns, e o atraso no acesso aos processadores LLC (cache de último nível) é de cerca de 15 ns.
Por exemplo, o Linux desenvolveu a interface POSIX AIO, que deve fornecer uma interface de E / S assíncrona simples e eficiente. A implementação, suporte e aplicação dessa interface com a preservação da semântica do POSIX se mostrou muito difícil e foi abandonada em favor da nova io_uring .
Qual é a solução proposta
A nova estrutura do sistema operacional, que os autores chamam de parakernel , foi projetada para simplificar a paralelização de tarefas. Os recursos são alocados aos aplicativos e eles têm controle total sobre eles; os recursos que não podem ser compartilhados são multiplexados pelo kernel.
O compartilhamento de recursos em sistemas com vários núcleos requer sincronização entre os núcleos do processador, o que evita a simultaneidade no nível do aplicativo. Esse obstáculo pode ser reduzido dividindo os recursos entre os núcleos do processador.
Sumário
Algumas abstrações do sistema operacional limitam o desempenho de E / S. Os autores apresentam uma estrutura de sistema operacional que compartilha recursos compartilhados e multiplexa recursos compartilhados. O Parakernel simplifica a simultaneidade no nível do aplicativo e complementa o design do segmento ao núcleo .
O protótipo de parakernel está escrito em Rust e está atualmente em desenvolvimento. No artigo, não vi o nome do sistema operacional, mas encontrei outro material de um dos autores do sistema operacional Manticore e concluo que aqui está o repositório desse desenvolvimento.
O que há no resto do mundo
Acontece que os fabricantes de processadores não estão dormindo e também estão tentando resolver o problema da camada lenta entre seus produtos e consumidores. Muitas pessoas não gostam do gargalo de desempenho na forma do kernel do sistema operacional.
Inovações interessantes da Intel, mais sobre as quais podem ser encontradas neste artigo . Aqui está um trecho:
- Dispositivo de gerenciamento de volume Intel (Intel VMD) - permite trabalhar diretamente com as unidades NVM Express, "fornecendo" o dispositivo diretamente ao sistema de armazenamento. Como resultado, tornou-se possível um SSD completo de troca a quente, indicação de status e uso da tecnologia Intel VROC.
- RAID virtual Intel na CPU (Intel VROC). Permite criar RAID a partir de unidades NVMe usando o processador, com ele você pode recusar soluções de software ou adaptadores adicionais para criar matrizes de SSD PCIe de alta velocidade.
- Protocolo RDMA de área ampla da Internet (iWARP). A extensão RDMA agora é suportada pelos adaptadores de rede integrados Intel X722, porque o processador suporta quatro portas Ethernet de 10 gigabit (ou gigabit). Deixe-me lembrá-lo de que o RDMA obtém acesso aos dados pela rede diretamente da memória, ignorando o kernel e o sistema operacional.
É sempre muito interessante aprender sobre novos conceitos em sistemas já enraizados.
Por favor, escreva sobre bugs e adições necessárias.
UPD : Este artigo está sendo alterado pela comunidade.
Obrigado pela ajuda:
Uma linha de publicidade para o podcast " Zinc Prod ", na qual discutiremos este artigo com base em tópicos.