排程機任務排程問題

2021-09-05 09:36:27 字數 1341 閱讀 9329

題目描述

假設有乙個**排程機,有n個任務相同的任務需要排程到m臺伺服器上執行,由於每台伺服器的配置不一樣,因此,伺服器執行乙個任務所花費的時間也不同。現在假設第i個伺服器執行乙個任務需要的時間為t[i]。假如,有2個執行機a與b,執行乙個任務分別需要7min和10min,有6個任務待排程。如果平分這6個任務,即a與b各3個任務,則最短需要30min執行完所有。如果a分4個任務,b分2個任務,則最短28執行完。

請設計排程演算法,使得所有任務完成所需要的時間最短。

輸入m臺伺服器,每台機器處理乙個任務的時間為t[i],完成n個任務,輸出n個任務在m臺伺服器的分布。int estimate_process_time(int t,int m,int n)。

解題思路

可以採用貪心法來解決。

申請乙個陣列來記錄每台機器的執行時間,初始化為0。在排程任務的時候,對於每個任務,在選取機器的時候採用如下的貪心策略:對於每台機器,計算機器已經分配任務的執行時間+這個任務需要的時間,採用最短時間的機器進行處理。

實現**如下:

package interview;

public class taskscheduling ;

int n = 6;

int protime = calculate_process_time(t, n);

if (protime == null)

int totaltime = protime[0];

for (int i = 0; i < protime.length; i++)

system.out.println("執行完所有任務所需的時間為" + totaltime);

} }/**

* * @param t

* 每個伺服器處理的時間

* @param n

* 任務的個數

* @return 各個伺服器執行完任務所需的時間

*/private static int calculate_process_time(int t, int n)

int m = t.length;

int minindex;

int mintime;

int protime = new int[m];

for (int i = 0; i < n; i++)

}protime[minindex] += t[minindex];

} return protime;

}}

執行結果:

Spark 任務排程機制

driver執行緒主要是初始化sparkcontext物件,準備執行所需的上下文,然後一方面保持與的rpc連線,通過申請資源,另一方面根據使用者業務邏輯開始排程任務,將任務下發到已有的空閒executor上。executor程序起來後,會向driver反向註冊,註冊成功後保持與driver的心跳,同...

華為機試題 任務排程問題

作業系統任務排程問題。作業系統任務分為系統任務和使用者任務兩種。其中,系統任務的優先順序 50,使用者任務的優先順序 50且 255。優先順序大於255的為非法任務,應予以剔除。現有一任務佇列task,長度為n,task中的元素值表示任務的優先順序,數值越小,優先順序越 高。函式scheduler實...

問題 A 任務排程

題目描述 讀入任務排程序列,輸出n個任務適合的一種排程方式。輸入輸入包含多組測試資料。每組第一行輸入乙個整數n n 100000 表示有n個任務。接下來n行,每行第乙個表示前序任務,括號中的任務為若干個後序任務,表示只有在前序任務完成的情況下,後序任務才能開始。若後序為null則表示無後繼任務。輸出...