KR20000038076A - 제로-카피 메시지 패싱 방법 - Google Patents

제로-카피 메시지 패싱 방법 Download PDF

Info

Publication number
KR20000038076A
KR20000038076A KR1019980052938A KR19980052938A KR20000038076A KR 20000038076 A KR20000038076 A KR 20000038076A KR 1019980052938 A KR1019980052938 A KR 1019980052938A KR 19980052938 A KR19980052938 A KR 19980052938A KR 20000038076 A KR20000038076 A KR 20000038076A
Authority
KR
South Korea
Prior art keywords
memory
message
area
copy
message passing
Prior art date
Application number
KR1019980052938A
Other languages
English (en)
Inventor
문경덕
박중기
권오영
진성근
김태근
Original Assignee
정선종
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 정선종, 한국전자통신연구원 filed Critical 정선종
Priority to KR1019980052938A priority Critical patent/KR20000038076A/ko
Publication of KR20000038076A publication Critical patent/KR20000038076A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17318Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명은 제로-카피 메시지 패싱 방법에 관한 것이다.
일반적으로 병렬 컴퓨팅 환경에서 호스트들 간에 메시지 교환은 각 호스트에서 메시지 패싱을 관장하는 데몬 프로세스를 통하여 이루어진다. 기존의 메시지 패싱 방법에서는 각 프로세스들이 데몬 프로세스와 공유하는 메모리로 메시지를 복사하고 데몬은 이 메시지를 자신의 메모리 영역으로 복사한다. 그리고, 데몬 영역에 있는 메시지가 Kernel 메모리로 복사된 후 DMA를 이용하여 네트워크 카드를 통해 리모트 프로세스로 전송한다. 따라서, 기존 방식은 메시지가 두번의 메모리 복사를 수반하며 이로 인한 성능 저하가 아주 심각함으로 불필요한 메모리 복사를 제거하여 메시지 패싱 성능을 향상시키는 방법이 필요하다. 그러나, 운영체제는 가상 메모리 체제를 이용함으로 메시지 패싱을 하는 모든 프로세스들이 서로 다른 가상 주소로 동일한 물리적 주소를 지시할 수 있으며 연속적인 가상 주소가 물리적으로는 연속적이지 않을 수 있다.
본 발명은 메시지 패싱시 발생하는 메모리 복사 오버헤드를 제거하기 위해 메시지 패싱을 위한 프로세스, 데몬 및 네트워크 카드가 메시지 패싱을 위해 이용되는 메모리를 모두 공유하여 네트워크를 통해 연결된 병렬 컴퓨팅 환경에서 메모리 복사로 인한 성능 저하를 최소화하는 zero-copy 메시지 패싱 방법을 제공한다.

Description

제로-카피 메시지 패싱 방법
본 발명은 병렬 프로그래밍 환경에서 전반적인 성능에 큰 영향을 미치는 리모트 프로세스간에 메시지를 교환하는 통신 소프트웨어 분야에 관한 것으로서, 특히 네트워크를 통해 연결된 병렬 컴퓨팅 환경에서 리모트 호스트간에 메시지 교환시 메모리 복사로 인해 발생하는 성능 저하를 최대한 방지할 수 있는 제로-카피(zero-copy) 메시지 패싱 방법에 관한 것이다.
네트워크로 연결된 병렬 컴퓨팅 환경에서 호스트들이 작업을 연동하여 처리하기 위해서는 호스트들 간에 메시지를 교환하는 방법이 필요하며 메시지 교환 성능이 전반적인 시스템 성능에 많은 영향을 미친다. 일반적으로 병렬 컴퓨팅 환경에서 호스트들 간에 메시지 교환은 각 호스트에서 메시지 패싱을 관장하는 데몬 프로세스를 통하여 이루어진다. 그러나, 기존의 메시지 패싱 방법에서는 각 프로세스들이 데몬 프로세스와 공유하는 메모리로 메시지를 복사하고 데몬은 이 메시지를 자신의 메모리 영역으로 복사한다. 그리고, 데몬 영역에 있는 메시지가 Kernel 메모리로 복사된 후 DMA를 이용하여 네트워크 카드를 통해 리모트 프로세스로 전송한다.
도 1은 전형적인 메시지 패싱 시스템의 구조도로서, 기존 메시지 패싱 시스템에서 메시지 교환을 위해 발생되는 메모리 복사 형태를 나타내고 있다.
기존 메시지 패싱 시스템은 리모트 호스트와 메시지를 교환하는 프로세스(101)와, 한 호스트의 메시지 교환을 관장하는 데몬(102)과, 운영체제에 해당하는 커널 메모리 영역(103)과, 네트워크 병렬 컴퓨팅 환경을 구축하는 물리적인 네트워크 카드(104)와, 데몬 프로세스(102)의 지역 메모리(105)와, 메시지 패싱 프로세스(101)와 데몬 프로세스(102)가 공유하는 메모리(106)으로 구성된다. 여기서, 설명되지 않은 도면부호 107은 프로세스(101)가 리모트 호스트로 전송할 메시지를 공유 메모리(106)로 복사를 나타내고, 108은 공유 메모리(106)로부터 데몬의 지역메모리(105)로 메시지 복사를 나타내고, 109는 데몬의 지역메모리(105)로부터 운영체제 영역(103)으로 메시지 복사를 나타내고, 110는 커널 메모리(103)로부터 네트워크 카드(104)로 메시지 복사를 나타내고, 111은 네트워크 카드(104)로부터 리모트 호스트로 메시지 전송을 나타낸다.
즉, 메시지 패싱 시스템에서는 프로세스(101)에서 공유 메모리(106)로, 공유메모리(106)에서 데몬의 로컬영역(105)로, 데몬의 로컬영역(105)에서 Kernel(103)로, 그리고 마지막으로 Kernel(103)로부터 네트워크 카드(104)의 순으로 메시지 복사가 발생한다. 하지만, Kernel(103) 이후의 메시지가 DMA를 통해 네트워크 카드(104)로 복사되면 프로세스(101)에서 공유 메모리(106)로 복사되는 것도 같은 프로세스 영역에서 이루어짐으로, 복사로 인한 오버헤드가 발생되지 않아도 공유메모리(106)에서 데몬의 로컬 영역(105)과 데몬의 로컬영역(105)에서 Kernel(103)로 메시지가 복사되면 많은 오버헤드를 발생한다.
상기한 기존 방식은 메시지가 두번의 메모리 복사를 수반하며 이로 인한 성능 저하가 아주 심각함으로 불필요한 메모리 복사를 제거하여 메시지 패싱 성능을 향상시키는 방법이 필요하다. 그러나, 운영체제는 가상 메모리 체제를 이용함으로 메시지 패싱을 하는 모든 프로세스들이 서로 다른 가상 주소로 동일한 몰리적 주소를 지시할 수 있으며 연속적인 가상 주소가 물리적으로는 연속적이지 않을 수 있다. 이에 따라, 메모리 복사에 의한 성능 저하를 최소화하기 위해서는 메시지 패싱에 관련된 프로세스들과 네트워크 카드가 동일한 방법으로 접근할 수 있는 공유 메모리 방법이 요구된다
현재, 활용되는 메시지 패싱 시스템에는 메시지 교환시 유닉스의 소켓(socket)을 이용한 것과, 공유 메모리를 이용한 것이 있다. 이중, 공유 메모리를 이용한 기존의 시스템은 로컬 태스크상에서의 메시지의 교환은 거의 최적화되어 있다. 하지만, 리모트 호스트에 있는 프로세스 사이의 메시지 교환은 메모리상에서 빈번한 복사가 발생 하기 때문에 성능이 좋지 못하다.
따라서, 본 발명의 목적은 메시지 패싱시 발생하는 메모리 복사 오버헤드를 제거하기 위해 메시지 패싱을 위한 프로세스, 데몬 및 네트워크 카드가 메시지 패싱을 위해 이용되는 메모리를 모두 공유하여 네트워크를 통해 연결된 병렬 컴퓨팅 환경에서 메모리 복사로 인한 성능 저하를 최소화하는 제로-카피(zero-copy) 메시지 패싱 방법을 제공하는데 있다.
상기한 목적을 달성하기 위한 본 발명에 따른 제로-카피 메시지 패싱 방법은 메시지 패싱을 수행하는 프로세스와 데몬 및 네트워크 카드가 모두 공유하는 공유메모리를 활용하여 메모리 복사 오버헤드를 제거하는 것을 특징으로 한다.
도 1은 전형적인 메시지 패싱 시스템의 구조도.
도 2는 본 발명에 따른 Zero-Copy 메시지 패싱 시스템의 구조도.
도 3은 본 발명에 따른 공유 메모리의 구성도.
〈도면의 주요 부분에 대한 부호 설명〉
101 : 리모트 호스트와 메시지를 교환하는 프로세스
102 : 한 호스트의 메시지 교환을 관장하는 데몬
103 : 운영체제에 해당하는 커널 메모리 영역
104 : 네트워크 병렬 컴퓨팅 환경을 구축하는 물리적인 네트워크 카드
105 : 데몬 프로세스의 지역 메모리
106 : 메시지 패싱 프로세스와 데몬 프로세스가 공유하는 메모리
107 : 프로세스가 리모트 호스트로 전송할 메시지를 공유 메모리로 복사
108 : 공유 메모리로부터 데몬의 지역메모리로 메시지 복사
109 : 데몬의 지역메모리로부터 운영체제 영역으로 메시지 복사
110 : 커널 메모리로부터 네트워크 카드로 메시지 복사
111 : 네트워크 카드로부터 리모트 호스트로 메시지 전송
201 : 리모트 호스트와 메시지를 교환하는 프로세스
202 : 한 호스트에서 메시지 교환을 관장하는 데몬
203 : 프로세스, 데몬 및 네트워크 카드가 공유하는 메모리
204 : 네트워크 병렬 컴퓨팅 환경을 구축하는 물리적인 네트워크 카드
205 : 공유메모리의 시작 주소
206 : 공유메모리의 마지막 주소
207 : 공유메모리를 이용한 메시지 전송 과정
301 : 프로세스, 데몬 및 네트워크 카드가 공유하는 메모리 구조
302 : 공유메모리를 구성하는 한 페이지 구조
303 : 페이지 헤더
304 : 사용되지 않는 페이지를 위한 오프셋
305 : 프로세스 정보를 위해 헤더
306 : 프로세스가 갖는 입력큐에 대한 정보
307 : 프로세스가 전송할 메시지를 갖고 있는 메시지 영역
308 : 공유메모리에서 사용되지 않는 영역에 대한 정보
309 : 동일 프로세스가 전송하는 메시지에 대한 연결 정보
310 : 프로세스에 할당되지 않은 영역에 대한 연결 정보
311 : 각 프로세스를 위해 할당된 페이지에 대한 시작 주소 정보
312 : 데몬을 위한 페이지 정보
313 : 데몬을 위해 공유메모리에서 할당된 페이지
이하 첨부된 도면을 참조하여 본 발명에서 제안한 방법을 설명한다.
도 2는 본 발명에 따른 Zero-Copy 메시지 패싱 시스템의 구조도로서, 도 1과 같은 기존 메시지 패싱 시스템에서 발생하는 메모리 복사 오버헤드를 네트워크 카드와 한 호스트에서 공유 메모리를 이용해서 zero-copy로 감소시키는 모델을 설명한다.
도 2에서는 리모트 호스트로 메시지를 전송하는 경우, 프로세스(201)의 로컬영역에서 공유 메모리(203)의 DMA 가능한 영역으로 복사 해주면, 여기서부터는 도 1에서 언급한 바와 같이, 프로세스(201)의 관여 없이 네트워크 카드(204)가 알아서 네트워크로 데이터를 전송해준다. 그러므로 DMA 영역 이후에 발생하는 메시지 복사는 오버헤드를 발생하지 않는다. 즉, 커널의 DMA 영역 이후에 네트워크 카드(204)로 발생하는 메모리의 복사는 메모리 복사에 의한 오버헤드를 발생하지 않음으로 도 2와 같은 새로운 시스템은 기존 시스템에서 2회의 메모리 복사가 발생된 것을 제로-카피(zero-copy)로 감소시킴으로써 성능을 향상 시킨다. 도 2에서와 같이 메시지 패싱을 위한 모든 프로세스(201)와 네트워크 카드(204)가 공유하는 메모리 영역(203)은 운영체제에서 부트 타임(boot time)에 미리 정해진 일정영역을 할당받는다. 그리고 이 할당된 영역은 메모리 할당시 운영체제로부터 반환되는 물리적 메모리에서의 시작 주소와 크기를 얻어내서, 일반 프로세스에게 할당된 메모리에 대한 주소 정보를 알려준다. 즉, 각 프로세스(201)는 자신의 가상 메모리 공간에 할당된 크기에 대해 공유메모리가 들어 갈 수 있는 부분을 찾아서 맵(map)을 이용해 물리적 메모리 공간과 가상 메모리 공간을 맵핑시켜준다. 그래서 이 이후에 태스크는 자신의 가상메모리 공간에 읽고 쓰면, 실제로는 공유메모리 영역에 읽고 쓰게 된다. 여기서, 설명되지 않은 도면부호 205는 공유메모리의 시작 주소이고, 206은 공유메모리의 마지막 주소이고, 207은 공유메모리를 이용한 메시지 전송 과정이다.
도 3은 본 발명에 본 발명에 따른 공유 메모리의 구성도로서, 공유메모리를 활용한 메시지 패싱 시스템 구조에서 공유메모리를 관리하기 위한 구조를 설명한다.
도 3에서 각 프로세스에 메시지를 전달하도록 공유메모리를 할당하기 위해, 공유메모리(301)는 페이지 헤더, 프리 페이지 헤더, 프리 페이지들의 연결정보, 메시지 패싱을 하는 프로세스를 구분하기 위한 식별자, 메시지 패싱을 관장하는 데몬에게 할당된 버퍼 영역 및 일반 메시지 패싱 프로세스의 버퍼로 구성된다. 다시 말하면, 프로세스, 데몬 및 네트워크 카드가 공유하는 메모리 구조(301)과, 공유메모리를 구성하는 한 페이지 구조(302)와, 페이지 헤더(303)와, 사용되지 않는 페이지를 위한 오프셋(304)와, 프로세스 정보를 위한 헤더(305)와, 프로세스가 갖는 입력큐에 대한 정보(306)과, 프로세스가 전송할 메시지를 갖고 있는 메시지 영역(307)과, 공유메모리에서 사용되지 않는 영역에 대한 정보(308)과, 동일 프로세스가 전송하는 메시지에 대한 연결 정보(309)와, 프로세스에 할당되지 않은 영역에 대한 연결 정보(310)과, 각 프로세스를 위해 할당된 페이지에 대한 시작 주소 정보(311)과, 데몬을 위한 페이지 정보(312)와, 데몬을 위해 공유메모리에서 할당된 페이지(313)로 구성된다.
프리 페이지 리스트의 헤더 페이지에는 기존의 페이지 헤더에, 다음번 프리 페이지에 대한 옵셋과 프리 페이지들의 수를 기록한 부분이 있다. 나중에 프리 페이지를 리스트에서 빼내어 사용시, 다음 번 프리 페이지 옵셋과 프리 페이지 개수가 들어가는 부분은 없애 버리고, 기존의 페이지 헤드만 사용한다. 그리고, 프리 페이지가 필요 시에는 프리 페이지 리스트 헤드의 넥스트 페이지를 빼서 사용한다. 패킷 헤더 구조체 페이지에는 페이지 헤더를 제외하고는 패킷 헤더들이 들어간다. 각 패킷 헤더를 위에서 설명한 패킷 옵셋들이 가리키고 있고, 각 패킷 헤더에는 메시지를 잘라 놓은 데이터 버퍼 페이지의 옵셋과 메시지를 프래그먼트한 정보, 송신 프로세스 식별자 등의 정보가 포함되어 있다. 이 패킷 헤더에 있는 옵셋 값을 이용해 데이터 버퍼의 내용으로 수신 프로세스는 메시지를 재구성 하게 된다. 데이터 버퍼에는 실제 내용이 저장되는 부분이다. 각 데이터 버퍼는 패킷 헤더에 저장된 옵셋 값으로 참조 되므로, 연속적으로 할당되지않고, 공유 메모리 전체에 랜덤(random)하게 분포 된다.
이상에서 설명한 본 발명은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 한정되는 것이 아니다.
본 발명은 기존 메시지 패싱 시스템에서 성능 저하의 가장 큰 요인으로 작용했던 리모트 프로세스와 메시지 교환시 발생하는 메모리 복사 오버헤드를 제거하여 기존 메시지 패싱 시스템의 성능을 향상시킬 수 있다.
이와 더불어 제안한 방법을 적용하여 메시지 패싱 시스템을 구성할 경우, 네트워크로 연결된 병렬 컴퓨팅 환경의 가장 큰 문제로 인식되는 메시지 패싱 성능을 향상시켜 병렬 컴퓨팅 환경에서 프로그램의 수행 시간을 단축시킬 수 있다.

Claims (1)

  1. 메시지 패싱을 수행하는 프로세스와 데몬 및 네트워크 카드가 모두 공유하는 공유메모리를 활용하여 메모리 복사 오버헤드를 제거하는 것을 특징으로 하는 제로-카피 메시지 패싱 방법.
KR1019980052938A 1998-12-03 1998-12-03 제로-카피 메시지 패싱 방법 KR20000038076A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019980052938A KR20000038076A (ko) 1998-12-03 1998-12-03 제로-카피 메시지 패싱 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980052938A KR20000038076A (ko) 1998-12-03 1998-12-03 제로-카피 메시지 패싱 방법

Publications (1)

Publication Number Publication Date
KR20000038076A true KR20000038076A (ko) 2000-07-05

Family

ID=19561277

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980052938A KR20000038076A (ko) 1998-12-03 1998-12-03 제로-카피 메시지 패싱 방법

Country Status (1)

Country Link
KR (1) KR20000038076A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000065846A (ko) * 1999-04-09 2000-11-15 구자홍 오퍼레이팅 시스템에서 커널과 사용자 사이의 제로-카피 방법
KR100758272B1 (ko) 2006-04-26 2007-09-12 한국전자통신연구원 데이터 무 복사 파일 이동 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000065846A (ko) * 1999-04-09 2000-11-15 구자홍 오퍼레이팅 시스템에서 커널과 사용자 사이의 제로-카피 방법
KR100758272B1 (ko) 2006-04-26 2007-09-12 한국전자통신연구원 데이터 무 복사 파일 이동 방법

Similar Documents

Publication Publication Date Title
EP0889623B1 (en) System and method for efficient remote disk I/O
CN106874128B (zh) 数据传输方法及装置
EP0889622B1 (en) Apparatus and method for remote buffer allocation and management for message passing between network nodes
US7996484B2 (en) Non-disruptive, reliable live migration of virtual machines with network data reception directly into virtual machines' memory
JP3687990B2 (ja) メモリアクセス機構
US20030023666A1 (en) System and method for low overhead message passing between domains in a partitioned server
JP2007066265A (ja) 計算機装置及び仮想マシン提供方法
EP0780768A1 (en) Direct programmed I/O device control method using virtual registers
CN106598752B (zh) 远程零拷贝方法
US20090199182A1 (en) Notification by Task of Completion of GSM Operations at Target Node
CN113760560A (zh) 一种进程间通信方法以及进程间通信装置
US20090199191A1 (en) Notification to Task of Completion of GSM Operations by Initiator Node
JPH0926929A (ja) 効率のよいデータ転送メカニズムに関する方法及び装置
CA1318409C (en) Multiprocessor load sharing arrangement
EP1543658B1 (en) One shot rdma having a 2-bit state
CN109857553B (zh) 内存管理方法及装置
CN117492661A (zh) 数据写入方法、介质、装置和计算设备
JP3376956B2 (ja) プロセッサ間通信装置
KR20000038076A (ko) 제로-카피 메시지 패싱 방법
US20030005071A1 (en) Inter-processor communication system and method
WO2006061316A2 (en) Transferring data between system and storage in a shared buffer
Trams et al. Memory Management in a combined VIA/SCI Hardware
WO2022226998A1 (zh) 执行原子操作的装置和方法
US5875299A (en) disk access apparatus for performing a stride processing of data
KR100368721B1 (ko) 네트워크 가상 메모리를 위한 원격 메모리 액세스 채널 장치및방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application