조성호
shcho@gnome.org 2016

# 디스크 탐색은 성능에 해롭습니다

디스크 탐색은 처리할 수 있는 동작 중 가장 오래걸리는 동작입니다. 우리가 얼마나 많이 동작을 처리하는지 살펴보기 전에는 잘 모르실텐데, 하여간 그렇다니까 믿어주세요. 그러니, 다음은 삼가해주셨으면 좋겠습니다:

디스크 전반적으로 작은 파일을 여러 개 두기.

디스크에 있는 여러 파일을 열기, 상태 보기, 읽기

파일을 단편화하여 더 많은 부분을 탐색하도록 제각각 다른 시간에 파일에 무언가를 진행하기.

다른 실린더 그룹에 위치하여 더 많은 부분을 탐색하도록, 서로 다른 디렉터리에 있는 파일에 무언가를 진행하기.

한 번만 처리해도 될 일을 여러번 처리하기.

탐색이 용이하게 최적화 할 수 있는 방법:

데이터는 단일 파일에 모아둡니다.

데이터는 동일한 디렉터리에 넣습니다.

데이터를 캐싱하여 종종 다시 읽을 필요가 없게 합니다.

데이터를 공유하여 각 프로그램을 메모리로 불러들일 때 디스크에서 다시 읽지 않게 합니다.

Consider caching all of the data in a single binary file that is properly aligned and can be mmapped.

디스크 탐색시 직면하는 문제는 불행하게도 우리가 종종 진행하는 읽기 동작 과정에 복합적으로 일어납니다. 읽기는 동기적 처리 과정이지만 쓰기는 그렇지 않다는걸 기억하십시오. 매번 읽는 과정에 직렬화 처리하며, 프로그램 레이턴시에 영향을 줄 때 이런 문제가 생깁니다.