d라이브러리









덩치 큰 슈퍼컴퓨터, 소프트웨어로 다이어트하다





방안 1    백짓장도 나눠들면 낫다 - 클러스터



200kg의 짐을 1시간 안에 10km 떨어진 곳에 옮긴다고 할 때 50kg짜리 짐을 시속 80km로 옮기는 자동차를 한 대 사용하면 네 번 왕복해 옮길 수 있다. 그러나 100kg짜리 짐을 시속 40km로 옮기는 자동차 두 대를 사용하면 두 번 왕복해 옮길 수 있다. 만일 자동차도 프로세서처럼 에너지를 속도의 제곱에 비례해 사용한다면, 시속 40km의 자동차 두 대를 사용할 경우 연료가 더 적게 들 것이다. 







이와 같은 원리로 만든 컴퓨터가 클러스터(cluster)다. 초고속은 아니지만 연비(에너지 효율)가 좋은 컴퓨터 여러 대를 네트워크로 연결하면 초고성능 컴퓨터 한 대의 기능을 수행할 수 있다. 이때 각 컴퓨터는 일반 PC보다 약간 높은 사양이면 충분하다. 대량생산하기 때문에 최첨단 서버를 한 대 구입하는 것보다 비용이 적게 든다. 올 6월 기준으로 세계에서 가장 빠른 재규어를 비롯해 상위 10개 슈퍼컴퓨터 모두가 클러스터 컴퓨터다. 1994년 미항공우주국(NASA)에서 처음 베어울프(Beowulf)’라는 클러스터 시스템을 선보였을 때만해도 클러스터는 슈퍼컴퓨터의 ‘대용품’ 정도로 취급을 받았다. 하지만 지금은 슈퍼컴퓨터 시장의 강자로 떠올랐다. 그만큼 PC를 비롯한 소형 서버 프로세서의 성능이 좋아졌다.









하지만 클러스터도 슈퍼컴퓨팅의 완벽한 대안은 아니다. 클러스터는 많은 컴퓨터들이 네트워크로 묶여 있기 때문에 노드(클러스터를 구성하는 하나의 서버를 나타내는 단위) 간에 데이터를 주고받는 시간이 오래 걸린다. 일반적으로 노드 사이의 통신은 단일 기판 위에 있는 프로세서 사이의 통신보다 열 배 이상 속도가 느리다. 또 노드는 하나의 네트워크로 연결돼 있어 한 번에 한 쌍의 노드만 통신할 수 있다. 즉 노드 A가 노드 B로부터 결과를 받는 도중에는 다른 노드들이 이 네트워크를 사용할 수 없다. 이렇게 대기 시간이 줄을 잇다보면 시스템이 멈춰 있는 시간이 증가해 전체적으로 시스템의 성능이 크게 떨어진다. 이런 병목 현상을 해결하기 위해 최근엔 하나의 선로에 여러 노드를 붙인 메쉬 네트워크(mesh network)나 3D 네트워크가 사용되고 있다. 또는 다른 노드의 계산 결과를 참조하지 않아도 되도록 프로그램을 짜는 연구도 병행되고 있다.



방안 2    검색 엔진, 은행용 슈퍼컴에 강하다 - 가상화 기술



컴퓨팅 에너지를 줄이는 가장 좋은 방법은 사용하지 않는 노드를 꺼두는 것이다. 검색 엔진이나 기업용 대규모 컴퓨팅처럼 사용자 수가 새벽에 뚝 떨어지는 경우에는 쉬고 있는 서버를 꺼서 에너지 효율을 높일 수 있다. 하지만 무작정 서버를 꺼둘 수는 없다. 부하가 낮더라도 각각의 노드가 하는 역할이 있을 수 있기 때문이다. 이를 해결하기 위해 최근 뜨고 있는 것이 가상화 기술이다. 가상화 기술이란 운영체제와 응용 프로그램을 가상의 기계에서 실행하고 그 가상의 기계를 가상머신모니터라 불리는 소프트웨어로 실행하는 구조다.



먼저 클러스터를 구성하는 노드를 ‘가상 상태’로 여긴다. 그리고 일이 많지 않은 가상 노드를 골라 하나의 실제 기계로 몰아넣고 일을 한다. 실제 일을 하는 기계는 하나인 셈이다. 할당받지 않은 실제 기계들은 저전력 상태로 두기 때문에 에너지 효율성을 높일 수 있다.반대로 시스템이 바빠지면 가장 일이 많은 가상 노드부터 실제 기계로 옮겨 실행시킨다. 잠시 작동을 멈춰야할 때도 실행 기계를 다른 기계로 옮기면 된다.



2003년 영국 캠브릿지대에서 ‘젠(Xen)’이라는 이름으로 탄생한 가상화 기술은 개발 당시 폭발적인 인기를 얻었다. 특히 은행이나 구글 같은 초대형 규모의 검색 엔진에서 큰 효과를 발휘한다. 이곳에서 필요한 작업은 동시 다발적으로 유입되는 작은 크기의 일을 수초 내로 처리하는 것이다. 굳이 시스템을 전력 질주할 필요가 없다. 







하지만 가상화 기술은 가상 노드를 옮길 실제 기계를 넉넉하게 준비해둬야 한다는 부담이 있다. 만일 하루 동안 가장 바쁜 시간은 한 시간이고 나머지 시간은 성능의 10%로 일하는 시스템이 있다고 하자. 그 한 시간을 위해 평균적으로 필요한 성능의 10배 가까운 실제 기계를 장만해야 한다. 이는 시설구축 비용과 서버를 수용할 데이터센터 공간을 늘리는 문제를 낳는다.



방안 3    놀면 뭐해? 일이나 하자! - 그리드 컴퓨팅



또 하나의 돌파구는 그리드(Grid)라 불리는 컴퓨팅 모델이다. 클러스터가 초고성능 컴퓨터 한 대를 낮은 성능의 컴퓨터 여러 대로 쪼개 놓은 것이라면, 그리드 컴퓨팅은 이미 존재하는 자잘한 컴퓨터를 ‘노는 시간’ 동안 하나의 문제를 함께 풀도록 만든 시스템이다. 그리드 시스템은 1997년에 당시 컴퓨팅 성능으로는 푸는것이 불가능하다고 생각되던 소수암호(RSA) 알고리즘을 차례로 깨버려(Distributed.Net 프로젝트) 특정한 문제에 좋은 효과가 있음을 입증했다.







하지만 그리드는 수천만 대의 일반 가정용 PC를 네트워크로 연결하므로 클러스터보다 훨씬 더 어렵고 비효율적이다. 또 참여하는 노드가 언제나 일정한 수준의 계산 능력을 제공한다는 보장이 없다. 특히 군사나 기업 데이터 처리 같은 보안이 필요한 정보에는 적합하지 않다. 즉 그리드로 풀기 적당한 문제는 Distributed.Net의 암호 깨기나 NASA의 ‘SETI@Home(외계신호 찾기)’ 프로젝트처럼 무수히 많은 해답 후보를 일일이 다

문제에 대입해서 맞는 답을 찾는 소모적인 문제에 국한된다. 그래서 세계에서 가장 빠른 슈퍼 컴퓨터 순위에는 그리드 시스템이 포함되지 않는다. 만약 그리드 시스템을 포함한다면 세계에서 가장 빠른 컴퓨터는 재규어가 아니라 UC버클리대의 ‘보닉(BOINC)’이었을 것이다.













방안 3    구름처럼 한계를 지을 수 없는 - 클라우드



인터넷 서비스를 제공하거나 일회성 연구를 진행할 개인 또는 소규모 조직이라면 클라우드 컴퓨팅을 눈여겨 볼 필요가 있다. 클라우드 컴퓨팅은 ‘구름 속에서 알 수 없는 구조를 통해 사용자에게 답을 되돌려주는 형태’다. 사용자들은 그 구름 속에서 어떠한 일이 벌어지는지 알 필요가 없다. 그저 문제를 해결해준 시스템게 적절한 비용을 지불할 뿐이다.



클라우드 시스템은 시간에 따라 들쭉날쭉한 여러 사용자들의 요구를 합친다면 평균적으로 필요한 컴퓨팅 자원의 양은 안정적일 것이라는 가정에서 출발한다. 예를 들어 미국 사용자가 새벽을 맞았다면, 인도에 있는 사용자는 저녁 시간이 되기 때문에 컴퓨팅 자원을 최대한 필요로 할 것이다. 만일 두 그룹의 사용자들에게 하나의 가상화된 클러스터 환경을 서비스한다면 시간에 따른 사용률의 변화가 크게 줄어들 것이다. 즉 각각의 사용자 그룹을 위해 독립적인 클러스터를 운영하는 것보다 더 적은 비용으로 하드웨어를 구축하고 운영할 수 있다. 페이스북은 부속기능인 애니모토(Animoto) 서비스를 시작할 때 클라우드를 사용해 3일 만에 50대의 서버로 3500대의 서버만큼 데이터를 처리할 수 있었다. 클라우드를 사용하지 않았다면 불가능했을 것이다.



클라우드 컴퓨팅은 초고성능의 컴퓨팅 자원을 저렴한 가격에 제공하는 장점뿐 아니라 PC나 스마트폰을 사용하는 평범한 개인에게도 슈퍼컴퓨터를 활용할 수 있는 기회를 제공한다. 요즘 각광받는 증강현실은 PC와 스마트폰으로는 처리할 능력이 충분치 않다. 클라우드를 이용하면 네트워크로 데이터를 보내 3D 영상의 인식과 분석이 가능하다. 결국 클라우드는 기존의 슈퍼컴퓨팅 또는 대규모 컴퓨팅의 에너지 효율성을 높이고 구축 및 유지비용을 줄일 뿐만 아니라 기존에는 불가능했던 고성능 서비스를 스마트폰이나 PC 등에서도 제공할 것이다.



▼관련기사를 계속 보시려면?

클럭에 매달린 프로세서에는 미래가 없다
덩치 큰 슈퍼컴퓨터, 소프트웨어로 다이어트하다
물과 공기로 열 내리는 그린 빌딩이 답
생명의 타임캡슐 씨앗
이중휴명 전략펴는 깽깽이풀

이 기사의 내용이 궁금하신가요?

기사 전문을 보시려면500(500원)이 필요합니다.

2010년 09월 과학동아 정보

  • 서의성 UNIST 교수 기자

🎓️ 진로 추천

  • 컴퓨터공학
  • 정보·통신공학
  • 소프트웨어공학
이 기사를 읽은 분이 본
다른 인기기사는?