Disk I/O 란?
웹서비스 성능에 많은 영향을 미치는 중요 모니터링 지표이다.
정확히 Disk I/O(%)라고 하며, 5초동안의 디스크 사용률을 보여준다. 이 디스크는 바로 컴퓨터의 하드 디스크이다.
컴퓨터 시스템 구조에 대해서는 블로그에 정리했으니 참고(링크)
즉 하드디스크를 사용에서 데이터를 처리하게 되면 용량이 크지만 속도가 매우 느리다는 단점이 있다.
디스크에서 데이터 입출력은 물리적으로 액세스 암(Arm)이 움직이면서 헤드를 통해 데이터를 읽고 쓰기 때문이다.
데이터 베이스는 하나의 파일시스템이다. SQL을 이용해서 데이터 파일에 데이터를 저장하고 출력 시에 DB 버퍼캐쉬에 데이터가 없을 경우 디스크를 통하여 데이터를 버퍼 캐쉬에 저장한 후 결과를 주게 된다.
실제 물리적 디스크 I/O가 필요한 경우, 서버 프로세스가 디스크에서 원하는 블록을 가져오고 같은 데이터를 원할 경우 경합이 발생하여 대기 시간이 길어진다.
이에 비해 메모리에서 입출력은 전기적 신호에 불과하기 때문에 비교할 수 없을 정도로 빠르다.
in-memory 가 더 빠른 이유는?
위에서 언급한 대로 메모리에서의 데이터 처리가 디스크와 다르기 때문인 이유와 더불어, 메모리는 주기억저장장치로써 데이터를 주고 받는 병목 현상과 대기 시간이 없다.
또한 disk-based의 경우, 데이터를 페이지(블록)단위로 읽다보니, 원하는 데이터가 해당 페이지에 없다면 또 다른 페이지를 읽어야 하고 이 과정에서 지연이 발생한다.
그러나 애초에 메모리는 모든 데이터를 가지므로 지연이 적다.
그러나 in-memory 방식은 기본적으로 영속성을 보장하지 않으므로, 프로세스가 갑자기 종료되면 데이터가 모두 유실될 수 있다. 또한 저장공간이 한정되어 있다.
따라서 유한한 메모리 자원을 효율적으로 사용하면서, 데이터 처리 특성에 따라서 디스크 방식을 최적화해서 사용하는 것 또한 필요하다.
이를 위해 자주 액세스하는 블록들이 캐시에 더 오래 남도록 LRU 알고리즘을 사용한다.(블로그 정리)
'CS STUDY > Computer Science' 카테고리의 다른 글
[Network]로드밸런서란? (0) | 2022.05.17 |
---|---|
[Network]VPC/Subnet (0) | 2022.05.09 |
프로세스 교착상태 (0) | 2022.03.01 |
CPU bound VS I/O bound (0) | 2022.03.01 |
프로세스 VS 스레드 (0) | 2021.03.20 |