Partilhar via


Armazenamento em cache de memória registrada

Os provedores de serviços de SAN podem armazenar em cache os buffers RDMA que estão expostos para acesso local ou remoto para melhorar o desempenho.

Armazenamento em cache de buffers RDMA expostos para acesso local

O switch Windows Sockets invoca a função de extensão WSPRegisterMemory de um provedor de serviços SAN em nome de uma aplicação, com o objetivo de registar todos os buffers de dados que servem como o buffer RDMA local para recepção numa chamada para a função de extensão WSPRdmaRead ou como a fonte RDMA local numa chamada para a função de extensão WSPRdmaWrite. Como parte desse processo de registro, o provedor de serviços de SAN deve bloquear esses buffers em regiões de memória física e registrá-los na SAN NIC. Ambas as operações consomem muitos recursos. Portanto, o provedor de serviços de SAN deve usar o cache para reduzir a sobrecarga desses registros. Se o provedor de serviços de SAN usar cache, o desempenho dos aplicativos que reutilizam buffers para transferências de dados melhora.

Os provedores de serviços de SAN devem armazenar em cache e liberar buffers RDMA expostos para acesso local, conforme descrito na lista a seguir:

  1. Quando o switch chama a função de extensão do WSPDeregisterMemory para liberar um buffer, o provedor de serviços SAN deve deixar o buffer registrado com a NIC SAN e fixado em uma região de memória física. O provedor de serviços de SAN também deve adicionar o buffer a um cache de buffers registrados, caso o buffer seja usado novamente em uma operação RDMA subsequente, e proteger a posse do buffer conforme descrito no próximo item da lista.

  2. Um provedor de serviços de SAN armazena em cache registros de memória com base em endereços virtuais. Quando o provedor de serviços de SAN armazena em cache o registro de um buffer, o driver de proxy do provedor de serviços de SAN deve chamar a função MmSecureVirtualMemory para proteger a posse desse buffer registrado, de modo que o sistema operativo notifique o switch se o buffer for liberado (por exemplo, se uma aplicação chamar a função VirtualFree para liberar um intervalo de endereços virtuais de volta para o sistema operativo).

  3. Quando o switch chama subsequentemente WSPRegisterMemory para registrar um buffer, o provedor de serviços SAN deve verificar seu cache para determinar se o buffer já está registrado. Se o provedor de serviços de SAN encontrar o buffer em seu cache, não deverá executar nenhuma outra ação de registro.

  4. Antes que os mapeamentos virtuais para físicos do buffer registado sejam alterados posteriormente, o switch chama a função de extensão WSPMemoryRegistrationCacheCallback de cada fornecedor de serviços de SAN. O driver de proxy de cada provedor de serviços de SAN, por sua vez, deve chamar a função MmUnsecureVirtualMemory para liberar a propriedade do buffer. Além disso, cada provedor de serviços de SAN deve remover o buffer de seu cache e deve remover o registro do buffer da SAN NIC.

  5. Antes que a conexão entre um soquete de SAN local e um peer remoto seja fechada, o provedor de serviços de SAN deve liberar todos os buffers armazenados em cache.

Observação O driver de proxy deve usar o mecanismo try/except em torno do código que acessa um buffer de modo de usuário que foi protegido por meio de uma chamada para MmSecureVirtualMemory para evitar falhas no sistema operacional. Para obter mais informações sobre como um driver de proxy protege e libera buffers, consulte Protegendo e liberando a propriedade de endereços virtuais.

Armazenamento em cache de buffers RDMA expostos para acesso remoto

O switch a Windows Sockets chama a função de extensão WSPRegisterRdmaMemory de um provedor de serviços SAN, para registar todos os buffers de dados que servem como destino RDMA remoto de chamadas remotas WSPRdmaWrite ou como fonte RDMA de chamadas remotas WSPRdmaRead. Ou seja, o switch expõe esses buffers para acesso por um peer remoto. Depois de serem concluídas as transferências de dados desses buffers, o switch chamará a função de extensão do provedor de serviços de SAN WSPDeregisterRdmaMemory para liberar esses buffers para que não sejam mais acessíveis a partir do peer remoto.

Os provedores de serviços de SAN devem armazenar em cache os buffers RDMA expostos para acesso remoto, conforme descrito na lista a seguir:

  1. Quando o comutador chama WSPDeregisterRdmaMemory para libertar um buffer, o fornecedor de serviços SAN deve manter o buffer bloqueado na memória física e registado com a placa de rede SAN (NIC). O provedor de serviços de SAN também deve adicionar o buffer a um cache de buffers registrados, caso o buffer seja usado novamente em uma operação RDMA subsequente. No entanto, o provedor de serviços de SAN deve tomar as medidas apropriadas para garantir que o peer remoto não possa mais acessar o buffer. Observação Se o buffer só puder ser tornado inacessível pelo provedor de serviços SAN removendo o registro do buffer da SAN NIC, o provedor de serviços SAN deverá fazê-lo. No entanto, o provedor de serviços de SAN deve deixar o buffer bloqueado em uma região de memória física. Esse cenário não fornece o melhor desempenho possível, mas é melhor do que nenhum cache.

  2. Para armazenar em cache buffers RDMA expostos para acesso remoto, o provedor de serviços SAN e seu driver de proxy devem usar as técnicas de cache conforme descrito na lista anterior para buffers RDMA expostos para acesso local.

  3. Quando o switch chama subsequentemente WSPRegisterRdmaMemory para registrar um buffer, o provedor de serviços de SAN deve verificar seu cache para determinar se o buffer já está registrado. Se o provedor de serviços de SAN encontrar o buffer em seu cache, o provedor de serviços de SAN deverá simplesmente expor o buffer para acesso remoto, nenhuma ação de registro adicional será necessária. No entanto, se o registro do buffer tiver sido removido anteriormente da SAN NIC, o provedor de serviços de SAN deverá registrar o buffer novamente.

  4. Para liberar buffers RDMA expostos para acesso remoto, o provedor de serviços de SAN e seu driver de proxy devem usar as técnicas descritas na lista anterior.