대용량 문자열 검색과 압축
2018/04/17
요약 (요약문의 숫자=초, 는 본문과 다름, 이해 편의용)
문제 : SSD에 있는 대용량 데이터에서 문자열을 검색하는 문제이다.
- 읽는데 시간을 너무 많이 쓴다. 100초
- CPU가 빵빵하니 압축해서 저장해둔다. 5배 압축이면 20초에 읽는다.
- 압축 푼다고 까먹는 시간을 추가하자. 1초 걸린다고 치자.
- 멀티 쓰레드로 4분할 하자. 싱글에서 20초였으니까 5초로 단축된다.
- 여기까지 하면 읽기 5초 + 압축풀기 0.25초로 대충 5.25초가 된다.
- 그런데 큰 파일을 한 번에 읽어서 한 번에 풀면 앞에서 읽어서 푼 놈은 L2 캐시에서 밀려난다. 그래서 짧게 읽어 짧게 풀고 짧게 처리하자. 이랬더니 막 더줄었다.
...
결론 : 하지만 실세계는 훨씬 복잡하자너. 캐시 다 틀어지고 생각대로 안 된다. 하지만 연속적으로 데이터가 들어오는 로그 탐색에 있어서는 쓸만하지 않을까?
나의 의견 첨가
실세계는 더 ㅅㅅ 복잡하자너. 분산환경에 가상화까지 끼면 CPU와 IO 통제가 내 상상과 전혀 다르게 움직인다. 따라서 IO를 줄이기 위해 압축 저장해서 푸는 것이 더 빠르다는 가정이 틀어질 수가 있다. 압축 풀라고 CPU한테 시켰더니 CPU를 다른 팀에서 쪽 빨아먹고 있네??? 하둡의 압축저장이 더 빠른지는 여전히 잘 모르겠다. 케바케라는 느낌적 느낌을 갖고는 있는데 ... 이하 잘알못생략.
[t:/] is not "technology - root". dawnsea, rss