|
1. 요즘 CPU는 과거 386/486/펜티엄 시절처럼 클럭을 두 배씩 올리지 못한다. 정말 저 당시는 2~3년 마다 CPU 클럭 속도가 두 배씩 증가했다. 1997년에 산 펜티엄 166MHz가 2년 뒤 펜티엄 2 350MHz가 되었다. 그런데 2GHz를 4GHz로 올리기는 매우 어렵다. 그랬다간 CPU가 불탄다. 무어의 법칙이 예언한대로 18~24개월마다 반도체 집적 수준이 두 배씩 증가하였는데, 전력 밀도(power density) 역시 비슷하게 늘었다. 과거 CPU가 소비했던 전력에 비해 지금 CPU가 쓰는 전력은 어마하다. 만약 무어의 법칙마냥 이를 외삽해버리면 핵발전소에 맞먹는 전력 소비가 나온다. 그래서 클럭을 올리는데 굉장히 애로사항이 꽃피고(아 이 진부한 표현은 언제적 이야기지?) 대신 머리 수를 늘리는 방향으로 진화하고 있다. 그런데, 구세주가 나타났다. CPU 클럭 속도가 막혀 좀처럼 싱글 스레드 성능 향상에 애를 먹었는데 난데 없이 SSD라는 놈 때문에 새로운 길이 보인다. SSD는 익히 잘 아실 것으로 예상하고 자세한 설명은 생략. 이제 컴퓨터는 두 가지다. SSD이냐 SSD가 아니냐. 그런데 SSD 중에서도 워낙 구린 것이 많아서 다시 이 문장을 고치면:
지금 34nm 기반 제2세대 인텔 X-25M 80GB의 가격이 다소 높다. 그런데 30만원 초반만 되면 아무 생각 없이 사면 된다. 인텔 SSD는 진리입니다. 다른 회사 제품 중에는 OCZ Vertex 정도만 고려하고 나머지 SSD는 무시하세요. SSD의 성능은 결국 4K 랜덤 쓰기 읽기인데 현재로서는 인텔 2세대 제품이 월등하다. 문제가 있다면 80GB는 너무 작다. 80GB를 쓰던 시절이 언제였는지도 모르겠다. 7~8년 전 같은데.. 정답은 SSD + 1/2TB 하드 조합. ![]() 윈도우 7 성능 점수에서도 하드디스크 점수가 제일 높다. 그래픽 카드는 그래도 nVidia 9800GT인데 너무 하네.
2. 컴퓨터의 성능은 레이턴시(latency, 응답시간, 측정 단위는 ‘초’ 같은 시간)와 스루풋(throughput, 단위 시간 당 처리량, 예: MB/s)로 표현할 수 있다. 그런데 이 둘을 개선시키는데 필요한 방법론은 사뭇 다르다. 그래서 나는 대충 “컴퓨터 성능이 좋아진다”라는 표현을 매우 싫어한다. 정확하게 레이턴시를 개선하는지 스루풋을 개선하는지 확실히 해야 한다. 대표적으로 파이프라인은 명령어 처리 스루풋을 늘리는 기술이다. 레이턴시는 개선시키지 못한다. 캐시는 명령어 완료 레이턴시 개선에 더 큰 목적이 있다 (궁극적으로는 명령어 스루풋을 늘리기도 하지만). 보통 데스크탑 같은 프로그램은 레이턴시가 생명이다. 왜 그런지 자세한 설명은 필요 없을 것이다. 그런데 보통 서버 쪽 프로그램은 스루풋이 훨씬 중요하다. 인터넷 쇼핑몰을 운영하는데 최종 결제 처리를 하는데 1초가 걸리나 2초가 걸리나 소비자는 큰 불만이 없다(물론 10초가 걸리면 이야기가 달라지지만). 그러나 스루풋이 딸리면 그건 바로 매상과 직결되므로 스루풋이 일반적으로 더 중요하다. 인텔 제품을 예로 들면, 서버 제품군으로 Xeon이 있다. 그런데 얘들이 데스크탑/노트북 용 프로세서와 구조적으로 다른 것은 거의 없다. 똑같은 놈인데 서버는 쉬지 않고 24시간 매일 돌아야하므로 높은 안정성이 요구된다. 그래서 가격이 더 비싸고 클럭이 데스크탑 제품군 보다 현격히 낮다. 예를 들어, Core i7-860의 클럭은 2.8GHz이고 가격은 290불이다. 그런데 같은 구조에 같은 클럭으로 Xeon 프로세서를 찾으면 1200불이다. 물론 Xeon 프로세서는 다중 소켓(그러니까 메인 보드에 여러 개 CPU를 꼽는 거)이 지원되는 등 부가 기능이 있지만 기본적인 명령어 파이프라인이나 캐시 구조는 같다. 그냥 완전히 같다. 학교 연구실에 있는 서버 머신의 클럭은 낮다. 그런데 나는 요즘 클럭이 빠른 컴퓨터가 필요하다. 결국 내 데스크탑 컴퓨터를 쓰고 있다. 실험 좀 빨리빨리 해보겠다고 오버 클럭도 더 빡세게 해봤다. 원래 2.67GHz인데 3.6GHz로 오버 클럭 했다. 정말 같은 Nehalem 기반의 Xeon 2.3GHz 프로세서보다 20~30% 이상 빠르다. ![]() 역시 컴퓨터 성능, 정확히 말해 레이턴시는 클럭이 짱. 그러니 인텔이 터보 부스트 같은 것을 넣는다.
3. A+ 학회에 논문 하나 붙이기는 쉽지 않다. 물론 한번에 척하고 붙은 사람도 더러 있지만 보통 한두 번 떨어지고 다시 수정하고 그래야 하나 붙을까 말까 한다. 운도 사실 굉장히 많이 따라야 한다. A+급 학회는 구현을 얼마나 잘 했냐 보다는 아이디어로 승부하는 경우가 절대 대다수다. 그런데 논문에서 제기하는 문제에 동의하지 않고 그 아이디어를 높게 평가하지 않은 리뷰어를 만나면 힘들다. (물론 객관적으로 평가가 가능하지만 리뷰어의 주관에 의존적인 것도 많다. 컴퓨터 시스템 분야가 수식으로 딱 증명되는 것이 별로 없기 때문이다) 이번에도 도전 중인데 결과는 또 떨어진다. 글을 개떡같이 쓴 내 잘못이 가장 크기는 하다. 그런데 이번에 받은 리뷰 중 비판적인 내용은 그 자체는 맞지만 도저히 수긍을 못하겠다. 지엽적인 구현 문제를 가지고 “나는 이 접근 방식이 맘에 안 들어”라고 말하면 대책이 없다. 논문이 맘 안 드는데 마땅히 깔게 없고 그러면 이런 문제로 걸고 넘어진다. 아니면 근원적으로 가지고 있는 문제를 따진다. 좋게 봐준 리뷰도 있지만 그래서는 붙기 어렵다. Strong Reject이 있으면 절대 못 붙는다. 다행히 이건 없는데 Strong Accept도 없다. 기적적으로 붙으려면 내 논문을 좋게 봐준 그 리뷰어가 최종 심사할 때 나타나 열심히 내 논문을 변호 해주어야 하는데 그런 가능성은 거의 없다. 지금 내가 하는 일은 일종의 프로파일러(profiler)를 만드는 것이다. 프로파일링이라면 개발자라면 아주 친숙한 단어일 것이다. 예를 들어, 어떤 프로그램의 병목 지점을 알고 싶다면 프로파일러를 돌려 어떤 함수가 자주 실행되고 또 그 함수가 얼마나 많은 캐시 미스나 페이지 폴트를 만들어 냈는지 살펴보면 된다. 내가 만드는 건 병렬화 가능한 루프를 찾아주는 프로파일러이다. 대충 이야기하면, 바이너리 exe를 입력 받아 실제 실행시키면서 이 프로그램이 작동하는 걸 분석한다. 그래서 병렬화 가능한 루프가 있다면 밝혀주고, 그러하지 않다면 그 이유(data dependence)를 자세히 프로파일링 해준다. 그런데 이 짓거리를 하는데 매우 많은 시간과 메모리가 필요하다. 지금까지 이 문제를 거론한 사람도 없다. 내가 만든 프로파일러와 유사한 논문이 있긴 있지만 전부다 작은 프로그램만 가지고 돌려보았다. 그런데 조금만 큰 프로그램을 돌리면 메모리와 시간이 감당할 수 없을 정도가 된다. 수십 GB메모리와 1천 배 이상 느려진다. 그래서 내가 이 문제를 풀었다(라고 황구라를..) 그런데 논문에서 이 프로파일러와 이 개선 알고리즘을 모두 이야기하니 오히려 글이 산만해지는 것 같다. 알고리즘 자체는 별 딴지도 없고 다들 좋다고 한다. 문제는 이 프로파일러의 방향에 대한 것. 어떤 리뷰어는 “너 왜 바이너리를 받는 걸로 하냐? 그냥 소스 받아서 하는 걸로 하지?” 라고 장황하게 딴지를 건다. 누가 모르냐. 이건 단순히 구현의 일부인데 이런 걸로 까면 정말 할 말 없다. 내 프로파일러는 소스 파일 받는 걸로도 쉽게 바꿀 수있다. 그런데 프로파일 하려면 매번 재컴파일 해야한다. 바이너리 수준의 프로파일러는 그럴 필요 없다. 분명 장단점이 있는데 “나는 이거 동의 안해” 이러면 어쩌라고 ㅠㅠ 또 하나의 문제는 프로파일러는 인풋에 의존적이다. 무슨 말이냐면, 입력 값에 따라 결과가 달라질 수 있다는 것. 이건 나만의 문제가 아니라 프로파일러, 일반적으로 말해 동적 프로그램 분석의 근본적인 문제다. 프로파일러만 하더라도 극단적으로 입력에 따라 자주 실행되는 함수가 다를 수 있다. 나도 이 문제를 알고 있어 분명 논의를 하기는 했지만 자세히 정량적으로 밝히기는 매우 어렵다. 이 자체가 하나의 논문 감이다. 그런데 리뷰어 한 놈은 이걸로 그냥 계속 물고 늘어진다. 엄밀히 말하면 ‘잠재적으로’ 병렬화 가능한 루프를 찾는 것이다. 왜 이걸 논문 첨부터 이야기 안 했냐고 투덜거린다. 사실 잘못하기는 했지만 그래도 이것만 딴지 거는데 힘이 빠진다. 무엇보다 어려운 것은 지금까지 이런 툴이 나온 적이 별로 없어서 설득시키기가 어렵다. 사실 내 논문에는 많은 허점이 있지만, 논문 중에 허점이 없는 것은 없다. 고작 2컬럼 10페이지에 모든 것을 이야기할 수도 없다. 그래서 이번에는 아예 툴을 제안하는 부분은 빼버리고 프로파일링 알고리즘에 집중해서 다시 도전하기로 했다. 사실 얼마 전 마감이었던 다른 A0 급 컨퍼런스에 냈다면 붙을 확률이 매우 높은데 괜히 객기를 부린 것 같기도 하고..
4. 서머타임이 끝난다. 한국에 있을 때처럼 “9시 뉴스”를 매일 보는 것이 아니라 오히려 일기 예보나 서머타임 끝 같은 사소한 것을 놓치기 쉽다. 그런데 기특하게도 윈도우 7의 시계 창이 이 사실을 알려준다. ![]() 11월 1일 오전 2시를 기점으로 다시 한 시간을 뒤로 돌리면 된다. 우리나라도 서머타임을 한다고 하는데, 정부에서 이걸 뭐 녹색 어쩌고 해서 호도하는 건 웃긴 것이 맞다. 그런데 또 서머타임을 하면 생체 리듬이 바뀌어서 짜증난다고 하는 사람이 많은데 그냥 이명박이 싫어요라고 말하는 것이 훨씬 논리적이다. 1 시간 시차로 생체 리듬이 바뀌어 한 달 동안 고생하신다는 분도 봤는데 이 분은 어떻게 해외출장 갈지 모르겠다. 서머타임으로 얼마나 에너지 절약이 되는지는 나도 좀 회의적이다. 그런데 그거 한다고 해서 큰 일 날 것도 없다. 서머타임 덕으로 한 시간 벌었다. 이 시간을 블로깅하는데 썼다. 보람차다.
최근 등록된 덧글
개발자 입장에서의 수많은 ..
by Jiyoon at 02/04 저도 아들 돌잔치때 돌잡이 .. by 박상욱 at 01/18 미국 대학원 원서 작성중에 p.. by 태클사이야 at 01/13 TO: 박PD 로그인 하지 않아.. by 박응용 at 01/10 http://gigglehd.com/zbx.. by dhunter at 12/28 우와.. 좋네요. 태반이 .. by 윤광배 at 12/17 항상 좋은 글 잘 보고 있습니.. by y2k at 11/23 글이 좋아서 제 블로그에 담.. by 쏭섭 at 11/23 최근 등록된 트랙백
메뉴릿
이글루 파인더
|