5. Kiến trúc lập lịch trong CloudSim
CloudSim được phát triển từ GridSim, CloudSim đưa ra ba thành phần cơ bản Hosts, Virtual Machines, và Applications, ba thành phần này nhằm mô phỏng ba mô hình IaaS (Infrastructure as a Service), PaaS (Platform as a Service), và SaaS (Software as a Service) của tính toán đám mây. CloudSim có thể hỗ trợ để tạo ra cơ sở hạ tầng tính toán đám mây với quy mô lớn, bao gồm các trung tâm dữ liệu trên một nút máy tính vật lý và máy ảo java. Nó cung cấp mô hình của trung tâm dữ liệu, môi giới dịch vụ, lập lịch và các chính sách định vị tài nguyên.
Hình 3 chỉ ra mô hình làm việc của CloudSim với n user cung cấp các tác vụ (task) độc lập, các tác vụ này thông qua bộ môi giới của trung tâm dữ liệu (DataCenter Broker) và chính sách định vị máy ảo (VmAllocation Policy) để ánh xạ vào một trong các máy ảo (Vitual machine) tương ứng.
Hình 3: Mô hình làm việc của CloudSim
Trong các ứng dụng thường sử dụng các API của CloudSim 3.0.3 để tạo các Task, Host, VM, Datacenter, … và mở rộng lớp DataCenterBroker của CloudSim để đưa ra chính sách lập lịch phù hợp với các thuật toán lập lịch.
6. Các API cơ bản của CloudSim
- CloudSim:
public static void init(int numUser,Calendar cal, boolean traceFlag)
- Phương thức này dùng để nạp thư viện của CloudSim nên được gọi là trước hết.Trong phương thức này, nó sẽ tạo ra các thực thể CloudSim sau:
• CloudInformationService.
• CloudSimShutdown
Các tham số:
- numUser: số người dùng được tạo ra
- cal: bắt đầu từ thời gian để mô phỏng này. Nếu nó là vô giá trị, sau đó thời gian sẽ được lấy từ Calendar.getInstance()
- traceFlag: Ghi lại dấu vết CloudSim khi thực hiện mô phóng.
public static double startSimulation() throws NullPointerException
- Bắt đầu thực hiện mô phỏng CloudSim.
Lưu ý: Phương pháp này nên được gọi là sau khi tất cả các thực thể đã được thiết lập và bổ sung.
public static void stopSimulation()throws NullPointerException
- Dừng mô phỏng khi xác định được người sử dụng trong thời gian thực.
- Datacenter:
public Datacenter(String name,
DatacenterCharacteristics characteristics,
VmAllocationPolicy vmAllocationPolicy,
List<Storage> storageList,
double schedulingInterval)
throws Exception
- Phương thức dùng để tạo ra một đối tượng Datacenter mới
Các tham số:
-name: Tên của Datacenter được tạo
-characteristics: Một đối tượng DatacenterCharacterristics
-storageList: List các lưu trữ, dùng để mô phóng dữ liệu
-vmAllocationPolicy:Chính sách sử dụng máy ảo
- DatacenterBroker:
public DatacenterBroker(String name)throws Exception
- Phương thức dùng để tạo một đối tượng datacenterbroker
Tham số:
-name: Tên datacenterbroker được tạo
public void submitCloudletList(List<? extends Cloudlet> list)
- Phương thức này để gửi danh sách cloudlet cho một broker
Tham số:
-list:list cloudlet (tác vụ)
public void submitVmList(List<? extends Vm> list)
- Phương thức này để gửi danh sách máy ảo cho một broker.
Tham số:
-list: list máy ảo
public void bindCloudletToVm(int cloudletId, int vmId)
- Phương thức này dùng để gán một cloudlet cho một máy ảo xứ lý
Các tham số:
-cloudletId: id của cloudlet cần gửi cho máy ảo
-vmId: id của máy ảo
- DatacenterCharacterristics:
public DatacenterCharacteristics(String architecture,
String os,String vmm,List<? extends Host> hostList,
double timeZone,double costPerSec,double costPerMem,
double costPerStorage, double costPerBw)
- Phương thức tạo mới một DatacenterCharacteristics
Các tham số:
-architecture: kiến trúc tài nguyên(x86,x64)
-os: hệ điều hành
-vmm: Màn hình sử dụng máy ảo
-hostList: danh sách tài nguyên máy chủ
-timeZone: múi giờ sử dụng
-costPerSec: chi phí cho mỗi giây sử dụng nguồn tài nguyên
-costPerMem: chi phí để sử dụng bộ nhớ
-costPerStorage: chi phí sử dụng lưu trữ
-costPerBw: chi phí sử dụng băng thông
- Host:
public Host(int id,RamProvisioner ramProvisioner,
BwProvisioner bwProvisioner,
long storage, List<? extends Pe> peList,
VmScheduler vmScheduler)
- Khởi tạo một máy chủ.
Các tham số:
-id: Id máy chủ
-ramProvisioner: Khởi tạo ram máy chủ
-bwProvisioner: Khởi tạo băng thông
-storage: Lưu trữ
-peList: List các pe(nhân CPU)
-vmScheduler:chính sách lập lịch máy ảo
- Vm (Vitual machine):
public Vm(int id,int userId, double mips, int numberOfPes, int ram,long bw, long size, String vmm,CloudletScheduler cloudletScheduler)
- Tạo một máy ảo mới.
Các tham số:
-id: Id duy nhất cho từng máy ảo
-userId: Id của người dùng máy ảo
-mips: Tốc độ triệu xứ lý trên giây
-numberOfPes: Số lượng cpu
-ram: Dung lượng ram.
-bw: Dung lượng băng thông.
-size: Dung lượng lưu trữ.
-vmm: Màn hình máy ảo sử dụng.
-cloudletScheduler: Chính sách lập lịch tác vụ.