본문 바로가기

대규모 서비스를 지탱하는 기술

[대규모 서비스를 지탱하는 기술] 메모리와 디스크의 속도 차

1) 메모리와 디스크의 속도차는?

 

- 여기서 메모리와 디스크의 속도차에 대한 퀴즈를 내겠다

  메모리 내의 특정 번지에 있는 데이터를 찾는 데이터 탐색과

  디스크의 특정 원반 내에 있는 데이터를 찾는 것은 얼마의 속도차가 날까?

  대략적이라도 상관없다.

 

-학생: 10^7배? 10의 7승. 그럼 만약을 위해 10의 7승은 얼마나 될까?

-학생: 1000만배?

 

- 그렇다. 적정한 선이다. 나쁘지 않은 답이다.

   정답은 10^5~10^6 정도의 차가 난다.

  10만~100만배. 이런 수치 감각은 꽤 중요하다.

 

 

2) 디스크는 왜 늦을까?

- 디스크상의 탐색이 왜 느린가에 대해 좀 더 설명하겠다.

  이는 간단하게라도 알아두면 도움이 된다.

  우선 메모리(memory)는 전기적인 부품이므로 물리적 구조는 탐색속도와 그다지 관계없다.

 

- 한편 디스크는 동축 상에 '원반(disk)'이 쌓여 있다. 이 원반이 회전하고 있고 여기서 데이터를 읽어낸다.

  즉, 메모리와는 달리 회전 등의 물리적인 동작을 수반하고 있다. 

  이 물리적인 구조가 탐색 속도에 영향을 준다.

 

- 디스크에는 자기를 읽어들이는 '헤드'가 있다.

  이 헤드가 달라붙는지 아닌지에 따라 자기를 읽어내 데이터를 읽어내는 구조로 되어 있다.

  먼저 이 헤드를 원반 상의 바깥쪽 위치에서 원반 안쪽, 즉 읽어야 할 데이터가 놓여 있는 위치로 옮기는 작업이 필요하다.

  그렇디만 실제로는 마이크로초, 밀리초(ms) 세계의 얘기이므로 헤드의 움직임이 빠르다고 할 수는 없겠다. 

 

- 더구나 여기서 데이터를 읽어들일 때 5와 같이 회전하고 있다고 하면 원반상의 위치가

  이미 헤드보다 조금 앞으로 가버려서 원하는 위치를 읽기 위해 원반을 한 바퀴  더 돌려야 한다. 

 

2) 탐색 속도에 영향을 주는 다양한 요인

- 디스크에서는 헤드의 이동과 원반의 회전이라는 두 가지 물리적인 이동이 필요하지만, 

  역시나 오늘날의 기술로도 원반의 회전 속도를 빛의 속도까지 근접시킬 수는 없다.

 

- 디스크에서는 각각 밀리초(10^-3)단위, 합해서 수 밀리초나 걸린다.

  메모리는 1회 탐색할 때 마이크로초면 되지만, 디스크는 수 밀리초가 걸리는 것이다. 

 

- 다음으로 데이터가 뿔뿔이 흩어져서 배치되어 있고,

  이분탐색 등 여기저기에서 찾아야 하는 알고리즘을 사용한다고 하면,

  한 바퀴 회전해서 이쪽으로 이동하고 또 한 바퀴 회전해서 저쪽으로,

  또다시 회전해서 이쪽으로와 같이 원반을 빙글빙글 돌려야 한다.

 

- 또한 경우에 따라서는 헤드도 움직여야 한다. 결과적으로 상당한 시간이 걸리게 된다.

  그러나 데이터가 메모리상에 있다면 탐색할 때 물리적인 동작 없이 실제 데이터 탐색 시의 오버헤드가 거의 없으므로 빠른 것이다. 

 

- 탐색에 사용되는 것이 CPU의 캐시에 올리기 쉬운 알고리즘이나 데이터 구조라면

  메모리 내용이 CPU 캐시에 올라가므로, 더욱 빨라져 나노초(10^-9) 단위로 처리할 수 있다.