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

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

51 538 1
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

Tiêu đề Tiết Kiệm Năng Lượng Trong Mạng
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Thông Tin
Thể loại Báo Cáo
Thành phố Hồ Chí Minh
Định dạng
Số trang 51
Dung lượng 434 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tài liệu tham khảo công nghệ thông tin Tiết kiệm năng lượng trong mạng

Trang 1

Mục Lục

I.Tổng quan về chương trình 2

1 Mục đích của chương trình: 2

2 Giới thiệu chung về Optimizer và thuật toán sử dụng 2

3 Giới thiệu chung về chương trình 2

1.Khối nhập dữ liệu đầu vào 6

2 Khối tạo ma trận bit rate 7

3 Khối tạo ma trận công suất 9

4 Khối tạo ma trận kết nối 11

5 Khối tạo 3 ma trận thể hiện kết nối 13

6 Khối tìm đường cho kết nối 21

7 Khối sắp xếp đường đi 29

8.Khối kiểm tra đường đi 30

9 Khối cập nhật dung lượng hệ thống 33

10.Khối tạo cây 34

11 Khối in kết quả: 48

Trang 2

I.Tổng quan về chương trình

1 Mục đích của chương trình:

Hiện nay vấn đề tiết kiệm năng lượng đang được đặt ra như một vấn đề thiết yếu trong tất cả các lĩnh vực của cuộc sống Trong việc quản lí và sử dụng Data Center vấn đề này càng cần thiết hơn vì nhiều lúc(nhất là vào ban đêm, giờ thấp điểm) số lượng yêu cầu kết nối rất nhỏ trong khi tất cả các chuyển mạch vẫn hoạt động gây ra sự lãng phí không đáng có Chính vì thế chúng em thực hiện chương trình này mong muốn có thể tối ưu hóa hệ thống hết mức có thể mà vẫn đáp ứng được nhu cầu của người dùng, qua đó có thể tiết kiệm được công suất sử dụng.Để thực hiện quá trình này thì vấn đề Optimizer là vô cùng cần thiết

2 Giới thiệu chung về Optimizer và thuật toán sử dụng

Optimizer là quá trình tối ưu hóa sơ đồ hệ thống(Topology) từ dạng phức tạp về dạng đơn giản hơn.Để thực hiện được điều đó chúng ta sử dụng thuật toán

Greedybin-packing.Đối với thuật toán này chúng ta sẽ chọn đường cho các kết

nối theo đường trái nhất giúp cho sơ đồ hệ thống được giảm thiểu

3 Giới thiệu chung về chương trình

Chương trình bao gồm 11 khối chức năng chính được mô tả như hình vẽ phía dưới.Chương trình hoạt động theo các bước:

• Nhập dữ liệu

• Đọc các yêu cầu từ ma trận kết nối

• Giải quyết yêu cầu bằng đường đi bên trái nhất Nếu không giải quyết được yêu cầu(không tìm được đường đi hay các đường đi đã quá tải) thì thêm yêu cầu vào danh sách từ chối

Trang 3

• In kết quả ra màn hình

Trang 4

Nhập các tham số đầu vào(1)

Tạo 3 ma trận thể hiện kết nối(5)

Tạo ma trận kết nối(4)

Tạo ma trận

bitrate(2) công suất(3)Tạo ma trận

Duyệt ma trận kết nối

Kết nối [i[j]!=0

NO

Tìm đường cho kết nối [i][j](6)

YES

Tìm được đường?

NO

Sắp xếp đường đi(7)

Quá tải? NO dung lượng Cập nhật

YES NO

Duyệt hết ?

IN KẾT QUẢ(11)

NO YES

Ghi chú:

Những liên kết không thể hiện

trên hình vẽ :

1)Khối tạo ma trận bit rate (2) là

đầu vào cho khối tạo ma trận

công suất(3) và khối vẽ cây(10)

2)Khối tạo ma trận công suất (3)

phục vụ cho quá trình in kết

quả(11)

3) Khối tạo 3 ma trận kết nối (5)

phục vụ cho khối tìm đường (6)

Trang 5

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 xy

def mu(x,y):#Khai báo hàm

s=1#Khai báo s

Trang 6

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")

Trang 7

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

Trang 8

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

Trang 9

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

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

Trang 10

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:

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 randomHà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

Trang 12

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

Trang 13

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

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

Trang 14

• 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:

Trang 15

Ta thấy tâng i ( phía trên) có 3 chuyển mạch Tầng j ( phía dưới) có 6 chuyển mạch.Mỗi chuyển mạch ở tầng i có 4 chuyển mạch ở tầng j nối vào nó Chuyển mạch thứ 1,2,3, 4 của tầng j nối với chuyển mạch 1 của tầng i Chuyển mạch 1,2,3,4 của tầng j nối với chuyển mạch 2 của tầng i Chuyển mạch 3,4,5,6 của tầng

j nối với chuyển mạch 3 của tầng i.Từ đó ta có ma trận :

5.3 Giải thuật và thực hiện

5.3.1 Ma trận thể hiện kết nối giữa tầng chuyển mạch lõi-chuyển mạch tích hợp

Trang 17

• Tính d=n/m(n: số chuyển mạch top of rack, m: số chuyển mạch tích hợp)

• Ta thấy trên hình chuyển mạch tích hợp thứ 1,2 3 sẽ được gán với f(f=3) chuyển mạch ở tầng dưới bắt đầu từ chuyển mạch 1,3,5 Nếu đặt x

là số thứ tự chuyển mạch ở tầng trên ( tầng i) thì ta có vị trí đầu tiên được gán của một chuyển mạch ở tầng i là:(x-1)*d+1

• Chuyển mạch thứ 4(chuyển mạch cuối) sẽ được gán với f chuyển mạch bắt đầu từ vị trí cuối cùng đếm ngược lại

b Thực hiện

def tao_tichhop(n,m,f):

#Đầu vào:

Trang 18

#n: số chuyển mạch top of rack

if (a[i][j]>n):#Nếu số chuyển mạch được gán vượt quá n

a[i][j]=i*d+1-(i*d+j-n)#Sẽ gán theo chiểu ngược lại bắt đầu từ

i*d -> i*d-1 -> i*d-2

for i in range(1,f+1,1):#Chuyển mạch cuối cùng

a[m-1][i]=n-i+1#Gán ngược bắt đầu từ chuyển mạch cuối

return a

Trang 19

5.3.3Ma trận thể hiện kết nối giữa tầng chuyển mạch top of rack và các Server

• Tính d=l/n(l: số server, n: số chuyển mạch top of rack)

• Ta thấy trên hình chuyển mạch tích hợp thứ 1,2 sẽ được gán với e(e=4) chuyển mạch ở tầng dưới bắt đầu từ chuyển mạch 1,3 Nếu đặt x là số thứ

tự chuyển mạch ở tầng trên ( tầng i) thì ta có vị trí đầu tiên được gán của một chuyển mạch ở tầng i là:(x-1)*d+1

Trang 20

• Chuyển mạch thứ 4(chuyển mạch cuối) sẽ được gán với e chuyển mạch bắt đầu từ vị trí cuối cùng đếm ngược lại

b Thực hiện

def tao_topofrack(l,n,e):

#Đầu vào :

#l:số server

#n:số chuyển mạch top of rack

#e: số server nối với 1 top of rack

a[i][0]=i+1#Gán cột đầu tiên là số thứ tự của chuyển mạch top of rack

for i in range(n-1): #Với các chuyển mạch ở vị trí 1 n-1

for j in range(1,e+1,1): ):#Mỗi chuyển mạch được gán với e server

a[i][j]=i*d+j #Gán các server bắt đầu từ vị trí i*d+1 đến i*d+e cho chuyển mạch thứ i

Trang 21

if (a[i][j]>l): #Nếu số chuyển mạch được gán vượt quá n

a[i][j]=i*d+1-(i*d+j-l) )#Sẽ gán theo chiểu ngược lại bắt đầu từ

i*d -> i*d-1 -> i*d-2

for i in range(1,e+1,1):#Đối với chuyển mạch cuối

a[n-1][i]=l-i+1 #Gán ngược bắt đầu từ chuyển mạch cuối

6.2 Định dạng ma trận chứa đường đi

Giả sử ta có một Topology như hình vẽ

Hệ thống có 2 chuyển mạch lõi, 4 chuyển mạch tích hợp , 4 chuyển mạch top of rack, 8 server

Trang 22

Để thuận tiện trong quá trình tìm đường ta ngầm định đánh số các chuyển mạch theo thứ tự từ trái sang phải bắt đầu từ 1 Giả sử ta phải tìm đường đi từ server số 1 đến server số 3 ta có thể chọn đường đi như sau:

1 -> 1 -> 1 -> 1 -> 2 -> 2 -> 3

Từ đó ta thấy mỗi đường đi từ server a đến server b bất kì sẽ phải trải qua 7 chặng

Do đó để biểu diễn đường đi ta sẽ sử dụng một ma trận bao gồm 7 phần tử tương ứng với 7 chặng của đường đi

Để lưu tất cả các đường đi ta sẽ sử dụng một ma trận bao gồm x phần tử ( với x là

số đường đi có thể tìm được cho kết nối đã cho) Mỗi phần tử của ma trận này là một ma trận bao gồm 7 phần tử tương ứng với 7 chặng của đường đi

Trang 23

• Gán server phát vào ma trận đường đi

• Duyệt ma trận thể hiện kết nối tầng top of rack-server xem chuyển mạch top

of rack nào nối với server đường đi Khi tìm được gán chuyển mạch này vào

ma trận đường đi

• Duyệt các đường đi thu được sau bước 2 lấy ra các chuyển mạch top of rack trong các đường đi này Sau đó duyệt ma trận kết nối tầng tích hợp-top of rack tìm các chuyển mạch tích hợp có kết nối đến chuyển mạch top of rack

đã lấy ra ở trên Khi tìm thấy gán chuyển mạch vào ma trận đường đi

• Làm tương tự với các tầng tiếp theo ta sẽ thu được một ma trận đường bao gồm các đường đi từ server a đến server b nào đó

• Lọc ra trong ma trận trên những đường đi có điểm đích là server đã cho

Số thứ tự chuyển mạch ở tầng i

ii

Số thứ tự chuyển mạch ở tầng j nối với chuyển mạch ở tầng i tương ứng

Trang 24

#e: số server nối vào 1 chuyển mạch top of rack

#f: số chuyển mạch top of rack nối vào 1 chuyển mạch tích hợp

#a: Ma trận thể hiện kết nối tầng core-tích hợp

#b: Ma trận thể hiện kết nối tầng tích hợp-top of rack

#c: Ma trận thể hiện kết nối tầng top of rack –server

mtd=[]#Khởi tạo ma trận chứa đường

kq=[]#Khởi tạo ma trận kết quả trả về

i=0

j=0

k=0

Trang 25

t1=[]#Biến tạm thời chứa tập hợp các đường đi

t2=[]#Biến tạm thời lưu 1 đường đi cụ thể

for i in range(n):

for j in range(1,e+1,1):#Duyệt ma trận kết nối top of rack-server

if (c[i][j]==x):#Tìm ra những top of rack có nối đến server x

t2.append(x)#Thêm x vào t2

t2.append(c[i][0])#Thêm top of rack tìm được vào t2

t1.append(t2)#Thêm t2 vào tập hợp đường

t2=[]#Xóa t2 để phục vụ cho lần tìm tiếp theo

mtd=t1#Sau khi duyêth xong gán t1 cho ma trận đường

t1=[]#Xóa t1 để phục vụ cho việc duyệt tầng tiếp theo

for i in range( len(mtd)):#Duyệt ma trận đường

for j in range(m):

for k in range(1,f+1,1):#Duyệt ma trận kết nối tầng tích hợp-top of rack

if b[j][k]==mtd[i][1]:#Xét những top of rack có trong ma trận đường

#Tìm các chuyển mạch tích hợp nối vào top of rack đó

addlist(t2,mtd[i])#Sau khi tìm được ta sẽ copy đường đi đã có

t2.append(b[j][0]) #Thêm vào đó các chuyển mạch tích hợp mới tìm được

Trang 26

t1.append(t2) #Thêm t2 vào tập hợp đường t1

t2=[]#Xóa t2 để phục vụ cho lần tìm tiếp theo

mtd=[]#Xóa ma trận đường

addlist(mtd,t1)#Copy tất cả các phần tử của t1 vào ma trận đường

t1=[]#Xóa t1 để phục vụ cho việc xét tầng tiếp theo

Trang 27

for i in range( len(mtd)):

Trang 29

kq.append(mtd[i])#Thêm đường đi này vào kết quả trả về

7.2 Giải thuật

Để phân biệt các server chúng ta sẽ đánh số các chuyển mạch theo thứ tự từ trái sang phải bắt đầu từ 1 Do đó các server có số càng nhỏ càng nằm phía bên phải thì có trọng số càng nhỏ Ta thực hiện sắp xếp theo cách:

• Duyệt tất cả các đường đi tìm thấy một cách tuần tự

• Với mỗi đường đi , tính tổng trọng số của đường đi đó

• Sắp xếp các đường đi theo tổng trọng số

7.3 Thực hiện

Ta sử dụng một hàm phụ để tính tổng trọng số của đường đi a nào đó

def tong(a):

Trang 30

s=0#Khởi tạo tổng s

for i in range(1,len(a)-1,1):#Duyệt các chuyển mạch trên đường đi a

s=s+a[i]#Cộng trọng số của các chuyển mạch này vào s

for j in range (len(a)):#Duyệt tập hợp đường a

if (tong(a[j])>tong(a[i])):#Sắp xếp các đường đi bằng thuật toán sắp xếp thông thường

Ngày đăng: 23/11/2012, 11:33

HÌNH ẢNH LIÊN QUAN

• Ta thấy trên hình chuyển mạch tích hợp thứ 1,2 sẽ được gán với e(e=4) chuyển mạch ở tầng dưới bắt đầu từ chuyển mạch 1,3 .Nếu đặt x là số thứ  tự chuyển mạch ở tầng trên ( tầng i) thì ta có vị trí đầu tiên được gán của  một chuyển mạch ở tầng i là:(x-1) - Tiết kiệm năng lượng trong mạng
a thấy trên hình chuyển mạch tích hợp thứ 1,2 sẽ được gán với e(e=4) chuyển mạch ở tầng dưới bắt đầu từ chuyển mạch 1,3 .Nếu đặt x là số thứ tự chuyển mạch ở tầng trên ( tầng i) thì ta có vị trí đầu tiên được gán của một chuyển mạch ở tầng i là:(x-1) (Trang 19)
*Bước 2:Tạo hình chữ nhật cho node - Tiết kiệm năng lượng trong mạng
c 2:Tạo hình chữ nhật cho node (Trang 36)
Trên hình ta thấy: - Tiết kiệm năng lượng trong mạng
r ên hình ta thấy: (Trang 47)

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