Phân tích các sơ đồ cân bằng tải để giảm thiểu thời gian thực hiện tổng thể


7

Giả sử rằng một ứng dụng song song nhất định sử dụng thiết kế chủ-nô để xử lý một khối lượng công việc lớn. Mỗi khối lượng công việc cần một số chu kỳ để hoàn thành; số lượng chu kỳ mà bất kỳ khối lượng công việc nhất định sẽ thực hiện được đưa ra bởi một biến ngẫu nhiên . Giả sử rằng có khối lượng công việc như vậy và nô lệ tương đương (các nút xử lý). Đương nhiên, một phiên bản chung hơn của câu hỏi này đề cập đến trường hợp nô lệ có khả năng khác nhau, nhưng hiện tại chúng tôi bỏ qua điều này.Xnm

Master không thể xử lý khối lượng công việc, nhưng có thể phân phối khối lượng công việc cho các nút tớ và theo dõi tiến trình của các nút tớ. Cụ thể, chủ có thể thực hiện các hành động sau:

  1. Ngay lập tức bắt đầu xử lý bất kỳ khối lượng công việc trên bất kỳ nút miễn phí nào.k
  2. Ngay lập tức nhận được xác nhận hoàn thành bởi một nút của một khối lượng công việc khởi tạo trước đó .k
  3. Tại bất kỳ thời điểm nào và ngay lập tức, hãy xác định trạng thái của tất cả các nút (miễn phí hoặc bận) cũng như số lượng khối lượng công việc đã hoàn thành và số lượng công việc còn lại.

Để đơn giản, giả sử chia .kn

Có ít nhất hai loại chiến lược cân bằng tải để giảm thiểu tổng thời gian thực hiện của tất cả các khối lượng công việc bằng cách sử dụng tất cả các nô lệ (để làm rõ, tôi đang nói về thời gian bù giờ hoặc đồng hồ treo tường, không phải là thời gian xử lý tổng hợp, độc lập với chiến lược cân bằng tải đang được sử dụng theo các giả định đơn giản hóa được đưa ra trong câu hỏi này): tĩnh và động. Trong sơ đồ tĩnh, tất cả các quyết định vị trí được thực hiện tại thời điểm . Trong sơ đồ động, chủ có thể đưa ra quyết định vị trí bằng cách sử dụng thông tin về tiến trình được tạo ra bởi một số nô lệ, và do đó, có thể đạt được mức sử dụng tốt hơn (trong thực tế, có các chi phí liên quan đến lập lịch động so với lập lịch tĩnh, nhưng chúng tôi bỏ qua những điều này) Bây giờ cho một số câu hỏi:t= =0

  1. Có cách nào tốt hơn để tĩnh khối lượng công việc kế hoạch hơn là lô chia của khối lượng công việc giữa các nô lệ đồng đều càng tốt (chúng tôi cũng có thể giả định, để đơn giản, đó chia , vì vậy lô có thể được tĩnh lên kế hoạch hoàn toàn đồng đều) ? Nếu vậy thì thế nào?kmmn/k
  2. Sử dụng chính sách lập lịch tĩnh tốt nhất, độ lệch trung bình và độ lệch chuẩn phải là bao nhiêu cho tổng thời gian thực hiện, xét về giá trị trung bình và độ lệch chuẩn của ?μσX

Một bộ cân bằng tải động đơn giản có thể lên lịch cho các khối lượng công việc cho từng nô lệ ban đầu, và sau đó, khi các nút hoàn thành các lô ban đầu , lên lịch một lô khối lượng công việc bổ sung cho mỗi nô lệ trên cơ sở đến trước được phục vụ trước. Vì vậy, nếu hai nút nô lệ ban đầu được lên lịch 2 lô gồm 2 khối lượng công việc và mỗi nút phụ đầu tiên hoàn thành hai lô của nó, một lô bổ sung được lên lịch cho nô lệ thứ nhất, trong khi nô lệ thứ hai tiếp tục hoạt động. Nếu nô lệ đầu tiên kết thúc đợt mới trước khi đợt thứ hai kết thúc công việc ban đầu, chủ sẽ tiếp tục lên lịch cho nô lệ đầu tiên. Chỉ khi nô lệ thứ hai hoàn thành thực thi công việc của mình, nó mới được cấp một khối lượng công việc mới. Thí dụ:TôikTôik

         DYNAMIC           STATIC
         POLICY            POLICY

     slave1  slave2    slave1  slave2
     ------  ------    ------  ------

t<0    --      --        --      --

t<1  batch1  batch3    batch1  batch3
     batch2  batch4    batch2  batch4
                       batch5  batch7
                       batch6  batch8

t=1    --    batch3    batch5  batch3
             batch4    batch6  batch4
                               batch7
                               batch8

t<2  batch5  batch3    batch5  batch3
             batch4    batch6  batch4
                               batch7
                               batch8

t=2    --    batch4    batch6  batch4
                               batch7
                               batch8

t<3  batch6  batch4    batch6  batch4
                               batch7
                               batch8

t=3    --      --        --    batch7
                               batch8

t<4  batch7  batch8      --    batch7
                               batch8

t=4    --      --        --    batch8

t<5      -DONE-          --    batch8

t=5                      --      --

t < 6                      -DONE-

Để làm rõ, các lô 1 và 2 mất 1/2 giây để được xử lý, lô 3 mất 2 giây để được xử lý và các lô 4-8 mất 1 giây mỗi lần được xử lý. Thông tin này không được biết đến a-prori; trong sơ đồ tĩnh, tất cả các công việc được phân phối tại t = 0, trong khi trong sơ đồ động, phân phối có thể tính đến thời gian thực tế của các công việc "hóa ra" là gì. Chúng tôi nhận thấy rằng sơ đồ tĩnh mất nhiều hơn một giây so với sơ đồ động, với Slave1 hoạt động 3 giây và Slave2 hoạt động 5 giây. Trong sơ đồ động, cả hai nô lệ làm việc trong 4 giây đầy đủ.

Bây giờ cho câu hỏi thúc đẩy viết này:

  1. Sử dụng chính sách cân bằng tải động được mô tả ở trên, độ lệch trung bình và độ lệch chuẩn sẽ là bao nhiêu đối với tổng thời gian thực hiện, theo giá trị trung bình và độ lệch chuẩn của ?μσX

Độc giả quan tâm có sự đảm bảo của tôi rằng đây không phải là bài tập về nhà, mặc dù có lẽ nó không khó hơn nhiều so với những gì người ta có thể mong đợi để làm bài tập về nhà trong các khóa học nhất định. Cho rằng, nếu bất cứ ai phản đối điều này được yêu cầu và yêu cầu tôi thể hiện một số công việc, tôi sẽ vui lòng bắt buộc (mặc dù tôi không biết khi nào tôi sẽ có thời gian trong tương lai gần). Câu hỏi này thực sự dựa trên một số công việc mà tôi chưa bao giờ thực hiện được trong một hoặc hai học kỳ trước, và kết quả thực nghiệm là nơi chúng tôi rời bỏ nó. Cảm ơn sự giúp đỡ và / hoặc nỗ lực, tôi sẽ quan tâm để xem những gì các bạn kết hợp với nhau.


1
Vai trò của gì? Nếu bạn chỉ có thể lên lịch chính xác cho khối lượng công việc (và không ít hơn), thì nó có tương đương với khối lượng công việc đơn lẻ mất lần như vậy không? Có phải tất cả các khối lượng công việc đến t = 0? kkk
Alex ten Brink

Nó sẽ không thể tự nhiên hơn để giả định thời gian thực hiện là với một ví dụ ( "khối lượng công việc"), một chức năng được biết đến và tốc độ máy tính hiện hành không? Nếu vậy, bạn có thể sử dụng tốc độ máy để thông báo quyết định của mình và tìm hiểu tốc độ nếu bạn không biết chúng (hoặc chúng thay đổi). Thời gian thực hiện ngẫu nhiên không cung cấp cho bạn bất kỳ thông tin nào về cách phân phối công việc của bạn. f(Tôi)/STôifS
Raphael

@AlextenBrink Có, tất cả các khối lượng công việc đến tại thời điểm t = 0. Theo một nghĩa nào đó, bạn có thể giả sử rằng k = 1 trong câu hỏi này ... nhưng X là cho một khối lượng công việc duy nhất, không phải cho một khối lượng công việc k và trong bất kỳ sự kiện nào, k có thể là điều tôi muốn điều chỉnh trong thực tế (để vượt qua các chi phí trễ về giao tiếp, có lẽ). Nếu bạn có thể giải quyết phần còn lại cho k = 1, việc chuyển sang k khác sẽ đơn giản (chỉ cần tìm ra phân phối Y = X + X + ... + X (k lần)).
Patrick87

@Raphael Tôi đồng ý rằng kích thước khối lượng công việc ngẫu nhiên không cung cấp bất kỳ thông tin hữu ích nào về cách phân phối công việc ... mặc dù đó là mục đích của vấn đề. Một số đơn giản hóa đang được thực hiện ở đây, nhưng điều tôi quan tâm chủ yếu là phân tích các phương pháp đơn giản này (tĩnh và động) với các giả định đơn giản hóa này, trước khi (có thể) mở rộng phạm vi câu hỏi (ví dụ: bằng cách nói rằng chúng tôi có thêm thông tin về khối lượng công việc cụ thể sẽ yêu cầu, và bằng cách loại bỏ giả định các nút thực hiện thống nhất - hoặc liên tục -).
Patrick87

@Raphael Trên thực tế, động lực cho câu hỏi này chính xác là thế này: nếu bạn không biết gì về khối lượng công việc cụ thể sẽ diễn ra trong bao lâu, bạn có thể làm tốt hơn nhiều so với các phương pháp tĩnh và động được mô tả ở trên không? Trong mọi trường hợp, phương thức động tốt hơn bao nhiêu so với phương thức tĩnh (nó không thể tệ hơn và tôi cung cấp một ví dụ trong đó động thực sự tốt hơn).
Patrick87

Câu trả lời:


5

Cập nhật:

Đối với phiên bản mới nơi bạn cố gắng giảm thiểu makepan, lịch biểu tĩnh của bạn vẫn có giá trị mong đợi tối ưu.

Để cho Mlà biến ngẫu nhiên cho makepan. Để choFTôi là nô lệ thời gian Tôiđã hoàn thành. Chúng tôi sau đó cóM= =tối đaTôi(XTôi). Đặt là số lượng công việc được phân bổ cho nô lệ . Sau đó, chúng tôi có mà .cTôiTôiXTôi= =ΣTôi= =1cTôiX= =cTôiX

Nếu là hàm phân phối xác suất tích lũy cho , thì là hàm phân phối xác suất tích lũy cho . Điều này có nghĩa là và , như bình thường.FTôi(x)XP(M<m) = =P(tối đaTôi(XTôi)<m) = =ΠTôiP(XTôi<m) = =ΠTôiP(cTôiX<m) = =ΠTôiP(X<mcTôi) = =ΠTôiF(mcTôi)MEM= =-x(ΠTôiF(xcTôi))'dxStddev(M)= =-(x-EM)2(ΠTôiF(xcTôi))'dx

Giảm thiểu số lượng để giảm thiểu , có nghĩa là chúng tôi muốn giữ tất cả các thấp như nhau (vì đang tăng đơn điệu và trong khoảng từ 0 đến 1). Điều này có nghĩa là chúng ta nên phân phối đồng đều tất cả các nhiệm vụ giữa các nô lệ, đó chính xác là những gì lịch trình tĩnh của bạn đạt được.EMΠTôiF(xcTôi)cTôiF


Tôi nghĩ rằng tôi có thể không rõ ràng trong những gì tôi muốn. Khi tôi nói "tổng thời gian", tôi có nghĩa là "thời gian đồng hồ treo tường", không phải "thời gian xử lý". Tất nhiên việc lập lịch trình sẽ không có gì khác biệt nếu tôi chỉ quan tâm đến việc thêm thời gian chạy của tất cả các chương trình cùng nhau. Điều tôi muốn giảm thiểu là tổng thời gian cần thiết cho tất cả nô lệ để hoàn thành tất cả công việc. Trong ví dụ tôi cung cấp, thời gian tôi quan tâm là 4s; thời gian bạn nói đến là 8 giây, tôi tin, vì đó là thời gian nô lệ dành cho máy tính. Chẳng hạn, một nô lệ có thể kết thúc trước người kia, nghĩa là số liệu của tôi sẽ bị tổn thương bởi "stragglers".
Patrick87

Nói cách khác, cách tôi dự định câu hỏi, sơ đồ tĩnh và động của tôi có hiệu suất khác nhau cho ví dụ tôi cung cấp và động làm tốt hơn. Nếu điều đó không rõ ràng từ câu hỏi của tôi, thì tôi cần phải chỉnh sửa câu hỏi.
Patrick87

@ Patric87: Từ bạn đang tìm kiếm sau đó là 'makepan', được định nghĩa là lần gần đây nhất một số nô lệ kết thúc. Tôi cũng có thể cung cấp cho bạn phân tích cho trường hợp này (có thể không phải hôm nay), nhưng sẽ lâu hơn một chút :)
Alex ten Brink

Vâng, makepan là một thuật ngữ cho nó. Tôi cho rằng tốt nhất nên sử dụng thuật ngữ đó một cách rõ ràng trong câu hỏi, để tránh nhầm lẫn bởi những người khác, những người có thể không có nền tảng để hiểu ngữ cảnh của câu hỏi.
Patrick87

Có lẽ tôi đã nhầm, nhưng nói chung, X + X! = 2X, đúng không? Nếu X được phân phối đồng đều, giống như cuộn chết thì sao? Có một sự khác biệt giữa cán một lần hai lần và thêm các số, và lăn một lần và nhân hai lần (giá trị trung bình là như nhau, nhưng hình dạng và độ lây lan khác nhau). Phần còn lại của phân tích có vẻ tốt, nhưng tôi không hoàn toàn chắc chắn sự phân chia quan điểm của tôi có thể là gì, nếu quan điểm đó là hợp lệ. Tôi nghĩ rằng nó có thể, vì mặc dù giá trị trung bình không bị ảnh hưởng, stdev là và giá trị tối đa dự kiến ​​có thể bị ảnh hưởng bởi stdev ... điều đó có vẻ hợp lý.
Patrick87
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.