Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- sprintf
- 디스크 축소
- makefile
- HDR
- 멀티프로세싱
- layouts
- DMA
- 프레임버퍼
- context
- memcmp
- context switch
- jenkins
- interrupt context
- activities
- fscanf
- ubuntu
- 디스크립터
- 소캣
- 속도저하
- Shared Folder
- pagefile.sys
- gparted
- fprintf
- intents
- 젠킨스
- 문자형 디바이스 파일
- usb2.0
- interrupt handler
- sscanf
- 환경 변수
Archives
- Today
- Total
do{학습}while
YOCTO) 빌드 시간을 단축 시간을 방법 본문
✅ Yocto 빌드 시간 단축 방법 총정리
1️⃣ DL_DIR 공유 (소스 다운로드 캐시)
- 모든 패키지의 소스 코드(.tar.gz, git 등)를 저장하는 디렉토리
- 한 번 다운로드한 파일은 다시 다운받지 않음
DL_DIR ?= "/shared/yocto/downloads"
🟢 효과: do_fetch 속도 향상
🟡 대상: 모든 개발자 공유 가능
2️⃣ SSTATE_DIR 공유 (컴파일 결과 캐시)
- 빌드된 결과물(오브젝트, 바이너리)을 재사용
- 동일한 버전/설정이면 다시 빌드하지 않음
SSTATE_DIR ?= "/shared/yocto/sstate-cache"
🟢 효과: do_compile, do_install 등의 중복 제거
🟡 대상: 협업/CI 환경에서 엄청 유용
3️⃣ TMPDIR 백업 및 재활용 (개인용 속도 개선)
- TMPDIR는 전체 중간 빌드 결과가 저장됨 (한 번 빌드한 이미지를 빠르게 다시 만들 때 유용)
- 다만 팀 공유는 ❌ 위험
TMPDIR ?= "${TOPDIR}/tmp"
🟢 효과: 동일한 이미지 반복 빌드에 좋음
🔴 대상: 개인 전용
4️⃣ INHERIT += "rm_work"로 빌드 후 불필요 파일 제거
- 소스와 중간 산출물 삭제 → 디스크 절약, 재빌드 강제 방지
INHERIT += "rm_work"
🟡 효과: 디스크 사용량 절감, 간접적 속도 향상
🔴 주의: 디버깅 시 불편할 수 있음
5️⃣ 패러렐 빌드 (병렬 처리)
conf/local.conf에서 다음 두 항목 설정:
BB_NUMBER_THREADS = "8" PARALLEL_MAKE = "-j8"
보통 CPU 코어 수 기준으로 설정 (예: 8코어 → 8)
🟢 효과: 전체 빌드 속도 체감 급상승
🟡 대상: 로컬 컴퓨터 성능에 따라 다름
6️⃣ bitbake -k로 멈추지 않고 계속 빌드
bitbake -k core-image-minimal
- 하나가 실패해도 다음 패키지 계속 시도
- CI에서 전체 캐시를 빨리 채우고 싶을 때 유용
7️⃣ BB_NO_NETWORK = "1" → 오프라인 빌드 (네트워크 차단)
BB_NO_NETWORK = "1"
- fetch 단계가 느려지는 걸 방지 (DL_DIR로 대체)
- 재현 가능한 빌드 환경 테스트에 좋음
8️⃣ icecc(distcc) 사용 → 분산 컴파일
- 여러 개발/빌드 서버로 컴파일을 분산
INHERIT += "icecc"
- icecc-create-env, icecc-scheduler로 환경 구성 필요
🟢 효과: 컴파일 시간 대폭 단축
🔴 단점: 사전 구성 필요
9️⃣ caches 및 bitbake -S 활용
- bitbake -S none 등으로 캐시만 미리 만들어두고 빌드하지 않기
- 또는 bitbake -g로 의존성 그래프 추출 → 빌드 병목 분석 가능
10️⃣ 이미지 경량화 (불필요한 패키지 제거)
- 빌드 시간이 이미지 크기에 비례하므로, 기능을 최소화하면 속도도 빨라짐
IMAGE_INSTALL:remove = "package-you-dont-need"
✅ 최종 요약 표
방법대상효과
| DL_DIR 공유 | fetch 캐시 | 빠른 소스 재사용 |
| SSTATE_DIR 공유 | 컴파일 캐시 | 컴파일 재사용 |
| TMPDIR 재활용 | 개인 빌드 | 반복 빌드 속도 ↑ |
| rm_work | 디스크 절약 | 간접적 속도 개선 |
| 병렬 빌드 | 전체 빌드 | 속도 급상승 |
| icecc/distcc | 네트워크 병렬화 | 컴파일 시간 절감 |
| 오프라인 빌드 | 재현성 ↑ | fetch 생략 |
| 의존성 최적화 | 빌드 최소화 | 병목 제거 |
'YOCTO' 카테고리의 다른 글
| YOCTO) 자주 사용하는 디버깅 명령어 (0) | 2025.03.23 |
|---|---|
| YOCTO) 메타 데이터 종류, 메타 데이터 파일 종류 (0) | 2025.03.23 |
| YOCTO) 변수 cheat_sheet (0) | 2025.03.23 |
| YOCTO) Source를 fetch하는 방식 (0) | 2025.03.23 |
| YOCTO) 무엇이고 왜 사용하는가? (0) | 2025.03.23 |