Thuật toán chia công việc

Một phần của tài liệu bảng câu vấn tin trên các quan hệ và xử lý câu vấn tin trên bảng (Trang 62 - 63)

Thuật toán phân chia công việc là thuật toán đơn giản nhưng hay được sử dụng trong các bài toán phân phối công việc cho hệ thống xử lý. Thuật toán đạt hiệu quả cao trong trường hợp có yêu cầu về cân bằng tải.

Giả sử có p bộ xử lý, n công việc xl. ..., xn có thời gian thực hiện lần lượt là t1, ..., tn . Mỗi công việc có thể thực hiện trên một bộ xử lý bấl kỳ nhưng phải thực hiện trọn vẹn. Hãy tìm cách phân chia n công việc cho p bộ xử lý sao cho thời gian hoàn thành là nhanh nhất.

Thuật toán dựa vào nguyên tắc sau: "Giao công việc có thời gian thực hiện lớn nhất trong các công việc chưa được phân công cho bộ xử lý hiện thời có tải ít nhất." Trong đó, tải của bộ xử lý thứ k được xác định bởi:

      Fk j ij Fk i i k t c L ( )

Bằng cách này, chúng ta có thể xem mỗi công việc xi với thời gian thực hiện tilà một đỉnh trong cây toán tử với trọng số tương ứng. Nội dung thuật toán Dividing (xem [6])

Thuật toán Dividing-BalancedCuts

Ip toán tử không giảm, số bộ xử lý là p. Thuật toán được thể hiện như sau:

BestSchedule:= ∞ , For i = p To n

(F1,...,Fi) = BalancedCut_Tai(Ip, i) Schedule := Dividing((F1,..,Fi), p) If BestSchedule > Tai(Schedule) Then BestSchedule := Tai(Schedule)

result = Schedute End If

End For Save result

Thuật toán Dividing_BalancedCuts có độ phức tạp đa thức. Thuật toán được áp dụng khá tốt không những cho những Ip truy vấn thông thường với yêu cầu về cân bằng tải.

Một phần của tài liệu bảng câu vấn tin trên các quan hệ và xử lý câu vấn tin trên bảng (Trang 62 - 63)

Tải bản đầy đủ (PDF)

(73 trang)