요즘 WSL에서 열심히 AOSP빌드 실험을 하고 있는데, 하도 안되는 경우가 많이(여러 PC중)나와서 이 시스템, 저 시스템 깔아서 해보다가. 오늘 대강의 결론이 나왔습니다.
16GB RAM 노트북에 Native로 설치해도 15.5GB정도 밖에는 가용 RAM이 안나와서 경고 문구가 보이고, 그대로 빌드 걸면, SOONG android.bp 해석 단계에서 build fail. 원인이 뭘까하다가, SSD이고 설치시 따로 Swap파티션을 지정하거나 하지 않아서 2G만 생성되어 있는것을 확인, 다시 32GB로 늘리고, 빌드 걸고 메모리 변화를 살펴보니, RAM은 당연히 15GB정도 Full로 끌어 쓰고, Swap이 15G까지 올라가네요. 4코어 8쓰레드라서 -j8옵션일건데.. 전에 빌드 스크립트 보다가, 거의 코어당 4GB의 유저영역 Full사이즈를 다 차지했던것을 떠올려습니다. 그때는 Java단에서 빌드시 문제였는데, 이번엔 Soong의 Golang쪽이 메모리를 더 요구하는 것 같네요. Android.bp해석 단계를 넘어서고부터는 코어 Full로 먹더라도 clang이 사용하는 메모리는 RAM허용치 안에서 움직입니다. Java쪽으로 가면 아마 더 먹겠지만. Swap에서 버텨줄것 같네요.
이리보면. RAM이 부족한 Linux시스템에서는 속도빠른 HDD를 Swap으로 쓰거나, readyboost같은것을 쓰는게 맞는걸지도 모르겠네요… 근데 일반 소비자용 SSD는 이리 쓰다가.. 언제 뻗을지 모르니.. 속편하게 RAM은 쓰레드수 * 4배수로 장착된 시스템을 쓰는게 마음 편할것 같습니다… 인텔 12세대 12700이라면.. 24*4 = 96 GB!!! –;;; 아무튼 교차검증으로 WSL에서도 빌드가 안되던 시스템들 살펴봐야겠네요. 예전에 최신 11세대 노트북의 WSL에서는 24GB정도 RAM이면 버텼던것 같긴한데 말이죠. 12쓰레드였는데.. RAM이 부족해서 한번 Swap이 걸리면 Thrasing때문에 계속 문제일지도 모르겟네요.. 보통은 쓰레드 *2배수면 된다던가…