رضا اردانه
۲۷ شهریور ۱۳۹۸

بهینه سازی تکنولوژی vMotion

۰ دیدگاه
مقاله آموزشی
امتیاز دهید

بی شک یکی از بهترین ویژگی های موجود در ساختار مجازی سازی VMware وجود تکنولوژی vMotion می باشد. این تکنولوژی به شما کمک میکند تا بتوانید ماشین های مجازی خود را به صورت Hot بین هاست های خود جابجا نمایید.

در این مقاله می خواهیم به مبحث بهینه سازی تکنولوژی vMotion بپردازیم. فرض بر این است که شما با مفهوم و نحوه کارآیی این تکنولوژی آشنا می باشید. در مبحث بهینه سازی این تکنولوژی 2 موضوع بسیار مهم وجود دارد. اولین موضوع مربوط به ساختار شبکه و پهنای باند موجود به منظور مدیریت این تکنولوژی است که در کنار موضوع دوم یعنی میزان استفاده از CPU عملکرد کلی این تکنولوژی را شکل می دهند.

زمانیکه شما این ویژگی را فعال می کنید، تقریبا همه چیز به خوبی کار می کند تا زمانیکه شما تصمیم بگیرید که پهنای باند تخصیص داده شده به این تکنولوژی را افزایش دهید. در این صورت نیاز است تا تغییرات دیگری به منظور بهینه سازی این تکنولوژی انجام دهید. جهت درک بهتر این موضوع نیاز است تا کمی عمیقتر به این تکنولوژی نگاه کنیم.

فرآیند انتقال ماشین های مجازی با کمک این تکنولوژی را vMotion Streaming می نامیم. این فرآنید برای اولین بار در نسخه 4.1 معرفی شد و به مرور زمان تغییرات زیادی را به خود دید. به منظور مدیریت این Stream می بایست یک شبکه از نوع vMotion که به آن vMotion VMKernel می گوییم به ازای هر هاست خود داشته باشیم. این شبکه با فعال شدن خود یک vMotion Stream به هاست معرفی می کند. اما درون این Stream چه مواردی وجود دارند؟

  • Completion Helper
  • Crypto Helper
  • Stream Helper

نکته: در این 3 بخش واژه Helper معادل یک Thread بر روی CPU می باشد. هر Thread نیز امکان بهره مندی از یک هسته فیزیکی را داراست.

گزینه Completion Helper به منظور مدیریت فرآیند vMotion است. گزینه Crypto Helper اختصاصا به منظور رمزنگاری و رمزگشایی ترافیک ایجاد شده توسط vMotion می باشد و گزینه Stream Helper مسئول برقراری جریان ارتباطی شبکه ماشین مجازی پس از انتقال به هاست جدید است.

vMotionStreams

وقتی به مدت زمان انتقال اطلاعات درون Memory یک ماشین مجازی از هاست A به هاست B نگاه کنیم، متوجه می شویم که این مدت زمان وابستگی بسیار زیادی به میزان پهنای باند شبکه تخصیص داده شده به آن دارد اما به دلیل اینکه تمام این فرآیند از طریق یک Stream Helper انجام می شود تنها یک Thread که معادل یک هسته فیزیکی CPU است مورد استفاده قرار می گیرد. اگر تناسب بین پهنای باند شبکه و پردازنده مناسب باشد، این موضوع به خودی خود چالش برانگیز نخواهد بود، اما اگر صحبت از شبکه هایی با پهنای باند بیش از 10 گیگابیت بر ثانیه شود، قطعا با یک موضوع چالش برانگیز روبرو خواهیم شد و آن این است که پهنای باند شبکه به صورت کامل Utilize نخواهد شد.

vMotionSinglePU

به منظور مدیریت این چالش راههایی وجود دارد که بتوان از تعداد هسته های فیزیکی بیشتری بهره برد که یکی از این راهکارها ایجاد vMotion Stream های بیشتر است. برای اینکه بتوان به این شرایط دست یافت 2 راهکار زیر معرفی شده اند.

به عنوان اولین راهکار می توان تعداد Interface های vMotion VMkernel را افزایش داد. همانطور که در بالا اشاره شده هر vMotion VMkernel یک vMotion Stream را به هاست شما معرفی می کند. با افزایش این Interface ها در واقع می توان vMotion Stream های بیشتری را به هاست خود معرفی کرد. استفاده از چندین Stream به معنای ایجاد ترافیک بیشتر بر روی شبکه vMotion و در نتیجه کاهش مدت زمان انتقال ماشین مجازی به هاست جدید می باشد.

vMotionMultiVMKStreams

حال باید بدانیم که یک vMotion Stream حداکثر چه میزان پهنای باند را می تواند اشغال کند. این عدد چیزی در حدود 15 گیگابیت بر ثانیه است. حال اگر به انواع مختلف کارت های شبکه نگاه کنیم خواهیم فهمید که چه تعداد VMkernel Interface برای پر کردن کامل پهنای باند اختصاص داده شده به این تکنولوژی نیاز داریم:

  • اگر از کارت شبکه با پهنای باند 25 گیگابیت بر ثانیه استفاده نماییم تنها نیاز به یک Stream خواهیم داشت.
  • اگر از کارت شبکه با پهنای باند 40 گیگابیت بر ثانیه استفاده نماییم نیاز به دو Stream خواهیم داشت.
  • اگر از کارت شبکه با پهنای باند 50 گیگابیت بر ثانیه استفاده نماییم نیاز به سه Stream خواهیم داشت.
  • اگر از کارت شبکه با پهنای باند 100 گیگابیت بر ثانیه استفاده نماییم نیاز به شش Stream خواهیم داشت.

اگر بخواهیم از نقاط ضعف این روش صحبت کنیم، تنها می توان به افزایش سربار کار Administrator و تعداد آدرس IP های مختلف به میزان تعداد VMkernel Interface ها اشاره کرد. هر فعالیتی در این روش می بایست به ازای هر هاست انجام شود.

به عنوان راهکار دوم می توان شرایطی را ایجاد کرد که یک VMkernel Interface بیش از یک Stream را ایجاد نماید. نتیجه این عمل انتقال ترافیک بیشتر بر روی شبکه مرتبط با vMotion می باشد.

نکته: این راهکار از طریق ایجاد یک تغییر در سطح Advanced می باشد، لذا با دقت بسیار زیاد این تغییرات را اعمال نمایید و اگر از عواقب این تغییرات آگاهی ندارید احتیاط بیشتری کنید.

هر VMkernel Interface دارای یک vMotion Stream و صف مشخصی از RX ترافیک ها است. این دو مقدار را میتوان از طریق دستور vsish تغییر داد. برای شروع کار ابتدا شرایط فعلی هاست خود را بررسی کنید. با اتصال SSH به هاست خود دستور vsish را اجرا نمایید و دستورات زیر را وارد کنید:

get /net/tcpip/defaultNumRxQueue

get /config/Migrate/intOpts/VMotionStreamHelpers

خروجی این دستورات مقادیر پیش فرض تنظیم شده برای دو مورد اعلام شده است. حال می خواهیم این مقادیر را تغییر دهیم. با دستور exit از vsish خارج شده و دستورات زیر را وارد نمایید:

vsish -e set /net/tcpip/defaultNumRxQueue 2

vsish -e set /config/Migrate/intOpts/VMotionStreamHelpers 2

Before

After

با این دستورات با داشتن یک VMkernel Interface می توانیم تعداد بیشتری Helper در Background هاست خود داشته باشیم.

vMotionMultiCPU

نتیجه گیری:

مطالبی که در این مقاله عنوان شد در راستای بهینه سازی تکنولوژی vMotion بود تا بتوان از این ویژگی بسیار قدرتمند شرکت VMware بیشتر بهره مند شد. استفاده بیشتر از پهنای باند تخصیص داده شده زمانی محقق می شود که پردازنده هاست ما اطلاعات را زودتر پردازش کرده و بر روی لینک شبکه قرار دهد. این افزایش زمانی میسر می گردد که بتوان تعداد Thread های بیشتری را درگیر کرد و زمانی می توان به این مهم دست یافت که تعداد Stream های بیشتری را به هاست خود معرفی کنیم.

منبع: بلاگ شرکت VMware – لینک منبع اصلی

امتیاز دهید

دیدگاهتان را بنویسید