brunch

You can make anything
by writing

C.S.Lewis

by 이동인 Oct 22. 2019

클라우드와 overcommit

About Infra.

클라우드 시스템을 만드는 과정에서 클라우드 제공사는 컴퓨팅 노드에 CPU와 RAM을 실제 용량보다 더 크게 할당할 수 있습니다. 이렇게 클라우드 시스템에서 제공하는 프로세서를 virtual CPU 또는 vCPU라고 합니다. 

이 과정에서 인스턴스의 성능이 줄어든 비용 만큼 클라우드 제공사는 시스템이 가진 것 보다 더 많은 인스턴스를 고객에게 제공할 수 있게 됩니다. 이렇게 시스템이 가진 할당량보다 더 많은 CPU와 RAM을 매칭하는 것을 overcommit이라고 합니다.

CPU overcommit

오픈스택의 경우 CPU 기본 overcommit은 16:1로 할당되어 있습니다.  CPU 허용 비율이 16대1이라는 것은 스케줄러가 물리 코어당 16개의 가상 코어를 할당한다는 의미입니다. 예를 들어, 물리노드가 12개의 코어를 가지고 있다면, 스케줄러는 192개의 가상 코어를 이용할 수 있습니다. 4개의 가상 코어를 사용하는 인스턴스를 가정한다면 16코어를 가진 하나의 물리 노드에서 4개의 가상 코어를 사용하는 클라우드 인스턴스를 48개 만들 수 있습니다. 일반적으로 CPU는 평소 사용률이 낮은 경우가 많기 때문에 overcommit의 비율이 RAM에 비해 높은 경우가 많습니다. vSphere의 경우 단일 호스트의 가상 시스템에 최대 4,096개의 vCPU를 할당할 수 있습니다. overcommit의 비율이 너무 크면 인스턴스간 자원 충돌 문제가 발생하게 됩니다. 이 문제는 CPU Steal 지표를 통해 확인할 수 있습니다. 


RAM overcommit

오픈스택의 경우 RAM 기본 overcommit은 1.5:1로 할당되어 있습니다. 램의 허용 비율이 1.5대 1이라는 것은 스케줄러가 물리노드가 가진 램의 1.5배의 램이 할당되어 있는 인스턴스를 허용한다는 의미입니다. 예를 들어, 물리 노드가 48 GB 램을 가지고 있다면, 스케줄러는 72GB에 달하는 RAM을 인스턴스에 할당할 수 있습니다. 클라우드 인스턴스당 8GB로 생성한다면 9개의 인스턴스를 만들 수 있게 됩니다. 램의 경우 평균 부하율이 CPU보다 높기 때문에 overcommit의 비율을 낮게 책정하는 것이 일반적입니다. 메모리의 자원 충돌이 발생하는 경우 Swap을 통해 문제가 해결되기 때문에 인스턴스의 성능이 떨어지게 됩니다. 


세줄 요약 

클라우드 시스템을 만드는 과정에서 클라우드 제공사는 컴퓨팅 노드에 CPU와 RAM을 실제 용량보다 더 크게 할당할 수 있습니다.

overcommit의 비율이 너무 크면 인스턴스간 자원 충돌 문제가 발생하게 됩니다. 

cpu steal time을 통해 overcommit으로 문제가 발생하고 있는지 알아낼 수 있습니다. 



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari