Yocto

Yocto에 ccache 사용 - 1부

chbae 2023. 8. 11. 08:19
728x90

Yocto 프로젝트는 가능한 모든 컴포넌트를 직접 빌드하여 사용한다. 그렇기 때문에 빌드 시간이 오래 걸리고 이를 보완하기 위해 PREMIRROR와 Shared State Cache를 사용하여 빌드 시간을 단축한다. 하지만 여전히 의존성 등의 문제로 수정하지 않은 컴포넌트를 전체 컴파일하기도 한다. 이를 보완하기 위해 ccache를 사용할 수 있다.

ccache

ccache (https://ccache.dev/) 는 컴파일러 캐시이다. 이전에 컴파일 했던 캐시를 저장했다가 다시 재사용하여 컴파일 속도를 빠르게 한다. GCC, Clang 등의 컴파일러를 지원하고 윈도우, 맥, 리눅스 등의 운영체제에서 동작한다.

 

https://www.methodpark.de/blog/

Yocto에 ccache 적용하기

yocto에는 ccache.bbclass가 있다. 그 파일 안에는 아래와 같이 어떻게 ccache를 enable하는지에 대한 간단한 설명이 되어 있다.

 

# Usage:
# - Enable ccache
#   Add the following line to a conffile such as conf/local.conf:
#   INHERIT += "ccache"
#
# - Disable ccache for a recipe
#   Add the following line to the recipe if it can't be built with ccache:
#   CCACHE_DISABLE = '1'
#
# - Share ccache files between different builds
#   Set CCACHE_TOP_DIR to a shared dir
#   CCACHE_TOP_DIR = /path/to/shared_ccache/
#
# - TO debug ccahe
#   export CCACHE_DEBUG = "1"
#   export CCACHE_LOGFILE = "${CCACHE_DIR}/logfile.log"
#   And also set PARALLEL_MAKE = "-j 1" to get make the log in order

 

INHERIT += "ccache" 를 conf파일에 적으면 enable이 되고 ccache conf파일의 경로는 CCACHE_CONFIGPATH 에 설정한다. ccache.conf 파일에 대한 설명은 https://ccache.dev/manual/4.3.html 를 참고하여 설정하면 된다.

1부를 마치며

현재 회사에서 ccache를 yocto에 적용하는 작업을 하고 있다. local 환경에서는 잘 되는데 CI와 연결만 시키면 빌드 시간이 더 오래 걸려서 AWS EFS와 AWS Instance간의 IO 병목 문제인지 등을 검토하고 있다. 동시에 전체 레시피가 아닌 일부 빌드 시간이 오래 걸리는 레시피만 적용하여 시작하는 것도 함께 검토하고 있다.

 

전체적으로 검증이 끝나고 실제 적용하면 상당한 빌드 속도 향상을 이룰 것 같고 진행했던 과정동안 문제가 생겼던 것들 그리고 해결했던 과정들을 2부에서 적어보고자 이 글을 1부로 지정하였다.

'Yocto' 카테고리의 다른 글

Yocto 개발 환경 (SDK, eSDK, devtool 등)  (0) 2023.09.21
Yocto oeqa image test  (0) 2023.09.13
Yocto Overrides 문법 변화  (0) 2023.08.04
Yocto 빌드 통계 (buildstat) 시각화  (0) 2023.08.03
Yocto 버전 Upgrade 과정  (0) 2023.07.31