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) 단위로 처리할 수 있다.
'대규모 서비스를 지탱하는 기술' 카테고리의 다른 글
[대규모 서비스를 지탱하는 기술] 복수 서버로 확장시키기 (0) | 2025.05.16 |
---|---|
[대규모 서비스를 지탱하는 기술] I/O 부하를 줄이는 방법 (0) | 2025.01.08 |