KR100758272B1 - File movement method supporting data zero-copy technique - Google Patents
File movement method supporting data zero-copy technique Download PDFInfo
- Publication number
- KR100758272B1 KR100758272B1 KR1020060037836A KR20060037836A KR100758272B1 KR 100758272 B1 KR100758272 B1 KR 100758272B1 KR 1020060037836 A KR1020060037836 A KR 1020060037836A KR 20060037836 A KR20060037836 A KR 20060037836A KR 100758272 B1 KR100758272 B1 KR 100758272B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- page
- buffer
- file
- buffer page
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
도 1 은 종래 기술에 따른 사용자 영역과 커널 영역 간의 데이터 복사를 이용한 파일 이동 방식에 대한 일실시예 설명도,1 is a diagram illustrating a file moving method using data copying between a user area and a kernel area according to the prior art;
도 2 는 본 발명에 따른 데이터 무 복사 파일 이동 방식에 대한 일실시예 설명도,2 is a diagram illustrating an embodiment of a data copyless file moving method according to the present invention;
도 3 은 본 발명에 따른 데이터 무 복사 파일 이동 방식이 지원하는 가용한 이동 경로를 나타낸 일실시예 설명도,3 is an exemplary explanatory diagram showing an available moving path supported by a data copyless file moving method according to the present invention;
도 4 는 본 발명에 따른 데이터 무 복사 파일 이동 방법에 대한 일실시예 흐름도이다.4 is a flowchart illustrating an embodiment of a method for moving a data copyless file according to the present invention.
* 도면의 주요 부분에 대한 부호의 설명 *Explanation of symbols on the main parts of the drawings
101, 201 : 소스 디바이스 100, 200 : 목적 디바이스101, 201:
102, 202 : 커널 영역 103, 203 : 응용 프로그램102, 202:
104 : 사용자 버퍼 105, 106 : 페이지104:
107, 108, 205, 206 : 소켓 버퍼 204 : 버퍼 페이지107, 108, 205, 206: socket buffer 204: buffer page
본 발명은 데이터 무 복사 파일 이동 방법에 관한 것으로, 더욱 상세하게는 중앙처리장치(CPU)에 의해 수행되는 사용자 영역과 커널 영역 간의 데이터 복사를 방지하기 위하여 커널 영역 내에 존재하는 버퍼 페이지를 공유하여 소스/목적 디바이스(예 : 디스크, 네트워크 카드) 간의 파일 이동을 수행함으로써, 사용자 영역 내로 데이터를 복사함에 따른 중앙처리장치의 부하 및 그로 인한 비용을 줄여 전체 성능을 향상시키기 위한, 데이터 무 복사 파일 이동 방법에 관한 것이다.The present invention relates to a method of moving a dataless copy file, and more particularly, to share a buffer page existing in a kernel area in order to prevent data copying between a user area and a kernel area performed by a CPU. Dataless copy file movement method to improve overall performance by performing file movement between target devices (e.g. disks, network cards), thereby reducing the load on the central processing unit and its associated costs of copying data into the user area. It is about.
멀티미디어 스트리밍(streaming) 서버와 같이 대용량의 파일 이동을 요청받는 시스템에서는 파일의 크기가 커짐에 따라 증가하는 데이터 처리 비용이 문제가 되고 있으며, 그로 인한 중앙처리장치(CPU)의 가용성이 중요 이슈로 등장하고 있다.In systems that are requested to move large files, such as multimedia streaming servers, data processing costs increase as the file size increases, and the availability of a central processing unit (CPU) is a major issue. Doing.
즉, 파일 이동으로 인한 데이터 처리량이 많아짐에 따라 사용자 영역과 커널 영역 간의 데이터 복사 및 시스템 콜 호출에 소요되는 비용이 증가하여 단위 연산 당 중앙처리장치의 사용률이 감소하는 문제가 발생하는데, 이를 해결하기 위한 여러 방안이 현재 제시되어 있는 상황이다.In other words, as data throughput increases due to file movement, the cost of copying data between system and user area and calling a system call increases, resulting in a decrease in utilization of the central processing unit per unit operation. There are a number of ways for this.
보다 구체적으로 살펴보면, 일반적으로 파일을 이동하기 위해서는 반복적으로 시스템 콜을 호출하여야 하는데 매 호출시마다 2차례의 중앙처리장치에 의한 사용자/커널 영역 간 데이터 복사와 프로세스의 콘테스트 스위칭(context switching) 이 발생한다. 이는 중앙처리장치 자원의 비용을 증가시키는 연산이면서 다수의 대용량 데이터의 이동 요청을 처리하는 시스템 입장에서는 부하를 가중시키는 상황이다.More specifically, in order to move a file, a system call must be repeatedly called. In each call, two CPUs copy data between user / kernel areas and process switching of a process. . This is an operation that increases the cost of the central processing unit resources and adds a load to the system that handles a large number of large data movement requests.
이를 해결하기 위해, 데이터 무 복사 방식에 의한 파일 이동 기술이 하드웨어적인 방식과 소프트웨어적인 방식으로 나뉘어 개발되어 왔다. 하드웨어적인 방식은 주로 네트워크 카드 분야에서 많은 연구가 이루어졌는데, 네트워크 카드에 존재하는 메모리를 사용자 영역에 존재하는 일정 영역의 주소 공간과 연결함으로써, 네트워크로 전송되는 데이터가 커널 영역 내에 복사되지 않고 사용자 영역으로부터 네트워크 디바이스로 바로 복사되어 전송되도록 하는 방식이다. 이때, 상기 데이터 복사는 중앙처리장치가 아닌, 직접 메모리 접근(DMA) 방식으로 복사된다.In order to solve this problem, a file moving technique using a dataless copy method has been developed in a hardware manner and a software manner. The hardware method is mainly researched in the network card field. By connecting the memory in the network card with the address space in a certain area in the user area, the data transferred to the network is not copied into the kernel area. It is a method of copying data directly from a network device to a network device. In this case, the data copy is copied using a direct memory access (DMA) method, not a central processing unit.
또한, 소프트웨어적인 방식은 주로 사용자 영역의 일정 주소 공간과 커널 영역에 할당된 일정 메모리 영역을 서로 연결함으로써, 지정된 메모리 영역 내의 데이터를 사용자 영역 또는 커널 영역에서 복사하지 않고 바로 접근 가능하도록 하는 방식이다. In addition, the software method mainly connects a certain address space of the user area and a predetermined memory area allocated to the kernel area so that data in the designated memory area can be directly accessed without copying from the user area or the kernel area.
상기의 방식들은 모두 지정된 메모리 영역 사이의 재 매핑(re-mapping)을 통해 수행되는 방식들로서, 이러한 방식들을 사용하기 위해서는 지정된 메모리 영역에 대한 생성 과정, 요청을 처리하기 위한 메모리 할당 및 해제와 같은 메모리 영역에서의 추가적인 관리가 요구되는 문제점이 있었다.All of the above methods are performed through re-mapping between designated memory areas. In order to use these methods, memory such as a creation process for a designated memory area, memory allocation and deallocation for processing a request, and the like are performed. There was a problem that additional management in the area was required.
한편, 종래 기술에 따른 사용자 영역과 커널 영역 간의 파일 이동을 위한 수행 방법에 대하여 살펴보면 다음과 같다.Meanwhile, a method for moving a file between a user area and a kernel area according to the prior art will be described below.
도 1 은 종래 기술에 따른 사용자 영역과 커널 영역 간의 데이터 복사를 이용한 파일 이동 방식에 대한 일실시예 설명도이다.1 is a diagram illustrating a file moving method using data copying between a user area and a kernel area according to the prior art.
커널이 일반적인 파일 이동 연산을 수행하는 경우, 사용자 영역에 위치한 응용 프로그램(103)이 파일 읽기를 요청하고 소스 디바이스(101)에 저장된 데이터를 읽기 위한 페이지(105)를 커널로부터 할당받는다. 이때, 소스 디바이스(101)가 네트워크 카드인 경우에는 소켓 버퍼(107)가 할당된다. 그리고 직접 메모리 접근(DMA) 방식에 의해 소스 디바이스(101)로부터 상기 할당된 페이지(105) 혹은 소켓 버퍼(107)로 데이터가 1차 복사된 후, 중앙처리장치(CPU)에 의해 상기 페이지(105) 혹은 소켓 버퍼(107) 내의 데이터가 사용자 버퍼(104)로 2차 복사된다(110, 114). When the kernel performs a general file move operation, the
이후, 사용자 영역에서 상기 사용자 버퍼(104)에 저장된 데이터에 대하여 목적 디바이스(100)로의 이동을 요청하고, 이를 위한 페이지(106) 혹은 소켓 버퍼(108)를 커널로부터 할당받는다. 그리고 중앙처리장치에 의해 사용자 버퍼(104)에 저장된 데이터가 상기 할당받은 페이지(106) 혹은 소켓 버퍼(108)로 1차 복사된 후, 직접 메모리 접근 방식에 의해 목적 디바이스(100)로 2차 복사된다(112, 116).Subsequently, a request for movement to the
상기 복사 과정에서 이동 대상 파일에 포함된 모든 데이터는 사용자 영역에서 할당된 메모리 영역 크기로 반복 이동되는데, 커널 영역으로부터 사용자 영역으로 혹은 그 반대의 경우로 파일이 이동될 때마다 해당 프로세스의 콘테스트 스위칭(context switching)이 발생한다. 그리고 상기 사용자 영역에서의 요청이란 시스템 콜 호출을 의미하는 것으로, 일정 단위의 파일 내 데이터가 디바이스(디스크, 네트워크 카드 등) 간에 이동되기 위해서는 두 번의 중앙처리장치에 의한 복사와, 두 번의 시스템 콜 호출이 요구된다.In the copying process, all data included in the moving target file is repeatedly moved in the user area to the allocated memory area size. Whenever the file is moved from the kernel area to the user area or vice versa, the contest switching of the corresponding process ( context switching occurs. In addition, the request in the user area means a system call call. In order to move data in a certain unit of file between devices (disk, network card, etc.), two central processing units copy and two system call calls. Is required.
이번에는, 파일 이동과 관련한 선행 기술들에 대하여 구체적인 예를 들어 설명하기로 한다.This time, the prior art related to file movement will be described with specific examples.
제1 선행기술로서 대한민국 특허 "오퍼레이팅 시스템에서 커널과 사용자 사이의 제로-카피 방법(공개번호 10-2000-0065846, 2000.11.15 공개)"에 대하여 살펴보면, 특히 솔라리스 운영 체제에서 커널 영역과 사용자 영역 간의 데이터 블록 전송시 사용자 영역에 있는 버퍼를 복사하는 것이 아니라 커널에서 가상의 메모리를 이용하므로, 데이터 블록 전송시 시간적인 면에서의 오버헤드와 메모리의 낭비를 줄일 수 있도록 하는 기술을 개시하고 있다. 즉, 상기 제1 선행기술은 사용자 영역과 커널 영역에 공유 기억 영역을 초기화하고 메모리 매핑에 의한 공유를 수행하여(이때, 영역 할당 및 해제 등의 관리를 추가 수행해야 함) 데이터 블록 전송시의 시간, 메모리 자원을 절약할 수 있도록 하는 효과가 있다.As a first prior art, a Korean patent "zero-copy method between a kernel and a user in an operating system (published no. 10-2000-0065846, published on November 15, 2000)", in particular, between a kernel region and a user region in a Solaris operating system Since the kernel uses virtual memory instead of copying a buffer in the user area when transferring a data block, a technique is disclosed to reduce time overhead and memory waste in transferring a data block. That is, the first prior art initializes the shared storage area in the user area and the kernel area and performs sharing by memory mapping (in this case, additional management such as area allocation and release must be performed). This has the effect of saving memory resources.
그런데, 상기 제1 선행기술은 일반적인 데이터 블록 전송시의 비용 감소 및 성능 향상의 효과를 제공하나, 파일 이동에 특화된 기술은 아니다.By the way, the first prior art provides the effect of cost reduction and performance improvement in general data block transmission, but is not a technology specialized for file movement.
또한, 제2 선행기술로서 대한민국 특허 "제로-카피 전송 기능을 구현한 네트워크 카드와 서버 및 그 전송 방법(공개번호 10-2005-0065133, 2005.06.29 공개)"에 대하여 살펴보면, 메모리 간 복사 없이 PCI(Peripheral Component Interconnect) 메모리 및 기존의 범용 BSD(Berkeley Software Distribution) 소켓 API(Application Programmable Interface)를 이용하여 제로-카피 전송을 지원하는 기술로서 먼저 디스크에 저장된 데이터를 네트워크로 전송하기 위하여 사용자 프로그램이 PCI 메모리의 일정 영역을 사용자 메모리 영역으로 매핑하여 해당 PCI 메모리 영역에 대한 가상 주소를 얻는다. 이후, 사용자 프로그램이 PCI 메모리 영역으로 디스크의 블록 읽기를 요청하면, 디스크 컨트롤러가 해당 디스크 블록을 읽어 직접 메모리 접근 방식으로 해당 PCI 메모리 영역에 데이터를 저장한다. 사용자 프로그램은 읽기가 완료되면 해당 PCI 메모리 영역에 대해 네트워크로 전송을 요청하고, 네트워크 처리 담당 커널 내 전송제어프로토콜/인터넷프로토콜(TCP/IP) 스택에서는 사용자 프로그램이 전달한 주소가 PCI 메모리 영역임을 확인함에 따라 헤더만 작성하고 해당 PCI 메모리 영역에 대한 주소를 TOE(TCP/IP Offload Engine) 네트워크 컨트롤러로 전달한다. 상기 TOE 네트워크 컨트롤러는 헤더를 로컬 메모리 영역으로부터, 페이로드(payload)를 해당 PCI 메모리 영역으로부터 각각 직접 메모리 접근 방식으로 읽어와 체크섬(checksum)을 수행한 후 네트워크로 전송한다.In addition, referring to the Republic of Korea patent "Network card and server implementing the zero-copy transmission function and its transmission method (published No. 10-2005-0065133, published on June 29, 2005) as a second prior art, PCI without copying between memories (Peripheral Component Interconnect) A technology that supports zero-copy transfer using memory and the existing general-purpose Berkeley Software Distribution (BSD) socket application programmable interface (API). Map a region of memory to a user memory region to get a virtual address for that PCI memory region. Thereafter, when a user program requests reading a block of a disk into the PCI memory area, the disk controller reads the disk block and stores data in the PCI memory area using a direct memory approach. When the user program completes reading, it sends a request to the network for the PCI memory area, and the transmission control protocol / Internet protocol (TCP / IP) stack in the kernel responsible for network processing confirms that the address passed by the user program is the PCI memory area. Therefore, only the header is written and the address of the PCI memory area is transferred to the TOE (TCP / IP Offload Engine) network controller. The TOE network controller reads a header from a local memory area and a payload from a corresponding PCI memory area by a direct memory access method, performs a checksum, and then transmits it to the network.
그런데, 상기 제2 선행기술은 데이터를 중간 복사 과정 없이 제로-카피로 네트워크로 전송함으로써 호스트 시스템의 성능 저하를 방지하면서 데이터 전송 속도를 향상시킬 수 있는 효과가 있는 반면에, 네트워크가 아닌 일반적인 시스템 내 디스크 간의 적용에는 용이하지 않은 문제점이 있었다.However, the second prior art has the effect of improving the data transmission speed while preventing the performance degradation of the host system by transmitting data to the zero-copy network without an intermediate copying process, while in a general system other than the network. There was a problem that the application between the disks is not easy.
또한, 제3 선행기술로서 대한민국 특허 "제로-카피 메시지 패싱 방법(공개번호 10-2000-0038076, 2000.07.05 공개)"에 대하여 살펴보면, 호스트 간의 메시지 패싱시 발생하는 메모리 복사 오버헤드를 제거하기 위해 메시지 패싱을 위한 프로세스, 데몬 및 네트워크 카드가 메시지 패싱을 위해 이용되는 메모리를 모두 공유 하여 네트워크를 통해 연결된 병렬 컴퓨팅 환경에서 메모리 복사로 인한 성능 저하를 최소화하는 방법을 개시하고 있다.In addition, referring to the Republic of Korea patent "zero-copy message passing method (published No. 10-2000-0038076, 2000.07.05)" as the third prior art, to eliminate the memory copy overhead incurred when message passing between hosts The process for message passing, daemons, and network cards all share the memory used for message passing, thereby minimizing the performance degradation due to memory copying in a networked parallel computing environment.
그런데, 상기 제3 선행기술은 리모트 프로세스와 메시지 교환시 발생하는 메모리 복사 오버헤드를 제거하여 기존 메시지 패싱 시스템의 성능을 향상시킬 수 있도록 하나, 시스템 내의 사용자 영역과 커널 영역 간의 데이터 복사 과정을 제거할 수는 없는 문제점이 있었다.However, the third prior art can improve the performance of the existing message passing system by eliminating the memory copy overhead incurred when exchanging messages with the remote process, but eliminate the data copying process between the user area and the kernel area in the system. There was no number of problems.
본 발명은 상기와 같은 문제점을 해결하기 위하여 제안된 것으로, 중앙처리장치(CPU)에 의해 수행되는 사용자 영역과 커널 영역 간의 데이터 복사를 방지하기 위하여 커널 영역 내에 존재하는 버퍼 페이지를 공유하여 소스/목적 디바이스(예 : 디스크, 네트워크 카드) 간의 파일 이동을 수행함으로써, 사용자 영역 내로 데이터를 복사함에 따른 중앙처리장치의 부하 및 그로 인한 비용을 줄여 전체 성능을 향상시키기 위한, 데이터 무 복사 파일 이동 방법을 제공하는데 그 목적이 있다.The present invention has been proposed in order to solve the above problems, in order to prevent data copying between the user area and the kernel area executed by the CPU, the buffer page existing in the kernel area is shared to provide a source / purpose. By moving files between devices (e.g. disks, network cards), we provide a data-free file transfer method to improve overall performance by reducing the load on the central processing unit and its associated costs of copying data into the user area. Its purpose is to.
본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있으며, 본 발명의 실시예에 의해 보다 분명하게 알게 될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.Other objects and advantages of the present invention can be understood by the following description, and will be more clearly understood by the embodiments of the present invention. Also, it will be readily appreciated that the objects and advantages of the present invention may be realized by the means and combinations thereof indicated in the claims.
상기 목적을 달성하기 위한 본 발명의 방법은, 데이터 무 복사 파일 이동 방법에 있어서, 사용자 영역의 응용 프로그램으로부터 파일 이동을 요청받는 요청 접수 단계; 소스 디바이스를 위한 버퍼 페이지를 커널 영역에 할당하는 할당 단계; 상기 소스 디바이스에 저장되어 있는 이동 대상 파일의 데이터를 직접 메모리 접근 방식에 따라 상기 버퍼 페이지로 복사하는 1차 복사 단계; 상기 버퍼 페이지가 목적 디바이스를 위해 할당되도록 하기 위하여, 상기 버퍼 페이지를 페이지 캐쉬로부터 제거하고 페이지 관리 정보에 대한 변경 과정을 수행하는 설정 변경 단계; 및 직접 메모리 접근 방식에 따라 상기 버퍼 페이지의 데이터를 상기 목적 디바이스로 복사하는 2차 복사 단계를 포함한다.According to an aspect of the present invention, there is provided a data copyless file moving method comprising: a request receiving step of requesting a file moving from an application program in a user area; An allocation step of allocating a buffer page for a source device to a kernel region; Copying data of a movement target file stored in the source device to the buffer page according to a direct memory access method; A setting change step of removing the buffer page from the page cache and performing a change process on page management information so that the buffer page is allocated for the target device; And a second copying step of copying data of the buffer page to the destination device according to a direct memory approach.
상술한 목적, 특징 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명하기로 한다.The above objects, features and advantages will become more apparent from the following detailed description taken in conjunction with the accompanying drawings, whereby those skilled in the art may easily implement the technical idea of the present invention. There will be. In addition, in describing the present invention, when it is determined that the detailed description of the known technology related to the present invention may unnecessarily obscure the gist of the present invention, the detailed description thereof will be omitted. Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.
본 발명은, 사용자 영역과 커널 영역 간의 중앙처리장치에 의한 데이터 복사 과정을 제거하고 시스템 콜 호출 횟수를 줄임으로써, 중앙처리장치의 가용성을 높이고 전체 성능을 향상시킬 수 있도록 한다. 이때, 직접 메모리 접근(DMA) 방식에 의한 복사 과정은 제거 대상에서 제외된다. The present invention eliminates the data copying process by the central processing unit between the user area and the kernel area and reduces the number of system call calls, thereby increasing the availability of the central processing unit and improving the overall performance. At this time, the copy process by the direct memory access (DMA) method is excluded from the object of removal.
그리고 본 발명에 따른 데이터 무 복사 파일 이동 방법은 커널 내의 구성요소로서 구현되어 사용자 영역에 대해서는 인터페이스를 제공할 수 있다.In addition, the data copyless file moving method according to the present invention may be implemented as a component in a kernel to provide an interface to a user area.
도 2 는 본 발명에 따른 데이터 무 복사 파일 이동 방식에 대한 일실시예 설명도이다.2 is a diagram illustrating an embodiment of a data copyless file moving method according to the present invention.
도 2에 도시된 바와 같이, 사용자 영역에 위치한 응용 프로그램이 디바이스(디스크, 네트워크 카드 등) 간의 파일 이동을 요청한다. 그에 따라, 소스 디바이스(201)인 디스크 혹은 네트워크 카드로부터 데이터를 읽어오기 위하여 커널이 소스 디바이스용의 버퍼 페이지(204)를 커널 영역 내에 할당한다. 이때, 상기 할당된 버퍼 페이지(204)는 커널의 페이지 캐쉬에 추가된다. 그리고 소스 디바이스(201)로부터 페이지 크기의 데이터가 직접 메모리 접근 방식에 의해 상기 할당된 버퍼 페이지(204)로 복사된다. 여기서, 소스 디바이스(201)가 네트워크 카드인 경우에는 소켓 버퍼(205)로 직접 메모리 접근 방식에 의한 복사 과정이 먼저 수행된 후(207), 소켓 버퍼(205)로부터 상기 할당된 버퍼 페이지(204)로 중앙처리장치에 의한 복사 과정이 한 번 수행된다.As shown in FIG. 2, an application program located in a user area requests file movement between devices (disk, network card, etc.). Accordingly, the kernel allocates a buffer page 204 for the source device in the kernel area to read data from a disk or network card that is the
상기 할당된 버퍼 페이지(204)는 목적 디바이스(200)로 데이터를 보내기 위한 용도로 사용되기 위하여(즉, 상기 소스 디바이스를 위하여 할당된 페이지를 목적 디바이스를 위한 데이터 이동 용도로 재사용하기 위하여), 상기 페이지 캐쉬로부터 제거되고 그에 따른 페이지 관리 정보에 대한 변경 과정이 수행된 후 목적 디바이스용 버퍼 페이지(204)로서 페이지 캐쉬에 추가된다. 상기 설정 변경 과정은 커널이 수행한다. 그리고 상기 버퍼 페이지(204)의 데이터가 직접 메모리 접근 방 식에 의해 목적 디바이스(200)로 복사된다. 이때, 목적 디바이스(200)가 네트워크 카드인 경우에는 상기 버퍼 페이지(204)로부터 소켓 버퍼(206)로 중앙처리장치에 의한 복사 과정이 한 번 수행된 후, 소켓 버퍼(206)로부터 목적 디바이스(200)로 직접 메모리 접근 방식에 의한 복사 과정이 수행된다.The allocated buffer page 204 is used for the purpose of sending data to the destination device 200 (ie, to reuse the page allocated for the source device for data movement for the destination device). After removing from the page cache and changing the page management information accordingly, it is added to the page cache as the buffer page 204 for the target device. The configuration change process is performed by the kernel. The data of the buffer page 204 is copied to the
상기의 과정은 이동 대상 파일 내의 모든 데이터가 이동될 때까지 반복 수행된다. 여기서, 상기 소스 디바이스용 버퍼 페이지와 목적 디바이스용 버퍼 페이지는 동일한 버퍼 페이지로서, 소스/목적 디바이스에 의해 데이터 입/출력시 공유된다.The above process is repeated until all data in the movement target file is moved. Here, the buffer page for the source device and the buffer page for the destination device are the same buffer page, and are shared by the source / target device during data input / output.
상기와 같은 구성요소 내에서의 동작 흐름에 관해서는 도 4를 참조하여 후술하기로 한다.The operation flow in the above components will be described later with reference to FIG. 4.
도 3 은 본 발명에 따른 데이터 무 복사 파일 이동 방식이 지원하는 가용한 이동 경로를 나타낸 일실시예 설명도이다.3 is an exemplary diagram illustrating an available moving path supported by the data copyless file moving method according to the present invention.
여기서는, 본 발명에 따른 데이터 무 복사(zero-copy) 파일 이동 방법이 적용될 수 있는 파일 이동의 경로(310, 311, 312, 313)를 살펴보기로 한다.Here, the
데이터 무 복사 파일 이동이 적용될 수 있는 경우는 이동 대상 파일이 로컬 시스템의 디스크(303)에 저장되어 있는 경우와 네트워크상의 다른 시스템(304)에 위치한 경우를 포함한다. 이동 대상 파일이 로컬 시스템의 디스크(303)에 저장되어 있는 경우, 동일한 디스크 혹은 다른 디스크로 이동(310)시키거나 혹은 네트워크상의 다른 시스템으로 전송(311)하기 위하여 네트워크 카드로 이동시킬 수 있다. The case where the data copyless file movement can be applied includes the case where the movement target file is stored on the
또한, 이동 대상 파일이 네트워크상의 다른 시스템(304)에 위치한 경우 네트 워크 카드를 통해 수신되는 파일을 시스템 내의 디스크로 이동(312)시키거나 네트워크상의 다른 시스템으로 재송신(313)하는 경로가 가능하다.In addition, when the file to be moved is located on another
즉, 본 발명은 시스템 내에 존재하는 디스크와 네트워크 카드 간의 자유로운 파일 이동을 제공할 수 있다. 여기서, 소스 디바이스(303, 304)와 목적 디바이스(301, 302)가 서로 동일할 수도 있다.That is, the present invention can provide free file movement between a disk and a network card existing in the system. Here, the
상기와 같이 데이터가 사용자 영역으로 복사되지 않고도 네트워크와 디스크 간의 자유로운 파일 이동이 가능하도록 하기 위해서는, 디스크로부터 데이터를 읽어오기 위한 읽기 모듈(306)과 디스크로 데이터를 쓰기 위한 쓰기 모듈(308) 그리고 네트워크로부터 데이터를 수신하기 위한 수신 모듈(307)과 네트워크로 데이터를 송신하기 위한 송신 모듈(309) 각각의 데이터 처리 과정이 수반되어야 한다. In order to enable free file movement between the network and the disk without data being copied to the user area as described above, a
이때, 상기 네 가지 구성요소(306 내지 309) 간의 기능 연결을 위해서, 상호 간에 디바이스를 식별할 수 있도록 하는 기술자(descriptor)를 이용하고 소스 디바이스로부터 목적 디바이스로 데이터를 가져오기 위해 할당된 버퍼 페이지를 공유한다.At this time, for the functional connection between the four components (306 to 309), using a descriptor that can identify the device with each other and assign the buffer page allocated for bringing data from the source device to the destination device. Share.
즉, 소스 디바이스용으로 할당된 버퍼 페이지는 소스 디바이스로부터 파일의 일부 데이터를 전달받은 후, 중앙처리장치에 의한 복사 과정 없이(커널 영역으로부터 사용자 영역으로의 복사 과정 없이) 원하는 목적 디바이스로 상기 전달받은 데이터를 넘겨주기 위해 해당 출력 처리 모듈로 전달한다. 이때, 사용자 영역과 커널 영역 간의 중앙처리장치에 의한 데이터 복사 과정이 존재하지 않으므로, 사용자 영역에서의 시스템 콜 호출 과정 역시 불필요하다.That is, the buffer page allocated for the source device receives some data of the file from the source device, and then transfers the data to the desired destination device without copying by the central processing unit (without copying from the kernel area to the user area). Pass it to the corresponding output processing module to pass the data. In this case, since there is no data copying process by the central processing unit between the user area and the kernel area, the system call call process in the user area is also unnecessary.
여기서, 버퍼 페이지(204)를 공유하기 위한 설정 변경 과정(커널에 의해 수행됨)을 상세히 살펴보면 다음과 같다.Here, the configuration change process (performed by the kernel) for sharing the buffer page 204 will be described in detail.
버퍼 페이지(204)의 공유를 위한 설정 변경 과정은 커널 영역의 페이지 캐쉬(page cache)에 해당 페이지를 추가하고 삭제하는 과정과, 페이지가 가지는 각 이동 대상 파일에 대한 정보를 변경하는 과정을 포함한다. The configuration change process for sharing the buffer page 204 includes adding and deleting a corresponding page to a page cache of a kernel region, and changing information about each moving target file of the page. .
디스크/네트워크로부터 데이터를 읽어오기 위한 읽기 모듈(306)과 수신 모듈(307)은 페이지 할당시, 기존 페이지와 동일한 방식으로 페이지 캐쉬에 새로운 페이지를 할당(추가)한다. 이때, 수신 모듈(307)의 경우에는 네트워크로 데이터를 전송하기 위한 송신 모듈(309)을 호출하여 공유된 버퍼 페이지(204)의 데이터를 전송한 후에 상기 페이지 캐쉬에 추가된 페이지를 해제하는 과정을 함께 수행한다. 이는, 네트워크를 통한 데이터 송/수신 과정에서는 페이지 캐싱이 불필요하기 때문이다.The
한편, 디스크로 데이터를 쓰기 위한 쓰기 모듈(308)은 읽기 모듈(306) 또는 수신 모듈(307)로부터 넘겨받은 페이지를 사용하기 이전에 기존 페이지 캐쉬에 추가된 해당 페이지(버퍼 페이지임)를 해제한다. 이는, 동일한 페이지가 서로 다른 디바이스에 의해 페이지 캐쉬로서 사용됨에 따라 발생할 수 있는 시스템상의 문제를 방지하기 위함이다. 그러므로 페이지 캐쉬에 추가된 기존의 페이지를 해제한 후, 목적 디바이스를 위한 파일 정보로 해당 페이지의 데이터를 변경하는 과정을 포함한다. 따라서 소스 디바이스와 목적 디바이스가 모두 디스크인 경우에는 목적 디바이스를 위한 페이지만이 페이지 캐쉬에 존재하게 된다.Meanwhile, the
도 4 는 본 발명에 따른 데이터 무 복사 파일 이동 방법에 대한 일실시예 흐름도이다.4 is a flowchart illustrating an embodiment of a method for moving a data copyless file according to the present invention.
먼저, 응용 프로그램으로부터 디바이스 간의 파일 이동을 요청받음에 따라 커널이 커널 영역 내에 소스 디바이스용의 버퍼 페이지를 할당한다(401). 이때, 상기 할당된 버퍼 페이지(204)는 커널 영역의 페이지 캐쉬에 추가된다. First, in response to a request for file movement between devices from an application program, the kernel allocates a buffer page for a source device in the kernel region (401). At this time, the allocated buffer page 204 is added to the page cache of the kernel region.
그리고 커널이 상기 할당된 버퍼 페이지에 소스 디바이스에 저장된 데이터를 직접 메모리 접근 방식에 따라 복사한다(402). 이때, 상기 소스 디바이스가 네트워크 카드인 경우에는 이동 대상 파일의 데이터가 소켓 버퍼로 직접 메모리 접근 방식에 의해 1차 복사된 후에, 중앙처리장치에 의해 상기 소켓 버퍼로부터 상기 버퍼 페이지로 2차 복사된다.The kernel copies the data stored in the source device to the allocated buffer page according to a direct memory access method (402). In this case, when the source device is a network card, the data of the moving object file is first copied to the socket buffer by a direct memory access method, and then secondly copied from the socket buffer to the buffer page by the central processing unit.
이후, 커널이 상기 버퍼 페이지에 사용 가능한 공간이 없거나 혹은 이동 대상 파일의 모든 데이터가 상기 버퍼 페이지로 복사되었는지의 여부를 판단한다(403). 상기 판단 결과(403), 상기 버퍼 페이지에 사용 가능한 공간이 없거나 혹은 모든 데이터가 복사되었을 경우 다음 과정으로 진행한다. 반면에, 상기 판단 결과(403), 상기 버퍼 페이지에 사용 가능한 공간이 남았거나 데이터 복사가 완료되지 않았을 경우 상기 버퍼 페이지의 오프셋을 조절한 후(404), 상기 소스 디바이스로부터 데이터를 복사하는 과정(402)으로 진행한다.Thereafter, the kernel determines whether there is no space available in the buffer page or whether all data of the moving target file has been copied to the buffer page (403). As a result of the
이후, 커널이 상기 버퍼 페이지를 상기 커널 영역의 페이지 캐쉬로부터 제거하고, 페이지 관리 정보에 대한 변경 과정을 수행한다(405). 이는, 상기 버퍼 페이지를 공유함에 따른 시스템상의 문제 발생을 방지하기 위한 것이다. 상기 설정 변 경 과정 수행 결과로 상기 버퍼 페이지는 변경된 정보를 유지하면서 목적 디바이스용 버퍼 페이지로서 상기 페이지 캐쉬에 추가된다.Thereafter, the kernel removes the buffer page from the page cache of the kernel region and performs a change process on page management information (405). This is to prevent a system problem caused by sharing the buffer page. As a result of performing the configuration change process, the buffer page is added to the page cache as a buffer page for the target device while maintaining the changed information.
이후, 커널이 상기 버퍼 페이지의 데이터를 목적 디바이스로 직접 메모리 접근 방식에 따라 복사한다(406). 이때, 목적 디바이스가 네트워크 카드인 경우에는 상기 데이터가 중앙처리장치에 의해 소켓 버퍼로 1차 복사된 후, 직접 메모리 접근 방식에 의해 상기 소켓 버퍼로부터 목적 디바이스로 2차 복사된다.Thereafter, the kernel copies the data of the buffer page to the target device according to a direct memory approach (406). In this case, when the target device is a network card, the data is first copied to the socket buffer by the central processing unit, and then secondly copied from the socket buffer to the target device by a direct memory approach.
이후, 커널이 이동 대상 파일의 모든 데이터가 소스 디바이스로부터 목적 디바이스로 복사되었는지의 여부를 판단하여(407) 복사가 완료된 경우에는 종료하고(사용자 영역으로 결과 회신), 복사가 완료되지 못하였을 경우에는 총 처리대상 데이터의 사이즈를 변경한 후(408) 소스 디바이스용 버퍼 페이지를 할당하는 과정(401)으로 진행한다.Thereafter, the kernel determines whether all data in the movement target file has been copied from the source device to the destination device (407), and if the copy is completed (results return to the user area), if the copy is not completed After changing the size of the total data to be processed (408), the process proceeds to step 401 of allocating a buffer page for the source device.
상술한 바와 같은 본 발명의 방법은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 형태로 기록매체(씨디롬, 램, 롬, 플로피 디스크, 하드 디스크, 광자기 디스크 등)에 저장될 수 있다. 이러한 과정은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있으므로 더 이상 상세히 설명하지 않기로 한다.As described above, the method of the present invention may be implemented as a program and stored in a recording medium (CD-ROM, RAM, ROM, floppy disk, hard disk, magneto-optical disk, etc.) in a computer-readable form. Since this process can be easily implemented by those skilled in the art will not be described in more detail.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.The present invention described above is capable of various substitutions, modifications, and changes without departing from the technical spirit of the present invention for those skilled in the art to which the present invention pertains. It is not limited by the drawings.
상기와 같은 본 발명은, 사용자 영역과 커널 영역 사이의 데이터 복사 과정을 제거하고 시스템 콜 호출 및 그로 인한 프로세스의 콘테스트 스위칭의 횟수를 감소시킴으로써, 중앙처리장치(CPU)의 가용성을 높이고 전체 성능을 향상시킬 수 있는 효과가 있다.As described above, the present invention eliminates the process of copying data between user space and kernel space, and reduces the number of system call calls and consequent switching of a process, thereby increasing the availability of a central processing unit (CPU) and improving overall performance. It can be effected.
또한, 본 발명은 별도의 지정된 공유 메모리 영역을 생성, 관리, 사용하는 것이 아니라, 커널 영역 내에 공유 버퍼 페이지를 할당하여 사용함으로써, 추가적인 비용 부담이 적은 효과가 있다.In addition, the present invention does not create, manage, or use a separate designated shared memory area, but allocates and uses a shared buffer page in the kernel area, thereby reducing the additional cost burden.
Claims (5)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060037836A KR100758272B1 (en) | 2006-04-26 | 2006-04-26 | File movement method supporting data zero-copy technique |
CNB2006101309821A CN100520749C (en) | 2006-04-26 | 2006-12-28 | File movement method supporting data zero-copy technique |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060037836A KR100758272B1 (en) | 2006-04-26 | 2006-04-26 | File movement method supporting data zero-copy technique |
Publications (1)
Publication Number | Publication Date |
---|---|
KR100758272B1 true KR100758272B1 (en) | 2007-09-12 |
Family
ID=38737631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020060037836A KR100758272B1 (en) | 2006-04-26 | 2006-04-26 | File movement method supporting data zero-copy technique |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR100758272B1 (en) |
CN (1) | CN100520749C (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112749112A (en) * | 2020-12-31 | 2021-05-04 | 无锡众星微系统技术有限公司 | Hardware flow structure |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101150488B (en) * | 2007-11-15 | 2012-01-25 | 曙光信息产业(北京)有限公司 | A receiving method for zero copy network packet |
CN101304373B (en) * | 2008-06-25 | 2011-03-02 | 中兴通讯股份有限公司 | Method and system for implementing high-efficiency transmission chunk data in LAN |
EP2312807B1 (en) * | 2008-08-04 | 2018-11-14 | ZTE Corporation | Method and system for enabling zero-copy transmission of streaming media data |
CN103136115B (en) * | 2011-11-23 | 2015-08-19 | 英业达集团(天津)电子技术有限公司 | The method and system of request access zero-copy high-speed cache |
CN103257936B (en) * | 2012-02-17 | 2016-03-02 | 联想(北京)有限公司 | EMS memory mappings method and memory-mapped module |
CN103412950B (en) * | 2013-08-28 | 2016-06-22 | 浙江大学 | The method of accelerating space large data files read or write speed |
CN106598752B (en) * | 2016-11-15 | 2020-05-12 | 北京大学深圳研究生院 | Remote zero-copy method |
CN112114748B (en) * | 2020-09-02 | 2022-10-25 | 厦门安胜网络科技有限公司 | Separation method and system for cold and hot data |
CN113746897B (en) * | 2021-07-28 | 2024-08-13 | 浪潮电子信息产业股份有限公司 | File transmission method, device, equipment and storage medium |
CN114610660A (en) * | 2022-03-01 | 2022-06-10 | Oppo广东移动通信有限公司 | Method, device and system for controlling interface data |
CN115934323B (en) * | 2022-12-02 | 2024-01-19 | 北京首都在线科技股份有限公司 | Cloud computing resource calling method and device, electronic equipment and storage medium |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20000038076A (en) | 1998-12-03 | 2000-07-05 | 정선종 | Method for zero-copy message passing |
KR20000065846A (en) | 1999-04-09 | 2000-11-15 | 구자홍 | Method for zero-copy between kernel and user in operating system |
KR20050065133A (en) | 2003-12-24 | 2005-06-29 | 한국전자통신연구원 | Network card having zero-copy transmission function, server and method thereof |
KR20070031529A (en) | 2005-09-15 | 2007-03-20 | 삼성전자주식회사 | Method for large capacity data transmission using kernel level function |
-
2006
- 2006-04-26 KR KR1020060037836A patent/KR100758272B1/en not_active IP Right Cessation
- 2006-12-28 CN CNB2006101309821A patent/CN100520749C/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20000038076A (en) | 1998-12-03 | 2000-07-05 | 정선종 | Method for zero-copy message passing |
KR20000065846A (en) | 1999-04-09 | 2000-11-15 | 구자홍 | Method for zero-copy between kernel and user in operating system |
KR20050065133A (en) | 2003-12-24 | 2005-06-29 | 한국전자통신연구원 | Network card having zero-copy transmission function, server and method thereof |
KR20070031529A (en) | 2005-09-15 | 2007-03-20 | 삼성전자주식회사 | Method for large capacity data transmission using kernel level function |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112749112A (en) * | 2020-12-31 | 2021-05-04 | 无锡众星微系统技术有限公司 | Hardware flow structure |
CN112749112B (en) * | 2020-12-31 | 2021-12-24 | 无锡众星微系统技术有限公司 | Hardware flow structure |
Also Published As
Publication number | Publication date |
---|---|
CN101063963A (en) | 2007-10-31 |
CN100520749C (en) | 2009-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100758272B1 (en) | File movement method supporting data zero-copy technique | |
CN111221758B (en) | Method and computer device for processing remote direct memory access request | |
US10120586B1 (en) | Memory transaction with reduced latency | |
US7707337B2 (en) | Object-based storage device with low process load and control method thereof | |
EP0889623B1 (en) | System and method for efficient remote disk I/O | |
US7275123B2 (en) | Method and apparatus for providing peer-to-peer data transfer within a computing environment | |
CN112422615A (en) | Communication method and device | |
US8788726B2 (en) | Data transmission system, storage medium and data transmission program | |
EP1528478A1 (en) | Generalized addressing scheme for remote direct memory access enabled devices | |
CN109478171B (en) | Improving throughput in openfabics environment | |
US8250260B2 (en) | Method, arrangement, data processing program and computer program product for exchanging message data in a distributed computer system | |
US20050273649A1 (en) | Apparatus for high-speed streaming data transmission using PMEM controller and method thereof | |
CN102291298A (en) | Efficient computer network communication method oriented to long message | |
KR100936918B1 (en) | TCP Offload Engine Apparatus and Method for System Call Processing for Static File Transmission | |
CN113296691A (en) | Data processing system, method, device and electronic equipment | |
KR100653178B1 (en) | Apparatus and method for creation and management of tcp transmission information based on toe | |
KR100449806B1 (en) | A network-storage apparatus for high-speed streaming data transmission through network | |
KR100576721B1 (en) | Network card having zero-copy transmission function, server and method thereof | |
US10289550B1 (en) | Method and system for dynamic write-back cache sizing in solid state memory storage | |
KR20150048028A (en) | Managing Data Transfer | |
CN117591037B (en) | Virtualized data access system, method, device and server | |
KR20000065846A (en) | Method for zero-copy between kernel and user in operating system | |
JP2003316589A (en) | Real memory using method | |
WO2024169157A1 (en) | Live migration method for container, and processor, host, chip and interface card | |
US20240103897A1 (en) | Diversified virtual memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20120831 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20130829 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20140827 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20150827 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20160826 Year of fee payment: 10 |
|
LAPS | Lapse due to unpaid annual fee |