Condividi tramite


Memorizzazione nella cache della memoria registrata

I provider di servizi SAN possono memorizzare nella memoria cache i buffer RDMA esposti per l'accesso, sia locale che remoto, al fine di migliorare le prestazioni.

Cacherizzazione dei buffer RDMA esposti per l'accesso locale

L'interruttore Windows Sockets chiama la funzione di estensione WSPRegisterMemory di un fornitore di servizi SAN per conto di un'applicazione per registrare tutti i buffer di dati che fungono da buffer RDMA ricevente locale in una chiamata alla funzione di estensione WSPRdmaRead o da origine RDMA locale in una chiamata alla funzione di estensione WSPRdmaWrite. Nell'ambito di questo processo di registrazione, il provider di servizi SAN deve bloccare questi buffer in aree di memoria fisica e registrarle con la scheda di interfaccia di rete SAN. Entrambe queste operazioni richiedono un utilizzo intensivo delle risorse. Pertanto, il provider di servizi SAN deve usare la memorizzazione nella cache per ridurre il sovraccarico di queste registrazioni. Se il provider di servizi SAN usa la memorizzazione nella cache, le prestazioni delle applicazioni che riutilizzano i buffer per i trasferimenti di dati migliorano.

I provider di servizi SAN devono memorizzare nella cache e rilasciare buffer RDMA esposti per l'accesso locale, come descritto nell'elenco seguente:

  1. Quando lo switch chiama la funzione di estensione WSPDeregisterMemory per rilasciare un buffer, il provider di servizi SAN deve mantenere il buffer registrato sulla NIC SAN e bloccato in una regione di memoria fisica. Il provider di servizi SAN deve anche aggiungere il buffer a una cache di buffer registrati, nel caso in cui il buffer venga usato nuovamente in un'operazione RDMA successiva e il possesso sicuro del buffer, come descritto nella voce di elenco successiva.

  2. Un provider di servizi SAN memorizza nella cache le registrazioni di memoria in base agli indirizzi virtuali. Quando il provider di servizi SAN memorizza nella cache la registrazione di un buffer, il driver proxy del provider di servizi SAN deve chiamare la funzione MmSecureVirtualMemory per proteggere il possesso del buffer registrato, in modo che il sistema operativo notifichi lo switch se il buffer viene rilasciato, ad esempio, se un'applicazione chiama la funzione VirtualFree per rilasciare un intervallo di indirizzi virtuali al sistema operativo.

  3. Quando l'opzione chiama successivamente WSPRegisterMemory per registrare un buffer, il provider di servizi SAN deve controllare la cache per determinare se il buffer è già registrato. Se il provider di servizi SAN trova il buffer nella cache, il provider di servizi SAN non deve eseguire ulteriori azioni di registrazione.

  4. Prima che i mapping da virtuale a fisico del buffer registrato subiscano modifiche, lo switch richiama la funzione di estensione WSPMemoryRegistrationCacheCallback di ciascun provider di servizi SAN. Ogni driver proxy del provider di servizi SAN, a sua volta, deve chiamare la funzione MmUnsecureVirtualMemory per rilasciare la proprietà del buffer. Inoltre, ogni provider di servizi SAN deve rimuovere il buffer dalla cache e deve rimuovere la registrazione del buffer dalla scheda di interfaccia di rete SAN.

  5. Prima che la connessione tra un socket SAN locale e un peer remoto venga chiusa, il provider di servizi SAN deve rilasciare eventuali buffer memorizzati nella cache.

Nota Il driver proxy deve usare il try/except meccanismo relativo al codice che accede a un buffer in modalità utente protetto tramite una chiamata a MmSecureVirtualMemory per evitare arresti anomali del sistema operativo. Per altre informazioni su come un driver proxy protegge e rilascia i buffer, vedere Protezione e rilascio della proprietà degli indirizzi virtuali.

Memorizzazione nella cache dei buffer RDMA esposti per l'accesso remoto

L'interruttore Windows Sockets chiama la funzione di estensione WSPRegisterRdmaMemory di un provider di servizi SAN per registrare tutti i buffer di dati che fungono da destinazione o origine RDMA remota nelle chiamate remote WSPRdmaWrite o WSPRdmaRead. Ovvero, l'opzione espone questi buffer per l'accesso da parte di un peer remoto. Al termine dei trasferimenti di dati da questi buffer, lo switch chiama la funzione di estensione WSPDeregisterRdmaMemorydel provider di servizi SANper rilasciare questi buffer, così da non essere più accessibili dal peer remoto.

I provider di servizi SAN devono memorizzare nella cache i buffer RDMA esposti per l'accesso remoto, come descritto nell'elenco seguente:

  1. Quando lo switch chiama WSPDeregisterRdmaMemory per rilasciare un buffer, il provider di servizi SAN dovrebbe mantenere il buffer bloccato nella memoria fisica e registrato con la scheda di interfaccia di rete SAN. Il provider di servizi SAN deve anche aggiungere il buffer a una cache di buffer registrati, nel caso in cui il buffer venga usato nuovamente in un'operazione RDMA successiva. Tuttavia, il provider di servizi SAN deve intervenire in modo appropriato per garantire che il peer remoto non possa più accedere al buffer. Nota Se il buffer può essere reso inaccessibile solo dal provider di servizi SAN rimuovendo la registrazione del buffer dalla scheda di interfaccia di rete SAN, il provider di servizi SAN deve farlo. Tuttavia, il provider di servizi SAN deve lasciare bloccato il buffer in un'area di memoria fisica. Questo scenario non offre le migliori prestazioni possibili, ma è migliore di nessuna memorizzazione nella cache.

  2. Per memorizzare nella cache i buffer RDMA esposti per l'accesso remoto, il provider di servizi SAN e il relativo driver proxy devono usare le tecniche di memorizzazione nella cache come descritto nell'elenco precedente per i buffer RDMA esposti per l'accesso locale.

  3. Quando l'opzione chiama successivamente WSPRegisterRdmaMemory per registrare un buffer, il provider di servizi SAN deve controllare la cache per determinare se il buffer è già registrato. Se il provider di servizi SAN trova il buffer nella cache, il provider di servizi SAN deve semplicemente esporre il buffer per l'accesso remoto, non è necessaria alcuna ulteriore azione di registrazione. Tuttavia, se la registrazione del buffer è stata precedentemente rimossa dalla scheda di interfaccia di rete SAN, il provider di servizi SAN deve registrare nuovamente il buffer.

  4. Per rilasciare buffer RDMA esposti per l'accesso remoto, il provider di servizi SAN e il relativo driver proxy devono usare le tecniche descritte nell'elenco precedente.