OEMããã³ãœãããŠã§ã¢ãã³ããŒããã®ãããªããŒããŠã§ã¢ãçµ±åããã®ãæ¯æŽããããã«ãIntelã¯äžé£ã®ãã©ã€ããŒãäœæããStorage Performance Development KitïŒSPDKïŒãšåŒã°ããå®å šãªã¹ãã¬ãŒãžã¢ãŒããã¯ãã£ãéçºããŸããã SPDKã®ç®æšã¯ãIntelã®ãããã¯ãŒã¯ãã³ã³ãã¥ãŒãã£ã³ã°ãã¹ãã¬ãŒãžãã¯ãããžãŒã®çµã¿åããã«ãã£ãŠéæãããé«ãå¹çãšããã©ãŒãã³ã¹ã匷調ããããšã§ãã SPDKã®å©ããåããŠãè€æ°ã®ããã»ããµã³ã¢ãšè€æ°ã®NVMeãã©ã€ãã䜿çšããŠãã¢ã³ããŒãçšã®è¿œå æ©åšã䜿çšããã«ãæ¯ç§æ°çŸäžã®å ¥åºåæäœã§åªããçµæãéæã§ããããšãå®èšŒã§ããŸããã ã€ã³ãã«ã¯ãããåºãèªç±ãªBSDã©ã€ã»ã³ã¹ã®äžã§Linuxãªãã¡ã¬ã³ã¹ã¢ãŒããã¯ãã£ã®å®å šãªãœãŒã¹ã³ãŒããæäŸãã GitHubãéããŠã³ãã¥ããã£ã«é åžãããŠããŸã ã spdk.ioã«ã¯ãããã°ãã¡ãŒãªã³ã°ãªã¹ããããã³è¿œå ã®ããã¥ã¡ã³ãããããŸãã
ãœãããŠã§ã¢ã¢ãŒããã¯ãã£ã®æŠèŠ
SPDKã¯ã©ã®ããã«æ©èœããŸããïŒ ããŒãªã³ã°ã¢ãŒããã©ã€ã㌠ïŒPMDïŒã䜿çšããŠãŠãŒã¶ãŒã¬ãã«ã§èµ·åãããšãã2ã€ã®äž»ãªææ³ã䜿çšããããšã§ãéåžžã«é«ãããã©ãŒãã³ã¹ãå®çŸããŠããŸãã ããã2ã€ã®ãœãããŠã§ã¢ã®ååã詳ããèŠãŠã¿ãŸãããã
ãŸãããŠãŒã¶ãŒã¬ãã«ã§ããã€ã¹ãã©ã€ããŒã³ãŒããå®è¡ãããšããããšã¯ãå®çŸ©äžããã©ã€ããŒã³ãŒããã«ãŒãã«ã§å®è¡ãããªãããšãæå³ããŸãã ã«ãŒãã«ã®ã³ã³ããã¹ãã®äžæãšåãæ¿ãã«å€±æãããšãããªãã®ã³ã³ãã¥ãŒãã£ã³ã°ãªãœãŒã¹ãç¯çŽããããŒã¿ã®å®éã®ã¹ãã¬ãŒãžã«ããå€ãã®ãµã€ã¯ã«ãè²»ããããšãã§ããŸãã ã¹ãã¬ãŒãžã¢ã«ãŽãªãºã ã®è€éãïŒéè€æé€ãæå·åãå§çž®ããŸãã¯åŸæ¥ã®ãããã¯ã¹ãã¬ãŒãžïŒã«é¢ä¿ãªããç¡é§ãªãµã€ã¯ã«ãå°ãªãã»ã©ãããã©ãŒãã³ã¹ãé«ããªããé 延ãå°ãããªããŸãã ãã ããã«ãŒãã«ãäžå¿ èŠãªãªãŒããŒããããè¿œå ãããšã¯èšã£ãŠããŸããã ã«ãŒãã«ãæ±çšã³ã³ãã¥ãŒãã£ã³ã°ã·ããªãªã«å¿ èŠãªãªãŒããŒããããè¿œå ãããšèšãæ¹ãæ£ç¢ºã§ããããã¯å°çšã¹ãã¬ãŒãžã·ã¹ãã ã«ã¯é©çšã§ããªãå ŽåããããŸãã SPDKã®åºæ¬ååã¯ãè¿œå ã®ãœãããŠã§ã¢ãªãŒããŒãããã®åå ãæé€ããããšã«ãããæå°ã®é 延ãšæé«ã®å¹çã確ä¿ããããšã§ãã
第äºã«ããããã¯ãã¢ãŒããã©ã€ããŒã¯åºæ¬çãªI / Oã¢ãã«ãå€æŽããŸãã åŸæ¥ã®I / Oã¢ãã«ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã¯èªã¿åããŸãã¯æžã蟌ã¿èŠæ±ãéä¿¡ããŠãããã¹ãªãŒãç¶æ ã«ç§»è¡ããI / Oæäœã®å®äºåŸã«å²ã蟌ã¿ãèµ·ããã®ãåŸ ã¡ãŸãã ä¿è·ã¢ãŒããã©ã€ããŒã®åäœã¯ç°ãªããŸããã¢ããªã±ãŒã·ã§ã³ã¯èªã¿åããŸãã¯æžã蟌ã¿èŠæ±ãéä¿¡ããå¥ã®ãžã§ãã«åãæ¿ããŠãI / OèŠæ±ãå®äºãããã©ãããå®æçã«ç¢ºèªããŸãã ããã«ãããå²ã蟌ã¿ã®äœ¿çšã«äŒŽãé 延ãšã³ã¹ããæé€ãããã¢ããªã±ãŒã·ã§ã³I / Oã®å¹çãåäžããŸãã å転ãã©ã€ãïŒããšãã°ãããŒããã©ã€ããããŒããã©ã€ãïŒã䜿çšããæ代ã§ã¯ãå²ã蟌ã¿ã®ã³ã¹ãã¯åèšI / Oæéã®ããããªéšåã«ãªããŸãããããããã®ã¢ããªã±ãŒã·ã§ã³ã«ãããã·ã¹ãã å šäœã®å¹çãåäžããŸããã çŸåšãäœã¬ã€ãã³ã·ã®ãœãªããã¹ããŒããã©ã€ãã®æ¥å¢ã«ç §ãããŠãå²ã蟌ã¿ã¯ãã§ã«åèšI / Oæéã®ããªãã®éšåãå ããŠããŸãã ãŸããåŸ ã¡æéãçãã»ã©ãäžæã«ããããã©ãŒãã³ã¹ã®äœäžã倧ãããªããŸãã ã·ã¹ãã ã¯ãã§ã«1ç§ãããæ°çŸäžã®I / OæäœãåŠçã§ãããããæ°çŸäžã®ãã©ã³ã¶ã¯ã·ã§ã³ã§ãããã®ã³ã¹ããæé€ãããšããªãœãŒã¹æ¶è²»ãå€§å¹ ã«åæžãããŸãã ãã±ãããšãããã¯ã¯å³åº§ã«é ä¿¡ãããåŸ ã¡æéã¯æå°éã«æããããŸããããã«ãããåŸ ã¡æéãççž®ãããã¹ã«ãŒããããåäžããé 延æéãå®å®ããŸãïŒå€åãå°ãªããªããŸãïŒã
SPDKã¯çžäºæ¥ç¶ãããå€ãã®ã³ã³ããŒãã³ãã§æ§æãããäžè¬çãªãŠãŒã¶ãŒã¬ãã«ã®èŠçŽ ã䜿çšããããŒãªã³ã°ã¢ãŒãã§åäœããŸãã ãããã®åã³ã³ããŒãã³ãã¯ãå®å šãªSPDKã¢ãŒããã¯ãã£ã®äœææã«çºèŠãããç¹å®ã®ããã©ãŒãã³ã¹ããã«ããã¯ãå æããããã«äœæãããŸããã åæã«ãéçºããããã¹ãŠã®ã³ã³ããŒãã³ããSPDK以å€ã®ä»ã®ã¢ãŒããã¯ãã£ã«çµ±åã§ãããããSPDKã§äœ¿çšãããŠãããã¯ãããžã䜿çšããŠç¬èªã®ãœãããŠã§ã¢ãé«éåã§ããŸãã
ããããã¹ãŠã®ã³ã³ããŒãã³ããäžããé ã«ç€ºããŸãã
ããŒããŠã§ã¢ãã©ã€ããŒ
NVMeãã©ã€ããŒïŒSPDKã®ã³ã¢ã³ã³ããŒãã³ãã ãã®æé©åããããã©ã€ããŒã¯ãé«ãã¹ã±ãŒã©ããªãã£ãå¹çæ§ãçç£æ§ãæäŸããŸãã
Intel OuickData TechnologyïŒIntel I / O Acceleration TechnologyïŒIntel IOATïŒãšãåŒã°ããŸãã ããã¯ãIntel Xeonããã»ããµããŒã¹ã®ãã©ãããã©ãŒã ã«çµã¿èŸŒãŸããã¢ã³ããŒããµãã·ã¹ãã ã®ã³ããŒã§ãã ãŠãŒã¶ãŒç©ºéãžã®ã¢ã¯ã»ã¹ãæäŸããããšã«ãããDMAããŒã¿ã移åããããã®ãããå€ãå°ãããªããå°ããªI / OãŸãã¯NTBããªããžã䜿çšãããããªããŸãã
å éšãããã¯ããã€ã¹
NVMe over Fabricsã€ãã·ãšãŒã¿ãŒïŒNVMe-oFïŒïŒããã°ã©ããŒã®èŠ³ç¹ããèŠããšãNVMeããŒã«ã«SPDKãã©ã€ããŒãšNVMe-oFã€ãã·ãšãŒã¿ãŒã¯APIã³ãã³ãã®å ±éã»ãããå ±æããŠããŸãã ããã¯ãããšãã°ããŒã«ã«ãŸãã¯ãªã¢ãŒãã®ã¬ããªã±ãŒã·ã§ã³ãæå¹ã«ããã®ãéåžžã«ç°¡åã§ããããšãæå³ããŸãã
Ceph RADOSãããã¯ããã€ã¹ïŒRBDïŒïŒSPDKã®å éšããã€ã¹ãšããŠCephã䜿çšã§ããããã«ããŸãã ããã«ãããããšãã°Cephãå¥ã®ã¹ãã¬ãŒãžå±€ãšããŠäœ¿çšã§ããŸãã
Blobstoreãããã¯ããã€ã¹ïŒBlobstore SPDKã§å²ãåœãŠããããããã¯ããã€ã¹ã ããã¯ãä»®æ³ãã·ã³ãŸãã¯ããŒã¿ããŒã¹ã察話ã§ããä»®æ³ããã€ã¹ã§ãã ãããã®ããã€ã¹ã¯ãSPDKã€ã³ãã©ã¹ãã©ã¯ãã£ãã€ãŸãããã¯ããªããããã©ãŒãã³ã¹ã®é«ãã¹ã±ãŒã©ããªãã£ãå©çšããŠããŸãã
Linux *éåæI / OïŒAIOïŒïŒSPDKãããŒããã©ã€ããªã©ã®ã«ãŒãã«ããã€ã¹ãšéä¿¡ã§ããããã«ããŸãã
ããŒã¿ã¹ãã¬ãŒãžãµãŒãã¹
BDALã¬ãã«ïŒãããã¯ããã€ã¹æœè±¡åã¬ãã«ïŒïŒãã®äžè¬çãªãããã¯ããã€ã¹æœè±¡åã¬ãã«ã¯ãããŒã¿ã¹ãã¬ãŒãžãããã³ã«ãããŸããŸãªããã€ã¹ãã©ã€ããŒããã³ãããã¯ããã€ã¹ã«æ¥ç¶ããæ¥ç¶åªäœã§ãã ãŸãããããã¯ã¬ãã«ã§é¡§å®¢ã«æäŸãããè¿œå æ©èœïŒRAIDãå§çž®ãéè€æé€ãªã©ïŒãå®è£ ããããã®æè»ãªAPIãæäŸããŸãã
BlobstoreïŒSPDKã®ãã¡ã€ã«ïŒPOSIX *ã§ã¯ãªãïŒã»ãã³ãã£ã¯ã¹ã«é¡äŒŒããé åºä»ããããã»ãã³ãã£ã¯ã¹ãå®è£ ããŸãã ãã®ã³ã³ããŒãã³ãã¯ãé«æ§èœããŒã¿ããŒã¹ãã³ã³ãããä»®æ³ãã·ã³ããŸãã¯ãŠãŒã¶ãŒã¢ã¯ã»ã¹å¶åŸ¡ãªã©ã®ã»ãšãã©ã®POSIXãã¡ã€ã«ã·ã¹ãã æ©èœã«äŸåããªããã®ä»ã®è² è·ããµããŒãã§ããŸãã
ã¹ãã¬ãŒãžãããã³ã«
iSCSIã®ç®æšïŒã€ãŒãµããããä»ãããããã¯ãã©ãã£ãã¯ã®ç¢ºç«ãããä»æ§ã®å®è£ ã¯ãLinuxã«ãŒãã«I / Oã®çŽ2åã®å¹çã§ãã çŸåšã®ããŒãžã§ã³ã§ã¯ãããã©ã«ãã®TCP / IPã«ãŒãã«ã¹ã¿ãã¯ã䜿çšãããŸãã
NVMe-oFã®ç®æšïŒæ°ããNVMe-oFä»æ§ã®å®è£ ã NVMe-oFã®ç®çã¯RDMAæ©åšã«äŸåããŸãããCPUã³ã¢ãããæ倧40 Gb / sã®ã¹ã«ãŒãããã§ãã©ãã£ãã¯ãåŠçã§ããŸãã
Yhost-scsiã¿ãŒã²ããïŒNVMe SPDKãã©ã€ããŒã䜿çšããKVM / QEMUã³ã³ããŒãã³ãã ãã®ãããä»®æ³ãã·ã³ã¯ãé 延ãæããŠã¹ãã¬ãŒãžã¡ãã£ã¢ã«ã¢ã¯ã»ã¹ããéäžçãªI / Oã§ããŒããå®è¡ããå Žåã®CPUå šäœã®è² è·ã軜æžããŸãã
SPDKã¯ãã¹ãŠã®ã¹ãã¬ãŒãžã¢ãŒããã¯ãã£ããµããŒãããŠããããã§ã¯ãããŸããã SPDKã³ã³ããŒãã³ããã¢ãŒããã¯ãã£ã«é©ããŠãããã©ãããå€æããã®ã«åœ¹ç«ã€ããã€ãã®è³ªåã次ã«ç€ºããŸãã
ã¹ãã¬ãŒãžã·ã¹ãã ã¯LinuxãŸãã¯FreeBSD *ã«åºã¥ããŠããŸããïŒ
SPDKã¯äž»ã«Linuxãã©ãããã©ãŒã ã§ãã¹ãããã³ãµããŒããããŠããŸãã ããŒããŠã§ã¢ãã©ã€ãã¯ãFreeBSDããã³Linuxã§ãµããŒããããŠããŸãã
ã¹ãã¬ãŒãžããŒããŠã§ã¢ãã©ãããã©ãŒã ã¯Intelã¢ãŒããã¯ãã£äžã«æ§ç¯ãããŠããŸããïŒ
SPDKã¯Intelãã©ãããã©ãŒã ãæ倧éã«æŽ»çšãããã€ã¯ãããã»ããµããã³Intelã·ã¹ãã åãã«ãã¹ãããã³æé©åãããŠããŸãã
ã¹ãã¬ãŒãžããã©ãŒãã³ã¹ã¯ãŠãŒã¶ãŒã¢ãŒãã§ä¿åãããŸããïŒ
SPDKã¯ããŠãŒã¶ãŒã¢ãŒãã®ããã©ãŒãã³ã¹ãåå²ãåœãŠããããšã«ãããçç£æ§ãšå¹çãåäžãããããšãã§ããŸããã NVMe-oFã¿ãŒã²ãããã€ãã·ãšãŒã¿ãŒãBlobstoreãªã©ã®ã¢ããªã±ãŒã·ã§ã³ã«SPDKæ©èœãå®è£ ãããšããŠãŒã¶ãŒç©ºéã§ããŒã¿åŠçãã€ãã©ã€ã³å šäœãå®è¡ã§ãããããäœæ¥å¹çãå€§å¹ ã«åäžããŸãã
ã·ã¹ãã ã¢ãŒããã¯ãã£ã§ã¯ãã¹ããªãŒã ããããã¯ããã«PMDãã©ã€ããŒãå°å ¥ã§ããŸãã
ã¢ãã«ïŒ
PMDãã©ã€ããŒã¯ïŒã¹ãªãŒãç¶æ ã«ãªããã¢ã€ãã«ç¶æ ã®ãšãã«ããã»ããµãŒã解æŸããã®ã§ã¯ãªãïŒåžžã«ç¬èªã®ã¹ã¬ããã§åäœãããããã¹ããªãŒã ã¢ãã«ã«ã¯å³ããèŠä»¶ããããŸãã
ã·ã¹ãã ã¯ããããã¯ãŒã¯ãã±ããã®è² è·ãåŠçããããã®Data Plane Development KitïŒDPDKïŒããµããŒãããŠããŸããïŒ
SPDKã¯DPDKãšåãããã°ã©ãã³ã°ããªããã£ããšã¢ãã«ã䜿çšãããããDPDKã䜿çšããã客æ§ã¯SPDKãšã®çµ±åãå©çšã§ããããã«ãªããŸããã ãŠãŒã¶ãŒãSPDKã䜿çšããŠããå Žåããããã¯ãŒã¯åŠçã«DPDKæ©èœãè¿œå ãããšã倧ããªã¡ãªãããåŸãããŸãã
éçºããŒã ã¯ãèªåã§åŠç¿ããŠãã©ãã«ã·ã¥ãŒãã£ã³ã°ãè¡ãããã®é©åãªç¥èãæã£ãŠããŸããïŒ
Intel Corporationã¯ããã®ãœãããŠã§ã¢ãœãªã¥ãŒã·ã§ã³ããµããŒããã矩åãè² ããŸããã IntelãšSPDKã§äœæ¥ããéçºè ã®ãªãŒãã³ãœãŒã¹ã³ãã¥ããã£ã®äž¡æ¹ã¯ãå€æŽãããŠããªããœãããŠã§ã¢ãªãªãŒã¹ã§çºçããå¯èœæ§ã®ãããã°ã調æ»ããããã«åæ¥çã«åççãªæªçœ®ãè¬ããŸãããIntelã¯é¡§å®¢ãµãŒãã¹ã®çŸ©åãŸãã¯ãã®ãœãããŠã§ã¢ãœãªã¥ãŒã·ã§ã³ã®ãµããŒãã
SPDKã®è©³çŽ°ã«ã€ããŠã¯ã é£çµ¡å ãªã¯ãšã¹ããã©ãŒã ã«èšå ¥ãããã SPDK.ioã«ã¢ã¯ã»ã¹ããŠã¡ãŒãªã³ã°ãªã¹ããããã¥ã¡ã³ããããã°ã«ã¢ã¯ã»ã¹ããŠãã ããã
Intelãã¯ãããžãŒã®æ©èœãšå©ç¹ã¯ãã·ã¹ãã æ§æã«ãã£ãŠç°ãªããŸãã äžéšã®ããŒããŠã§ã¢ããœãããŠã§ã¢ããŸãã¯ãµãŒãã¹ã®ã¢ã¯ãã£ããŒã·ã§ã³ãå¿ èŠã«ãªãå ŽåããããŸãã ããã©ãŒãã³ã¹ã¯ã·ã¹ãã æ§æã«ãã£ãŠç°ãªãå ŽåããããŸãã 詳现ã«ã€ããŠã¯ãæ©åšã®è£œé æ¥è ãŸãã¯è²©å£²æ¥è ã«åãåããããã intel.comã«ã¢ã¯ã»ã¹ããŠãã ããã
ããã©ãŒãã³ã¹ãã¹ãã§äœ¿çšããããœãããŠã§ã¢ãšã¯ãŒã¯ããŒãã¯ãIntelãã€ã¯ãããã»ããµã§æé«ã®ããã©ãŒãã³ã¹ãéæããããã«ã®ã¿æé©åã§ããŸããã SYSmark *ãMobileMark *ãªã©ã®ããã©ãŒãã³ã¹ãã¹ãã¯ãç¹å®ã®ã³ã³ãã¥ãŒã¿ãŒã·ã¹ãã ãã³ã³ããŒãã³ãããœãããŠã§ã¢ãæäœãæ©èœã䜿çšããŠå®æœãããŸãã ãããã®èŠå ã®ãããããå€æŽããããšãçµæãå€æŽãããå ŽåããããŸãã è³Œå ¥ãã補åãéžæãããšãã¯ãä»ã®è£œåãšçµã¿åãããç¹å®ã®è£œåã®ããã©ãŒãã³ã¹ãã¹ããªã©ãä»ã®æ å ±ãšããã©ãŒãã³ã¹ãã¹ãã確èªããå¿ èŠããããŸãã
ããã©ãŒãã³ã¹ãã¹ãã®æ§æ
- 2ã€ã®Intel Xeon E5-2699 v3ããã»ããµïŒ18ã³ã¢ã2.3 GHzïŒãã€ããŒã¹ã¬ããã£ã³ã°ãç¡å¹ïŒ
- ã泚æ ããã©ãŒãã³ã¹ããã¹ããããšãã«ã1ã€ã®ããã»ããµãœã±ããã䜿çšãããŸããã
- 32 GB DDR4 RAMã1ç§ããã2,133çŸäžåã®è»¢éæäœ
- CPUããšã«4ã€ã®ã¡ã¢ãªãã£ãã«
- ãã£ãã«ããšã«1ã€ã®4 GB DIMM
- CPUããšã«4ã€ã®ã¡ã¢ãªãã£ãã«
- Ubuntu *ïŒLinuxïŒãµãŒããŒ14.10
- ã«ãŒãã«3.16.0-30-generic
- Intel Ethernet Controller XL710ã40GbE
- 8å°ã®P3700 NVMeã¹ãã¬ãŒãžããã€ã¹
- NVMeèšå®
- 8ã€ã®ç¬¬3äžä»£PCIe * 4ã€ã®NVMe
- 4ã€ã®4 NVMe-æåã®x16ã³ãã¯ã¿ïŒBIOSã®4ã€ã®x4ã§å ±æïŒ
- ããã«4ã€ã®NVMe-2çªç®ã®x16ã³ãã¯ã¿ïŒBIOSã®4ã€ã®x4ã§å ±æïŒ
- Intel®SSD P3700ã·ãªãŒãºã800 GB
- ãã¡ãŒã ãŠã§ã¢ããŒãžã§ã³ïŒ8DV10102
- 8ã€ã®ç¬¬3äžä»£PCIe * 4ã€ã®NVMe
- FIOãã¹ãæ§æ
- çŽæ¥ã¢ã¯ã»ã¹ïŒã¯ã
- ãã¥ãŒã®æ·±ã
- 4kã©ã³ãã I / OïŒ32åã®ãã¥ãŒæäœ
- 64KBã·ãªã¢ã«I / OïŒ8ã€ã®ãã¥ãŒæäœ
- æºåæéïŒ30ç§
- ãªãŒãã¿ã€ã ïŒ180ç§
- ã©ã³ãã ãããïŒ1
- I / Oã·ã¹ãã ïŒLibaio
- ã¿ã¹ã¯æ°ïŒ1
- BIOSèšå®
- ã¹ããŒãã¹ããããã¯ãããžãŒïŒç¡å¹
- ã¿ãŒãããŒã¹ããã¯ãããžãŒïŒç¡å¹
- CPUé»åããã³ããã©ãŒãã³ã¹ããªã·ãŒïŒæé«ã®ããã©ãŒãã³ã¹
詳现ã«ã€ããŠã¯ããåç §ããŠãã ããã