Mô hình IaaS của điện toán đám mây có thể mô phỏng bằng cách mở rộng thực thể Datacenter. Thực thể Datacenter quản lý một số lượng thực thể Host. Các Host được gán cho một hoặc nhiều máy ảo dựa trên chính sách phân bổ máy ảo được định nghĩa bởi nhà cung cấp dịch vụ đám mây. Ở đây, chính sách máy ảo viết tắt của các chính sách kiểm soát hoạt động liên quan tới vòng đời máy ảo như là: sự cung cấp của một host tới một máy ảo, khởi tạo máy ảo, hủy máy ảo và di trú máy ảo. Tương tự, một hoặc nhiều dịch vụ ứng dụng có thể được cung cấp trong một trường hợp máy ảo độc lập. Trong bối cảnh của Cloudsim, một thực thể là một thể hiện của một thành phần. Một thành phần Cloudsim có thể là một lớp hoặc tập các lớp đại diện một mô hình Cloudsim chẳng hạn như Datacenter hay Host. Một Datacenter có thể quản lý một vài Host, các host này sẽ quản lý các máy ảo trong suốt vòng đời của chúng. Host là một thành phần Cloudsim đại điện một máy chủ tính toán vật lý trong đám mây. Nó được gán một khả năng xử lý, được cấu hình trước thể hiện bằng triệu chỉ thịtrên giây gọi là MIPS, bộ nhớ, lưu trữ, và một chính sách cung cấp để phân bổ các core xử lý tới các máy ảo. Thành phần Host thực hiện giao diện hỗ trợ mô hình và mô phỏng các nút đơn core và đa core.
Phân bổ máy ảo là một tiến trình khởi tạo một trường hợp cụ thể máy ảo trên các Host phù hợp với đặc tính như lưu trữ, bộ nhớ, các cấu hình như môi trường phần mềm và các yêu cầu như khu vực sẵn sàng của nhà cung cấp SaaS. Khi một dịch vụ ứng dụng được định nghĩa và mô hình, nó được gán tới một hoặc nhiều máy ảo đã được khởi tạo trước thông qua một chính sách phân bổ dịch vụ cụ thể. Phân bổ các máy ảo ứng dụng cụ thể tới các Host trong trung tâm dữ liệu dựa trên đám
mây là nhiệm vụ của một thành phần điều khiển phân bổ máy ảo được gọi là VmAllocationPolicy. Thành phần này trình bày một số phương thức tùy chỉnh hỗ trợ cho nhà nghiên cứu và nhà phát triển trong việc thực hiện các chính sách mới dựa trên mục tiêu tối ưu hóa bao gồm người dùng, hệ thống và cả hai. Mặc định, VmAllocationPolicy thực hiện một chính sách đơn giản phân bổ các máy ảo tới các Host trên cơ sở đến trước phục vụ trước. Yêu cầu phần cứng như số lượng core xử lý, bộ nhớ, lưu trữ hình thành một cơ sở cho việc cung cấp. Các chính sách khác, bao gồm các chính sách được thể hiện bởi nhà cung cấp đám mây cũng có thể dễ dàng được mô hình và mô phỏng trong Cloudsim. Tuy nhiên, chính sách được sử dụng bởi nhà cung cấp đám mây chung như Amazon EC2, Microsoft Azure là không sẵn sàng công bố, và do đó một phiên bản của các thuật toán này được thực hiện trước đó không được cung cấp với Cloudsim.
Đối với mỗi thành phần Host cũng khởi tạo một thành phần lập lịch máy ảo có thể thực hiện chính sách time-shared hoặc space-shared để phân bổ core cho các máy ảo. Nhà phát triển ứng dụng và nhà nghiên cứu có thể mở rộng thành phần lập lịch máy ảo để thực nghiệm với chính sách phân bổ tùy chỉnh. Tham số cấu hình phần cứng và phần mềm liên quan tới máy ảo được định nghĩa trong lớp máy ảo. Hiện tại, nó hỗ trợ mô hình của các cấu hình máy ảo được cung cấp bởi các nhà cung cấp đám mây như là Amazon, EC2.
2.3. Thiết kế và thực hiện của CloudSim
Tổng thể các lớp thiết kế sơ đồ cho CloudSim được trình bày trong hình PL1.
BwProvisioner: đây là một lớp trừu tượng mô hình chính sách cung cấp băng thông cho máy ảo. Vai trò chính của thành phần này là đảm nhiệm phân bổ băng thông mạng tới một tập các máy ảo tranh chấp được triển khai khắp các datacenter. Nhà nghiên cứu và nhà phát triển hệ thống đám mây có thể mở rộng lớp này bằng chính sách riêng của họ phản ánh nhu cầu ứng dụng. Lớp BwProvisioningSimple cho phép một máy ảo đặt trước càng nhiều băng thông yêu cầu. Tuy nhiên, điều này bị hạn chế bởi tổng băng thông của Host.
Cloudlet: Lớp này mô hình dịch vụ ứng dụng dựa trên đám mây như là phân
dàn xếp sự phức tạp của một ứng dụng theo các yêu cầu tính toán của nó. Mỗi dịch vụ ứng dụng có một chiều dài chỉ thị được gán trước và dữ liệu truyền, cả trước và sau khi nạp, mà nó cần đảm nhiệm trong suốt chu kỳ sống của nó. Lớp này cũng được mở rộng để hỗ trợ mô hình công việc khác và các số liệu thành phần cho ứng dụng như là các giao dịch trong ứng dụng hướng đối tượng.
CloudletScheduler: Lớp này được mở rộng để thực hiện các chính sách khác nhau để xác định chia sẻ nguồn lực xử lý giữa các Cloudlets trong một máy ảo. Như mô tả trước đó, hai loại chính sách cung cấp được đưa ra là space-shared được trình bày trong lớp CloudetSchedulerSpaceShared và time-shared thể hiện trong lớp CloudletSchedulerTimeShared.
Datacenter: Lớp này mô hình dịch vụ mức lõi cơ sở hạ tầng được cung cấp
bởi nhà cung cấp đám mây như Amazon, Azure, App Engine. Nó đóng gói một tập các host tính toán, các host này có thể là đồng nhất hoặc không đồng nhất về cấu hình phần cứng như bộ nhớ, cores, công suất và lưu trữ. Hơn nữa, mỗi thành phần Datacenter khởi tạo một thành phần cung cấp ứng dụng tổng quát, thực hiện một tập chính sách phân bổ băng thông, bộ nhớ, dung lượng lưu trữ tới các host và máy ảo.
DatacenterBroker hay CloudBroker: Lớp này mô hình một nhà môi giới, nó chịu trách nhiệm là trung gian đàm phán giữa nhà cung cấp SaaS và các nhà cung cấp đám mây, đàm phán điều khiển bởi yêu cầu QoS. Nhà môi giới gọi là Broker, hoạt động đại diện cho nhà cung cấp SaaS. Nó phát hiện ra những nhà cung cấp dịch vụ đám mây phù hợp bằng cách yêu cầu dịch vụ thông tin đám mây và đảm nhiệm đàm phán trực tuyến để phân bổ các dịch vụ hay nguồn tài nguyên có thể đáp ứng yêu cầu QoS của ứng dụng. Nhà nguyên cứu và nhà phát triển hệ thống phải mở rộng lớp này để đánh giá và kiểm tra chính sách môi giới tùy chỉnh. Khác biệt giữa Broker và CloudCoordinator là CloudCoordinator đại diện cho khách hàng, các quyết định của thành phần này được thực hiện để tăng thước đo hiệu suất liên quan tới khách hàng. Trong khi các hoạt động của Broker thay mặt cho trung tâm dữ liệu, tức là nó sẽ cố gắng tối đa hiệu suất tổng thể của trung tâm dữ liệu, mà không cần xem xét nhu cầu của khách hàng cụ thể.
DatacenterCharacteristics: Lớp này chứa thông tin cấu hình đặc điểm của các nguồn tài nguyên datacenter.
Hình PL1: Sơđồ thiết kế lớp CloudSim [16]
Host: Lớp này mô hình một nguồn tài nguyên vật lý như một máy chủ tính toán hoặc máy chủ lưu trữ. Nó đóng gói những thông tin quan trọng như là số lượng bộ nhớ và lưu trữ, một danh sách core và loại core xử lý, đại diện cho một máy tính đa lõi, một chính sách phân bổ chia sẻ sức mạnh xử lý giữa các máy ảo và chính sách cung cấp bộ nhớ và băng thông cho các máy ảo.
RamProvisioner: lớp trừu tượng này đại diện cho một chính sách cấp phát
bộ nhớ RAM tới các máy ảo. Sự thực thi và triển khai máy ảo trên một host chỉ khả thi nếu thành phần RamProvisioner xác nhận host có yêu cầu số lượng bộ nhớ tự do. RamProvisionerSimple không bắt buộc bất kỳ sự giới hạn về số lượng bộ nhớ mà một máy ảo có thể yêu cầu. Tuy nhiên, nếu yêu cầu vượt quá khảnăng bộ nhớ sẵn có khi đó nó đơn giản là từ chối.
Vm: lớp này mô hình một máy ảo được quản lý và lưu giữ bởi một thành
phần host đám mây. Mỗi thành phần máy ảo có thể truy xuất tới một thành phần lưu trữ đặc điểm theo sau liên quan tới một máy ảo như bộ nhớ truy cập, bộ xử lý,
kích thước lưu trữ, và chính sách cung cấp nội bộ máy ảo được mở rộng từ một thành phần trừu tượng gọi là CloudletScheduler.
VmmAllocationPolicy: lớp trừu tượng này đại diện cho một chính sách cung cấp mà bộ giám sát máy ảo sử dụng để phân bổ các máy ảo tới các host. Chức năng chính của VmmAllocationPolicy là lựa chọn host sẵn sàng trong một datacenter đáp ứng được bộ nhớ, lưu trữ, và yêu cầu sẵn sàngđể triển khai máy ảo.
VmScheduler: lớp trừu tượng này được thực hiện bởi một thành phần Host,
thành phần này mô hình các chính sách space-shared, time-shared, cần thiết để phân bổ core xửlý tới các máy ảo. Các chức năngchính của lớp này có thể dễdàngđược ghi đè để cung cấp các chính sách chia sẻ bộ xử lý ứng dụng cụ thể.
2.4. Framework lõi CloudSim
CloudSim: là lớp chính chịu trách nhiệm quản lý các hàng đợi sự kiện và điều khiển từng bước tuần tự thực thi của các sự kiện mô phỏng. Mỗi sự kiện được tạo ra bởi thực thể CloudSim ở thời gian chạy được lưu trữ trong hàng đợi sự kiện tương lai. Các sự kiện này được sắp xếp bởi tham số thời gian của chúng và được chèn vào hàng đợi. Kế tiếp, các sự kiện này được lập lịch trên mỗi bước mô phỏng và được lấy ra từ hàng đợi sự kiện tương lai và chuyển tới hàng đợi sự kiện trì hoãn. Tiếp theo sau, một phương thức xử lý sự kiện được gọi cho mỗi thực thể chọn các sự kiện từ hàng đợi sự kiện trì hoãn và thực hiện hành động thích hợp. Sự tổ chức như vậy cho phép quản lý linh hoạt mô phỏng và cung cấp khả năng mạnh mẽ sau đây: (1) Dừng hay giữ hoạt động của thực thể. (2) Chuyển ngữ cảnh của thực thể giữa các trạng thái khác nhau, chẳng hạn từ đợi tới hoạt động. Tạm dừng hoặc khôi phục lại quá trình mô phỏng. (3) Khởi tạo thực thể mới ở thời gian chạy. (4) Hủy bỏ hoặc khởi động lại mô phỏng ở thời gian chạy
DeferredQueue: thực hiện hàng đợi sự kiện trì hoãn được sử dụng bởi CloudSim.
FutureQueue: thực hiện hàng đợi sự kiện tương lai được truy xuất bởi CloudSim.
Hình PL2: Sơđồ lớp Framework lõi CloudSim:
(a) lớp chính, (b) lớp Predicates [16] CloudInformationService: một dịch vụ
thông tin đám mây, CIS, là một thực thể đăng ký nguồn tài nguyên có thể cung cấp, lập chỉ mục, và khảnăng phát hiện tài nguyên. CIS hỗ trợhai phương thức cơ bản đầu tiên là (i) publish(), cho phép thực thể đăng ký chính chúng với CIS và (ii) search(), cho phép các thực thể như CloudCoordinator và Brokers trong việc phát hiện tình trạng và địa chỉ liên lạc đầu cuối của các thực thể khác. Thực thể này cũng thông báo tới các thực thể khác về sự kết thúc mô phỏng.
SimEntity: là lớp trừu tượng đại diện cho một thực thể mô phỏng có thể gởi thông điệp tới các thực thể khác và xử lý các thông điệp nhận được cũng như xa thải và xử lý sự kiện. Tất cả thực thể phải mở rộng lớp này và ghi đè ba phương thức lõi của nó: startEntity(), processEvent() và shutdownEntity(). Chúngđịnh nghĩa hành động khởi tạo thực thể, xử lý các sự kiện và hủy thực thể tương ứng. Lớp SimEntity cung cấp khả năng lập lịch sự kiện mới và gởi các thông điệp tới các sự kiện khác, trong đó độ trễ mạng được tính theo mô hình BRITE. Sau khi tạo ra, thực thể tự động đăng ký với CIS.
Predicate: được sử dụng để lựa chọn các sự kiện từ hoàn đợi trì hoãn. Đây
là lớp trừu tượng và phải được mở rộng để khởi tạo một Predicate mới.
PredicateAny: đại diện cho một Predicate phù hợp với bất kỳ sự kiện trong hàng đợi sự kiện trì hoãn. Có một trường hợp ví dụ cụ thể của Predicate này trong lớp CloudSim, được gọi là CloudSim.SIM_ANY, và do đó không có thể hiện mới cần được khởi tạo.
kiện được loại bỏ bởi các thực thể cụ thể.
PredicateNone: lớp này đại diện cho một Predicate không phù hợp với bất
kỳ sự kiện nào trong hàng đợi sự kiện trì hoãn. Có một trường hợp thể hiện cụ thể của Predicate này trong lớp CloudSim, được gọi là CloudSim.SIM_NONE, do đó người dùng không cần phải khởi tạo các thể hiện mới của lớp này.
PredicateNotFrom: lớp này đại diện cho một Predicate lựa chọn các sự kiện đã không được gởi bởi các thực thể cụ thể.
PredicateNotType: lớp này đại diện cho một Predicate lựa chọn các
sự kiện không phù hợp với các thẻ cụ thể.
PredicateType: đại diện cho một Predicate lựa chọn các sự kiện với các thẻ
cụ thể. CloudSimTags: lớp này chứa những thẻ lệnh hoặc sự kiện tĩnh khác nhau, nó xác định loại hành động mà cần phải được thực hiện bởi CloudSim khi chúng nhận hoặc gởi sự kiện.
SimEvent: thực thể này đại diện một sự kiện mô phỏng được truyền qua giữa hai hoặc nhiều thực thể. SimEvent lưu trữ các thông tin sau về một sự kiện: loại, thời gian khởi tạo, thời gian mà sự kiện sẽ xảy ra, thời gian hoàn thành, thời gian mà sự kiện sẽ được chuyển giao tới thực thể đích của nó, ID của thực thể nguồn và thực thể đích, thẻ của sự kiện và dữ liệu phải được truyền qua tới thực thể đích. CloudSimShutdown: đây là một thực thể đợi kết thúc tất cả người dùng đầu cuối và thực thể Broker, và sauđóbáo hiệu kết thúc mô phỏng tới CIS.
2.5. Giao tiếp giữa các thực thể
Bắt đầu mô phỏng, mỗi thực thể Datacenter đăng ký với CIS. CIS sau đó cung cấp các chức năng loại đăng ký thông tin, như là dàn xếp dịch vụđể ánh xạ người dùng hoặc Datacenterbroker yêu cầu nhà cung cấp đám mây phù hợp. Tiếp theo, DataCenterBroker đại diện cho người dùng tham khảo CIS để nhận được danh sáchcácnhà cung cấp đám mây có thể cung cấp dịch vụcơ sở hạ tầng phù hợp với QoS của ứng dụng, phần cứng và yêu cầu phần mềm. Trong trường hợp ngang hàng nhau DataCenterBroker triển khai ứng dụng với đám mây đề nghị CIS. Luồng giao tiếp được mô tả từ trước đến nay liên quan tới luồng cơ bản trong một môi trường mô phỏng. Một vài thay đổi trong luồng này có thể tùy thuộc vào chính sách. Ví dụ,
thông điệp từ DatacenterBroker tới DataCenter có thể yêu cầu một sự xác nhận từ các bộ phận khác của DataCenter, về việc thực thi một hành động, hoặc về số lượng tối đa các máy ảo mà một người dùng có thể tạo ra. Hình PL3 dưới đây mô tả luồng giao tiếp giữa các thực thể lõi CloudSim.
Giảng Viên Hướng Dẫn
TS.NGUYỄN HỒNG SƠN
Trưởng Khoa Công Nghệ Thông Tin Học Viện Bưu Chính Viễn Thông Cơ Sở
TP.HCM
Học Viên Thực Hiện