Chương 1 KIẾN THỨC NỀN TẢNG
2.3. Cải tiến thuật toán cân bằng tải theo ngưỡng
2.3.1. Một số khái niệm
Xét hệ thống gồm n nút vật lý (các máy tính hoặc các thành phần trong một hệ thống mạng ngang hàng có cấu trúc). Nút ni có khả năng cố định là Ci, tương ứng với số lượng tối đa các câu truy vấn mà nút đó có thể xử lý trong
Tải xử lý truy vấn: tại một thời điểm cụ thể, tải xử lý truy vấn Wi, của
nút ni là số câu truy vấn mà nút ni phải xử lý trong một đơn vị thời gian.
Hệ số sử dụng của một nút ui là tỷ lệ giữa tải làm việc trên khả năng của
nó: ui = Wi / Ci.
Hệ số sử dụng của hệ thống bằng tỷ lệ của tổng tải làm việc của các
nút trên tổng khả năng của các nút:
𝜇 = ∑𝑁−1𝑖=0 𝑊𝑖
∑𝑁−1𝑖=0 𝐶𝑖
với N là tổng số nút trong hệ thống, Wi, Ci lần lượt là tải làm việc và khả năng của nút ni.
Mỗi nút có một giá trị ngưỡng tải trên Ui, một ngưỡng tải dưới Li và
khoảng giá trị U sao cho Ui = Ci - U.
Nút nặng tải: nếu một nút ni nhận được nhiều câu truy vấn hơn Ui thì nó
được coi là nặng tải.
Nút nhẹ tải: nếu một nút ni nhận được số câu truy vấn ít hơn Li thì nó được coi
là nhẹ tải.
Nút quá tải: nút ni được gọi là quá tải khi Wi > Ci. Một nút quá tải sẽ
khơng có khả năng xử lý thêm các câu truy vấn.
Định tuyến: Các thơng điệp được định tuyến đến đích theo cơ chế định
tuyến của mạng Chord. Định danh đến của một thông điệp là một số nguyên trong khơng gian định danh D của mạng phủ, ví dụ D = 2160. Các thông điệp di chuyển qua các nút trong mạng phủ từ nút nguồn đến nút đích.
Hình 2.2. Khả năng và tải làm việc của một nút
Mỗi nút có một định danh duy nhất được chọn từ không gian định danh
D. Điểm đến của một thơng điệp là nút quản lý khóa. Nút đứng trước và đứng
sau một nút theo chiều kim đồng hồ gọi là nút successor và predecessor của nút đó. Khoảng cách trong khơng gian định danh giữa hai nút n1 và n2 là dist(n1,n2)
Thư mục: Trong hệ thống có một số nút đặc biệt gọi là thư mục
(directory). Nút thư mục là một nút trong mạng được bổ sung thêm cơ chế quản lý thông tin về các nút nhẹ tải có thể di chuyển được. Nút thư mục không cố định, khi một nút thư mục rời mạng, thông tin nó quản lý sẽ được chuyển cho nút successor và nút successor sẽ trở thành nút thư mục mới.
Nút nhẹ tải có thể di chuyển được: Một nút nhẹ tải n được gọi là di
chuyển được nếu định danh của n dịch chuyển sang một vị trí khác nằm ngồi khoảng không gian định danh từ n đến successor của n mà không làm successor của nút n quá tải.
2.3.2. Thuật tốn ThresholdPlus
cân bằng tải và đặt tên là ThresholdPlus. Thuật tốn có ba sửa đổi so với thuật toán ban đầu:
(a) Dùng hệ số sử dụng của một nút thay cho khối lượng công việc vì thuật tốn ban đầu giả định các nút có khả năng giống nhau.
(b) Các nút bắt đầu tái cân bằng khi tăng mức hệ số sử dụng.
(c) Sử dụng thư mục để quản lý các nút nhẹ tải có thể di chuyển được. Thuật tốn Threshold ban đầu sử dụng tải xử lý truy vấn để thực hiện cân bằng tải và coi các nút có khả năng xử lý truy vấn giống nhau. Tuy nhiên, với mạng ngang hàng thông thường các nút có khả năng xử lý truy vấn khác nhau, hai nút có cùng tải xử lý truy vấn nhưng có khả năng xử lý truy vấn khác nhau thì nút có khả năng xử lý truy vấn thấp hơn sẽ có khả năng bị quá tải lớn hơn. Do đó, trong thuật tốn đề xuất chúng tơi dùng hệ số sử dụng thay cho tải xử lý truy vấn để thực hiện cân bằng tải. Đồng thời, việc sử dụng thư mục để quản lý các nút nhẹ tải có thể di chuyển được giúp cho chi phí tìm kiếm nút nhẹ tải sẽ thấp hơn, thời gian tìm kiếm nhanh hơn và quản lý các nút nhẹ tải được tập trung hơn.
Khi tìm kiếm một nút nhẹ tải, nút nặng tải chỉ cần hỏi thư mục quản lý nút nhẹ tải chứ không phải phát câu truy vấn để tìm kiếm một nút nhẹ tải trong số các nút đang tồn tại trong mạng. Thư mục sẽ trả lại thông tin về nút nhẹ tải cho nút nặng tải để thực hiện việc cân bằng tải.
Khi các nút trong hệ thống có sử thay đổi (các nút vào, ra hệ thống, định danh của các nút thay đổi), thuật toán Threshold dựa theo cơ chế của thuật toán Chord để cập nhật lại bảng tìm đường cho các nút.
Thuật tốn đề xuất được mơ tả chi tiết, gồm hai bước dưới đây:
Hệ thống gồm một số nút được chọn ngẫu nhiên làm thư mục để lưu trữ thông tin về các nút nhẹ tải có thể dịch chuyển được. Cách thức lựa chọn các nút làm thư mục như sau. Giả sử hệ thống có d thư mục được đánh số từ 0..(d-
1), d là một số rất nhỏ so với tổng số nút vật lý trong hệ thống. Thư mục i sẽ
được lưu ở nút chịu trách nhiệm quản lý định danh h'(i), trong đó h' là một
hàm băm ánh xạ mỗi giá trị i trong khoảng [0, d-1] vào một định danh trên
vòng Chord một cách ngẫu nhiên.
Định kỳ trong khoảng thời gian, các nút sẽ kiểm tra tải của mình. Nếu một nút n là nhẹ tải, nó sẽ gửi một thông điệp cho successor của nó để hỏi
xem nó có thể di chuyển sang định danh khác được khơng. Nếu nút n có thể di chuyển được, nó sẽ gửi thơng báo chứa thơng tin của nó cho nút phụ trách thư mục i, trong đó i = h(idn), h là hàm băm ánh xạ định danh idn của nút n
sang một giá trị trong khoảng [0,d). Hay nói cách khác, nút n sẽ gửi thơng báo chứa thơng tin về tải của nó đến nút quản lý định danh h'(h(idn)). Hình vẽ 2.5 minh họa hệ thống gồm hai thư mục.
Hình 2.3. Các nút nhẹ tải thơng báo thơng tin cho thư mục
Trong hình 2.5 các nút nhẹ tải n1 và n3 hỏi successor của nó (các đường mũi tên nét liên) và thơng báo tình trạng tải cho thư mục d1 và thư mục d2 (các
Bước 2: Cân bằng tải
a. Chia sẻ tải cho các nút láng giềng
Khi hệ số sử dụng nút n trong hệ thống bị thay đổi, nó sẽ thực hiện quá
trình cân bằng tải như sau. Trước hết nó hỏi hai nút láng giềng (predecessor của n và successor của n) xem có thể nhận tải hộ được khơng. Nếu được nó sẽ chia tải cho một trong hai nút trong láng giềng của n có tải thấp hơn.
Quá trình chia sẻ tải được thực hiện như sau:
- Chia sẻ tải cho nút predecessor: để chia sẻ tải cho nút predecessor, nút
n gửi thông tin yêu cầu nút predecessor dịch chuyển định danh của nó về phía
nút n. Khi đó khoảng khơng gian khóa do nút n quản lý sẽ bị giảm đi, làm cho nút n giảm tải truy vấn từ các nút và khoảng khơng gian khóa do nút predecessor của n quản lý sẽ tăng lên làm cho tải cho nút predecessor của n
tăng lên. Trong hình 2.6, nút n1 là nút nặng tải, nút n5 là nút predecessor của
n1. Nút n5 là nút nhẹ tải có thể nhận tải hộ được nút n1, khi đó nút n5 sẽ dịch
chuyển định danh của nó đến gần nút n1 hơn để giảm tải cho nút n1
Hình 2.4. Nút n1 thực hiện cân bằng tải, nút láng giềng n5 nhận tải hộ nút
Hình 2.5. Nút n1 thực hiện cân bằng tải, nút n1 chia tải cho nút láng giềng
n2 bằng cách dịch chuyển định danh của n1 về phía n5.
- Chia sẻ tải cho nút successor: để chia sẻ tải cho nút successor, nút n
dịch chuyển định danh của nó về phía nút predecessor. Khi đó khoảng khơng gian khóa do nút n quản lý sẽ bị giảm đi, do đó tải truy vấn của nút n được
giảm. Đồng thời khoảng khơng gian khóa do nút successor của n quản lý sẽ
tăng lên làm cho tải cho nút successor của n tăng lên. Trong hình 2.7, nút n1 là nút nặng tải, nút n2 là nút successor của n1. Nút n2 là nút nhẹ tải có thể nhận
tải hộ được nút n1, khi đó nút n1 sẽ dịch chuyển định danh của nó đến gần nút
n5 (nút predecessor của n1) hơn để giảm tải cho nút n1
b. Định danh lại một nút
Trong trường hợp không thể chia sẻ tải cho hai nút láng giềng n2, n5, nút
n1 sẽ chọn ngẫu nhiên một số k trong khoảng [0, d] và gửi một thông điệp tới
nút phụ trách định danh i = h'(k) (thư mục i) để tìm kiếm một nút nhẹ tải. Thư mục i sẽ căn cứ vào yêu cầu giảm tải (chia tải) của nút nặng tải và khả năng xử lý truy vấn của các nút nhẹ tải có trong thư mục để chọn ra một nút nhẹ tải thích hợp nhất gửi cho nút n1. Nút nhẹ tải này đảm bảo hai điều kiện: a) nhận được tải cho nút nặng tải mà không bị quá tải và b) khả năng của nút nhẹ tải là
Hình 2.6. Di chuyển định danh để thực hiện cân bằng tải
Dựa trên thông tin trả lời từ thư mục i, nút n1 sẽ yêu cầu nút nhẹ tải mà nó biết dịch chuyển định danh về vị trí giữa predecessor(n1) và n1 (nút n5 và
n1 tương ứng trong hình vẽ 2.8) để nhận tải hộ nút n1. Nếu khơng tìm được
nút nhẹ tải nào thỏa mãn, nút n1 sẽ hỏi các thư mục cịn lại. Hình vẽ 2.8 mơ tả quá trình này.
Trong hình 2.8 nút n1 hỏi thư mục d1 để tìm một nút nhẹ tải có thể dịch
chuyển được (đường mũi tên nét liền). Nút n3 là nút nhẹ tải có thể di chuyển được do thư mục d1 cung cấp. Định danh của nút nhẹ tải n3 được chuyển đến giữa predecessor(n1) và n1 để nhận tải hộ nút n1 (đường mũi tên nét đứt).
Thuật tốn ThresholdPlus đặt mục tiêu duy trì hệ số sử dụng của một nút trong một tỷ lệ ρ, trái ngược với các giá trị giữa giá trị nhẹ tải và quá tải như các thuật toán khác. Thuật tốn ThresholdPlus mơ tả trong đoạn giả mã trong hình 2.9 được thực hiện bởi một nút n tại thời điểm t.
Hình 2.7 Giả mã của thuật toán ThresholdPlus
Các nút thiết lập mức hệ số sử dụng hiện tại và thỏa mãn điều kiện hệ số sử dụng tăng thêm một nếu công việc tăng theo hệ số ρ, trong đó c là một
hằng số nhỏ (dòng 1).
Khi mức hệ số sử dụng của một nút tăng lên, nút n bắt đầu thực hiện cân bằng tải (dòng 2). Đầu tiên nút n tạo ra một sự điều chỉnh với các nút láng
giềng (dòng 4-9) bằng cách điều chỉnh định danh của nó hoặc định danh của nút predecessor nếu có thể điều chuyển một số truy vấn cho các nút đó. Nếu nút predecessor nhẹ tải so với n, định danh của nó được dịch chuyển đến n
(dịng 8). Nút n cũng có thể dịch chuyển định danh của nó đến gần hơn với nút predecessor để chuyển tải từ n sang nút successor của nó (dịng 9). Nếu
sẽ tìm một nút nhẹ tải trong thư mục và thay đổi vị trí nút tải nhẹ để trở thành nút predecessor mới của nó (dịng 11- 12). Nút nhẹ tải được chọn lý thưởng
nhất là có thể nhận được một nửa tải của nút n.
Tham số ρ là một tham số quan trọng. Nếu ρ quá lớn, quá trình cân bằng tải sẽ xảy ra chậm. Nếu nó quá nhỏ, các nút sẽ thực hiện nhiều điều chỉnh không cần thiết. Tham số ρ được thiết lập sao cho sự điều chỉnh diễn ra chậm nhưng vẫn tạo ra sự cân bằng tải nếu một nút trở thành quá tải thậm chí là ngay cả khi hệ số sử dụng không thay đổi. Tham số ρ được thiết lập trong cài đặt của thuật toán. Do thuật toán ThresholdPlus ln chọn nút được sử dụng ít nhất để di chuyển, các nút có khả năng xử lý rất cao (và do đó hệ số sử dụng thấp) có thể có xu hướng được di dời thường xuyên.
Thuật toán ThresholdPlus có hai điểm khác biệt so với các thuật toán
trước đó. Thứ nhất, thuật tốn sử dụng thư mục để chứa các nút nhẹ tải có thể di chuyển được. Thư mục đảm bảo chắc chắn rằng khi trong hệ thống cịn có một nút nhẹ tải có thể di chuyển được thì nút thực hiện cân bằng tải ln ln tìm được nút nhẹ tải đó một cách nhanh chóng. Trong thuật tốn Threshold
ban đầu, để tìm một nút nhẹ tải nút nặng tải phải mất chi phí là O(M) với M là số nút lựa chọn để thử, trong khi đó với thuật tốn ThresholdPlus chi phí này là O(1). Thứ hai, thư mục trong thuật toán ThresholdPlus chỉ chứa các nút
nhẹ tải có thể di chuyển được do đó số lượng nút nhẹ tải trong thư mục ít hơn nhiều so với số server ảo nhẹ tải trong các thuật toán cân bằng tải dịch chuyển
server ảo có sự dụng khái niệm thư mục. Cải tiến này làm giảm đáng kể việc
2.4. Đánh giá thuật toán
2.4.1. Phương pháp đánh giá
Chúng tơi sử dụng chương trình mô phỏng để đánh giá hiệu quả của thuật toán ThresholdPlus và so sánh với thuật toán cân bằng tải theo ngưỡng do Ganesan đề xuất do thuật toán ThresholdPlus được cải tiến từ thuật tốn
Threshold và có cùng cách tiếp cận với Threshold.
Chương trình mơ phỏng được phát triển từ chương trình mơ phỏng của Jonathan Ledlie [44] và hoạt động theo các bước thời gian rời rạc. Mỗi bước hoạt động gồm ba kịch bản: nút tham gia và rời hệ thống, cập nhật bảng tìm đường, truy vấn dữ liệu và thực hiện cân bằng tải. Bằng cách sử dụng mơ phỏng chúng tơi có thể theo dõi hiệu năng của hệ thống trong nhiều kịch bản khác nhau. Trong các thí nghiệm mơ phỏng chúng tôi lựa chọn 10 thư mục và lưu trữ ở 10 nút ngẫu nhiên trong mạng gồm 4096 nút vật lý. Số nút được chọn để thử trong thuật toán Threshold là Log2(N), với N=4096.
Nút vào và ra: Tại mỗi bước các nút ra/vào hệ thống theo phân bố xác
suất Pareto [36]. Chúng tôi tạo ra một số phân bố xác suất để mô phỏng thời điểm ra/vào của các nút với thời gian sống trung bình của các nút trong mạng là 15 phút, 30 phút, 1 giờ, 2 giờ và 3 giờ. Mô phỏng thực hiện trong thời gian là 3 giờ. Chúng tôi ghi lại các thống kê trong nửa cuối của thời gian mô phỏng để tránh các kết quả mô phỏng không ổn định. Khả năng xử lý truy vấn của một nút là một số được sinh ngẫu nhiên có giá trị từ 1 đến 399,999. Khả năng xử lý truy vấn trung bình của một nút là khoảng 8000 truy vấn.
Cập nhật bảng tìm đường: Mỗi nút mới tham gia vào hệ thống khởi tạo
một bảng tìm đường rỗng. Các nút dựa theo cơ chế Chord để điền thông tin vào log(N) hàng của bảng tìm đường [21].
Truy vấn dữ liệu: Các nút khởi tạo các câu truy vấn một cách ngẫu
nhiên từ một tập khóa truy vấn. Khóa truy vấn được sinh ra theo theo phân bố Uniform hoặc phân bố Zipf phụ thuộc vào từng thí nghiệm cụ thể. Tập các khóa truy vấn được sinh theo phân bố xác suất Zipf có mức độ phổ biến khác nhau dựa trên một tham số gọi là thứ hạng. Xác suất để một khóa xuất hiện trong tập khóa truy vấn là 1
𝑟 với r là thứ hạng của khóa và là một số ngẫu
nhiên giữa 1 và tổng số khóa truy vấn, là một hằng số phản ảnh mức độ phổ biến của một khóa trong tập khóa, càng lớn thì mức độ phổ biến của một
khóa càng lớn và ngược lại.
Mỗi nút sử dụng một finger (một hàng) thích hợp trong bảng tìm đường