zero copy 기법을 통한 효율적인 데이터 전송
IBM dW review2008. 12. 1. 00:04
zero copy 기법을 이용하면 리눅스나 유닉스에서 실행되는 I/O 위주의 자바 애플리케이션의 성능을 향상시킬 수 있다. zero copy 기법은 중간 버퍼 간의 불필요한 데이터 복사를 피하게 해 주고, 사용자와 커널 사이의 context switching을 효과적으로 줄여줄 수 있다.
데이터를 소켓을 이용하여 전송하려 할 때, 기존 방식은 디스크에서 해당 데이터를 읽어 커널-사용자 간 경계를 넘어 애플리케이션 단계로 밀어 올리고, 그 것을 다시 소켓에 쓰는 과정에서 커널-사용자 경계를 다시 넘는다. 결국 데이터를 가져왔다가 바로 보낼 건데, 비 효율적으로 중계자를 두고 있다. 이 차이는 매우 적지만, 전송해야 할 데이터 양이 많아질 수록 그 차이는 현격하게 차이나기 시작한다.
자바 클래스 라이브러리에서는 리눅스와 유닉스 시스템에서 java.nio.channels.FileChannel 클래스의 transferTo() 메소드를 통해 zero copy를 지원한다. 이 방법이 왜, 그리고 얼마나 효율적인지 알아보자.
기존 방식의 context switching
개선된 방식을 사용할 때의 context switching
궁금하지 않은가? 그리고 얼마나 효율적일지도.
원문 : http://www.ibm.com/developerworks/kr/library/j-zerocopy/
데이터를 소켓을 이용하여 전송하려 할 때, 기존 방식은 디스크에서 해당 데이터를 읽어 커널-사용자 간 경계를 넘어 애플리케이션 단계로 밀어 올리고, 그 것을 다시 소켓에 쓰는 과정에서 커널-사용자 경계를 다시 넘는다. 결국 데이터를 가져왔다가 바로 보낼 건데, 비 효율적으로 중계자를 두고 있다. 이 차이는 매우 적지만, 전송해야 할 데이터 양이 많아질 수록 그 차이는 현격하게 차이나기 시작한다.
자바 클래스 라이브러리에서는 리눅스와 유닉스 시스템에서 java.nio.channels.FileChannel 클래스의 transferTo() 메소드를 통해 zero copy를 지원한다. 이 방법이 왜, 그리고 얼마나 효율적인지 알아보자.
기존 방식의 context switching
개선된 방식을 사용할 때의 context switching
궁금하지 않은가? 그리고 얼마나 효율적일지도.
원문 : http://www.ibm.com/developerworks/kr/library/j-zerocopy/
'IBM dW review' 카테고리의 다른 글
inode에 대한 모든 것 (0) | 2008.12.31 |
---|---|
초보자를 위한 유닉스 팁과 기교, Part 3 (0) | 2008.12.31 |
고급 셸 스크립트 기법 (0) | 2008.11.30 |
IBM developerworks 늦가을 행사 "개발자들의 수다"로 초대합니다. (0) | 2008.11.03 |
구글 코드 야구 핵 (구글 가젯으로 타율 표시하기) (0) | 2008.11.01 |