瀏覽單個文章
angeldust-wala
Advance Member
 

加入日期: Feb 2005
文章: 337
引用:
作者Raziel
請教一下,目前run WCG(或各種此類的分散運算)的project,
同一台電腦下, 建議哪一種跑法?

1:run 一支agent程式即可
2:run 原本程式 + 設定vmware安裝其他的虛擬OS, 在裡面再跑第二支agent程式

我試過2, 是可以增加"installed devices" 數量, 但是不清楚哪個積分會有利
如果都是採CPU閒置時間跑,1的運算會比較專注,單一task會擁有較多CPU資源,較快算完
2的方式則會取得較多task,但單一task的CPU資源就會被稀釋.....

有好的建議的前輩請不吝指教.

理論上是1比較好 這裡的好是指對整個project的進行有利 而不是說對你的"分數"看起來比較"好" 一核心執行一運算 可獲得最高的資源量 而如果兩個運算同時進行 通常會耗費所謂的"資料交換時間" 這部份牽扯到一些基本的計算機概論
在單核心cpu中 其實電腦同一"瞬間"只能執行一件工作 但是實際應用中 可能同一時間我們需要很多工作在做(例如邊上網邊聽音樂邊轉檔 或是wcg同時執行兩個task運算)
這是怎麼辦到的? 就是利用電腦運算速度極快的特性 在極短時間內交換做某些事
例如在10ms做A 下10ms做B 再下10ms又執行A 這樣交替執行
以人類的角度來看就像是A B同時執行了
而CPU從A轉到B的過程 都要把手頭上A的工作資料先存起來放到某地方 等下次執行A再提取 然後把B的資料LOAD進來運算 (CONTEXT SWITCH) 這樣一來一往的交換過程也是須要時間的 所以一般上來說 AB同時進行所花的時間會比先執行完A再執行B來的多(被頻繁的CONTEXT SWITCH花掉了

而樓主的例子而言 相同的單位時間內 所產出的工作量一定比單純一件一件慢慢算來的少
因為除了上述所說的兩個工作互相競爭所產生的效應外 還要記得VMWARE的運作也耗了相當大的資源

但是從分數的角度來看 這種跑法不一定會比較"不好" 在以前UD計算分數的方法中 獎勵分數用意在於"貢獻的時間" 照樓主這種跑法 所花的時間比較長 分數反而可能會較高 這主要是用意要鼓勵那些設備老舊的電腦用戶也能貢獻他們電腦 只要你肯花時間 也能得到鄉對的報酬

但在BOINC的計算方法中 獎勵的精神在任務的完成數 每個任務所得到的分數是差不多固定的 所以你拖的越慢算完 對你沒有好處 會鼓勵大家用更好的配備下去跑 持平來說 BOINC這種方法是較公平的 但是會排擠到舊電腦的用戶 降低他們參與到這樣活動的意願
舊 2007-05-04, 08:24 AM #75
回應時引用此文章
angeldust-wala離線中