Blog

Asta e sigur o întrebare care rezonează în mintea multora. Cei care folosesc deja sisteme de stocare SSD încearcă să afle dacă o eventuală migrare la NVMe le-ar aduce sau nu vreun spor de performanță. Pentru cei care nu au făcut înca trecerea la SSD, această efervescență le va produce probabil și mai multă nedumerire și incertitudine privind soluția către care trebuie să se îndrepte.

Atenție, urmează o analiză ceva mai tehnică...

Intel – producator celebru de tehnologie flash, a publicat diagrama de mai jos.

Analizând aceste rezultate, putem concluziona că performanțele date de SSD-uri NVMe provin în special din latența “controllerului” și de stack-ul software. Unitatea de stocare NAND (astăzi se folosește în special TLC, în detrimentul obișnuitelor SLC/MLC) oferind o performanță similară în cazul ambelor implementări.

Evident, protocolul NVMe deschide ușa către adoptarea SCM (Storage Class Memory), unde câstigul de performanță ar fi super-impresionant, dar pentru asta va trebui să mai asteptăm câțiva ani pâna va deveni mainstream pe la noi. Nu insistăm acum cu acest subiect.

Revenind la soluțiile NAND + NVMe disponibile astăzi, putem spune că implementarea lor ca și capacitate internă în servere nu e o filozofie. Unitătile se conectează de obicei pe sloturi PCIe, oferă capacități similare (400GB, 800GB, 1,6TB, etc.) și au avantajul major că “vorbesc” direct cu procesorul, instrucțiunile nemaifiind traduse/convertite prin controllerul SAS/SATA cum a fost cazul până acum. Asta înseamnă o latența considerabil mai mică și un throughput mult mai mare (capacitatea e dată de slotul PCIe, în varianta 3.0 x4 acesta suportă 31Gbit/sec).

Însă toată lumea e cu ochii pe piața de storage, unde toți producatorii s-au grăbit să anunțe gama de noi dispozitive care acomodează SSD NVMe. Aici lucrurile sunt mai diversificate, considerăm noi. Sigur că există implementări reușite sau mai puțin reușite, datorate abordărilor foarte diferite din software-ul controllerelor unităților de stocare, însă vreau să menționez urmatoarele aspecte:

  • Bottleneck-ul e la nivel de controller. Sau altfel spus, performanța este dată de controller. Astăzi, cam 20 SSD-uri SATA pot satura orice controller de storage. Probabil că folosind NVMe, 10 astfel de unităti pot trimite controllerul în 100% grad de utilizare. Dacă un SSD cu NVMe poate citi secvential la 3GB/s, asta totuși nu înseamnă că un storage cu 24 de astfel de unitați va oferi 72GB/s citire secvențială. Modul în care controllerele vor putea administra performanța suplimentară data de aceste subsisteme va fi foarte important, iar diferențele între implementarile diferitilor vendori vor putea fi evaluate doar folosind niște benchmark-uri relevante, de catre fiecare în parte.
  • NVMe over Fabrics. Evident, protocoalele actuale FC sau iSCSI nu vor fi potrivite pentru NVMe și vor trebui inlocuite. Altfel, bottleneck-ul se mută la nivel de protocol și nu putem folosi intreaga performanță disponibilă. Rămâne să vedem dacă HBA-urile existente de FC vor putea fi păstrate prin schimbarea firmware-ului, sau vor trebui înlocuite cu totul. Ce soarta vor avea switch-urile SAN FC pe care le avem în acest moment este o altă incertitudine.
  • Chiar am nevoie de asa ceva? Chiar și un dispozitiv “clasic” cu discuri rotative poate furniza (într-o configurație medie) aprox 15.000 IOPS la o latență sub 10ms cu un mix de citire/scriere secvențial/aleatoriu. Un All Flash Array poate furniza 100.000 IOPS cu lantențe mai mici de 2ms. În realitate vedem în România puține cazuri în care implementarile software au nevoie de acest gen de performanțe și sunt capabile să transforme aceste performanțe suplimentare într-un efect vizibil de către utilizatori.

În viziunea noastră, NVMe se va impune natural și va înlocui 90% din piață de SSD-uri NAND în următorii 3-5 ani. În viitorul apropiat însă, costul acestei tehnologii (și a implementării aferente) va fi destul de mare. Noi considerăm că pot fi realizate optimizări la nivel software și hardware pentru aplicațiile și bazele de date utilizate de 98% din companiile românești care să îmbunătățească considerabil performanța sistemelor și fără implementarea tehnologiilor NVMe.