소스에서 Android를 빌드할 때 가장 큰 병목 현상

click fraud protection

AOSP 프로젝트에서 발생하는 병목 현상이 무엇인지 궁금하십니까? Dan은 병목 현상을 유발하는 것과 발생하지 않는 것에 관해 독자들을 놀라게 할 수 있는 자신의 연구 결과를 공유합니다.

업데이트 4월 19일 오후 12시(CT): 명확한 빌드 시간은 ccache 빌드 시간입니다.업데이트: 4월 20일 오전 9시 17분(중부 표준시): 빌드 3은 확실히 RAID 1이 아니었습니다. 해당 오류를 수정했습니다.

2012년에 저는 커널을 구축하기 시작했고 이를 구축하기 위해 믿음직한 Core 2 Quad Q9550을 사용했습니다. 그것이 움츠러들만한 가치가 없다면 Windows 내부의 VM에서 수행했다는 사실은 아마도 소스에서 Android를 구축하는 대부분의 사람들에게 보장될 것입니다.

가상화된 Ubuntu 환경은 기본 환경만큼 성능이 좋지 않습니다. 아, 커널을 빌드하는 데 2시간 이상이 걸렸을 때 이것이 얼마나 고통스러웠는지 알 수 있습니다. 다음 해에 소스에서 Android 구축을 시작하고 싶었기 때문에 현재 하드웨어가 그렇지 않을 것이라는 것을 알았습니다. 잘라내어 계속해서 증가하는 빌드를 줄이는 방법을 찾기 위한 길고 지속적인 여정이 시작되었습니다. 시간.

그 이후 몇 년 동안 저는 여러 폼 팩터와 플랫폼에서 테스트할 수 있는 행운을 누렸습니다. Android에서는 빌드 구성이 모든 상황에 적용되는 일률적인 상황이 아니기 때문에 이는 중요합니다. 애플리케이션 개발자는 게임 개발자와 동일한 구성이 필요하지 않을 수 있습니다. 그리고 커널만 빌드하는 사람은 매우 짧은 시간 내에 소스에서 전체 Android ROM을 빌드해야 하는 사람만큼 많은 비용을 지출할 필요가 없을 수도 있습니다. 그리고 OS 선택은 어떻습니까? 지금 사용할 수 있는 것과 사용할 수 없는 것은 무엇입니까? 나는 특히 이 문제를 더 많이 탐구하고 싶습니다. Windows와 Canonical은 Windows 10에 본격적인 Bash를 제공하기 위해 노력하고 있습니다..

이 시리즈를 제대로 시작하려면 소스에서 AOSP 프로젝트를 빌드할 때 가장 큰 잠재적 병목 현상이 있는 위치를 찾아야 합니다. 우리는 어디에 돈을 투자해야 할지 모르고 PC나 업그레이드를 사러 쇼핑하러 가는 경우가 많지 않습니다. 그래서 3년간의 연구와 정량화 가능한 결과를 바탕으로 제가 찾은 내용을 공유할 준비가 되었습니다. 이제 예상되는 면책 조항: 이러한 결과는 개인적인 경험을 기반으로 하며 모든 조합을 고려할 수는 없습니다. 자신만의 빌드 구성을 갖고 있는 분들은 소리를 내어 빌드가 어떻게 진행되고 있는지 알려주세요! 시간은 또한 ccache가 활성화되고 채워진 빌드를 참조하고 있습니다. ccache가 아직 채워지지 않았을 때 일반적으로 두 배였습니다.

디스크 I/O: 사이노젠(Cyanogen)의 톰 마샬(Tom Marshall)에게 팁을 드리고 싶습니다. 강팀의 멤버 - 작년에 저에게 이 방향을 알려주셔서. 나는 그가 나에게 이렇게 될 것이라고 말했을 때 솔직히 그를 믿지 않았습니다. 그만큼 CPU에 대한 병목 현상. 하지만 지난 6개월 동안 저는 이를 정량화 가능한 데이터로 뒷받침할 수 있었습니다. 고급 CPU(예: 대부분의 데스크톱 Intel Core i7 모델)에서 이는 시스템에서 경험하게 되는 가장 큰 병목 현상입니다.

제가 테스트한 4가지 빌드 구성을 살펴보겠습니다. 여기서는 CPU를 강조하겠습니다.

  • 내 "업그레이드되지 않은" PC인 빌드 1은 32GB DDR3-2400 RAM을 갖춘 Intel i7-4790K, 기본 드라이브용 Samsung 840 Evo 250GB, 이전 Micron P400E 100GB였습니다.
  • 빌드 1의 업그레이드 버전인 빌드 2. 이제 4.0GHz로 오버클럭된 Intel i7-5960X, 32GB DDR4-3200 RAM, Samsung SM951 512GB AHCI m.2 SSD와 이전 SSD 2개를 자랑합니다. 이에 대한 전체 빌드 사양은 PCPartPicker에 있습니다..
  • 최근 사용자 빌드인 빌드 3에는 4.2GHz로 오버클럭된 Intel i7-5820K, 16GB DDR4-2400 및 RAID0(스트라이핑) 구성의 Samsung 840 EVO 120GB 2개가 포함되었습니다.
  • 빌드 4는 일반 속도의 Intel Xeon E3-1270 v5, 32GB DDR4-2133, Samsung 950 Pro 512GB NVMe m.2 및 RAID5 어레이의 4개의 SATA Samsung 기업용 SSD를 갖춘 최신 서버 빌드입니다.

방금 그것들을 본다면, 어떤 것이 가장 짧은 빌드 시간을 달성했다고 생각하시나요? 두 번째는 어떻습니까? 놀랍게도 빌드 시간이 가장 적게 걸린 것은 두 번째 구성이 아니라 세 번째 구성이었습니다. CyanogenMod 13.0을 빌드하는 데 14분도 채 걸리지 않았습니다. 따라서 확실히 지배적인 CPU가 2위를 차지할 것입니다. 오른쪽? 또 틀렸어. 방금 테스트를 마친 빌드 4는 25분 남짓 걸렸습니다! 내 현재 빌드는 여기에서만 코어와 스레드가 절반이지만 3개의 SSD로 구성된 SSD 어레이가 있는 시스템보다 2분 느린 반면 내 SSD는 독립형이었습니다. SM951은 너무 뜨거워지면 조절 문제가 있는 것으로 알려져 있는데, 이는 이 경우 매우 실제적인 요인이 될 수 있습니다. 가장 느린 첫 번째 빌드에는 약 30분이 걸렸는데, 이는 제가 CM 13.0을 빌드한 유일한 시간 중 하나였습니다. 27에서도 유사한 빌드 구성이 수행된다는 이야기를 들었습니다.

SSD 역시 예전에는 구하기 힘든 품목이었기 때문에 이에 대한 논의가 거의 없었습니다. 그러나 지난 한 해 동안 소매점과 중고품 시장 모두에서 가격이 급격하게 하락했습니다. 이제 120GB SSD 가격이 50달러 미만이므로 시스템에 SSD를 추가하는 것이 장벽이 아닙니다. 기존 하드 드라이브도 작업을 수행하지만 SSD를 사용하지 않는 경우 사용자는 다른 사용자보다 먼저 이러한 병목 현상에 도달할 가능성이 더 높습니다.

CPU 절전CPU: 위에서 가장 큰 병목 현상이 디스크 I/O라고 언급했을 때 항상 그런 것은 아닐 수도 있다는 가정 하에 굽어졌습니다. 제가 사용한 각 빌드에는 Intel Core i7이 탑재되어 있었습니다. 그러나 Xeon 서버에서 발견한 것처럼 디스크는 계속 유지되지만 가장 무거운 빌드 프로세스를 통해 8개의 CPU 스레드 모두를 높은 활용도로 유지합니다. 그리고 위에서 찾은 RAID 어레이가 없으면 Haswell-E가 대부분의 빌드 프로세스에서 완전히 활용되는 것조차 찾을 수 없습니다. 따라서 구축 비용 대비 최고의 효과를 찾고 있다면 Intel i7-5820K를 고려해 보십시오.

사실, X99이므로 마더보드는 Z97 마더보드보다 비쌀 수 있습니다. 하지만 우리는 여전히 X99 주기의 첫 번째 해에 있습니다. Broadwell-E의 가격은 출시 후에도 Haswell-E와 유사하게 유지될 것으로 예상됩니다. i7-4790K와 거의 동일한 가격으로 매니아 부문을 구매할 수 있어야 합니다. i7-6700K.

Intel에서는 인상적인 빌드 시간을 얻을 수 있으므로 현재 5820K를 넘어설 이유가 많지 않습니다. 대부분의 경우 프로세서 속도와 함께 아래의 코어/스레드 수가 높을수록 빌드 시간이 더 빨라집니다. 작년에 GIGABYTE Brix에 장착된 i7-4770R의 빌드 시간은 평균 42분이었습니다. 가장 빠르지는 않지만 내 요구 사항에 적합했으며 전용 저전력 구성을 사용할 수 있었습니다. AMD APU에서도 마찬가지입니다. 현재는 Intel만큼 성능이 좋지 않을 수도 있지만 작업을 쉽게 완료할 수 있으며 일반적으로 Intel을 구입하는 것보다 저렴한 가격으로 제공됩니다. 소문이 사실이라면 Zen 기반 APU가 그 격차를 크게 줄일 수 있기 때문에 이것은 제가 면밀히 주시하고 있는 상황입니다.

사무실보다 가정 사용자에게 더 많이 적용되는 병목 현상을 제거하기로 선택한 분들에게는 결과가 있습니다. 이러한 병목 현상을 제거하면 시스템의 일반적인 성능이 향상됩니다. 특히 게이머들은 이러한 병목 현상을 해결하기 위해 업그레이드하면 거의 모든 경우에 게임 성능도 향상된다는 사실을 알게 될 것입니다. 가장 빠른 빌드 시간을 얻지는 못했지만 두 번째 빌드는 예상치 못한 놀라움을 안겨주었습니다. 그냥 원인 3 많은 사람들이 몇 분 만에 로드되는 시간에 대해 불평하고 있었습니다. 결국 이러한 빌드 시간은 정말 최고 수준이며 많은 사람들에게 과잉일 수 있습니다... 그러나 적어도 이제 더 많은 코어가 더 빠른 빌드를 의미한다는 주장은 마침내 중단되었습니다.

이것은 단지 시작일 뿐이므로 독자들이 다양한 구성에 대한 빌드 경험을 공유하고 공유할 수 있기를 바랍니다. 독자로서 이러한 유형의 주제에 대한 더 많은 토론을 보고 싶으십니까? 아래 댓글에서 소리를 내보세요!