Cost-Efficient Resource Allocation Technique using Bayesian Optimization in Serverless Environment
Korea Computer Congress (KCC 2024)
메모리만 조정하면 CPU를 독립적으로 지정할 수 있는 서버리스 환경의 선택지를 놓칩니다. 두 자원을 함께 탐색하되, 플랫폼에서 사용할 수 있는 조합으로 탐색 범위를 제한했습니다.
- 역할
- 공동저자 · 서버리스 자원 할당 연구
- 핵심 결과
- GCF의 유효 조합 36개 중 CPU·메모리 집약 함수의 최적 설정을 각각 17·13회차에 탐색. CPU 집약 함수에서 최저 자원 설정보다 비용 약 9.43% 감소.
배경
서버리스 함수는 인프라를 직접 관리하지 않고 실행되는 동안만 과금해 비용 효율적이지만, 함수마다 메모리·vCPU를 얼마로 잡을지가 성능과 비용을 좌우합니다. 과다 할당도 과소 할당도 문제인데, 적정값을 찾기는 쉽지 않습니다. 기존 연구 COSE는 베이지안 최적화로 실행시간·비용을 예측해 최적 메모리를 찾지만, 메모리 하나만 조정합니다.
AWS Lambda는 메모리에 비례해 vCPU가 함께 늘지만, Google Cloud Functions·Knative처럼 메모리와 vCPU를 따로 지정할 수 있는 플랫폼에서는 메모리만 조정하는 COSE가 더 저렴한 조합을 놓치게 됩니다.
제안 기법
COSE를 개량해 메모리와 vCPU를 독립적인 두 변수로 삼아 베이지안 최적화를 수행합니다. 자원은 1MiB 단위로 미세 조정할 실익이 적으므로 탐색 공간을 이산(discrete)으로 정의하고, Config Mapper가 연속 입력을 정규화해 가장 가까운 이산 조합으로 매핑합니다. 획득 함수는 EI(Expected Improvement)를 쓰고, EI가 최댓값의 5% 미만이 되면 수렴한 것으로 보고 탐색을 멈춰 비용 최소 설정을 채택합니다. 목적함수를 비용×실행시간으로 바꾸면 짧고 저렴한 설정을 유도할 수도 있습니다.
결과
실험 당시 Google Cloud Functions에서 허용한 메모리·vCPU 조합 36가지를 대상으로 CPU 집약·메모리 집약 함수를 각각 10회 측정했습니다. CPU 집약 함수는 17회차, 메모리 집약 함수는 13회차에 최적 설정을 찾았습니다. CPU 집약 함수의 비용은 최저 자원 설정 대비 약 9.43% 낮았습니다.
이 실험은 비용 최소화를 목표로 했고 지연시간 제한은 두지 않았습니다. CPU를 늘려 실행시간이 짧아지면 단가가 높아도 총비용이 줄 수 있다는 점을 확인했으며, 응답시간 SLO를 지키는 최적화와 다른 플랫폼에서의 검증은 후속 과제로 구분했습니다.