1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo project 1 tiết kiệm năng lượng trong mạng 0546

49 523 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 49
Dung lượng 434 KB

Nội dung

Tài liệu tham khảo Báo cáo project 1 tiết kiệm năng lượng trong mạng 0546

Báo cáo Project Optimizer Mục Lục Mục Lục I.Tổng quan chương trình .2 Mục đích chương trình: 2 Giới thiệu chung Optimizer thuật toán sử dụng Giới thiệu chung chương trình 1.Khối nhập liệu đầu vào .5 Khối tạo ma trận bit rate Khối tạo ma trận công suất .8 Khối tạo ma trận kết nối .10 Khối tạo ma trận thể kết nối 11 Khối tìm đường cho kết nối 19 Khối xếp đường 27 8.Khối kiểm tra đường 28 Khối cập nhật dung lượng hệ thống .31 10.Khối tạo 32 11 Khối in kết quả: 45 Báo cáo Project Optimizer I.Tổng quan chương trình Mục đích chương trình: Hiện vấn đề tiết kiệm lượng đặt vấn đề thiết yếu tất lĩnh vực sống Trong việc quản lí sử dụng Data Center vấn đề cần thiết nhiều lúc(nhất vào ban đêm, thấp điểm) số lượng yêu cầu kết nối nhỏ tất chuyển mạch hoạt động gây lãng phí khơng đáng có Chính chúng em thực chương trình mong muốn tối ưu hóa hệ thống hết mức mà đáp ứng nhu cầu người dùng, qua tiết kiệm công suất sử dụng.Để thực q trình vấn đề Optimizer vơ cần thiết Giới thiệu chung Optimizer thuật tốn sử dụng Optimizer q trình tối ưu hóa sơ đồ hệ thống(Topology) từ dạng phức tạp dạng đơn giản hơn.Để thực điều sử dụng thuật toán Greedybin-packing.Đối với thuật toán chọn đường cho kết nối theo đường trái giúp cho sơ đồ hệ thống giảm thiểu Giới thiệu chung chương trình Chương trình bao gồm 11 khối chức mơ tả hình vẽ phía dưới.Chương trình hoạt động theo bước: • Nhập liệu • Đọc yêu cầu từ ma trận kết nối • Giải yêu cầu đường bên trái Nếu không giải u cầu(khơng tìm đường hay đường tải) thêm yêu cầu vào danh sách từ chối • In kết hình Báo cáo Project Optimizer Báo cáo Project Optimizer II Các khối chức cụ thể chương trình *)Các hàm phục vụ cho q trình tính tốn • Hàm tạo ma trận m hàng n cột với tất phần tử 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ừ đến m-1 b=[]#Khai báo b rỗng a.append(b)#Thêm b vào a #Như sau bước 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 vào hàng i để tạo cột #Như sau bước ta có ma trận m hàng n cột tất phần tử return a# Trả a • Hàm tính xy def mu(x,y):#Khai báo hàm s=1#Khai báo s Báo cáo Project Optimizer if y==0:#Nếu y=0 return 1#Trả else: for i in range(y):# s=s*x return(s) • Hàm add tồn 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 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") Báo cáo Project 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") Khối tạo ma trận bit rate 2.1 Ý nghĩa: Lưu bitrate yêu cầu kết nối 2.2 Định dạng ma trận Ma trận gồm hàng l cột ( l số server) Mỗi cột đại diện cho server Server phát yêu cầu giá trị cột tương ứng ma trận có giá trị bitrate yêu cầu phát Server khơng phát u cầu giá trị cột tương ứng ma trận có giá trị Ví dụ: Có 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 0.1;0.3;0.2 ta có ma trận: Báo cáo Project 0.1 Optimizer 0.3 0.2 2.3 Giải thuật Ta tạo ngẫu nhiên yêu cầu kết nối theo cách: +) Tạo ngẫu nhiên số tương ứng với hai trường hợp phát không phát yêu cầu +) Nhân số tạo với số ngẫu nhiên khoảng min-> max cho Như thế: • Khi server phát yêu cầu ta có giá trị 1*x=x(x nằm khoảng min-> max) • Khi server khơng phát u cầu ta có giá trị 0*x=0 2.4 Thực def tao_bitrate(l,m1,m2): #Các tham số: #l: Số server #m1: bitrate yêu cầu #m2: bitrate max yêu cầu i=0 a=taomt(1,l)#Tạo ma trận hàng l cột Báo cáo Project Optimizer for i in range (l): a[0][i]=random.randint(0,1)*random.uniform(m1,m2) #Lệnh random.randint(0,1) random số #Lệnh random.uniform(m1,m2) random số khoảng m1,m2 return a Khối tạo ma trận công suất 3.1 Ý nghĩa Lưu công suất chuyển mạch hệ thống.Phục vụ cho q trình tính tốn cơng suất tiết kiêm hệ thống 3.2Định dạng ma trận Ma trận gồm hàng, n cột Trong : Hàng thể công suất chuyển mạch lõi (core) Hàng thể công suất chuyển mạch tích hợp Hàng thể cơng suất chuyển mạch top of rack Vì số core ,chuyển mạch tích hợp,top of rack khơng nên ta tạo ma trận với số cột lớn n.Do với phần tử dư hàng ta mặc định Ví dụ: Hệ thống có chuyển mạch lõi với công suất 180 185 W, chuyển mạch tích hợp với cơng suất 150,152,151,154 W, chuyển mạch top of rack với công suất 123, 125,122,127,124,128 W Ta có ma trận cơng suất: Báo cáo Project 180 150 123 185 152 125 Optimizer 151 122 154 127 0 124 0 128 3.3 Giải thuật Tạo ma trận (3,n) với tất phần tử Hàng nhập giá trị công suất core hàm random Hàng nhập giá trị công suất chuyển mạch tích hợp hàm random Hàng nhập giá trị công suất top of rack hàm random Với giá trị công suất ,max nhập qua tham số mi1,ma1,mi2,ma2,mi3,ma3 3.4 Thực #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 công suất min, max core, top of rack, top #of switch a=taomt(3,n) #tạo ma trận hàng n cột for i in range(h): a[0][i]=random.randint(mi1,ma1) #tạo hàng công suất core lấy giá trị random đoạn [mi1,ma1] for i in range(m): a[1][i]=random.randint(mi2,ma2) #tạo hàng công suất core lấy giá trị random đoạn [mi2,ma2] for i in range(n): a[2][i]=random.randint(mi3,ma3) #tạo hàng công suất core lấy giá trị random đoạn [mi3,ma3] return a Báo cáo Project Optimizer Khối tạo ma trận kết nối 4.1 Ý nghĩa Ma trận kết nối thể thông tin đầy đủ tất 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 Ma trận bao gồm l hàng l cột với 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] ma trận: • Nếu giá trị ma trận khác : tồn yêu cầu từ server i đến server j với dung lượng giá trị ma trận vị trí [i][j] • Nếu giá trị ma trận 0: Không tồn yêu cầu từ server i đến server j 4.3 Giải thuật Trước tạo ma trận kết nối có ma trận bitrate thể bitrate server phát phải tạo ma trận kết nối tương ứng với ma trận bitratr e 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 Duyệt ma trận bitrate Nếu có yêu cầu(giá trị ma trận bitrate khác 0) vị trí i Random số j (khác i) làm server thu Gán giá trị ma trận kết nối vị trí [i][j] giá trị bitrate tương ứng 4.4 Thực def tao_mtketnoi(bit,l): 10 Báo cáo Project Optimizer n=10 #dài 20 d=5 #rộng 10 c.create_polygon(x-n,y-d,x+n,y-d,x+n,y+d,x-n,y+d,fill=m) *Bước :Tạo mảng vị trí đối tượng cần vẽ def taomangvt(x,s,giua):# Ham tao mang vi tri cua tung doi tuong tren hinh ve cay a=[] #x:số node tầng ,s:khoảng cách node i=0 #giua: vị trí trung tâm khung hình for i in range(x): a.append(0)#Tạo ma trận x phần tử if (x-2*(x/2)==1):#Nếu số chuyển mạch lẻ for i in range(x): a[i]=(giua+mu(-1,i)*(i/2+i-2*(i/2))*s) #Các chuyển mạch xếp theo cách: chuyển mạch nằm hình , chuyển mạch khác nằm bên hình đối xứng qua chuyển mạch thứ sx=sapxep(a)#Sau tạo, vị trí chuyển mạch lung tung nên phải xếp return a else:#Nếu số chuyển mạch chẵn 35 Báo cáo Project Optimizer a[0]=giua-s/2#Hai chuyển mạch nằm đối xứng qua điểm cách điểm s/2 để tổng lại chuyển mạch cách s a[1]=giua+s/2 for i in range(2,x,1): a[i]=giua+mu(-1,i+1)*((i+1)/2+(i+1)-2*((i+1)/2)-1)*s+mu(-1,i+1)*s/2 #Các chuyển mach khác nằm bên hình đối xứng qua điểm a=sapxep(a) return a *Bước 4: Vẽ def vecay(l,n,m,h,a,b,c,e,f,bit): # Ham ve cay #Đầu vào: #l: số server #n: số chuyển mạch top of rack #m: số chuyển mạch tích hợp #h: Số chuyển mạch lõi #e:Số server nối vào chuyển mạch top of rack #f: Số chuyển mạch top of rack nối vào chuyển mạch tích hợp #a: Ma trận thể kết nối tầng core-tích hợp #b: Ma trận thể kết nối tầng tích hợp-top of rack 36 Báo cáo Project Optimizer #c: Ma trận thể kết nối tầng top of rack – server #bit:Ma trận bitrate i=0 j=0 d=m/h #Tỷ lệ số chuyển mạch tích hợp chuyển mach lõi sh=60 #khoảng cách core sm=50 # khoảng cách agg sn=50 # khoảng cách top of rack sl=40 # khoảng cách server yh=30 #chiều cao theo trục y tầng core ym=180 #tầng agg yn=330 #tầng switch yl=480 #tầng server from Tkinter import * canvas = Canvas(width=800, height=800, bg='white') canvas.pack(expand=YES, fill=BOTH) mh=taomangvt(h,sh,x/2) #tạo mt vị trí h core khoảng cách core la sh mm=taomangvt(m,sm,x/2) #tạo mt vị trí m agg khoảng cách node sm mn=taomangvt(n,sn,x/2) # tạo ma trận vị trí top of rack 37 Báo cáo Project Optimizer ml=taomangvt(l,sl,x/2) # tạo ma trận vị trí server for i in range (h): taohcn(canvas,mh[i],yh) # Vẽ hình chữ nhật thể core for i in range(m): taohcn(canvas,mm[i],ym) # Vẽ hình chữ nhật thể cm tích hợp for i in range(n): taohcn(canvas,mn[i],yn) # Vẽ hình chữ nhật thể top of rack for i in range(l): if (bit[0][i]!=0): taohcn(canvas,ml[i],yl) # Nếu server phát thể server màu đen else: taohcncm(canvas,ml[i],yl,'blue') # Nếu server ko phát thể server màu xanh #tạo đường thẳng nối tầng có màu đỏ for i in range(h): for j in range(1,m+1,1): canvas.create_line(mm[a[i][j]-1],ym,mh[i],yh,fill='red') for i in range(m): for j in range(1,f+1,1): 38 Báo cáo Project Optimizer canvas.create_line(mn[b[i][j]-1],yn,mm[i],ym,fill='red') for i in range(n): for j in range(1,e+1,1): canvas.create_line(ml[c[i][j]-1],yl,mn[i],yn,fill='red') mainloop() *Bước 5: Kết Với hệ thống có chuyển mạch lõi, chuyển mạch tích hợp, chuyển mạch top of rack , server Tối đa server nối vào chuyển mạch top of rack Tối đa chuyển mạch top of rack nối vào chuyển mạch tích hợp Ta có sau: 10.4.2.Xây dựng tối ưu hóa -Tương tự xây dựng bình thường 39 Báo cáo Project Optimizer -Sau tối ưu hóa node không sử dụng ta để màu đỏ đường khơng sử dụng ta biểu diễn dạng đứt nét (bằng lệnh dash =(3,5)) canvas.create_line(mm[a[i][j]-1],ym,mh[i],yh,fill='black',dash=(3,5) ) -Hàm vẽ tối ưu hóa: def vecay2(l,n,m,h,a,b,c,e,f,bit,duong,dl): # Ham ve cay #Các đầu vào #Có thêm biến: #duong: ma trận đường yêu cầu đáp ứng #dl: dung lượng thời hệ thống i=0 j=0 x=1200 d=m/h d=m/h #sổ liên kết core va agg sh=60 #khoảng cách core sm=50 # khoảng cách agg sn=50 # khoảng cách switch sl=40 # khoảng cách server yh=30 #chiều cao theo trục y tầng core 40 Báo cáo Project Optimizer ym=180 #tầng agg yn=330 #tầng switch yl=480 #tầng server from Tkinter import * canvas = Canvas(width=x, height=600, bg='white') canvas.pack(expand=YES, fill=BOTH) mh=taomangvt(h,sh,x/2) mm=taomangvt(m,sm,x/2) mn=taomangvt(n,sn,x/2) ml=taomangvt(l,sl,x/2) for i in range (h): if (dl[0][i]==0): taohcncm(canvas,mh[i],yh,"red") #Các chuyển mạch ko sử dụng thể màu đỏ else: taohcn(canvas,mh[i],yh)#Nếu sử dụng thể màu đen for i in range(m): if(dl[1][i]==0): taohcncm(canvas,mm[i],ym,"red") 41 Báo cáo Project Optimizer else: taohcn(canvas,mm[i],ym) for i in range(n): if (dl[2][i]==0): taohcncm(canvas,mn[i],yn,"red") else: taohcn(canvas,mn[i],yn) for i in range(l): if (bit[0][i]!=0): taohcn(canvas,ml[i],yl) else: taohcncm(canvas,ml[i],yl,'blue') for i in range(h): for j in range(1,m+1,1): canvas.create_line(mm[a[i][j]-1],ym,mh[i],yh,fill='black',dash=(3,5) ) for i in range(m): for j in range(1,f+1,1): canvas.create_line(mn[b[i][j]-1],yn,mm[i],ym,fill='black',dash=(3,5) ) for i in range(n): 42 Báo cáo Project Optimizer for j in range(1,e+1,1): canvas.create_line(ml[c[i][j]-1],yl,mn[i],yn,fill='black',dash=(3,5) ) #Đến ta vẽ đầu vào đường màu đen nét đứt Tiếp theo ta vẽ đường yêu cầu đáp ứng nét đỏ đậm for i in range(len(duong)):#Duyệt tập hợp đường canvas.create_line(ml[duong[i][0]-1],yl,mn[duong[i][1]1],yn,fill='red',width=5) canvas.create_line(mn[duong[i][1]-1],yn,mm[duong[i][2]1],ym,fill='red',width=5) canvas.create_line(mm[duong[i][2]-1],ym,mh[duong[i][3]1],yh,fill='red',width=5) canvas.create_line(mh[duong[i][3]-1],yh,mm[duong[i][4]1],ym,fill='red',width=5) canvas.create_line(mm[duong[i][4]-1],ym,mn[duong[i][5]1],yn,fill='red',width=5) canvas.create_line(mn[duong[i][5]-1],yn,ml[duong[i][6]1],yl,fill='red',width=5) #Vẽ lại đường liên kết đáp ứng tạo thành mainloop() -Cây sau tối ưu hóa: 43 Báo cáo Project Optimizer Tiến hành vẽ lại với đường in đậm, chuyển mạch không dùng tô đỏ cho người dùng dễ hiểu Trên hình ta thấy: o Các chuyển mạch màu đen sử dụng o Các chuyển mạch màu đỏ tắt o Các đường nét đứt cũ trước chưa Optimizer o Các đường màu đỏ đậm sau Optimizer o Các server màu đen server phát yêu cầu o Các server màu xanh server không phát yêu cầu 44 Báo cáo Project Optimizer 11 Khối in kết quả: 11.1 Mục đích Hiển thị kết tính tốn 11.2 Thực print("**********************************************************\n") print("********************DAU VAO*****************************\n") print(" So chuyen mach loi (core) :%d"%h) print(" So chuyen mach tich hop :%d"%m) print(" So chuyen mach top of rack :%d"%n) print(" So server :%d"%l) chuyen=raw_input("Nhan ENTER de ve cay.Cay se duoc ve tren cua so moi\n Sau xem xong cay thoat cua so de tiep tuc chuong trinh") vecay(l,n,m,h,core,tichhop,topofrack,e,f,b) print("Co %d yeu cau duoc dap ung:\n"%len(yc)) for i in range(len(yc)):#in yêu cầu đáp ứng print("Yeu cau thu %d : \n luong Server nguon %d Server dich %d Dung %f"%(i+1,yc[i][0],yc[i][6],ketnoi[yc[i][0]-1][yc[i][6]-1])) 45 Báo cáo Project Optimizer print(" Duong di da chon:%d >%d >%d >%d >%d >%d >%d\n\n"% (yc[i][0],yc[i][1],yc[i][2],yc[i][3],yc[i][4],yc[i][5],yc[i][6])) print("Co %d yeu cau bi tu choi:\n"%len(tc)) if (len(tc)!=0):#in yêu cầu bị từ chối for i in range(len(tc)): print("Yeu cau thu %d : \n luong Server nguon %d Server dich %d Dung %f"%(i+1,tc[i][0],tc[i][1],tc[i][2])) print("Cong suat cua tung chuyen mach he thong") for i in range(h):#Dùng biến s1=>s3 tương ứng với tầng để in công suất chuyển mạch s1=s1+" %d|"%mtcs[0][i] for i in range(m): s2=s2+" %d|"%mtcs[1][i] for i in range(n): s3=s3+" %d|"%mtcs[2][i] print(s1) print (s2) print(s3) s1="" s2="" 46 Báo cáo Project Optimizer s3="" print("Dung luong hien thoi cua toan he thong:\n") for i in range(h): Dùng biến s1=>s3 tương ứng với tầng để in dung lượng thời hệ thống s1=s1+" %0.2f|"%mtdl[0][i] for i in range(m): s2=s2+" %0.2f|"%mtdl[1][i] for i in range(n): s3=s3+" %0.2f|"%mtdl[2][i] print(s1) print (s2) print(s3) for i in range(h): #Tiếp theo ta duyệt qua tầng , dùng biến t để lưu tổng công suất, biến s để lưu công suất tiết kiệm t=t+mtcs[0][i] if mtdl[0][i]==0: s=s+mtcs[0][i] for i in range(m): t=t+mtcs[1][i] 47 Báo cáo Project Optimizer if mtdl[1][i]==0: s=s+mtcs[1][i] for i in range(n): t=t+mtcs[2][i]#Tổng công suất tầng top o if mtdl[2][i]==0: s=s+mtcs[2][i] print("Ti le yeu cau bi tu choi %0.2f%%"%(len(tc)*100.0/len(yc))) print("Cong suat tiet kiem duoc %d W"%s) print("Ti le tiet kiem duoc cong suat:%0.2f%%"%(s*100.0/t)) chuyen=raw_input("Nhan ENTER de ve lai cay voi day du cac ket noi\n.Cay se duoc ve tren cua so moi\n Sau xem xong cay thoat cua so de tiep tuc chuong trinh") vecay2(l,n,m,h,core,tichhop,topofrack,e,f,b,yc,mtdl) 48 ... suất 18 0 18 5 W, chuyển mạch tích hợp với cơng suất 15 0 ,15 2 ,15 1 ,15 4 W, chuyển mạch top of rack với công suất 12 3, 12 5 ,12 2 ,12 7 ,12 4 ,12 8 W Ta có ma trận cơng suất: Báo cáo Project 18 0 15 0 12 3 18 5 15 2... biến k1,k5 k5=b[2][a[5] -1] +d 29 Báo cáo Project Optimizer if(a[2]==a[4]):#Tương tự k2=b [1] [a[2] -1] +2*d k4=k2 else: k2=b [1] [a[2] -1] +d k4=b [1] [a[4] -1] +d k3=b[0][a[3] -1] +d #Đến ta có biến k1=>k5... mtdl [1] [mtd[k][2] -1] =mtdl [1] [mtd[k][2] -1] +ketnoi[i][j] mtdl[0][mtd[k][3] -1] =mtdl[0][mtd[k][3] -1] +ketnoi[i][j] mtdl [1] [mtd[k][4] -1] =mtdl [1] [mtd[k][4] -1] +ketnoi[i][j] mtdl[2][mtd[k][5] -1] =mtdl[2][mtd[k][5] -1] +ketnoi[i][j] 31 Báo cáo

Ngày đăng: 13/04/2013, 07:31

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w