Trong phiên bản Windows Server 2008 R2 SP1 có một tính năng mới được gọi là Dynamic Memory dành cho máy chủ Hyper-V cho phép quản lý một cách tự động các yêu cầu về bộ nhớ máy ảo trong Hyper-V Server.
Trong cả hai phiên bản, người triển khai thường quen với việc khi tạo máy ảo sẽ gán cho nó một giá trị memory tĩnh tùy thuộc vào mức độ yêu cầu cần thiết của máy ảo đó mặc dù có lẽ nó sẽ không sử dụng hết mức memory cấp phát trong suốt thời gian hoạt động. Cấp cho máy ảo 2GB nhưng nó chỉ xài 1Gb vì thật sự chỉ để dùng trong trường hợp phòng hờ trường hợp “kẹt xe” xảy ra. Hyper-V chỉ cấp phát một lần khi máy ảo khởi động nên không thể xảy ra việc bạn cho máy ảo 1Gb rồi tới thời điểm kẹt xe bạn
lại tăng Ram cho nó bằng cách thủ công là khỏi động lại. Với mô hình cấp phát memory nhọc nhằn như thế hoàn toàn không đem tới hiệu quả hoat động cũng như ảnh hưởng tới mật độ máy ảo thực sự có thể triển khai.
Đến với phiên bản Hyper-V R2 vẫn giữ nguyên thông số cấu hình memory tĩnh và kèm theo sau đó là giới thiệu tính năng cấp phát memory tự động ( Dynamic Memory). Nhờ vào khả năng cân bằng memory trong tính năng này cho phép chúng ta gia tăng được mật độ máy ảo trong hệ thống cũng như khả năng điều chỉnh lượng memory máy ảo dựa theo lượng công việc thực tế. TÍnh năng này hỗ trợ cả hai dòng sản phẩm Windows Server 2008 Hyper R2 SP1 và Windows Hyper-V Server 2008 R2 SP1. Nó được biết đến như là một tính năng được thực thi nhờ vào mô hình liên lạc giữa Virtualization Service Provider (VSP) và Virtualization Service client (VSC) vì thế đòi hỏi chỉ có trên các hệ điều hành Windows có hỗ trợ Integration Service.
• Kiến trúc Dynamic Memory: Như chúng ta thấy trong hình, Dynamic
Memory là một thành phần mới bao gồm nhiều thành phần con trong đó cùng hoạt động trong phân vùng cha và sự liên lạc giữa chúng với các máy ảo phải thông qua VMbus nhớ vào thành phần VSP và VSC ( chỉ hỗ trợ khi hệ điều hành máy ảo hỗ trợ Integration Service). Và chắc chắn rằng máy chủ của bạn sẽ có được các thành phần này khi nâng cấp lên phiên bản Windows Server 2008 R2 hoặc Windows Hyper-V Server 2008 R2.
Khi có bất cứ yêu cầu nào về memory thì hệ điều hành trong phân vùng con sẽ gửi yêu cầu đến phân vùng cha nhờ vào thành phần Dynamic VSC (DMVSC) nằm trong phân vùng con. Khi nhận được yêu cầu cấp phát memory, thành phần Memory Balancer sẽ có trách nhiệm tiếp nhận và xem xét yêu cầu dựa trên tình trạng của tất cả các máy ảo đang hoạt động từ đó đưa ra quyết định cấp phát memory và giải phóng scheme để đáo ứng nhu cầu máy ảo yêu cầu.
Dynamic VSC cũng liên lạc với nhân của hệ điều hành máy khách trên máy ảo để thông báo và xử lý quyết định thêm hoặc xóa memory trên máy ảo. Thông thường
kernel của hệ điều hành máy khác sẽ thông báo thông qua VSC lượng memory cần thêm để sử dụng. Còn khi lệnh xóa được gửi đến từ VSP, nhờ vào cơ chế Ballooning, VSC sẽ đòi lại memory từ hệ điều hành trên máy ảo bằng cách làm việc với các thuật toán quản lý memory trên máy ảo để đảm bảo lấy lại được các memory trống. Nếu trong trường hợp máy ảo chưa sẵn sàng trả lại memory yêu cầu vì lý do như đang sử dụng thì tất cả phần đang sử dụng đó sẽ được ghi và hoạt động tạm ở đĩa ảo để chắc rằng yêu cầu trả lại memory cho VSC phải được đáp ứng. Memory thu được sẽ đem đi cấp phát cho các máy ảo khác có nhu cầu. Trong trường hợp không có máy ảo nào có nhu cầu thêm memory, các VSC sẽ giải phóng các memory trên các hệ điều hành máy khách bằng cách dùng tiếp thuật toán Ballooning.
• Cấu hình Dynamic Memory: Đầu tiên chắc chắn rằng phiên bản Hyper-V
đang dùng là R2 trước khi cấu hình. Nếu bạn dùng Hyper-V Manager để tạo máy ảo thì mặc nhiên bắt buộc bạn phải khai báo memory tĩnh còn vấn đề Dynamic Memory chỉ được cấu hình lại trong phần setting khi hoàn tất việc tạo máy ảo.
Những tham số trong việc lựa chọn sử dụng Dynamic Memory:
1. Start Up: là lượng memory cấp phát đầu tiên ngay khi máy ảo start up giữ vai
trò chủ yếu là đảm bảo đủ memory cần thiết cho quá trình startup và boot máy ảo. Nhớ rằng việc bạn quên cấu hình ở đây sẽ không bị bỏ qua mà thay vào đó sẽ được gán tự động là 512Mb (mặc định).
2. Maximum Ram: đây là lượng memory khai báo để quy định giới hạn mức độ
cao nhất có thể cấp phát cho máy ảo này. Ngay cả khi máy ảo yêu cầu một lượng memory lớn hơn tham số này thì yêu cầu đó hoàn toàn không được đáp ứng. Cũng như trên không cấu hình thì mặc định sẽ là 64Gb.
3. Memory Buffer: đây là một tham số khá đặc biệt cho phép chỉ ra lượng
memory sẵn sàng trên máy ảo với mục đích là cache file hoặc như một lượng memory trống. Giá trị này quy định cho phép từ 5% đến 95%. Lượng memory này như một phần đảm bảo rằng máy ảo của bạn không thể đột quỵ ngay khi
yêu cầu thêm memory. Chắc hẳn bạn cũng không thể để máy ảo mình xài tới 100% rồi mới báo đòi thêm Ram đều này giống tới cùng rồi mới xin xỏ. Lỡ như phải chờ máy ảo khác trả lại một lượng memory nhất định hoặc đợi cấp thì tất cả điều đó cũng đòi hỏi một thời gian chịu đựng. Mặc định sẽ được quy định là 20% vì thế khi mà bạn khai báo Ram startup là 1Gb nghĩa là máy ảo được cấp 1,25 Gb nhưng chỉ xài 1GB còn lại dành cho khẩn cấp.
4. Memory Priority: Theo mặc định các máy ảo khi tạo ra đều có cùng một độ ưu
tiên nhưng sẽ xảy ra trường hợp hệ thống yêu cầu một số dịch vụ đặc biệt nên có độ ưu tiên xử lý yêu cầu. Điển hình như một Printer Server không thể có độ ưu tiên hơn một DC được.
• Theo dõi Dynamic Memory trong Hyper-V Manager: Hình bên dưới là giao
diện Hyper-V Manager sau khi update và chạy phiên bản Windows Sevrer 2008 R2 SP1. Có hai cột mới trong giao diện quản lý các máy ảo. Đó là Current Memory và Memory Availabe. Hai cột này cho chúng ta theo dõi lượng memory hiện tại và lượng memory bao nhiêu sẽ được Hyper-V cân bằng một cách tự động giữa các máy ảo.
Bên cạnh đó Microsoft còn cung cấp cho chúng ta một bộ tính toán hiệu suất mới cho phép theo dõi cấp phát dynamic memory trong Hyper-V và bộ tính toán này thuộc group Hyper-V Dynamic Memory Balancer và Hyper-V Dynamic Memomry VM. Bạn có thể tạo bộ Data Collector để ghi nhận và thông qua Performance Monitor để theo dõi theo thời gian thực.