We need 128GB or more RAM!

in English (Google Translate)
97년에 Pentium Pro에128MB 램을 설치하고 좋아했었는데(풀뱅!), 이제는 128GB 이상의 메모리가 필요한 작업이 생겼습니다. 간단할 줄 알았는데, 128GB 이상을 서버에 꽂으려니 이것저것 고려해야 하는 사항이 있어서 정리 해봅니다.

 

모든 CPU가 가능한게 아니야!

Intel CPU를 기준으로 64GB 를 초과하는 RAM을 설치하려면 Xeon 클래스 이상이 필요합니다.

일반 데스크탑 CPU의 최고 사양인 Intel Core i7-4960 Extreme Edition 을 사용한다고 해도, 최대 설치할 수 있는 램은 64GB 로 제한됩니다. (i7-4960 Extreme 이 일반 사양은 아니지…)

 

128GB 이상의 램은 데스크탑 CPU로는 만들 수 없는 사양이라서 서버 CPU 인 Xeon 클래스에서 찾아봐야 하는데,  이 경우에는 Xeon E5 이상에서 가능합니다. 제온 E3는 최신이지만 32GB 가 최대 구성이고, 제온 E5 이전 세대 (예, 웨스트미어 288GB까지 가능)도 가능한데 단종된 CPU여서 추가 구매가 아니라면 굳이 선택할 이유가 없다고 판답됩니다.

 

Intel Xeon E5-2620 v2

제온 E5 v2 혹은 제온 E5 프로세서들은 최대 768GB 메모리를 설치할 수 있기때문에 모두 후보 제품이고, 제품도 다양합니다. 그렇지만 어쩔 수 없이 비용을 고려하면 이야기가 달라집니다.(전문용어로 가성비~~~) 현재 시장에서 구할 수 있는 가장 고성능 CPU인 E5-2697 v2(12 cores, 2.7Ghz, Apple Mac Pro 2013도 사용하는 CPU)를 지금 당장 구매한다면 300만원대에서 구매할 수 있습니다. 가장 대중적인 CPU 중의 하나인 E5-2620 v2 (6 cores, 2.1Ghz)는 50만원 전후로 구매할 수 있습니다. 그런데 2697v2 와 2620 v2가 가격 차이는 6배가 넘지만, 성능 차이는 약 2배 정도입니다.

 

128GB 이상이 필요한 작업이 CPU 성능에 좌우되는 작업이 아니라 Memory 크기에 더 영향을 받는 작업이기 때문에 당장 빠른 CPU보다는 적당한 CPU를 선택했습니다.  보다 저렴한 E5-2603 v2 혹은 E5-2609 v2 (4 Core) 를 선택할 수도 있지만, 해당 CPU는 dual socket으로 구성하더라도 E5-2620 v2 보다 10% 정도만 빠르기 때문에 가격 효율성은 더 떨어질 것으로 판단합니다. (굳이 말하자면, E5-2620 v2 = E5-2609 v2 x 2)

그래서 우리는 Xeon E5-2620 v2 로 128GB 서버를 만들기로 했습니다.

 

128GB = 8GB RDIMM x 16 or 16GB RDIMM x 8?

메모리 구동에 필요한 CPU와 딸려오는 CPU 칩셋(C2xx, C6xx)에 선택의 이슈가 있는 것 처럼, 가장 중요한 메모리에도 선택의 이슈가 있습니다. non-ECC DRAM, ECC unbuffered DRAM은 128GB 이상을 구성하기가 어렵기 때문에 제외하고, 남아 있는 것은 ECC registered DRAM(RDIMM) 용량의 선택입니다.

시장에서 쉽게 구할 수 있는 RDIMM은 8GB, 16GB 이고, 8GB가 다소 저렴합니다.

8GB RDIMM x 16 = 128GB (CPU 2개 필요)

16GB RDIMM x 8 = 128GB  (CPU 1개 필요)

그래서 8GB RDIMM 으로 128GB를 만들면 될 것 같지만, 이렇게 구성하려면 CPU를 하나 더 추가해야 합니다. 즉, E5-2620 v2 를 하나 더 사서 듀얼소켓으로 구성해야만 16개를 모두 동작시킬 수 있습니다. 듀얼 소켓 구성의 경우, 하나의 CPU(칩셋)가 램 슬롯의 절반을 컨트롤하기 때문에 16개 정도되면 CPU 하나로는 구성이 불가능하게 됩니다.

그리고 대개의 듀얼 소켓 서버 메인 보드들이 최대 16~24개 정도의 램슬롯이 있는데, 추후에 램을 128GB 이상으로 늘린다면 8G RDIMM 구성으로는 램 슬롯이 없어서 기존의 램을 걷어내고 새로운 램을 설치해야 하기때문에 투자 보호가 어렵게 됩니다.

8GB RDIMM과 16GB RDIMM의 가격차이가 크지 않고, CPU 추가비용, 추후 투자보호를 생각한다면 16GB RDIMM 이 합리적인 선택이라 판단합니다.

 

128GB = 32GB LRDIMM x 4?

메인 보드의 램 슬롯이 16개라면, 16 GB RDIMM x 16 = 256GB 가 단일 서버로 구성할 수 있는 최대 메모리 용량이 됩니다. 이것보다 램이 더 필요하다면 32GB LRDIMM x 16 = 512 GB 구성을 해야 합니다.

현재 램 슬롯 한개에 32GB 이상 설치하기 위해서는 LRDIMM 밖에 없기 때문에 선택의 여지가 없지만, 문제는 가격입니다. 32GB LRDIMM 을 시장에서 구하려면 USD 500 ~ 600 부근에서 형성되는데 16GB RDIMM의 거의 2배 정도 되는 가격(단위 용량 기준)이 됩니다.

지금 당장 단일 서버에서 256GB  이상이 필요하다면 32GB LRDIMM으로 돈을 신경쓰지말고 구성해야 겠지만, 그렇지 않다면 추후 확장 가능성보다는 가격 대비 성능비가 우선이라서 16GB RDIMM이  타당합니다.

 

1U 랙마운트 – Air Flow!

이번에 서버를 만들 때, 서버의 샤시는 기존에 사용하던 1U 샤시를 그대로 사용하기로 했습니다. 그래서 1U 에 Rack mount 구성이 가능해야 하는데, 1U로 구성할 때에는 공기 흐름을 고려해야 합니다. CPU를 2개까지 설치가능한 보드의 경우 Extended ATX form factor를 갖는 경우가 많은데, 이 경우 2개의 CPU를 1열로 레이아웃하는 보드의 경우 1U 샤시에 설치하기 곤란합니다. 그림 참조

1U 서버는 CPU 위에 팬이 돌아가는 쿨러를 사용할 수 없고 CPU에 heat sink를 붙이고 샤시의 팬에서 공기를 불어넣어서 CPU를 식혀야 합니다. 참조된 사진에서는 아래에서 위로 공기가 흐르게 되는데 이 경우 위쪽에 있는 2번째 CPU는 앞쪽 1번 CPU와 램에 막혀서 공기 흐름이 원할하지 않을 수 있습니다. 그림참조 그래서 그림처럼 CPU를 엇갈린 형태로 구성해야 해서 최종적으로 선택한 메인보드는 Supermicro X9DRD-7LN4F  입니다.

 

뭐가 이렇게 복잡해! 그냥 AWS를 사용하면 안되나요?

128GB RAM 이상을 설치할 수 있는 서버를 직접 만들려니 신경 쓸 일이 많네요. 이것 저것 신경쓰지 않으려면 Amazon AWS, Microsoft Azure, Google Compute Engine 등의 Cloud Iass 를 사용하면 됩니다. AWS EC2 r3.4xlarge 122GB RAM 을 1달 사용하면 USD 1,000 이상이 됩니다.  아마존 서버를 1Q 돌리는 비용보다 서버를 직접 만드는 비용이 저렴하기 때문에 위와 같이 직접 만드는 방법을 선택했습니다.

일반적으로 쇼핑할 때와 같습니다. 돈보다 시간이 더 싸면 시간과 노력을 들여서 저렴한 제품을 찾는 것이고, 돈이 시간보다 싸다면 이것 저것 생각하지 말고 만들어진 비싼 제품을 사면 됩니다.

 

그래서 이 서버 어디에 쓸 건데?

우리의 시간이 돈보다 더 비싸지려면 본업인 인터넷 서비스를 잘 만들어야 겠지요.

메가 서비스를 꿈꾸는 웹서비스를 만들고 있습니다. 공장(IDC)에 기계(서버) 들여놨으니, 곧 제품 나올 겁니다. 🙂

그게 무엇인지는 하나씩 풀어 가겠습니다~

 

 


Fez

모로코 Fez 여행 계획,  Arrangy

왜 Arrangy 를 사용해야 할까요?  ‘여행의 시작 – Arrangy’ 가 궁금하지 않으세요? (클릭)


Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중