background

NVMe

Autor: © 2020 Tomasz Jangas

 

NVMe jest standardem zbudowanym dla dysków flash i ma zastąpić aktualnie wykorzystywany protokół transmisji danych do/z dysków. Co go w takim razie wyróżnia?

Po pierwsze, zrównoleglenie zadań, które w przypadku NVMe są wykonywane w 64 tys. kolejek (zamiast w jednej). A każda z tych kolejek może zawierać 64 tys. poleceń (zamiast 32), podzielonych na dwie grupy: administracyjne i IO. Każda kolejka może mieć zdefiniowany swój własny priorytet i jest albo kolejką typu submission albo kolejką typu completion. W tych pierwszych przekazywane są wiadomości od serwera do kontrolera, a w tych drugich – od kontrolera do serwera. Zrównoleglenie pracy pozwala na znaczne obniżenie opóźnień i zwiększenie wydajności aplikacji, które mogą zacząć korzystać jednocześnie z 64 tysięcy równoległych strumieni.

Po drugie, skoro o opóźnieniach mowa, już sam protokół NVMe charakteryzuje się o połowę niższymi ich wartościami (2,7 us) w porównaniu do swojego poprzednika.

Po trzecie, wykorzystanie wielordzeniowości w taki sposób, że kolejki i przerwania (których również jest więcej) można przydzielać do różnych rdzeni procesorów. Ponadto, ponieważ każdy rdzeń procesora może mieć przydzieloną na własność swoją kolejkę, dlatego nie ma potrzeby synchronizacji komend (w pojedynczej kolejce wymagane jest blokowanie i synchronizacja komend).

Aby jednak móc w pełni wykorzystać zalety protokołu NVMe, konieczne jest użycie zupełnie innej magistrali niż do tej pory. Dlatego dyski SSD NVMe podłączane są bezpośrednio do szyny PCIe. Protokołem komunikacyjnym na tej magistrali jest natomiast protokół NVMe.

Czego można się spodziewać po NVMe?

Zbudowałeś sieć, która pozwala na zagwarantowanie i dotrzymanie wymaganych dla aplikacji SLO. Masz macierze z dyskami NVMe, które replikują dane pomiędzy ośrodkami i gwarantują przy tym bardzo niskie czasy odpowiedzi (również z uwzględnieniem tej replikacji).

Na co w takim przypadku mogą liczyć odbiorcy Twoich usług:

  • szybsze transakcje i niskie opóźnienia w tradycyjnych, relacyjnych bazach danych i lepsze doświadczenie użytkownika aplikacji,
  • większa ilość zapytań w bazach danych,
  • większa gęstość VM w serwerach,
  • lepsza obsługa mieszanych obciążeń w zwirtualizowanych środowiskach (konsolidacja),
  • szybsze czasy przetwarzania w hurtowniach danych,
  • szybsza eksploracja danych,
  • szybsza analiza danych w dużych zbiorach danych w czasie rzeczywistym (analiza strumieni danych, IoT),
  • szybsze przetwarzania w systemach plików takich jak HDFS oraz szybsze transakcje w bazach NoSQL.

Zapraszamy do zapoznania się z całym artykułem tutaj.

Pobierz broszurę (ENG)