Remote Direct Memory Access یا RDMA افزونهای از تکنولوژی Direct Memory Access یا DMA است که توانایی Host کردن حافظه بدون مداخلهی CPU را بهطور مستقیم فراهم مینماید. RDMA اجازه میدهد که دسترسی به دادههای حافظه از یک Host به Host دیگر ممکن شود. یکی از ویژگیهای کلیدی RDMA این است که تا حد خیلی زیادی توان عملیاتی و عملکرد را بهبود میبخشد زیرا چرخههای کمتری از CPU برای پردازش Packetهای شبکه مورد نیاز هستند.
مسیر دادهی قدیمی یا RDMA
در یک مسیر دادهی قدیمی لازم است که یک برنامه کاربردی با استفاده از API متعلق به Socketها در فضای کاربر از بافرها عبور کند. در Kernel، مسیرهای داده شامل TCP، IPv4/6 Stack تا درایور دستگاه و نهایتاً فابریک شبکه هستند. تمام این مراحل برای پردازش به چرخههای CPU نیاز دارند. امروزه با وجود شبکههایی دارای پهنای باند بالا 20، 40، 50 و 100 GbE و به دلیل میزان زمان CPU که برای پردازش داده و قرار دادن آن داده روی سیم لازم است، این امر میتواند چالشی را ایجاد کند. RDMAدر همین زمینه مفید واقع میشود.
وقتی مسیر ارتباطی بین مبدأ و مقصد تنظیم میگردد، Kernel دور زده میشود. با انجام این کار، میزان تأخیر شبکه کاهش پیدا میکند درحالیکه توان عملیاتی داده افزایش پیدا میکند، زیرا چرخههای CPU بسیار کمتری وجود دارند. برنامه کاربردی RDMA با استفاده از RDMA Verbs API مستقیماً با Host Channel Adapter یا HCA ارتباط برقرار مینماید. میتوان HCA را بهعنوان یک Network Interface Card یا NIC با قابلیت RDMA دید. برای انتقال RDMA به یک فابریک شبکه از InfiniBand، RDMA over Converged Ethernet یا RoCE و iWARP پشتیبانی میشود.
پشتیبانی از RDMA در vSphere
در vSphere از RDMA پشتیبانی میگردد، در اینجا نیز همان منطق حاکم است که وقتی دو ESXi Host با استفاده از HCAها از طریق یک فابریک با یکدیگر ارتباط برقرار میکند، RDMA ممکن میشود. مثالهای خوبی از کاربرد RDMA با vSphere ویژگیهای Storage مختلف مثل افزونههای iSCSI روی RDMA که در vSphere 6.7 معرفی شده بود و NVMeoF با استفاده از RDMA که در VSphere 7 معرفی شده بود هستند. vSphere Bitfusion هم راهکار دیگری است که سود زیادی از RDMA میبرد. با انتشار بروزرسانی 1 از vSphere 7،Endpointهای Native یا غیر PVRDMA مثل Storage Arrayها نیز تحت پشتیبانی RDMA قرار گرفتند.
معرفی VMware vSphere ESXi و vCenter
ویدیوهای بیشتر درباره vSphere
استفاده از RDMA برای Workloadهای مجازی در یک محیط vSphere تحت پشتیبانی است. برنامههای کاربردی High-Performance Computing یا HPC ،Backendهای دیتابیس و پلتفرمهای Big Data تنها برخی از مثالهای بخش متنوعی از برنامههای کاربردی هستند که میتوانند از نرخهای I/O بالاتر در مقابل میزان تأخیر کمتر با RDMA بهره ببرند.
پشتیبانی از RDMA با ماشینهای مجازی
چندین گزینه برای قرار دادن RDMA در معرض ماشینهای مجازی یا VMها وجود دارد. گزینهی اول استفاده از DirectPath I/O (Dynamic) برای عبور (Passthrough) از یک HCA یا NIC دارای قابلیت RDMA به VM است. استفاده از این روش یک رابطهی یک به یک را بین VM و دستگاه شبکهی RDMA ایجاد میکند. نکتهی منفی در این زمینه این است که ویژگیهای vSphere مثل vMotion با Passthrough تحت پشتیبانی نیستند.
گزینهی دومی هم وجود دارد که از vMotion پشتیبانی میکند تا قابلیت پورتال بودن بار کاری حفظ شود؛ این گزینه استفاده از Paravirtual RDMA یا PVRDMA است که تحت عنوان vRDMA هم شناخته میشود. PVRDMA از نسخهی 13 سختافزار VM که با vSphere 6.5 برای یک x64 Linux guest OS معرفی شد در دسترس است.
بیشتر بخوانید: معرفی قابلیت VMware XVM موارد استفاده ی آن در vCenter Server vMotion
RDMA over Converged Ethernet یا RoCE با PVRDMA تحت پشتیبانی بوده و مزیت RoCE این است که میتوان از یک فابریک اترنت استفاده نمود لازم به ذکر است که مانند Infiniband، الزامات مشخصی برای یک فابریک جداگانه وجود ندارد. فابریک اترنت باید از RDMA پشتیبانی کند که این کار را از طریق پشتیبانی از Priority Flow Control یا PFC انجام میدهد. PVRDMA هم از نسخهی اول و هم نسخهی دوم RoCE پشتیبانی کرده، تفاوت بین این دو نسخه این است که نسخهی اول RoCE فقط از شبکههای سوئیچشده پشتیبانی میکند، درحالیکه نسخهی دوم RoCE از شبکههای Route شده پشتیبانی مینماید.
جهت مشاوره رایگان و یا راه اندازی زیرساخت مجازی سازی دیتاسنتر با کارشناسان شرکت APK تماس بگیرید. |
نحوهی تنظیم PVRDMA برای VM
جهت تنظیم PVRDMA برای یک VM، فابریک اترنت باید از RDMA پشتیبانی کند و برای هر Host به یک HCA نیاز است. دستور esxcli زیر را میتوان مورد استفاده قرار داد تا NICهای دارای قابلیت RDMA بررسی گردند، میتوان معادل این دستور را هم در vSphere Client یافت. تمام رابطهای کاربر شبکهی Host در بخش RDMA نمایش داده میشوند و مشخص میگردد که آیا RDMA تحت پشتیبانی است یا خیر.
نکته ای که اید توجه داشت این است که VMهایی که روی ESXi Hostهای مختلف قرار دارند، برای استفاده از RDMA به HCA نیاز دارند، باید HCA را بهعنوان یک Uplink برای vSwitch توزیعی تخصیص داد. PVRDMA از NIC Teaming پشتیبانی نمیکند. HCA باید تنها Uplink روی سوئیچ توزیعی vSphere باشد، برای ماشینهای مجازی روی ESXi Hostهای یکسان یا ماشینهای مجازی که از Fallback مبتنی بر TCP استفاده میکنند، HCA الزامی نیست. اگر RDMA فعالسازی شده باشد، آداپتور RDMA نیز با یک Uplink فیزیکی جفت میشود و به یک رابط کاربری VMkernel متصل میگردد.
در سمت VM، سختافزار VM نسخهی 13 مورد نیاز است. در زمان تنظیم یک Linux x64 Guest OS، گزینهای برای انتخاب PVRDMA بهعنوان نوع آداپتور نمایش داده میشود. همچنین باید به گزینهی پروتکل دستگاه هم برای نسخهی 1 و هم نسخهی 2 از RoCE توجه گردد.
وقتی VM و ESXi Host دیگری برای PVRDMA تنظیم گردند، برنامههای کاربردی در VMهای دارای PVRDMA فعال میتوانند از RDMA استفاده کنند تا I/O را در مقابل میزان تأخیر پایین افزایش دهند.