시뻘건 개발 도전기

#2 디스크와 메모리 본문

카테고리 없음

#2 디스크와 메모리

시뻘건볼때기 2022. 4. 15. 17:53
반응형

대규모 데이터의 처리는 왜 소규모 데이터보다 어려운가?
데이터는 디스크에서 로드해서 메모리에 저장한다고 이전 토픽에서 언급한 바있다.

속도를 따지고 보자면 메모리가 디스크보다 훨신 빠르기 때문에 메모리에서 계산해야 빠른 결과를 볼 수 있는 것이다.

이 부분이 포인트가 된다.

메모리는 비교적 디스크보다 크기가 작기 때문에 대규모 데이터를 처리하기엔 적합하지 않다. 그러나 속도 측면에서 볼 때는 디스크보다 메모리에서 계산하는 것이 효율적이다. 이 사실에서 알 수 있는 부분은 메모리 내에서 계산할 수 없는 정도의 데이터라면 디스크에 두고 특정 데이터를 검색한다는 것이다.

 

디스크는 왜 메모리보다 느린가?

[그림1] 디스크

디스크는 물리적인 탐색을 통해 검색하기 때문에 속도에 영향이 있을 수 있다. 디스크에는 헤드라고 하는 녀석과 원판이 회전하게 되면서 읽기 쓰기가 이루어진다. 데이터를 읽기위해 수 바퀴의 회전과 헤드의 이동이 필요하다는 이야기다. 메모리의 경우 1회 탐색시 마이크로초(ms)단위이지만 디스크는 밀리초단위가 경과한다.

또한 메모리와 디스크는 CPU와 버스로 연결되어 있는데 이 버스를 통해 데이터 전송속도 차이도 상당하다.(약 100배 차) 최근엔 컴퓨터를 사거나 조립할때 SSD는 거의 필수가 되었다지만, SSD는 물리적인 회전이 아니기때문에 탐색은 디스크보다 빠르지만 버스 속도가 병목되거나 그 밖에 구조에 기인하는 면이 있기때문에 메모리만큼 빠르지는 않다고 한다.

단일 호스트의 부하

전 직장에서 옆 운영팀으로부터 "A서버 Load Average 몇이야?"라는 말을 들어본 적이 있다. 시스템 부하가 있을 때 바로 확인하는 것이 바로 이 load average인데, 말 그대로 시스템 전체의 부하상황을 나타내는 지표가 된다. 단지, 부하 상황을 알 수 있지만, 병목의 원인을 찾기에는 적합하지 않다. load average가 높다면 어느 부분에서 병목이 발생하는지 차근차근 알아가야한다.(이 방법은 뒤에 나옴 : sar이나 vmstat command로 CPU 사용률이나 I/O 대기율의 추이를 확인할 수 있다.)

Load Average는 낮은데 시스템의 전송량이 오르지 않은 경우가 있는데 이 부분은 보통 SW 설정 오류 혹은 네트워크, 원격 호스트에 이슈가 없는지 살펴보는 것도 좋은 방법이다.

반응형
Comments