(+84) 236.3827111 ex. 402

CloudSim là gì (Phần 6)


8.Thiết lập hiện trạng mạng trên CloudSim.

8.1.Công cụ thiết lập cấu hình mạng

Trên CloudSim người dùng có thể tự tạo ra hiện trang mạng phù hợp với môi trường điện toán đám mây của mình. Hiện nay, người ta sử dung công cụ BRITE để tạo ra hiện trạng mạng, công cụ này được tạo ra bởi trường đại học Boston, bao gồm các thành phần như chỉ ra ở hình 4 và 5.

Hình 4. Các thành phần trong BRITE

Hình 5. Các lớp trong BRITE.

Thực chất, BRITE là một phần mềm người sử dụng chỉ cần chạy phần mềm (với giao diện như hình 6), người dùng cấu hình mạng như số router, số nút mạng, loại mạng, băng thông trên từng nút, …Sau khi cấu hình xong phần mềm này sẽ tạo ra 1 file topology.brite, sử dụng file này để tạo ra hiện trạng mạng trên cloudSim.

Hình 6. Giao diện của BRITE

8.2.Kết nối Cloudsim với cấu hình mạngBRITE.

Trong phần 1, chúng ta có được file hiện trạng mạng, phần này sẽ sử dụng các API của cloudSim để tạo ra hiện trạng mạng trên điện toán đám mây.

Các bước để tạo ra một mô phỏng mạng trên điện toán đám mây:

Từ bước 1 đến bước 7 giống như trong phần VIII.

Bước 8:Tạo ra hiện trạng mạng sử dụng API : buildNetworkTopology của CloudSim để đọc file cấu hình từ BRITE

public static void buildNetworkTopology(String fileName) : Trong đó fileName chứa cấu hình mạng tạo ra bằng công cụ BRITE.

Bước 9: ánh xạ 1 thực thể của CloudSim vào 1 nút mạng:

NetworkTopology.mapNode(ID của 1 thực thể trong CloudSim , ID của nút mạng trong BRITE);

8.3.Ví dụ:

Trên điện toán đám mây tạo ra 2 trung tâm dữ liệu , mỗi trung tâm dữ liệu có 1 host vật lý và có hai người dùng trên đám mây. Ví dụ này sử dụng hiện trạng mạng có sẵn của CloudSim với file cấu hình topology.brite:

public class ViDu {

/** Tạo mảng để lưu yêu cầu người dùng */

private static List cloudletList1;

private static List cloudletList2;

/** Tạo mảng để lưu các máy ảo. */

private static List vmlist1;

private static List vmlist2;

public static void main(String[] args) {

Log.printLine("Bắt đàu ví dụ...");

try {

int num_user = 2; // số người dùng

Calendar calendar = Calendar.getInstance();

boolean trace_flag = false; // mean trace events

// Khởi tạo thư viện CloudSim

CloudSim.init(num_user, calendar, trace_flag);

//Tạo trung tâm dữ liệu

Datacenter datacenter0 = createDatacenter("Datacenter_0");

Datacenter datacenter1 = createDatacenter("Datacenter_1");

DatacenterBroker broker1 = createBroker(1);//Tạo bộ môi giới

int brokerId1 = broker1.getId();

DatacenterBroker broker2 = createBroker(2);

int brokerId2 = broker2.getId();

vmlist1 = new ArrayList();//Tạo máy ảo

vmlist2 = new ArrayList();

//Mô tả mấy ảo

int vmid = 0;

long size = 10000;

int mips = 250;

int ram = 512;

long bw = 1000;

int pesNumber = 1;

String vmm = "Xen";

Vm vm1 = new Vm(vmid, brokerId1, mips, pesNumber, ram, bw, size, vmm, new CloudletSchedulerTimeShared());

Vm vm2 = new Vm(vmid, brokerId2, mips, pesNumber, ram, bw, size, vmm, new CloudletSchedulerTimeShared());

vmlist1.add(vm1);

vmlist2.add(vm2);

broker1.submitVmList(vmlist1);

broker2.submitVmList(vmlist2);

//Tạo tác vụ người dùng

cloudletList1 = new ArrayList();

cloudletList2 = new ArrayList();

int id = 0;

long length = 40000;

long fileSize = 300;

long outputSize = 300;

UtilizationModel utilizationModel = new UtilizationModelFull();

Cloudlet cloudlet1 = new Cloudlet(id, length, pesNumber, fileSize, outputSize, utilizationModel, utilizationModel, utilizationModel);

cloudlet1.setUserId(brokerId1);

Cloudlet cloudlet2 = new Cloudlet(id, length, pesNumber, fileSize, outputSize, utilizationModel, utilizationModel, utilizationModel);

cloudlet2.setUserId(brokerId2);

cloudletList1.add(cloudlet1);

cloudletList2.add(cloudlet2);

//Gởi tác vụ lên bộ môi giới

broker1.submitCloudletList(cloudletList1);

broker2.submitCloudletList(cloudletList2);

//Cấu hình mạng

NetworkTopology.buildNetworkTopology("topology.brite");//Nạp file cấu hình

//ánh xạ thự thể CloudSim vào BRITE

int briteNode=0;

NetworkTopology.mapNode(datacenter0.getId(),briteNode);

briteNode=2;

NetworkTopology.mapNode(datacenter1.getId(),briteNode);

briteNode=3;

NetworkTopology.mapNode(broker1.getId(),briteNode);

briteNode=4;

NetworkTopology.mapNode(broker2.getId(),briteNode);

CloudSim.startSimulation();//Bắt đầu mô phỏng

//In kết quả mô phỏng

List newList1 = broker1.getCloudletReceivedList();

List newList2 = broker2.getCloudletReceivedList();

CloudSim.stopSimulation();

}

catch (Exception e) {

e.printStackTrace();

Log.printLine("Không thể mô phỏng");

}

}

private static Datacenter createDatacenter(String name){

List hostList = new ArrayList();

List peList = new ArrayList();

int mips = 1000;

peList.add(new Pe(0, new PeProvisionerSimple(mips)));

int hostId=0;

int ram = 2048; //host memory (MB)

long storage = 1000000; //host storage

int bw = 10000;

hostList.add(

new Host(

hostId,

new RamProvisionerSimple(ram),

new BwProvisionerSimple(bw),

storage,

peList,

new VmSchedulerSpaceShared(peList)

)

);

}