2011-11-23 7 views
-2

이 질문은 소프트웨어 및 하드웨어 관련 문제가 혼합되어 있습니다.사용자 정의 C 플랫폼에서 실행중인 사용자 정의 C 응용 프로그램의 성능 최적화

VS2010을 사용하여 C로 작성된 맞춤형 앱이 있는데, 일부 고급 하드웨어가 필요합니다 (앱은 분당 약 50 기가의 데이터를 물고 씹어야합니다). 그것은 64 비트 승 7에서 실행됩니다. 지금 나는 듀얼 크세논 5690 칩 (각 16 진 코어)와 Dell의 t7500, 그래서 12 물리적 및 24 논리 코어가 있습니다. 설치 프로그램에는 48 기가 램이 필요하며 한 번에 약 30-40 기가의 데이터를 사용하기 때문에 필요합니다.

응용 프로그램이 멀티 스레드입니다 (24 개의 논리 코어가 모두 100 %로 제한된 것을 볼 수 있습니다!), 따라서 CPU 바인딩에서 IO 바인딩으로 바뀌 었습니다. (응용 프로그램을 멀티 스레드로 다시 작성하기 전에 데이터를 다시로드하는 데 약 36 시간이 걸렸으나 이제는 약 1.5 시간이 걸리지 만 15 분 이하로 내려야합니다.)

소프트웨어를 수정하여 멀티 드라이브 구성을 이용할 수 있습니다.

24 코어 사이에서 io 작업을 분리 할 수 ​​있습니다. 3TB 정도의 저장 용량이 필요합니다. 비록 실용적이지는 않지만 가장 좋은 시나리오는 48 개의 개별 SSD를 가지기 때문에 실행중인 24 개의 스레드 각각이 읽기 및 쓰기를위한 자체 드라이브를 가질 수 있습니까? (이 응용 프로그램은 작은 파일 읽기/쓰기를 많이하지 않고 대신 1-2GB의 청크로 읽거나 씁니다.)

단일 시스템에서 많은 드라이브를 가져 오는 것이 불가능하다고 가정하면 다음과 같습니다. 이 종류의 설정을 드라이브 수로 제한합니까? 나는 t7500 마더 보드에 5 개의 슬롯을 가지고있다. 그리고 어떤 종류의 컨트롤러/설정이 가장 빠를까요? SATA? SCSI? 레이드 0?
하드웨어 문제를 덜 중요하게 만드는 소프트웨어에서 할 수있는 일이 있습니까? 감사합니다. .

+0

프로그래밍 관련 없음 - http://superuser.com을 시도해보십시오. –

+0

나는 당황 스럽다. 당신은 매분 50Gb의 데이터를 얻기 위해 무엇을 사용합니까? 아니면 데이터가 정적입니까? 혼란 스럽습니까? 데이터가 정적이라면 매분 동일한 프로그램을 반복하는 것이 무엇입니까? 나를 위해 너무 이상하게 들린다. 숫자 정리 ([SETI] (http://www.seti.org/) 스타일) 인 경우 '실시간'일 필요는 없습니다. '실시간'이면 데이터 볼륨이 그렇게 될 필요가 거의 없습니다. 큰. 당신이 [에 쉴론] (http://en.wikipedia.org/wiki/Echelon_ (signals_intelligence))이 아니라면, 그들은 여기에 게시하지 않을 것입니다. – sehe

+0

@PaulR : 나는 프로그래머. * 또는 serverfault를 제안 할 것입니다. * 대신 – sehe

답변

0

많은 탈착식 3tb USB 드라이브를 사용할 수있는 것으로 나타났습니다.