Simple Science

Ciência de ponta explicada de forma simples

# Informática# Criptografia e segurança

Melhorando o desempenho do Intel SGX com chamadas dinâmicas sem troca

Novo método melhora a eficiência do Intel SGX e reduz problemas de desempenho.

― 7 min ler


Chamadas Dinâmicas SemChamadas Dinâmicas SemSwitch para SGXcom configurações dinâmicas.Revolucione o desempenho do Intel SGX
Índice

Intel SGX, ou Software Guard Extensions, é uma tecnologia que oferece uma maneira de processar dados sensíveis de forma segura. Ela cria pequenas áreas criptografadas na memória do computador, chamadas de Enclaves. Esses enclaves são feitos pra manter os dados seguros contra acessos não autorizados ou manipulações, até mesmo do próprio sistema operacional. Isso é super útil em aplicativos que lidam com informações privadas, como dados bancários ou de saúde.

Mas tem os lados negativos de usar SGX. Um dos maiores problemas é que trocar entre operações normais e operações de enclave tem um custo alto de Desempenho. Essa transição pode levar até 14.000 ciclos de CPU, tornando tudo bem mais lento em comparação com operações regulares que levam cerca de 250 ciclos. Para aplicativos que precisam usar enclaves frequentemente, essa sobrecarga pode causar lentidões significativas.

O que são Chamadas Sem Troca?

Pra diminuir a perda de desempenho dessas transições, a Intel SGX introduziu as chamadas sem troca. Elas permitem que certos tipos de chamadas de função sejam feitas sem precisar da troca custosa pro modo enclave. Basicamente, uma thread de trabalho fora do enclave pode lidar com pedidos de um enclave sem precisar entrar e sair dele a cada chamadinha.

Embora essa abordagem melhore o desempenho, ela tem suas limitações. Os desenvolvedores precisam configurar o sistema manualmente pra decidir quais chamadas devem ser sem troca durante o processo de construção. Essa configuração estática pode levar a erros de configuração, resultando em desperdício de Recursos de CPU e desempenho reduzido.

Os Problemas com as Configurações Atuais

  1. Seleção Estática de Chamadas Sem Troca: Quando os desenvolvedores estão configurando um sistema, eles precisam saber quais funções serão chamadas frequentemente e por quanto tempo. Mas essa informação geralmente é difícil de estimar com precisão. Eles podem classificar uma função como sem troca erradamente, o que pode levar a problemas de desempenho.

  2. Dimensionamento do Pool de Threads de Trabalho: Os desenvolvedores também têm que decidir quantas threads de trabalho podem ser usadas pra lidar com chamadas sem troca. Se eles configurarem esse número muito alto, os recursos são desperdiçados enquanto as threads esperam por trabalho. Se configurarem muito baixo, os aplicativos vão ter que depender mais das transições regulares e custosas.

  3. Parametrização do SDK: O SDK da Intel SGX inclui parâmetros que ditam quantas vezes uma thread deve tentar uma chamada sem troca antes de desistir e voltar pra uma chamada normal. Esses padrões podem levar a atrasos desnecessários e problemas de desempenho, especialmente se estiverem configurados muito altos.

Uma Nova Abordagem: Chamadas Sem Troca sem Configuração

Pra resolver esses problemas, uma nova abordagem foi proposta. Essa técnica permite a seleção e configuração dinâmica de chamadas sem troca, eliminando a necessidade de configuração estática. Veja como funciona:

Gestão Dinâmica de Threads de Trabalho

Em vez de fixar o número de threads de trabalho na hora da construção, esse novo método ajusta dinamicamente o número de threads com base na demanda atual. Isso significa que se a carga de trabalho aumentar, mais threads podem ser ativadas, e se diminuir, threads desnecessárias podem ser pausadas. Isso ajuda a otimizar o uso da CPU e reduzir o desperdício de recursos.

Monitoramento de Desempenho em Tempo Real

Um agendador a nível de aplicativo é implementado pra acompanhar métricas de desempenho em tempo real. Isso inclui medir ciclos de CPU desperdiçados e o número de chamadas regulares que ocorrem. Com base nesses dados, o agendador pode ajustar o número de threads ativas pra se adequar à carga de trabalho atual, otimizando o desempenho.

Arquitetura Orientada a Eventos

O sistema é projetado pra fazer chamadas sem troca enquanto houver threads de trabalho disponíveis. Se todas as threads estiverem ocupadas, a chamada pode voltar pra uma chamada normal sem esperar em um loop ocupado. Isso reduz potenciais atrasos e mantém o sistema rodando suave.

Avaliando o Sistema Atualizado

Testes e avaliações mostraram que essa nova abordagem reduz significativamente as penalidades de desempenho associadas a sistemas mal configurados. A gestão e monitoramento dinâmicos levam a uma melhor utilização de recursos e tempos de execução mais rápidos.

Testes de Benchmark

Pra avaliar a eficácia dessa nova abordagem, diversos benchmarks foram realizados. Isso incluiu medir a rapidez com que o sistema poderia realizar tarefas como leitura e escrita de arquivos, além de outras operações comuns dentro dos enclaves.

  1. Benchmarking Estático: Isso envolveu usar um aplicativo de chave/valor pra ver quão rápido os dados poderiam ser definidos e recuperados. Observou-se que a nova abordagem sem configuração teve desempenho melhor que os métodos tradicionais, especialmente em casos onde configurações mal feitas anteriormente levaram a lentidões.

  2. Teste de Carga de Trabalho Dinâmica: Nessa fase, o número de operações de leitura e escrita variou ao longo do tempo. O sistema automaticamente ajustou o número de threads de trabalho em resposta às cargas de trabalho que mudavam. Essa otimização em tempo real demonstrou benefícios claros no uso da CPU e velocidade de execução.

  3. Desempenho de Cópia de Memória: Também foi focado em melhorar a função memcpy usada dentro dos enclaves. A implementação padrão era relativamente lenta pra certas operações, especialmente quando se tratava de lidar com tamanhos de buffer. O método atualizado acelerou significativamente operações envolvendo buffers de memória alinhados e desalinhados.

Implicações do Trabalho

As melhorias feitas nessa nova abordagem pro Intel SGX têm várias implicações importantes:

  • Desempenho Aprimorado: Ao reduzir a dependência de configurações estáticas, os aplicativos podem ter um desempenho melhor, especialmente sob cargas de trabalho variáveis. Isso significa que aplicativos que dependem de dados sensíveis podem rodar de forma eficiente sem sacrificar a segurança.

  • Eficiência de Recursos: A redução nos ciclos de CPU desperdiçados permite uma melhor utilização dos recursos, o que é particularmente importante em ambientes de computação em nuvem onde múltiplos aplicativos podem estar rodando simultaneamente.

  • Experiência Melhorada para Desenvolvedores: Com um sistema dinâmico que ajusta automaticamente os parâmetros, os desenvolvedores podem focar mais nas funcionalidades do aplicativo em vez de tunar configurações pro desempenho.

Conclusão

Intel SGX oferece uma solução robusta pra proteger dados sensíveis, mas vem com desafios relacionados ao desempenho e à gestão de recursos. A introdução de um sistema dinâmico e sem configuração pra gerenciar chamadas sem troca aborda esses problemas diretamente, proporcionando melhorias significativas na velocidade de execução e eficiência.

Os trabalhos futuros vão olhar pra integrar ferramentas de perfilamento mais avançadas e realizar mais análises em outras rotinas dentro do SDK pra garantir melhorias contínuas no desempenho. O potencial pra esses sistemas dinâmicos é vasto, abrindo caminho pra aplicativos mais seguros e eficientes em várias áreas, especialmente em uma era onde a privacidade dos dados é mais crítica do que nunca.

Fonte original

Título: SGX Switchless Calls Made Configless

Resumo: Intel's software guard extensions (SGX) provide hardware enclaves to guarantee confidentiality and integrity for sensitive code and data. However, systems leveraging such security mechanisms must often pay high performance overheads. A major source of this overhead is SGX enclave transitions which induce expensive cross-enclave context switches. The Intel SGX SDK mitigates this with a switchless call mechanism for transitionless cross-enclave calls using worker threads. Intel's SGX switchless call implementation improves performance but provides limited flexibility: developers need to statically fix the system configuration at build time, which is error-prone and misconfigurations lead to performance degradations and waste of CPU resources. ZC-SWITCHLESS is a configless and efficient technique to drive the execution of SGX switchless calls. Its dynamic approach optimises the total switchless worker threads at runtime to minimise CPU waste. The experimental evaluation shows that ZC-SWITCHLESS obviates the performance penalty of misconfigured switchless systems while minimising CPU waste.

Autores: Peterson Yuhala, Michael Paper, Timothée Zerbib, Pascal Felber, Valerio Schiavoni, Alain Tchana

Última atualização: 2023-07-07 00:00:00

Idioma: English

Fonte URL: https://arxiv.org/abs/2305.00763

Fonte PDF: https://arxiv.org/pdf/2305.00763

Licença: https://creativecommons.org/licenses/by/4.0/

Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.

Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.

Mais de autores

Artigos semelhantes