2010-06-06 7 views
0

나는 블록으로 분할 된 압축 파일을 디스크에 가지고 있습니다. 디스크에서 블록을 읽어 메모리로 압축을 풀고 데이터를 읽습니다.생산자/소비자 - 입출력 디스크

압축 된 블록을 디스크에서 복구하여 대기열에 넣는 스레드와 데이터를 압축 해제하고 읽는 다른 스레드를 생성하는 것은 가능합니까?

성능이 개선 될 예정입니까?

감사합니다.

답변

0

예, 그렇게 설정할 수 있습니다. 성능 향상이 머신에 크게 의존하고 있는지, 압축 해제 된 데이터로 수행중인 작업의 정확한 성격인지 등에 관계없이 문제가 발생하지 않으며 데이터 세트가 상당 할 경우이를 수행 할 것을 제안합니다. 그것이 더 빠를지를 측정합니다. 그 밖의 것이 없다면 일종의 map-reduce 프레임 워크를 활용하기 위해해야 ​​할 작업과 비슷합니다.

+0

map reduce는 컴퓨터 클러스터 용입니다. 제 경우에는 기계가 하나 밖에 없습니다. 어떻게 사용할 수 있습니까? Thanks –

+0

Map/Reduce는 클러스터를 사용하여 쉽게 수평 확장이 가능하기 때문에 일반적으로 사용되지만 단일 노드 구성에서 완벽하게 사용할 수 있습니다. 이 [단일 노드 Hadoop에 관한 기사] (http://hadoop.apache.org/common/docs/current/quickstart.html)를 확인하십시오. –

1

데이터를 압축 해제하는 스레드가 압축 된 블록을 디스크에서 읽는 스레드를 기다리는 데 대부분의 시간을 소비 할 것이라고 생각합니다.

CPU 바인딩 압축 풀기가 디스크의 블록을 읽는 IO 바인딩보다 오래 걸리면 놀랄 것입니다.

+0

이것은 모두 디스크 및 사용하는 압축에 따라 다릅니다. gzip으로 압축 된 파일 압축 풀기는 우리 서버에 묶여 있습니다. – nos

+0

그게 핵심입니다. 무거운 압축을 사용하면 아마도 압축 풀기 스레드가 I/O 스레드를 기다리지 않고 성능이 향상됩니다. –