مجازی سازی سرور با Vmware
این قسمت Resource Management and Monitoring
اگرچه VMkernel به صورت فعالانه براي جلوگيري از Resource Contention كار مي كند براي ماكزيمم Performance ما نياز به هر دو آناليز و مانيتورينگ داريم.
شما در انتهاي اين قسمت با مطالب زير آشنا خواهيد شد:
- توصيف مفاهيم CPU و Memory در يك محيط مجازي
- توصيف OverCommit شدن يك Resource
- شناسايي تكنولوژيهايي كه براي Improve يك Memory استفاده مي شود
- توصیف اینکه چطور VMware vSphere Virtual Symmetric Multiprocessing كار مي كند و اينكه چطور Hyperthreading توسط VMkernel استفاده مي شود.
زماني كه شما يك ماشين مجازي را اجرا مي كنيد VMkernel يك فضايي پيوسته و قابل آدرس دهي از Memory را براي ماشين مجازي ايجاد مي كند
اين Memory Space به عنوان Virtual Memory Space از طرف سيستم عامل ماشين مجازي به Application هايي كه برروي آن در حال اجرا هستند اختصاص داده مي شود.
اين Memory Space به VMkernel اجازه مي دهد كه بتواند چندين ماشين مجازي را به صورت همزمان در حالي كه دسترسي به Memory يك ماشين مجازي را از طرف ديگر ماشين هاي مجازي Protect مي كند اجرا كند.
Memory Overcomit چیست:
در بعضي از زمان ها ممكن است Total Configured Memory Size از همه ماشين هاي مجازي بيشتر از Available Physical Memory روي يك Host شود كه به اين حالت Memory Overcomit گفته مي شود.
بدليل تكنيك هاي مديريتي Memory كه به وسيله ESXi Host انجام مي شود يك ماشين مجازي مي تواند از Virual Memory بيشتري از آنچه برروي Host موجود است استفاده كند.
براي مثال شما مي توانيد يك Host با ۲GB Memory داشته باشيد ولي برروي اين Host چهار ماشين مجازي كه هر كدام ۱GB Memory دارند اجرا كنيد
كه در اين حالت Overcomit Memory مي شود در صورتي كه هر چهار ماشين مجازي در حالت Idle باشند تركيب مصرف Memory بايستي زير ۲GB باشد
و در صورتي كه هر چهار ماشين مجازي به صورت Active از Memory استفاده كنند مصرف Memory آنها بيشتر از ۲GB مي شود و Host در اين حالت Overcomit مي شود.
يك ماشين مجازي در شرايط Overcomit مي تواند Extra Memory خود را برروي يك فايل vmsp .كه يك Swap File مي باشد اجرا كند
يك Overcomit Memory برروي Host از يك فايلي به نام vmx‐*.Vmsp براي جمع آوري و Track يك Memory Overhead استفاده مي كند.
Memory از اين فايل در زماني كه Host Memory شما Overcomit شده است به Disk شما Swap مي شود.
يك VMkernel از روش هاي مختلفي براي Reclamation يا احيا Memory روي يك Vmware Esxi Host استفاده مي كند هر تكنيك به ترتيبي كه VMkernel از ان استفاده مي كند شرح داده خواهد شد.
اولين تكنيك Economize يا صرفه جويي كردن در مصرف Physical Memory Page ها مي باشد كه به آن Transparent Page Sharing يا TPS گفته مي شود.
TPS اجازه مي دهد كه Page هايي كه محتويات يكسان دارند فقط يكبار ذخيره شوند Workload شامل چندين ماشين مجازي Memory كمتري نسبت به زماني كه آنها روي يك ماشين فيزيكي اجرا مي شوند مصرف مي كنند.
با توجه به اثر TPS يك Host مي تواند از Memory بيشتري در زماني كه Overcomit Memory رخ مي دهد استفاده كند.
در زماني كه Memory Contention رخ مي دهد VMkernel بدنبال موقيتي مي گردد تا بتواند Memory را از طريق ماشين هاي مجازي كه Idle هستند يا Unused Memory دارند.
يكي ديگر از روش هايي كه يك VMkernel براي احياي Host Physical Memory استفاده مي كند Memory Compression نام دارد در اين روش از Compression Page ها براي جلوگيري از عمليات Swapping استفاده مي شود.
يكي ديگر از روش هايي كه يك VMkernel براي احياي Host Physical Memory استفاده مي كند ايجاد يك Host Cache برروي يك ( SSD ( drive state‐Solid روي Host مي باشد.
اين روش به وسيله VMkernel بعد از Try برروي تمامي روش هاي TPS Compression Memory,Ballooning و قبل از اينكه عمليات Swapping برروي ديسك انجام شود استفاده مي شود با استفاده از Host Cache برروي SSD شما مي توانيد Performance را بالا ببريد.
آخرين تكنيكي يك VMkernel مي تواند براي احياي Memory استفاده كند استفاده از Swaping مي باشد در اين حالت Performance به شدت پايين مي آيد.
شما مي توانيد براي يك ماشين مجازي تا Virtual Cpu 64 پيكربندي كنيد VMkernel شامل يك CPU Scheduler مي باشد كه به صورت اتوماتيك VCPU ها را روي Physical CPU از يك Host مي تواند Schedule كند.
يك VMkernel Scheduler در زمان تصميم گيري براي Scheduling از توپولوژي Thread,Core,Socket استفاده مي كند.
شركت هاي Intel و AMD توانسته اند Processor هاي ايجاد كنند كه تركيبي از چندين Processor Core در يك Integrated Circuit به نام Socket مي باشد.
يك Socket يك Single Package مي باشد كه مي تواند شامل يك يا چندين Physical CPU مي باشد كه هر Core ان مي تواند يك يا چندين (Logical (LCPU CPU يا Thread داشته باشد.
شرکت آرنا ارئه دهنده خدمات شبکه نصب شبکه پشتیبانی شبکه مجازی سازی سرور پسیو شبکه
با استفاده از Hyperthreading شما مي توانيد يك Core را برروي دو Thread پياده سازي كنيد.
يك Hyperthreading به شما Scheduler Throughput بيشتري ارائه مي دهد.
براي فعال كردن Hyperthreading شما بايستي كارهاي زير را انجام دهيد:
- بايستي چك كنيد كه آيا Host System شما Hyperthreading را ساپورت مي كند يا نه.
- بايستي Hyperthreading را از طريق BIOS فعال كنيد.
- مطمئن شويد كه Hyperthreading برروي ESXi Host فعال باشد.
- به صورت پيش فرض Hyperthreading فعال است.
يك CPU Scheduler مي تواند از هر Logical Processor به صورت مستقل براي اجراي ماشين هاي مجازي استفاده كند و قابليتي مشابه به SMP) Symmetric Multiprocessing) را ارائه دهد.
VMkernel مي تواند به صورت هوشمندانه Processor Time را براي گارانتي توزيع Load برروي Processor Core ها در سيستم مديريت كند كه براي اين منظور هر ۲ يا ۴۰ Millisecond كه اين زمان بستگي به Thread,Core,Socket سيستم دارد
و مي تواند از يك Logical Processor به يك Logical Processor ديگر Migrate كند و در اين حالت بار CPU را ميان ماشين هاي مجازي Load Balance مي كند.
يك VMkernel عمليات CPU Scheduling را براي يك ماشين مجازي كه چندين VCPU برروي دو Core متفاوت دارد را خيلي بهتر از دو Logical Processor انجام مي دهد كه برروي يك Core مشابه قرار دارند.
البته در صورتي كه لازم باشد VMkernel مي تواند دو VCPU از يك ماشين مجازي را به Thread هاي يك Core متصل كند.
در صورتي كه براي يك Logical Processor مشكلي ايجاد شود كه نتواند كار كند VMkernel آن را در Halted State قرار مي دهد اين Action باعث مي شود كه Resource ها آزاد شوند و ماشين هاي مجازي بتوانند از Logical Processor هاي ديگر برروي Same Core استفاده كنند.
شما بايستي قادر به توصيف مطالب زير باشيد:
در درس بعد به سراغ Resource Control and Recource Pool خواهیم رفت.