Os modernos dispositivos de E / S são mais rápidos que os processadores. Visão geral do artigo


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.

Source: https://habr.com/ru/post/pt451966/


All Articles