2009-08-31 6 views
3

우리는 텍스트 파일로부터 입력을 받아 출력 텍스트 파일을 생성하는 명령 행 exe를 가지고있다. 복잡한 산업 시뮬레이션에 사용됩니다.실행 속도를 높이기 위해 실제 디스크를 에뮬레이션 하시겠습니까?

이 exe의 소스 코드는 오래 전에 사라졌습니다. 이제는이 exe의 실행을 제어하고 웹 서비스를 통해 외부 앱과 연결되는 .NET 래퍼를 만드는 것이 쉽습니다.

불행히도 새로운 요구 사항은이 블랙 박스 모델을 통해 최적화를 실행하는 것입니다. 이제 블랙 박스 최적화를 수행하는 다양한 방법이 있지만 수천 (수백만 건)의 실행 파일을 호출해야합니다. 디스크 기반 텍스트 파일의 생성 및 구문 분석이 시뮬레이션 프로세스의 병목임을 분명히합니다.

어쨌든이 실행 파일을 물리 디스크로 쓰지 않도록 속일 수 있습니까? 우리가 유닉스에 있었다면 파이프가 트릭을한다고 가정하지만 배포 서버는 Windows Server 03입니다.

ramdrive가이 문제를 해결할 수도 있지만 그 중 하나는 MS- DOS 6.보고 싶은 가치있는 상용 제품? 누구든지 코드를 통해 물리적 드라이브를 에뮬레이션 할 수있는 다른 아이디어가 있습니까? 우리는 .NET 3.5에 있습니다.

+1

디스크 액세스에 병목 현상이 있다는 것을 이미 알고 * 알고 있다면 그 이유는 무엇인지 알고 있습니다. 왜 원시 코드가없는 실행 파일을 최적화하고 싶습니까? – Alex

+2

실행 파일을 최적화하고 싶지 않습니다. 실행 파일로 구현 된 모델을 최적화하고 싶습니다. 모델이 알려지지는 않았지만 그래디언트 디센트를 기반으로 한 멋진 기술을 사용하여 매개 변수와 최적의 솔루션 공간을 예측하고 시도 할 수 있습니다. 어쨌든, 이것은 논쟁의 주제가 아닙니다. 여기서 디스크 액세스를 에뮬레이트하는 방법에 대해 묻고 있습니다. – Alex

+0

입/출력 파일의 크기는 어느 정도입니까? 캐싱 디스크 컨트롤러가 대답 일 수 있습니다 ... – DmitryK

답변

0

파이프 출력은 출력이 표준 출력으로 만 생성되는 경우이를 사용할 수 있습니다.

실제로 파일에 쓰는 경우 : Windows에서 파일 시스템 쓰기를 캐시하므로 간단히 작성한 다음 작은 파일을 삭제하는 것이 램 디스크만큼 빠릅니다. 실제로 프로그램을 실제 속도로 실행 해 보았습니까? 모든 출력 실행을 삭제 했습니까? CPU 사용량과 디스크 대기열을 계속 주시한다면 평범한 오래된 디스크 캐싱으로 충분하다는 생각이들 것입니다.

+0

이것이 어떻게 작동하는지에 대해 자세히 설명해 주시겠습니까? – Alex

+0

유닉스에서와 같은 방식으로 :'dir | 예를 들어 'more'를 선택합니다. 기본적으로 프로그램이 디스크에 직접 기록하도록 코딩 된 경우이 옵션이 아닙니다. –

+0

유감스럽게도 이것이 사실입니다. 우리가 소스 코드를 가지고 있다면 우리는 전혀 디스크에 쓰지 않을 것이다. – Alex

0

Vista에서 실행중인 경우 commercial Ramdisk product이 적합합니다. 시스템이 이미 대부분의 메모리를 사용하고 있다면 x64 버전이 필요할 수 있습니다. 페이지 스와핑을 너무 많이하지 않도록하십시오.

또 다른 옵션은 15000 RPM 디스크 또는 SSD (솔리드 스테이트 디스크)에 약간의 현금을 씁니다. RAM 디스크보다 느립니다.

가공 도구를 리버스 엔지니어링하여 처음부터 다시 작성하여 병목 현상을 피할 수 있지만 장기적으로는 저렴합니다.

+0

우리는 기업 SOE 내에서 운영되고 있습니다. 하드웨어 액세스 또는 수정은 옵션이 아닙니다. 우리의 응용 프로그램은 테스트 목적으로 VM과 호환되어야합니다. 리버스 엔지니어링과 관련하여 - 블랙 박스 최적화가 해당 프로세스의 일부입니다. – Alex

0

가상 머신에서 실행하면, 가상 디스크 캐싱은 호스트 OS ... 즉, 실행할 수의 책임입니다 당신의 VM 내부의 Windows 서버를 어느 정도 사용할 수 있으며 추가 캐싱 계층을 확보 할 수 있습니다. 그것은 환경에서 작동합니까?

+0

흥미로운 접근 방식이지만 VM에만 액세스 할 수 있습니다. 호스트 OS가 범위를 벗어났습니다. – Alex

+0

원래 배포 서버가 이미 VM이라고 언급 했어야합니다. – Alex

관련 문제