E o Google está trabalhando na abertura do código do Fibers, seu User-Space Scheduling Framework. Conheça o software e entenda.
Por vários anos, o Google desenvolveu o Fibers (não deve ser confundido com o Google Fiber, seu serviço de Internet de fibra) como um User-Space Scheduling Framework.
Embora não seja de código aberto, os poucos artigos públicos e palestras sobre o Google Fibers têm sido bastante interessantes para um ótimo desempenho e um design inovador.
Finalmente, porém, o Google está trabalhando para abrir o código-fonte do Fibers e esperando que as modificações necessárias do kernel do Linux sejam atualizadas.
Google está trabalhando na abertura do código do Fibers
Das informações públicas limitadas sobre o Google Fibers, um dos principais recursos tem sido esta Plumbers Conference Linux de 2013:
O Google vem desenvolvendo e usando esta estrutura de agendamento de espaço do usuário há quase uma década e eles estão finalmente trabalhando no código-fonte aberto da estrutura.
Como parte disso, eles estão trabalhando inicialmente em seus patches de kernel UMCG (User-Managed Concurrency Groups), que são os primitivos do lado do kernel para este trabalho.
O Google realmente enviou a série de patch RFC para UMCG no final de maio, mas aconteceu de não notar essa série até hoje em algumas discussões subsequentes.
O código do kernel UMCG é resumido como:
“Grupos de simultaneidade gerenciados pelo usuário é uma estrutura de agendamento de espaço de usuário em processo e comutação rápida de contexto. Dois casos de uso principais são caixas de proteção de segurança e programação de espaço de usuário. Caixas de proteção de segurança: a alternância rápida de contexto de processo X abrirá um conjunto de ferramentas de segurança leves, por exemplo, gVisor ou simulador de sombra do Tor Project, para mais casos de uso. A programação do espaço do usuário em processo é usada extensivamente no Google para fornecer controle de latência e garantias de isolamento para diversas cargas de trabalho, mantendo alta utilização da CPU.”
A opção de compilação UMCG adiciona:
“Habilite operações de wait/wake/swap (espera/despertar/troca) de núcleo UMCG, bem como API de grupo/servidor/trabalhador UMCG. A API principal é útil para IPC rápido e comutação de contexto, enquanto a API de group/server/worker (grupo/servidor/trabalhador), junto com a API principal, forma a base para uma estrutura de agendamento de espaço do usuário M:N em processo implementada em lib/umcg.”
Será interessante ver como esse esforço de código aberto UMCG/Google Fibers se desenvolverá nos próximos meses… Fique ligado.
E se ficou o assunto ficou um pouco nebuloso para você, não se preocupe, a medida que mais informações forem divulgadas publicarei outros artigos sobre o tema.