2013-02-03 2 views
-1

31 EEG 채널에서 X 데이터 양을 파일로 가져 오는 데몬이 있습니다. 매 2 분마다 서버에서 파일을 가져 오기 시작한 시간과 MySQL 데이터베이스에 쓰기 시간이 기록됩니다. 디스크에 평균 데이터, 그리고 평균 시간이 파일을 처리하는 것처럼 보이는 Y 시간이 있다는 것을 발견했습니다. 문제는 시간이 절반 이하가되는 것입니다. D : 결과는 다음과 같습니다.성능 평균 데이터 세트

  1. 내가 임의의 OS가 해당 스레드에 대한 완전한 빈 작업 프로세서를 할당한다고 가정해야하고, 실행 : 같은 ... 프로세스가 스레드에서 실행 해하는 내 질문이 있습니다 다른 스레드보다 2 배 빠름?

  2. 어떻게 차이점을 말할 수 있습니까? 600분의 24 개 실행 :

실행합니다 상대 평균 시간

  • 첫 번째 노드의 하프 타임 아래.
  • 두 번째 노드 : 50/600 실행.

노드에는 실행중인 다른 프로세스가 없습니다.

가비지 컬렉터가 프로세스 자체간에 강제로 메모리를 해제하려고했으나 동일한 결과가 나타납니다.

가로 축에서 하나의 노드 실행 번호입니다 (초 단위). 실행

Time to get the process to end

(평균 87.13)

가 다른 노드에

두 번째 테스트는 다음과 같이 실행했다 :

Second node test

(평균을 = 85.5)

조금 상대적 평균에서 더 느리지 만 더 나은 평균 성능을 가진 무작위 1/2 시간입니다.

은 유효한 질문이 아닌 이유 적어도 의견을 downvoting하는 경우, 그래서 이것은 다시 정말 경합 문제가 있다면 내가 USR 대답처럼 말할 수 없다

+1

몇 가지 논쟁이있는 것처럼 보입니다. 마치 대부분의 작업 항목이 대부분의 시간을 기다리는 것처럼, 때로는 빨리 들어갈 수 있습니다. – usr

+0

나는 바쁜 네트워크 beeing 문제가되었다고 생각하지만 개인 lan이야, 하드 코어 서비스가 실행되지 않습니다, 메인 노드에만 RDP, MYSQL, 웹 서비스를 가지고 있지만 그 그래프는 작업자 노드 전용입니다. 서버에서 보내는 유일한 작업은 약 6 초 후에 파일이 읽히기 때문에 SMB를 통해 파일 (이 용도로만 사용되며 파일은 언제든지 수정되지 않음)입니다. 매번, 나는 리소스 beeing의 사용이 지연됨에 따라 그것을 설명했다. –

답변

0

¬_¬처럼 나는 늘 뭔가를 물어 하지만 응답 파일을 작성했다, 내가 사용하던 문자열 버퍼가 데이터 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 카운터가 있습니다. 두 버전을 한 시간 동안 실행하고 데이터를 수집하고 직접 확인하십시오. 덜 생각하면 더 많은 버튼을 누르십시오 –