RDMA مخفف Remote Direct Memory Access می باشد که دسترسی مستقیم به حافظه یک هاست را به حافظه هاست دیگر بدون دخالت CPU و سیستم عامل فراهم می کند که باعث تقویت شبکه و performance هاست با کاهش latency ، کاهش بار CPU و پهنای باند بالاتر می شود. در مقابل، ارتباطات TCP / IP به طور معمول نیازمند عملیات کپی هستند که باعث افزایش قابل توجهی تاخیر در منابع CPU و حافظه می شود.
RDMA با پشتیبانی از آداپتور شبکه برای انتقال داده ها به طور مستقیم به حافظه و یا از حافظه نرم افزار، از طریق شبکه zero-copy، نیاز به کپی داده ها بین حافظه برنامه و بافر داده ها در سیستم عامل را از بین می برد. چنین انتقالاتی هیچ نیازی به این که کار توسط CPU ها انجام شود ندارد و همینطور نیازی به حافظه های ذخیره شده (Cache) یا سوئیچ های context را ندارد و انتقال ها به موازات سایر عملیات سیستم ادامه می یابد. هنگامی که یک برنامه درخواست خواندن یا نوشتن RDMA را انجام می دهد، داده های برنامه به طور مستقیم به شبکه تحویل داده می شود که باعث کاهش Latency و انتقال سریع پیام می شود.
Remote : انتقال داده ها بین node ها در یک شبکه
Direct : هیچ کرنل سیستم عاملی در انتقال داده ها دخالت ندارد.
Memory : هیچ عملیات کپی یا بافر اضافی انجام نمی شود.
Access : عملیات های ارسال ، دریافت ، خواندن ، نوشتن و اَتومیک
performance بالا در محاسبات (MPI : (HPC و SHMEM
یادگیری ماشین : TensorFlow™, Caffe, Microsoft Cognitive Toolkit (CNTK), PaddlePaddle و غیره
بیگ دیتا : Spark ، Hadoop
دیتا بیس ها : Oracle ، SAP (HANA)
ذخیره ساز : NVMe-oF (remote block access to NVMe SSDs), iSER (iSCSI Extensions for RDMA), Lustre, GPFS, HDFS, Ceph, EMC ScaleIO, VMware Virtual SAN, Dell Fluid Cache, Windows SMB Direct
هر دو از نوع client/server هستند.
هر دو برای انتقال داده نیاز به یک نقطه اتصال دارند.
هر دو حالت انتقال مطمعنی را ارائه می دهند.
Zero-copy : داده ها به طور مستقیم از حافظه مجازی بر روی یک node به حافظه مجازی بر روی node دیگر منتقل می شود.
گذرگاه کرنل : در هنگام انتقال اطلاعات به هیچ سیستم عاملی نیاز ندارد.
عملیات آسنکرون : نخ ها ( Threads ) در طول انتقال I/O مسدود نیستند.
اگر چه پروتکل RoCE از ویژگی های یک شبکه اترنت همگرا بهره مند است، اما همواره این پروتکل نیز می تواند در یک شبکه اترنت سنتی یا غیر همگرا نیز استفاده شود.
مجازی سازی دارای مزایای بسیاری برای کاهش هزینه های پیاده سازی ، تعمیر و نگهداری است. اما بسیاری از سازمان ها و شرکت ها همچنان برنامه های کاربردی حساس به latency خود را بر روی bare-metal نگهداری می کنند یا از ماشین های مجازی که با برخی ویژگی هایی که اجازه دسترسی به آن ها از طریق سخت افزار به طور مستقیم به عنوان DirectPath I/O (در vSphere ) یا SRIO-V داده شده است استفاده می کنند.
استفاده از این ویژگی ها تاخیر و استفاده از CPU را کاهش می دهد ( مخصوصا در high workload ها ) اما این ویژگی ها محدودیت دارند. RDMA به کاهش زمان تأخیر و بهره برداری ، بیشتر از راه حل های دیگر کمک می کند، زیرا راه حل های دیگر هنوز از TCP / IP استفاده می کنند و همچنین RDMA دارای محدودیت های کمتر است.
دستگاه های Paravirtual در محیط های مجازی سازی رایج هستند. این دستگاه ها پیشترفت و بهبود در performance دستگاه مجازی را در مقایسه با دستگاه های فیزیکی به صورت شبیه سازی شده ارائه می دهند. در مجازی سازی برای ایجاد محاسبات با performance بالا و دیگر زمینه هایی که نیاز به پهنای باند بالا و تاخیر کم دارند و همچنین حمل و نقل با performance بالا مانند InfiniBand، پروتکل (iWARP) و (RoCE) باید مجازی شوند.
VMware یک رابط کاربری paravirtual به نام (Virtual RDMA (vRDMA ایجاد کرد که رابطی مشابه RDMA را برای guest های VMware ESXi فراهم می کند. vRDMA از (Virtual Machine Communication Interface (VMCI برای ارتباط با ESXi استفاده می کند. رابط vRDMA برای پشتیبانی از snapshot ها و VMware vMotion طراحی شده است، بنابراین حالت ماشین مجازی را می توان به آسانی ایزوله کرده و انتقال داد.
دستگاه های Paravirtualized در محیط های مجازی رایج هستند، زیرا آنها performance بهتری نسبت به دستگاه های مشابه را ارائه می دهند. این دستگاه ها از zero-copy، operating system-bypass و cpu offload برای انتقال داده ها پشتیبانی می کند و تاخیر کم و سرعت بالا را برای برنامه های کاربردی فراهم می کند. با این وجود، برنامه های در حال اجرا در محیط مجازی از ویژگی هایی مانند vMotion (مهاجرت زنده مجازی ماشین)، مدیریت منابع و fault tolerance دستگاه مجازی بهره مند می شوند. برنامه های کاربردی در حالی که از RDMA استفاده می کند باید توجه داشت که برای استفاده از تمام ویژگی های مجازی سازی ، رابط کاربری paravirtual برای پشتیبانی از این ویژگی ها طراحی شده باشد.
از آنجا که سیستم های ذخیره سازی تمام فلش بسیار سریعتر از سیستم های ذخیره سازی دیسک یا هیبریدی عمل می کنند، latency در performance ذخیره ساز به طور قابل توجهی کاهش می یابد. در نتیجه انباشتن نرم افزارهای سنتی، به عنوان یک bottleneck عمل می کند که به طور همزمان به latency کلی اضافه می شود. RDMA یکی از فناوری هایی است که می تواند latency حاصل از این را کاهش دهد.
(Non-volatile dual in-line memory module (NVDIMM)، یک نوع حافظه ای است که به عنوان ذخیره ساز عمل می کند و به سرعت جایگاه خود را در مراکز داده پیدا می کند. NVDIMM می تواند تا 100 برابر performance پایگاه داده را بهبود بخشد و به ویژه در virtualized clusters به عنوان وسیله ای برای سرعت بخشیدن به SAN های مجازی سودمند خواهد بود. اما برای استفاده بیشتر از NVDIMM، هم از نظر یکپارچگی داده ها و هم از نظر Performance داده، هنگام انتقال داده ها بین سرورها و یا در سراسر cluster مجازی، شما باید از سریع ترین شبکه ممکن است استفاده کنید. RDMA over Ethernet Converged به داده ها اجازه دسترسی به طور مستقیم بین ماژول های NVDIMM با latency پایین و درگیری کمتر سیستم عامل را می دهد.
پیشنهاد میکنم ویدیو زیر را جهت درک بهتر نسبت به تکنولوژی RDMA تماشا نمایید.
نویسنده : محمد نعمتی
این مقاله که توسط من نوشته شده، ابتدا در وبسایت FaradSys منتشر شده است و اکنون در اینجا بازنشر میشود.