2010-08-09 5 views
14

우리 회사는 현재 CI 빌드 속도를 높이기위한 다양한 전략을 연구하고 있습니다. 빌드를 프로파일 링하고 I/O 병목 현상으로 인해 제약을 받았다. 가까운 장래에 (~ 1-2 개월) 그 문제를 처리 할 수있는 옵션이 있지만 의 개선 사항을보고 싶습니다.빌드 서버에서 램 디스크를 사용하는 것이 현명합니까?

나는 체크 아웃과 빌드 파일 위치로 램 디스크를 사용하도록 제안했다. 빌드 출력과 로그는 물론 물리적 디스크에 저장됩니다.

이 방법을 사용하는 것이 현명한 방법입니까 아니면 중요한 단점입니까? 하드웨어 측면에 대한 답변을 찾는 것이 아니라 일반적인 빌드 시스템 (예 : MSBuild)과 램 디스크 간의 상호 작용으로 인해 문제가 발생하거나 다른 위험이있는 경우이를 인식하고 있어야합니다.

+0

간단한 메모 : 여기 야간 빌드에 대해 이야기하고 있다고 가정합니까? 이 경우 물론 처음부터 빌드의 최대 수를 짤 필요가 있습니다. 매일 빌드 된 경우 개발자가 최대 5MB의 빌드 시간을 유지하여 개발자가 잠재적 인 문제에 대한 빠른 피드백을 얻을 수 있도록 제안합니다. 각각의 커밋 :이 경우, 증분 * 컴파일을 수행하는 것이 가장 유용한 시간입니다. 즉, svn (hg/git/etc.) 업데이트를 수행하고 Make (또는 Ant, Nant 등)를 사용하여 - 변경된 사항을 컴파일하십시오. 훌륭한 작성된 Makefile을 사용하면 작업 속도가 크게 빨라질 수도 있습니다. 그냥 내 0.02 € :-) –

+0

나는 여기 (모든 커밋 후 빌드) CI에 대해 얘기하고 있습니다. 우리는 이미 점진적 빌드를 활용하고 있지만 감사합니다. –

+1

@Christophe Muller는 빌드가 최대 5 Mn이되어야한다는 담요 선언문을 작성하면 빌드의 환경, 크기 및 요구 사항을 알지 못해서 정말 우습다. 우리는 CI 서버에서 실행되며 컴파일 및 패키징을 포함하여 2 분 이내에 빌드 할 수있는 제품을 보유하고 있습니다. 우리는 여러 .NET 솔루션, 기본 Windows 서비스, 여러 Adobe Flex 프로젝트, 유닛 테스트, 코드 범위, 패키징 및 테스트 랙에의 자동 배포를 포함하는 또 다른 제품을 보유하고 있습니다. 전체 프로세스 (모든 체크인이있을 때 모두 실행되는 것은 아님)는 2.5 시간 이상 *입니다. –

답변

8

충분한 메모리를 가지고 있다면 매우 합리적인 일입니다.

유일한 단점은 당연히 CI 빌드에 큰 문제가되지 않는 종료/전원 장애시 빌드가 손실된다는 것입니다.

2

Subversion에서 3600 개의 파일을 체크 아웃하고 (DOT.NET) 컴파일하고 일부 유닛 테스트를 실행하는 "빌드 서버"(실제로 Powershell 스크립트)에서 몇 가지 테스트를 수행했습니다.

정상적인 (초고속이 아닌) 하드 드라이브에는 35 초가 걸립니다.

Windows 7에서 기본 FAT32 설정으로 Dataram RamDisk 도구를 사용하는 데 45 초가 소요됩니다.

NTFS로 다시 포맷하면 30 초가 소요됩니다.

SSD (내 경우 OCZ Vertex 2)를 사용하는 데는 27 초 밖에 걸리지 않습니다.

몇 번의 테스트를했지만 시간은 항상 같습니다.

우리는 이것을 무엇으로부터 배울 수 있습니까?

램 디스크가 항상 더 빠를 수는 없으므로 다른 제품을 설정으로 테스트해야합니다.

솔리드 스테이트 드라이브는 RAM 디스크보다 빠르다. 놀랍다.

+0

나는 DataRam 램 디스크와 ssd를 가지고 있으며 디스크가 훨씬 빠릅니다. 램 디스크가 ssd보다 시간이 오래 걸리는 것을 본다면 뭔가 이상한 것 같습니다. 게다가,이 빌드는 이미 매우 빠르며 대부분의 경우 I/O 바운드가 아닙니다. 35 초는 체크 아웃/빌드를 위해 정말 빠릅니다. 우리의 빌드는 훨씬 더 커졌습니다. 최적화하기 전에 단위 테스트를 한 시간 이상 맞추어서 10 분 정도 단축했습니다. –

+0

흥미로운 점은 RamDisk가 HD 나 SSD보다 훨씬 빠르다고 기대했기 때문에 결과에 실망했습니다. 아직 빌드 프로세스에 프로젝트와 테스트를 추가하는 중이며 나중에 테스트를 다시 실행합니다. RAM이 이미 충분하다면 RAM 디스크도 저렴하고 SSD가 마모되지 않습니다. 사무엘에게 감사드립니다. –

+5

맞지 않을 것입니다. 캐시의 부족은 RAM보다 빠릅니다. SSD도 아닙니다. RAM 디스크가 너무 커서 빌드 프로세스가 실제로 작업을 수행 할 수있을만큼 충분한 메모리를 확보하지 못했습니까? 그럴 경우 분명히 역효과를내는 파일 시스템으로 메모리를 바꿀 수 있습니다. – McKrassy

관련 문제