2013-02-03 70 views
-1

我有一個守護進程正在從31個EEG通道獲取X數據量的文件,每2分鐘從服務器獲取一個文件,向MySQL數據庫寫入獲取文件的時間以及寫入平均數據到磁盤,我發現有Y時間,看起來像平均時間來處理文件,我遇到的問題是,有些運行,該時間低於一半的時間D:和結果是同...進程在線程中運行,所以,我的問題是:性能平均數據集

  1. 我應該假設隨機分配OS完全空任務 處理器線程,跑比其他線程快兩倍?

  2. 我怎麼能說出不同?六百分之二十四運行:相對平均時間

    • 首先節點一半時間

奔跑的下方。

  • 第二個節點:50/600運行。
  • 節點沒有任何其他進程在運行。

    試圖強制垃圾收集器在進程本身之間釋放內存,結果相同。

    這裏是一個橫軸的節點運行數,而時間以秒爲單位。接過運行

    Time to get the process to end

    (平均87.13)

    另一個節點上第二測試跑如下:

    Second node test

    (平均= 85.5)

    一點點相對平均速度較慢,但​​隨機時間更長,平均性能更好。

    如果你downvoting至少作出評論,爲什麼不是一個有效的問題,所以我不會問這樣的事情再次¬_¬

    +1

    看起來像一些爭用問題。就好像大多數工作項目等待大部分時間,但有時他們可以很快進入。 – usr

    +0

    我認爲網絡繁忙是一個問題,但它是一個私有局域網,沒有硬核服務運行,只有主節點有RDP,MYSQL,WEB服務,但該圖只針對工作節點。由於該文件在大約6秒內被讀取,所以服務器發送的唯一東西是該文件(僅用於該目的,該文件不會隨時被修改)。每一次,我都認爲這是延遲使用資源。 –

    回答

    0

    我不能告訴,如果它真的是一個競爭的問題,像USR答案,但它是在寫應答文件,我用的是字符串緩衝區太慢進行數據AQUISITION,我改變來自:

    System.IO.StreamWriter sfile = new System.IO.StreamWriter(path+file); 
        for (int x = 0; x != chans; x++){ 
         for (int xx = 0; xx != maxsize; xx++){ 
          sql += data[x, xx] + "," + xx.ToString() + "," + tes + "," + x.ToString()+"\n"; 
         } 
         sfile.Write(sql); 
         sql = ""; 
        } 
    

    要:

    System.IO.StreamWriter sfile = new System.IO.StreamWriter(path+file); 
        for (int x = 0; x != chans; x++){ 
         for (int xx = 0; xx != maxsize; xx++){ 
          sfile.Write(data[x, xx] + "," + xx.ToString() + "," + tes + "," + x.ToString()+"\n"); 
         } 
        } 
    

    看起來像緩衝區不是一個很好的選擇......現在所有的測試都在* 強烈的文字 * 16秒內運行。而不是35(在非常幸運的狀態)到92秒(平均)

    +0

    有爭論的perfmon計數器。運行兩個版本一小時並收集數據並查看自己。少想多按鈕壓 –