Chủ Nhật, 9 tháng 2, 2014

Tiết kiệm năng lượng trong mạng

Báo cáo Project 1 Optimizer
II. Các khối chức năng cụ thể của chương trình
*)Các hàm phục vụ cho quá trình tính toán
• Hàm tạo ma trận m hàng n cột với tất cả các phần tử bằng 0
def taomt(m,n):# Khai báo hàm
a=[]#Khởi tạo ma trận a rỗng
i=0#Khai báo biến i
j=0#Khai báo biến j
for i in range(m):#i chạy từ 0 đến m-1
b=[]#Khai báo b rỗng
a.append(b)#Thêm b vào a
#Như vậy sau bước này ta có ma trận a có m hàng
for i in range(m):#i chạy 0->m-1
for j in range(n):#j chạy 0-> n-1
a[i].append(0)#Thêm 0 vào hàng i để tạo ra cột
#Như vậy sau bước này ta có ma trận m hàng n cột tất cả phần tử bằng 0
return a# Trả về a
• Hàm tính x
y
def mu(x,y):#Khai báo hàm
s=1#Khai báo s
5
Báo cáo Project 1 Optimizer
if y==0:#Nếu y=0
return 1#Trả về 1
else:
for i in range(y):#
s=s*x
return(s)
• Hàm add toàn bộ list y vào list x
def addlist(x,y):
for i in range(len(y)):
x.append(y[i])
return x
1.Khối nhập dữ liệu đầu vào
l=input("Nhap so server\n")
n=input("Nhap so chuyen mach Top Of Rack\n")
m=input("Nhap so chuyen mach tich hop\n")
h=input("Nhap so chuyen mach loi (core)\n")
f=input("Nhap so Top Of Rack toi da ket noi vao mot chuyen mach tich hop\n")
e=input("Nhap so server toi da ket noi vao mot Top Of Rack\n")
6
Báo cáo Project 1 Optimizer
dl=float(raw_input("Nhap capacity cua he thong"))
bitmin=float(raw_input("Nhap bitrate toi thieu cua cac ket noi"))
bitmax=float(raw_input("Nhap bitrate toi da cua cac ket noi"))
mi1=input("Nhap cong suat toi thieu cua tang chuyen mach loi")
ma1=input("Nhap cong suat toi da cua tang chuyen mach loi")
mi2=input("Nhap cong suat toi thieu cua tang chuyen mach tich hop")
ma2=input("Nhap cong suat toi da cua tang chuyen mach tich hop")
mi3=input("Nhap cong suat toi thieu cua tang chuyen mach Top Of Rack")
ma3=input("Nhap cong suat toi da cua tang chuyen mach Top Of Rack")
2. Khối tạo ma trận bit rate
2.1 Ý nghĩa:
Lưu bitrate của các yêu cầu kết nối
2.2 Định dạng ma trận
Ma trận gồm 1 hàng và l cột ( l là số server). Mỗi cột đại diện cho 1 server. Server
nào phát đi yêu cầu thì giá trị của cột tương ứng trong ma trận sẽ có giá trị là
bitrate của yêu cầu phát đi. Server nào không phát đi yêu cầu thì giá trị cột tương
ứng trong ma trận sẽ có giá trị 0.
Ví dụ: Có 5 server. Server 2,5 không phát yêu cầu. Server 1,3,4 phát yêu cầu với
bitrate tương ứng là 0.1;0.3;0.2. ta có ma trận:
7
Báo cáo Project 1 Optimizer
0.1 0 0.3 0.2 0

2.3 Giải thuật
Ta sẽ tạo ngẫu nhiên các yêu cầu kết nối theo cách:
+) Tạo ngẫu nhiên 1 trong 2 số 1 và 0 tương ứng với hai trường hợp phát và không
phát yêu cầu
+) Nhân số đã tạo ở trên với 1 số ngẫu nhiên trong khoảng min-> max đã cho. Như
thế:
• Khi server phát yêu cầu ta sẽ có giá trị 1*x=x(x nằm trong khoảng min->
max)
• Khi server không phát yêu cầu ta có giá trị 0*x=0
2.4 Thực hiện
def tao_bitrate(l,m1,m2):
#Các tham số:
#l: Số server
#m1: bitrate min của yêu cầu
#m2: bitrate max của yêu cầu
i=0
8
Báo cáo Project 1 Optimizer
a=taomt(1,l)#Tạo ma trận 1 hàng l cột
for i in range (l):
a[0][i]=random.randint(0,1)*random.uniform(m1,m2)
#Lệnh random.randint(0,1) random ra 1 trong 2 số 0 hoặc 1
#Lệnh random.uniform(m1,m2) random ra 1 số bất kì trong khoảng m1,m2
return a
3. Khối tạo ma trận công suất
3.1 Ý nghĩa
Lưu công suất trên từng chuyển mạch của hệ thống.Phục vụ cho quá trình tính toán
công suất tiết kiêm được của hệ thống
3.2Định dạng ma trận
Ma trận gồm 3 hàng, n cột. Trong đó :
Hàng 1 thể hiện công suất từng chuyển mạch lõi (core)
Hàng 2 thể hiện công suất từng chuyển mạch tích hợp
Hàng 3 thể hiện công suất từng chuyển mạch top of rack
Vì số core ,chuyển mạch tích hợp,top of rack là không như nhau nên ta tạo
ma trận với số cột lớn nhất là n.Do đó với những phần tử dư ra trong từng hàng ta
mặc định bằng 0.
9
Báo cáo Project 1 Optimizer
Ví dụ: Hệ thống có 2 chuyển mạch lõi với công suất 180 và 185 W, 4 chuyển mạch
tích hợp với công suất 150,152,151,154 W, 6 chuyển mạch top of rack với công
suất 123, 125,122,127,124,128 W. Ta sẽ có ma trận công suất:
180 185 0 0 0 0
150 152 151 154 0 0
123 125 122 127 124 128
3.3 Giải thuật
Tạo ma trận (3,n) với tất cả các phần tử bằng 0
Hàng 1 nhập giá trị công suất của core bằng hàm random
Hàng 2 nhập giá trị công suất của chuyển mạch tích hợp bằng hàm random
Hàng 3 nhập giá trị công suất của top of rack bằng hàm random
Với các giá trị công suất min ,max được nhập qua các tham số
mi1,ma1,mi2,ma2,mi3,ma3
3.4 Thực hiện
#Hàm tạo ma trận công suất
def tao_mtcs(h,m,n,mi1,ma1,mi2,ma2,mi3,ma3):
# số core : h, số top of rack :m, số top of switch :n
#mi1, ma1, mi2, ma2, mi3, ma3 lần lượt là công suất min, max của core, top
of rack, top #of switch
a=taomt(3,n)
#tạo ma trận 3 hàng n cột
10
Báo cáo Project 1 Optimizer
for i in range(h):
a[0][i]=random.randint(mi1,ma1)
#tạo hàng công suất của core lấy giá trị random trong đoạn [mi1,ma1]
for i in range(m):
a[1][i]=random.randint(mi2,ma2)
#tạo hàng công suất của core lấy giá trị random trong đoạn [mi2,ma2]
for i in range(n):
a[2][i]=random.randint(mi3,ma3)
#tạo hàng công suất của core lấy giá trị random trong đoạn [mi3,ma3]
return a
4. Khối tạo ma trận kết nối
4.1 Ý nghĩa
Ma trận kết nối thể hiện thông tin đầy đủ về tất cả các yêu cầu, bao gồm:
• Server nguồn
• Server đích
• Dung lượng yêu cầu
4.2 Định dạng ma trận
11
Báo cáo Project 1 Optimizer
Ma trận bao gồm l hàng l cột với l là số server. Các hàng tượng trưng cho server
phát. Các cột tượng trưng cho server thu.Tại vị trí [i][j] trong ma trận:
• Nếu giá trị của ma trận khác 0 : tồn tại yêu cầu từ server i đến server j với
dung lượng là giá trị của ma trận tại vị trí [i][j]
• Nếu giá trị của ma trận bằng 0: Không tồn tại yêu cầu từ server i đến server j
4.3 Giải thuật
Trước khi chúng ta tạo ma trận kết nối chúng ta đã có ma trận bitrate thể hiện
bitrate của các server phát do đó chúng ta phải tạo ma trận kết nối tương ứng với
ma trận bitratr e này. Cách thức thực hiện:
• Khởi tạo ma trận kết nối l hàng l cột tất cả bằng 0
• Duyệt ma trận bitrate
• Nếu có yêu cầu(giá trị ma trận bitrate khác 0) tại vị trí i
• Random một số bất kì j (khác i) làm server thu
• Gán giá trị của ma trận kết nối tại vị trí [i][j] là giá trị bitrate tương ứng
4.4 Thực hiện
def tao_mtketnoi(bit,l):
#Đầu vào:
#bit: ma trận bitrate
#l: số server
k=0#k : số bất kì làm server đích
12
Báo cáo Project 1 Optimizer
kq=taomt(l,l)#Khởi tạo ma trận l hàng l cột
for i in range(l):
if bit[0][i]!=0:#Nếu tồn tại yêu cầu
k=i#Đầu tiên gán k=i
while(k==i):#Kiểm tra k có bằng i hay ko
k=random.randint(0,l-1)#Nếu có random ra 1 số bất kì từ 0=>l-1.Sau
đó quay lên kiểm tra xem k có khác i hay ko. Nếu vẫn khác thì lặp lại đến khi k khác
i
kq[i][k]=bit[0][i]#Gán giá trị
return kq
5. Khối tạo 3 ma trận thể hiện kết nối
5.1 Ý nghĩa
Ta nhận thấy rằng trong topology biểu diễn hệ thống không phải 2 chuyển
mạch bất kì nào cũng nối với nhau, do đó chúng ta cần có những ma trận thể hiện
sự kết nối giữa các tầng chuyển với nhau để khi tiến hành Optimizer chúng ta biết
được những chuyển mạch nào có thể nối được với nhau và những chuyển mạch
nào không nối với nhau.
5.2 Định dạng ma trận
Trong Topology hệ thống chúng ta thấy rõ hệ thống bao gồm các tầng theo thứ tự
từ trên xuống:
• Chuyển mạch lõi
13
Báo cáo Project 1 Optimizer
• Chuyển mạch tích hợp
• Chuyển mạch top of rack
• Server
Do đó chúng ta phải thể hiện các kết nối :
• Chuyển mạch lõi-chuyển mạch tích hơp
• Chuyển mạch tích hợp-chuyển mạch top of rack
• Chuyển mạch top of rack-Server
Do đó chúng ta sẽ xây dựng 3 ma trận thể hiện cho 3 kết nối phải thể hiện. Mỗi
tầng có định dạng như sau:
Ma trận thể hiện kêt nối giữa tầng i và tầng j . Trong đó tầng i nằm phía trên tầng j.
Tầng i có a chuyển mạch, mỗi chuyển mạch ở tầng i nối với b chuyển mạch ở tầng
j.Ta sẽ có ma trận a hàng b+1 cột trong đó:
• Cột đầu tiên của mỗi hàng biểu diễn số thứ tự của chuyển mạch ở tầng i
• Các cột từ thứ 2 đến hết của mỗi hàng thể hiện số thứ tự của chuyển mạch ở
tầng j có kết nối với i.
Ví dụ: Ta có sơ đồ kết nối giữa 2 tầng như sau:
14

Không có nhận xét nào:

Đăng nhận xét