KR102442118B1 - Method and apparatus for offloading file i/o based on remote diret memory access using unikernel - Google Patents
Method and apparatus for offloading file i/o based on remote diret memory access using unikernel Download PDFInfo
- Publication number
- KR102442118B1 KR102442118B1 KR1020190086140A KR20190086140A KR102442118B1 KR 102442118 B1 KR102442118 B1 KR 102442118B1 KR 1020190086140 A KR1020190086140 A KR 1020190086140A KR 20190086140 A KR20190086140 A KR 20190086140A KR 102442118 B1 KR102442118 B1 KR 102442118B1
- Authority
- KR
- South Korea
- Prior art keywords
- file
- output
- input
- file input
- unikernel
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Abstract
본 발명에 따른 유니커널을 이용하는 원격 직접 메모리 접근(Remote Direct Memory Access, RDMA) 기반 파일 입출력 오프로드 장치의 동작 방법은, 상기 유니커널의 응용 프로그램에서 파일 입출력 커널 함수를 호출하는 단계, 상기 파일 입출력 커널 함수에서 파일 입출력 정보를 생성하는 단계, 상기 유니커널에서 상기 파일 입출력 정보를 리눅스로 전송하는 단계, 상기 리눅스에서 상기 파일 입출력 정보를 이용하여 파일 입출력 함수를 구성 및 호출하는 단계, 및 상기 파일 입출력 함수에서 상기 파일 입출력 정보에 대응하는 파일 입출력 요청을 파일 서버로 전송하는 단계를 포함할 수 있다.The method of operating a file input/output offload device based on remote direct memory access (RDMA) using a unikernel according to the present invention comprises the steps of calling a file input/output kernel function in the unikernel application program, the file input/output generating file input/output information from a kernel function, transmitting the file input/output information from the unikernel to Linux, constructing and calling a file input/output function using the file input/output information in Linux, and the file input/output The function may include transmitting a file input/output request corresponding to the file input/output information to the file server.
Description
본 발명은 유니커널(Unikernel)을 이용하는 RDMA(Remote Direct Memory Access) 기반 파일 입출력 오프로드 방법 및 장치에 관한 것이다.The present invention relates to a remote direct memory access (RDMA) based file input/output offload method and apparatus using a unikernel.
일반적으로, 유니커널은 별도의 운영 체제없이 실행할 수 있는 실행 가능한 이미지이다. 이러한 이미지는 응용 프로그램 코드와 대응하는 응용 프로그램에 필요한 모든 운영 체제 기능을 포함한다. 유니커널은 애플리케이션 코드를 대응하는 애플리케이션 구동에 필요한 최소한의 운영체제 요소와 결합함으로써, 부팅 시간과 용량 및 공격 표면을 크게 줄일 수 있다. 유니커널은 기존 운영 체제보다 크기가 작아 훨씬 신속하고 안전하게 시작 및 종료 할 수 있다. 유니커널은 파일시스템과 같은 크기가 큰 모듈을 자신의 라이브러리에 포함하지 않기 때문에 파일 입출력을 처리하기 위해 오프로드하는 방식을 채택한다. 하지만, 이러한 유니커널의 IO(Input/Output) 오프로드의 처리는, 호스트 서버의 프록시에 파일 입출력 명령을 전송하고 프록시가 수행한 파일 입출력 결과를 프록시로부터 복사 받아 사용하기 때문에 유니커널의 장점인 신속한 처리를 상쇄시키는 결과를 초래할 수 있다.In general, a unikernel is an executable image that can be run without a separate operating system. These images contain the application code and all operating system functions required by the corresponding applications. Unikernel can significantly reduce boot time, capacity, and attack surface by combining application code with the minimum operating system elements required to run the corresponding application. Unikernels are smaller than traditional operating systems and can be started up and shut down much faster and more safely. Unikernel adopts offloading method to handle file I/O because it does not include large size modules such as file system in its library. However, this unikernel's IO (Input/Output) offload processing transmits file input/output commands to the proxy of the host server and copies the file input/output results performed by the proxy from the proxy. This may result in offsetting the treatment.
본 발명의 목적은 유니커널에서 고속으로 파일 입출력을 수행할 수 있는 파일 입출력 오프로드 방법 및 장치를 제공하는데 있다.An object of the present invention is to provide a file input/output offload method and apparatus capable of performing high-speed file input/output in a unikernel.
본 발명의 목적은 유니커널 응용 프로그램에 파일 입출력을 지원하기 위해 리눅스에 파일 입출력을 오프로드함으로써 파일 서버의 NVMe 디바이스상의 데이터를 RDMA를 통하여 유니커널 응용 프로그램의 버퍼로 고속 입출력하는 파일 입출력 오프로드 방법 및 장치를 제공하는데 있다.An object of the present invention is to offload file I/O to Linux to support file I/O to a unikernel application program, so that the data on the NVMe device of the file server is high-speed input/output to the buffer of the unikernel application program through RDMA. and to provide an apparatus.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재들로부터 당업자에게 명확하게 이해될 수 있을 것이다The technical problems of the present invention are not limited to the technical problems mentioned above, and other technical problems not mentioned will be clearly understood by those skilled in the art from the following description.
본 발명의 실시 예에 따른 유니커널을 이용하는 원격 직접 메모리 접근(Remote Direct Memory Access; RDMA) 기반 파일 입출력 오프로드 장치의 동작 방법은, 상기 유니커널의 응용 프로그램에서 파일 입출력 커널 함수를 호출하는 단계; 상기 파일 입출력 커널 함수에서 파일 입출력 정보를 생성하는 단계; 상기 유니커널에서 상기 파일 입출력 정보를 리눅스로 전송하는 단계; 상기 리눅스에서 상기 파일 입출력 정보를 이용하여 파일 입출력 함수를 구성 및 호출하는 단계; 및 상기 파일 입출력 함수에서 상기 파일 입출력 정보에 대응하는 파일 입출력 요청을 파일 서버로 전송하는 단계를 포함할 수 있다.According to an embodiment of the present invention, there is provided a method of operating a remote direct memory access (RDMA) based file input/output offload device using a unikernel, the method comprising: calling a file input/output kernel function in the unikernel application program; generating file input/output information in the file input/output kernel function; transmitting the file input/output information from the unikernel to Linux; constructing and calling a file input/output function using the file input/output information in the Linux; and transmitting, in the file input/output function, a file input/output request corresponding to the file input/output information to a file server.
실시 예에 있어서, 상기 파일 입출력 정보를 생성하는 단계는, 파일 입출력 버퍼에 대한 연속적인 물리 주소 구간을 추출하는 단계; 및 상기 추출된 물리 주소 구간에 대응하는 IO 벡터를 생성하는 단계를 포함할 수 있다.In an embodiment, the generating of the file input/output information includes: extracting a continuous physical address section for the file input/output buffer; and generating an IO vector corresponding to the extracted physical address section.
실시 예에 있어서, 상기 리눅스의 파일 입출력 프록시를 구동하는 단계를 더 포함할 수 있다.In an embodiment, the method may further include driving the Linux file input/output proxy.
실시 예에 있어서, 상기 파일 입출력 프록시에서 상기 유니커널로부터 상기 파일 입출력 정보를 수신하는 단계를 더 포함할 수 있다.In an embodiment, the method may further include receiving the file input/output information from the unikernel at the file input/output proxy.
실시 예에 있어서, 상기 파일 입출력 정보는 파일 입출력 명령, 파일 디스크립터, IO 벡터, 벡터 카운트를 포함하는 것을 특징으로 한다. In an embodiment, the file input/output information includes a file input/output command, a file descriptor, an IO vector, and a vector count.
실시 예에 있어서, 상기 파일 입출력 요청을 파일 서버로 전송하는 단계는, 상기 리눅스의 파일 시스템 스텁에서 상기 IO 벡터의 개수에 대응하는 상기 입출력 요청을 상기 파일 서버로 전송하는 단계를 포함할 수 있다.In an embodiment, the step of transmitting the file input/output request to the file server may include transmitting the input/output request corresponding to the number of the IO vectors in the file system stub of the Linux to the file server.
실시 예에 있어서, 상기 리눅스에서 상기 파일 서버로부터 상기 파일 입출력 요청에 대한 결과를 수신하는 단계를 더 포함할 수 있다.In an embodiment, the method may further include receiving a result of the file input/output request from the file server in the Linux.
실시 예에 있어서, 상기 파일 입출력 요청에 대한 결과가 성공일 때, 상기 리눅스에서 상기 유니커널로 상기 입출력 요청에 대한 결과를 전송하는 단계를 더 포함할 수 있다.In an embodiment, when the result of the file input/output request is successful, the method may further include transmitting a result of the input/output request from the Linux to the unikernel.
실시 예에 있어서, 상기 파일 입출력 요청에 응답하여 상기 파일 서버의 데이터를 RDMA(Remote Direct Memory Access) 방식으로 상기 유니커널의 메모리로 입출력시키는 단계를 포함할 수 있다.In an embodiment, in response to the file input/output request, the method may include inputting and outputting data of the file server to the memory of the unikernel in a Remote Direct Memory Access (RDMA) method.
본 발명의 실시 예에 따른 유니커널을 이용하는 원격 직접 메모리 접근(Remote Direct Memory Access; RDMA) 기반 파일 입출력 오프로드 장치의 동작 방법은, 파일 서버에서 유니커널 시스템의 리눅스로부터 파일 입출력 요청을 수신하는 단계; 파일 서버에서 상기 파일 입출력 요청에 대응하는 파일 정보를 파일시스템에서 추출하는 단계; 상기 파일 정보를 이용하여 비휘발성 메모리에서 데이터를 입출력하는 단계; 및 상기 입출력된 데이터를 RDMA 엔진을 통하여 상기 유니커널 시스템으로 전송하는 단계를 포함할 수 있다.A method of operating a remote direct memory access (RDMA) based file input/output offload device using a unikernel according to an embodiment of the present invention comprises: receiving a file input/output request from Linux of a unikernel system in a file server; ; extracting file information corresponding to the file input/output request from a file system in a file server; inputting and outputting data from a non-volatile memory using the file information; and transmitting the input/output data to the unikernel system through an RDMA engine.
실시 예에 있어서, 상기 파일 서버에서 상기 유니커널 시스템의 리눅스로 상기 파일 입출력 요청에 대한 파일 입출력 결과를 전송하는 단계를 더 포함할 수 있다. In an embodiment, the method may further include transmitting a file input/output result in response to the file input/output request from the file server to the Linux of the unikernel system.
실시 예에 있어서, 상기 파일 정보를 상기 파일 시스템에서 추출하는 단계는, 상기 파일 입출력 요청에 포함된 파일 디스크럽터에 대응하는 파일로부터 파일 명령을 수행하기 위한 상기 파일 정보를 추출하는 단계를 포함할 수 있다.In an embodiment, the extracting of the file information from the file system may include extracting the file information for executing a file command from a file corresponding to a file descriptor included in the file input/output request. have.
실시 예에 있어서, 상기 파일 서버에서 상기 비휘발성 메모리의 상기 입출력된 데이터를 RDMA NIC(Network Interface Card)로 복사를 명령하는 단계를 더 포함할 수 있다.In an embodiment, the method may further include instructing the file server to copy the input/output data of the non-volatile memory to an RDMA network interface card (NIC).
실시 예에 있어서, 상기 RDMA 엔진은 상기 입출력된 데이터를 상기 유니커널 시스템의 유니커널의 물리 메모리로 RDMA 방식으로 전송하는 것을 특징으로 한다.In an embodiment, the RDMA engine transmits the input/output data to a unikernel physical memory of the unikernel system in an RDMA manner.
본 발명의 실시 예에 따른 원격 직접 메모리 접근(Remote Direct Memory Access; RDMA) 기반 파일 입출력 오프로드 장치는: 적어도 하나의 프로세서; 및 상기 적어도 하나의 프로세서에 실행되는 유니커널 및 리눅스를 저장하는 메모리를 포함하고, 상기 유니커널은, 응용 프로그램에서 파일 입출력 커널 함수를 호출하고, 상기 파일 입출력 커널 함수에서 파일 입출력 정보를 생성하고; 상기 유니커널에서 상기 파일 입출력 정보를 리눅스로 전송하고, 상기 리눅스는 상기 파일 입출력 정보를 이용하여 파일 입출력 함수를 구성 및 호출하고; 및 상기 파일 입출력 함수에서 상기 파일 입출력 정보에 대응하는 파일 입출력 요청을 파일 서버로 전송하는 것을 특징으로 한다.A remote direct memory access (RDMA) based file input/output offload device according to an embodiment of the present invention includes: at least one processor; and a memory for storing a unikernel and Linux that are executed in the at least one processor, wherein the unikernel calls a file input/output kernel function from an application program, and generates file input/output information from the file input/output kernel function; the unikernel transmits the file input/output information to Linux, and the Linux constructs and calls a file input/output function using the file input/output information; and transmitting a file input/output request corresponding to the file input/output information in the file input/output function to the file server.
실시 예에 있어서, 상기 리눅스는 파일 입출력 프록시를 구동하여 상기 파일 입출력 정보를 상기 유니커널로부터 수신하는 것을 특징으로 한다.In an embodiment, the Linux operates a file input/output proxy to receive the file input/output information from the unikernel.
실시 예에 있어서, 상기 리눅스는 상기 파일 입출력 정보를 이용하여 파일 디스크립터에 대응하는 파일에 대하여 IO 벡터 크기만큼 IO 벡터의 물리 주소로 입출력 명령을 상기 파일 서버로 전송하는 것을 특징으로 한다.In an embodiment, the Linux uses the file input/output information to transmit an input/output command to the file server as much as an IO vector size to a physical address of an IO vector for a file corresponding to a file descriptor.
실시 예에 있어서, 상기 리눅스는 입출력 명령에 대응하는 결과는 상기 파일 서버로부터 수신하는 것을 특징으로 한다.In an embodiment, the Linux receives the result corresponding to the input/output command from the file server.
실시 예에 있어서, 상기 파일 서버로부터 상기 입출력 명령에 대응하는 데이터를 RDMA 방식으로 입출력하는 RDMA NIC를 더 포함하는 것을 특징으로 한다.In an embodiment, the method further comprises an RDMA NIC for inputting and outputting data corresponding to the input/output command from the file server in an RDMA manner.
실시 예에 있어서, 상기 리눅스는 상기 파일 서버의 저장 장치에 대한 디바이스 드라이버로 이용되는 것을 특징으로 한다.In an embodiment, the Linux is used as a device driver for the storage device of the file server.
본 발명의 실시 예에 따른 파일 입출력 오프로드 방법 및 장치는, 유니커널에서 고속으로 입출력을 수행하기 위해 유니커널에서 발생하는 입출력을 리눅스에 오프로드하며, 오프로드된 파일 입출력은 리눅스와 파일 서버를 통해 NVMe에 저장되어 있는 파일의 데이터를 RDMA 방식으로 유니커널의 메모리에 입출력될 수 있다.A file input/output offload method and apparatus according to an embodiment of the present invention offload input/output generated in the unikernel to Linux in order to perform input/output in the unikernel at high speed, and the offloaded file input/output is performed between Linux and a file server Through the RDMA method, the data of the file stored in the NVMe can be input/output to the unikernel memory.
본 발명의 실시 예에 파일 입출력 오프로드 방법 및 장치는, 유니커널 IO는 RDMA를 통하여 네트워크 상의 NVMe 디바이스 데이터 스토리지(Storage)로 접근하기 위해 리눅스에 유니커널의 IO를 오프로드하여 구현된다. In an embodiment of the present invention, the file input/output offload method and apparatus are implemented by offloading the unikernel IO to Linux to access the NVMe device data storage on the network through RDMA.
본 발명의 실시 예에 파일 입출력 오프로드 방법 및 장치는, 사용자로 하여금 네트워크 상에서 원격으로 디바이스를 접근하고, 로컬 머신에 접속된 것처럼 모든 디스크 오퍼레이션을 수행하게 할 수 있다.The file input/output offload method and apparatus according to an embodiment of the present invention allow a user to remotely access a device on a network and perform all disk operations as if connected to a local machine.
본 발명의 실시 예에 따른 파일 입출력 오프로드 방법 및 장치는, 유니커널에서 응용 프로그램이 리눅스 및 파일 서버에 파일 입출력 오프로드하고 RDMA 기반으로 고속의 파일 입출력을 수행할 수 있다.A file input/output offload method and apparatus according to an embodiment of the present invention enable an application program to offload file input/output to Linux and a file server in a unikernel and perform high-speed file input/output based on RDMA.
본 발명의 실시 예에 따른 파일 입출력 오프로드 방법 및 장치는, 유니커널에서 파일 입출력 환경을 구축하는데 있어서, 유니커널 환경에서는 구축하기 어려운 범용 운영체제의 소프트웨어 스택(File system, Network File System)을 이용한 것으로 유니커널 측면에서 리눅스로 파일 입출력을 오프로드하고, RDMA(Remote Direct Memory Access)를 통하여 고속으로 파일을 입출력할 수 있다.The file input/output offload method and apparatus according to an embodiment of the present invention, in building a file input/output environment in a unikernel, uses a software stack (File system, Network File System) of a general-purpose operating system that is difficult to build in a unikernel environment. In terms of unikernel, file I/O can be offloaded to Linux, and file I/O can be performed at high speed through RDMA (Remote Direct Memory Access).
본 발명의 실시 예에 따른 파일 입출력 오프로드 방법 및 장치는, 유니커널에서 고속의 파일 입출력을 수행하기 위해 범용 운영체제에 입출력을 오프로드함으로써 파일시스템과 같이 무거운 소프트웨어 스택을 유니커널에서 구성하지 않을 수 있다.The file input/output offload method and apparatus according to an embodiment of the present invention may not configure a heavy software stack such as a file system in the unikernel by offloading I/O to a general-purpose operating system in order to perform high-speed file input/output in the unikernel. have.
본 발명의 실시 예에 따른 파일 입출력 오프로드 방법 및 장치는, 한 시스템 내에서 다수의 유니커널 응용 프로그램이 구동되어도 각각의 유니커널에서 파일 시스템을 구축할 필요 없이 다수의 유니커널을 경량의 크기와 최적의 수행을 지원하도록 커널 라이브러리를 구성할 수 있다.The file input/output offload method and apparatus according to an embodiment of the present invention provide a light-weight size and low-profile configuration for a plurality of unikernels without the need to build a file system in each unikernel even when a plurality of unikernel applications are run in one system. Kernel libraries can be configured to support optimal performance.
이하에 첨부되는 도면들은 본 실시 예에 관한 이해를 돕기 위한 것으로, 상세한 설명과 함께 실시 예들을 제공한다. 다만, 본 실시예의 기술적 특징이 특정 도면에 한정되는 것은 아니며, 각 도면에서 개시하는 특징들은 서로 조합되어 새로운 실시 예로 구성될 수 있다.
도 1은 본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)를 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 입출력 오프로드 장치(10)의 유니커널에서 리눅스 및 파일 서버(200)로 파일 입출력 오프로드(IO Offload)하는 과정을 예시적으로 보여주는 래더 다이어그램이다.
도 3은 본 발명의 실시 예에 따른 유니커널 시스템(100)의 유니커널(110)에서 리눅스(120)로 파일 입출력 오프로드 정보를 전송하는 과정을 예시적으로 보여주는 도면이다.
도 4는 본 발명의 실시 예에 따른 유니커널의 응용 프로그램에 의한 읽기 동작에 대한 파일 입출력 오프로드 과정을 예시적으로 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 유니커널의 응용 프로그램에서 리눅스에 파일 입출력을 오프로드하고 파일 서버를 통하여 파일 입출력하는 과정을 예시적으로 보여주는 흐름도이다.
도 6은 본 발명의 실시 예에 따른 유니커널과 리눅스/파일 서버에 파일 입출력 오프로드를 수행하기 위한 파일 입출력 오프로드 장치(10)를 좀 더 자세하게 보여주는 도면이다.
도 7은 본 발명의 실시 예에 따른 전자 장치(1000)를 예시적으로 보여주는 도면이다.The accompanying drawings below are provided to help understanding of the present embodiment, and provide embodiments together with detailed description. However, the technical features of the present embodiment are not limited to specific drawings, and features disclosed in each drawing may be combined with each other to constitute a new embodiment.
1 is a diagram exemplarily showing a file input/
FIG. 2 is a ladder diagram exemplarily illustrating a process of file I/O offloading from the unikernel of the input/
3 is a diagram exemplarily showing a process of transmitting file input/output offload information from the unikernel 110 to the Linux 120 of the
4 is a diagram exemplarily illustrating a file input/output offload process for a read operation by a unikernel application program according to an embodiment of the present invention.
5 is a flowchart exemplarily illustrating a process of offloading file input/output to Linux and file input/output through a file server in a unikernel application program according to an embodiment of the present invention.
6 is a diagram showing in more detail the file input/
7 is a diagram exemplarily showing an
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.Hereinafter, the content of the present invention will be described clearly and in detail to the extent that a person skilled in the art can easily implement it using the drawings.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. 어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 혹은 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. Since the present invention can have various changes and can have various forms, specific embodiments are illustrated in the drawings and described in detail in the text. However, this is not intended to limit the present invention to the specific disclosed form, it should be understood to include all modifications, equivalents and substitutes included in the spirit and scope of the present invention. Terms such as first, second, etc. may be used to describe various elements, but the elements should not be limited by the terms. The above terms may be used for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, a first component may be referred to as a second component, and similarly, the second component may also be referred to as a first component. When an element is referred to as being “connected” or “connected” to another element, it is understood that it may be directly connected or connected to the other element, but other elements may exist in between. it should be On the other hand, when it is said that a certain element is "directly connected" or "directly connected" to another element, it should be understood that the other element does not exist in the middle.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 혹은 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 혹은 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것들의 존재 혹은 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.The terms used in the present application are only used to describe specific embodiments, and are not intended to limit the present invention. The singular expression includes the plural expression unless the context clearly dictates otherwise. In the present application, terms such as "comprise" or "have" are intended to designate the existence of an embodied feature, number, step, operation, component, part, or combination thereof, but one or more other features or numbers , it should be understood that it does not preclude the possibility of the existence or addition of steps, operations, components, parts, or combinations thereof. Unless defined otherwise, all terms used herein, including technical and scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries should be interpreted as having meanings consistent with the context of the related art, and unless explicitly defined in the present application, they are not to be interpreted in an ideal or excessively formal meaning. .
일반적으로, 유니커널 내에서 존재하는 응용 프로그램의 버퍼에 대해 할당된 가상 주소(Virtual Address)와 물리 주소(Physical Address)의 매핑 관계는, 운영체제의 고유한 방법으로써 리눅스에서 유니커널 내 버퍼에 대한 가상 주소를 이용하여 물리 메모리에 접근할 수 없다. 또한, 리눅스에서 유니커널 내 버퍼의 시작 지점에 대한 가상 주소에 대응하는 물리 주소를 알더라도, 버퍼의 가상 주소에서 물리 주소로의 매핑이 연속적으로 되지 않는 한 버퍼 내 임의의 물리 주소가 획득될수 없다. 즉, 버퍼가 일반적으로 불연속적인 물리 페이지들로 구성되기 때문에, 버퍼 내 임의의 지점에서 대응하는 연속적인 가상 주소에 매핑되는 물리 주소를 획득하는 것은 보장되지 않는다. 따라서, 기존 유니커널은 파일 입출력을 수행하기 위해서 호스트 OS(Operating System) 혹은 파일 서버로부터 입출력 결과를 복사 받고 있다.In general, the mapping relationship between the virtual address and the physical address allocated to the buffer of the application program that exists in the unikernel is a unique method of the operating system, and in Linux, the virtual Physical memory cannot be accessed by address. In addition, even if Linux knows the physical address corresponding to the virtual address of the starting point of the buffer in the unikernel, an arbitrary physical address in the buffer cannot be obtained unless the mapping from the virtual address of the buffer to the physical address is consecutive. . That is, since a buffer is generally composed of discrete physical pages, it is not guaranteed to obtain a physical address that maps to a corresponding contiguous virtual address at any point in the buffer. Therefore, the existing unikernel receives input/output results copied from the host OS (Operating System) or file server to perform file I/O.
파일 입출력을 수행하기 위해서 데이터를 입출력할 메모리 주소가 필요하다.In order to perform file I/O, a memory address to input/output data is required.
본 발명은 유니커널에서 입출력 버퍼의 가상 주소에 매핑되는 물리 페이지들 중 연속되는 물리 페이지의 주소와 크기를 하나의 엘리먼트로 하는 집합과 그 집합의 엘리먼트 개수를 리눅스에 전송할 수 있다. 즉, 유니커널에서 리눅스로 전송되는 파일 입출력 명령은, 유니커널의 데이터에 대한 물리 주소와 크기를 포함하는 IO(Input/Output) 벡터를 전송할 수 있다. 이는 유니커널과 리눅스는 하나의 물리 주소에 대해 자신의 가상 주소를 가지는데, 상대의 가상 주소를 가지고 메모리에 대한 물리 주소를 추출할 수 없기 때문이다.According to the present invention, a set having the address and size of a continuous physical page among physical pages mapped to the virtual address of the input/output buffer in the unikernel as one element and the number of elements in the set can be transmitted to Linux. That is, the file input/output command transmitted from the unikernel to Linux may transmit an IO (Input/Output) vector including a physical address and size of data of the unikernel. This is because Unikernel and Linux have their own virtual address for one physical address, and it is impossible to extract a physical address for memory with the other virtual address.
또한, RDMA(Remote Direct Memory Access)나 DMA(Direct Memory Access)로 데이터를 입출력하는 이유는, 운영체제의 가상 주소가 아닌 실제 메모리의 물리 주소가 필요하기 때문이다. 리눅스는 이러한 물리 주소를 이용하여 파일 서버에서 대응하는 물리 주소로 그 크기만큼 NVMe(Non-Volatile Memory Express) 디바이스 상의 데이터를 RDMA를 통하여 유니커널의 입출력 버퍼에 고속 입출력할 수 있다.In addition, the reason for inputting and outputting data using RDMA (Remote Direct Memory Access) or DMA (Direct Memory Access) is that the physical address of the real memory is required, not the virtual address of the operating system. Using these physical addresses, Linux can high-speed input/output of data on the NVMe (Non-Volatile Memory Express) device to the corresponding physical address in the file server through RDMA to the I/O buffer of the unikernel.
또한, 유니커널의 운영 환경에서 파일 입출력을 필요로 하는 응용프로그램의 성능을 높이기 위해서 고속의 파일 입출력 기능이 필요하다. 본 발명은 시스템의 일부 자원(코어, 메모리)에 리눅스를 설치하고, 설치된 리눅스에 파일 입출력을 오프로드하고, 파일 서버상의 NVMe 디바이스 내 데이터를 RDMA 통하여 고속으로 파일 입출력할 수 있다. In addition, a high-speed file input/output function is required to improve the performance of an application program requiring file input/output in the unikernel operating environment. According to the present invention, Linux is installed on some resources (core, memory) of the system, file input/output is offloaded to the installed Linux, and data in the NVMe device on the file server can be input/output at high speed through RDMA.
예를 들어, 본 발명은 유니커널에서 파일 입출력을 수행하기 위해 시스템의 일부 자원에 리눅스를 설치하여 디바이스 드라이버처럼 이용할 수 있다. 유니커널은 설치된 리눅스로 파일 입출력 오프로드(I/O offload)할 파일 입출력 명령을 전송할 수 있다. 이후 리눅스는 전송받은 파일 입출력 명령 내에 존재하는 유니커널의 물리 주소가 가리키는 메모리에 대해 파일 서버에 파일 입출력을 요청할 수 있다. 파일 서버는 파일 시스템으로부터 NVMe(Non-volatile Memory Express) 디바이스에 저장되어 있는 파일을 접근하기 위한 정보를 추출하고, NVMe의 데이터에 접근하여 입출력을 수행하고, RDMA를 통해 고속으로 유니커널의 물리 주소가 가리키는 메모리로 데이터를 전송할 수 있다.For example, in the present invention, in order to perform file input/output in the unikernel, Linux can be installed on some resources of the system and used as a device driver. Unikernel can send file I/O commands to I/O offload to installed Linux. After that, Linux can request file I/O from the file server for the memory pointed to by the physical address of the unikernel existing in the received file I/O command. The file server extracts information for accessing files stored in NVMe (Non-volatile Memory Express) devices from the file system, accesses NVMe data and performs input/output, and unikernel physical addresses at high speed through RDMA. Data can be transferred to the memory pointed to by .
또한, 본 발명은 유니커널 내에 고속의 파일 입출력을 위해 추가적인 파일 시스템 소프트웨어 스택을 구축할 필요가 없을 뿐만 아니라, 파일 입출력 처리시 커널에서 간섭을 최소화 시킬 수 있다.In addition, according to the present invention, it is not necessary to construct an additional file system software stack for high-speed file input/output in the unikernel, and it is possible to minimize interference in the kernel during file input/output processing.
도 1은 본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)를 예시적으로 보여주는 도면이다. 도 1을 참조하면, 파일 입출력 오프로드 장치(10)는 유니커널 시스템(100) 및 파일 서버(200)를 포함할 수 있다.1 is a diagram exemplarily showing a file input/
유니커널 시스템(100)은 유니커널(110), 리눅스(120), 및 공유 메모리(130)를 포함할 수 있다.The
유니커널(110)은 라이브러리 운영 체제로 구현된 단일 주소 공간을 가진 이미지다. 즉, 응용 프로그램은 필요한 운영 체제의 기능을 라이브러리 형태로 포함하고, 그 이미지 자체가 대응하는 응용 프로그램 만의 특별한 커널이 된다. 유니커널(110)은 사용자 공간과 커널 공간이 단일 주소 공간인 소프트웨어 스택을 갖는다. 유니커널(110)은 단일 공간 주소를 이용하여 커널과 사용자 간의 모드 전환을 제거하고, 데이터 복사를 최소화함으로써 응용 프로그램 성능을 극대화시킬 수 있다. 예를 들어, 유니커널(110)은 MirageOS, POSIX 호환 SW(Software)를 위한 Rump, C++ 용 IncludeOS, HPC(High Performance Computing) 용 Hermitcore 등 일 수 있다.The unikernel 110 is an image with a single address space implemented as a library operating system. That is, the application program includes the necessary operating system functions in the form of a library, and the image itself becomes a special kernel unique to the corresponding application program. The unikernel 110 has a software stack in which user space and kernel space are a single address space. The unikernel 110 can maximize application program performance by eliminating mode switching between the kernel and the user by using a single space address and minimizing data copying. For example, the unikernel 110 may be MirageOS, Rump for POSIX compatible software (Software), IncludeOS for C++, Hermitcore for High Performance Computing (HPC), or the like.
리눅스(120; '제 1 리눅스')는 모놀리식 커널로써, 파일 서버(200)와의 입출력 동작을 수행할 수 있다.Linux 120 ('first Linux') is a monolithic kernel, and may perform input/output operations with the
공유 메모리(130)는 유니커널 메모리(132) 및 RDMA NIC(Remote Direct Memory Access Network Interface Card; 134)를 포함할 수 있다.The shared
파일 서버(200)는 리눅스(220; '제 2 리눅스') 및 메모리(230)를 포함할 수 있다. 여기서 메모리(230)는 비휘발성 메모리(NVMe; 232), RDMA NIC(234)를 포함할 수 있다. 한편, 비휘발성 메모리는 NVMe(Non-Volatile Memory Express) 외에도 다양한 종류의 비휘발성 메모리로 구현될 수 있다고 이해되어야 할 것이다.The
본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는 유니커널(110)에서 고속으로 파일 입출력을 수행할 수 있다.The file input/
파일 입출력 오프로드 장치(10)는 유니커널(110)에서 고속으로 입출력을 수행하기 위해 유니커널(110)에서 발생하는 입출력을 제 1 리눅스(120)에 오프로드할 수 있다. 여기서, 오프로드된 파일 입출력은 제 1 리눅스(120)와 파일 서버(200)를 통해 NVMe(232)에 저장되어 있는 파일의 데이터를 RDMA 방식으로 유니커널(110)의 메모리(132)에 입출력될 수 있다. 실시 예에 있어서, 유니커널 입출력(IO)이 RDMA NIC(134, 234)를 통하여 네트워크 상의 NVMe(232)를 접근하기 위해, 리눅스(120)에 유니커널(110)의 IO를 오프로드할 수 있다. 실시 예에 있어서, 유니커널(110)은 사용자로 하여금 네트워크 상에서 원격으로 NVMe(232)를 접근하고, 로컬 머신에 접속된 것처럼 모든 디스크 오퍼레이션(읽기, 쓰기 등)을 수행할 수 있다.The file input/
정리하면, 본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는 유니커널(110)에서 고속으로 입출력을 수행하기 위하여 유니커널(110)에서 발생하는 입출력을 유니커널 시스템(100) 내부의 리눅스(120)에 오프로드하고, 오프로드된 파일 입출력을 리눅스(120)와 파일 서버(200)를 통해 NVMe(232)에 저장되어 있는 파일의 데이터를 RDMA 방식으로 유니커널 메모리(132)에 입출력할 수 있다.In summary, the file input/
본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는, 유니커널(110)에서 응용 프로그램이 리눅스(120) 및 파일 서버(200)에 파일 입출력 오프로드하고 RDMA 기반으로 고속의 파일 입출력을 수행할 수 있다.In the file input/
본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는, 유니커널 환경에서 구축하기 어려운 범용 운영체제의 소프트웨어 스택(File system, Network File System)을 이용하여 유니커널 측면에서 리눅스로 파일 입출력을 오프로드하고, RDMA를 통하여 고속으로 파일을 입출력할 수 있다.The file input/
본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는, 유니커널(110)에서 고속의 파일 입출력을 수행하기 위해 범용 운영체제에 입출력을 오프로드함으로써 파일시스템과 같이 무거운 소프트웨어 스택을 유니커널(110)에서 구성하지 않을 수 있다.The file input/
본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는, 한 시스템 내에서 다수의 유니커널 응용 프로그램을 구동하더라도 각각의 유니커널에서 파일 시스템을 구축할 필요 없이 다수의 유니커널을 경량의 크기와 최적의 수행을 지원하도록 커널 라이브러리를 구성할 수 있다.The file input/
도 2는 본 발명의 실시 예에 따른 입출력 오프로드 장치(10)의 유니커널에서 리눅스 및 파일 서버(200)로 파일 입출력 오프로드(IO offload)하는 과정을 예시적으로 보여주는 래더 다이어그램이다. 도 2를 참조하면, 파일 입출력 오프로드 과정은 다음과 같이 진행될 수 있다.2 is a ladder diagram exemplarily illustrating a process of file I/O offloading from the unikernel of the input/
유니커널(110)은 다음과 같이 동작할 수 있다. 유니커널(110)은 유니커널의 응용 프로그램을 시작할 수 있다(S111). 유니커널 응용 프로그램은 파일 입출력 함수를 호출할 수 있다(S112). 유니커널(110)은 파일 입출력 버퍼에 대한 연속 물리 주소 구간을 추출하고, 파일 입출력 정보(예를 들어, 파일 입출력 명령 및 IO 벡터)를 생성할 수 있다(S113). 유니커널의 응용 프로그램이 시작되고 수행 중 파일 입출력 함수가 호출되면, 유니커널(110)은 리눅스(120)에 파일 입출력을 오프로드하기 위하여 유니커널(110)의 파일 입출력 명령, 파일 디스크립터, IO 벡터, 벡터 카운트와 같은 파일 입출력 정보를 생성할 수 있다. 파일 입출력 명령은 read와 write같은 입출력 명령이다. 파일 디스크립터는 시스템으로부터 할당 받은 파일을 대표하는 값이다. IO 벡터는 입출력 버퍼(Buffer)의 가상 주소에 매핑되는 물리 페이지들 중 연속되는 물리 페이지의 주소와 크기를 하나의 엘리먼트로 하는 집합이다. 벡터 카운트는 IO 벡터를 구성하는 엘리먼트 개수이다. The unikernel 110 may operate as follows. The unikernel 110 may start an application program of the unikernel (S111). The unikernel application program may call the file input/output function (S112). The unikernel 110 may extract a continuous physical address section for the file input/output buffer and generate file input/output information (eg, file input/output command and IO vector) (S113). When the unikernel application program is started and the file input/output function is called during execution, the unikernel 110 provides file input/output commands, file descriptors, and IO vectors of the unikernel 110 in order to offload the file input/output to the Linux 120 . , file input/output information such as vector count can be generated. File I/O commands are I/O commands such as read and write. A file descriptor is a value representing a file allocated from the system. The IO vector is a set having, as one element, the address and size of a continuous physical page among physical pages mapped to the virtual address of an input/output buffer. The vector count is the number of elements constituting the IO vector.
유니커널(110)은 파일 입출력 정보(파일 입출력 명령 및 IO 벡터)를 리눅스(120)로 전송할 수 있다(S114). 유니커널(111)에서 리눅스(120)로 전송되는 파일 입출력 정보에 유니커널의 버퍼에 대한 물리 주소와 크기를 포함하는 IO 벡터를 전송하는 이유는, 유니커널(110)과 리눅스(120)는 하나의 물리 주소에 대해 자신의 가상 주소를 각각 가지는데 상대의 가상 주소를 가지고 메모리에 대한 물리 주소를 추출할 수 없기 때문이다. 또한, RDMA나 DMA로 데이터를 입출력하는 이유는, 운영체제의 가상 주소가 아닌 실제 메모리의 물리 주소가 필요하기 때문이다. 이상과 갈이 생성된 유니커널의 파일 입출력 정보는 리눅스(120)의 입출력 오프로드 프록시에 전송될 수 있다. 이후에, 유니커널(110)은 리눅스(120)로부터 IO 벡터 개수만큼 파일 입출력 함수 결과를 수신할 수 있다(S115).The unikernel 110 may transmit file input/output information (file input/output command and IO vector) to the Linux 120 (S114). The reason for transmitting the IO vector including the physical address and size of the buffer of the unikernel to the file input/output information transmitted from the
리눅스(120)의 동작은 다음과 같이 진행될 수 있다. 리눅스(120)는 파일 입출력 오프르도 프록시를 구동할 수 있다(S121). 리눅스(120)는 파일 입출력 정보(파일 입출력 명령 및 IO 벡터)를 유니커널(110)로부터 수신할 수 있다(S122). 리눅스(120)는 파일 입출력 정보(파일 입출력 명령 및 IO 벡터)를 이용하여 파일 입출력 함수 구성 및 호출할 수 있다(S123). 리눅스(120)의 파일 입출력 오프로드 프록시는 전송받은 파일 입출력 정보를 이용하여 파일시스템 서텁에 전송할 파일 입출력 함수를 구성할 수 있다. 리눅스(120)에서 대응하는 파일 입출력 함수를 수행하면, 리눅스의 파일시스템 스텁을 통해 파일 서버(200)로 파일 입출력 명령이 전송될 수 있다. 리눅스(120)는 파일 디스크립터에 대응하는 파일에 대해 IO 벡터 크기만큼 IO 벡터의 물리 주소로 입출력 명령을 파일 서버(200)에 요청할 수 있다(S124). 이때 파일시스템 스텁은 IO 벡터 개수만큼 IO 벡터 엘리먼트 하나에 대해 파일 서버에 파일 입출력을 요구할 수 있다. 즉, 연속적인 물리 주소를 하나의 단위로 하여 입출력 수행을 처리할 수 있다. 이때 전송되는 파일 입출력 정보는 파일 입출력 명령, 파일 디스크립터, IO 벡터의 물리 주소, IO 벡터의 입출력 크기이다. The operation of the Linux 120 may proceed as follows. Linux 120 may drive the file input/output Opredo proxy (S121). Linux 120 may receive file input/output information (file input/output command and IO vector) from the unikernel 110 (S122). Linux 120 may configure and call a file input/output function using file input/output information (file input/output command and IO vector) ( S123 ). The file input/output offload proxy of Linux 120 may configure a file input/output function to be transmitted to the file system stub by using the received file input/output information. When a corresponding file input/output function is performed in Linux 120 , a file input/output command may be transmitted to the
이후에, 리눅스(120)는 파일 서버(200)로부터 NVMe(232)/RDMA NIC(234)로부터 IO 벡터 개수만큼 파일 입출력 함수 결과를 수신할 수 있다(125). 이후 리눅스(120)는 IO 벡터 개수만큼 파일 입출력 함수 결과를 유니커널(110)의 유니커널 메모리(134)로 전송할 수 있다.Thereafter, the Linux 120 may receive the file input/output function result as many as the number of IO vectors from the
파일 서버(200)의 동작은 다음과 같이 진행될 수 있다. 파일 서버(200)는 리눅스(220)에서 파일 서버 데몬을 구동할 수 있다(S131). 파일 서버(200)의 리눅스(220)는 유니커널 시스템(100)의 리눅스(120)로부터 파일 입출력 요청을 수신할 수 있다(S132). 파일 서버(200)의 리눅스(220)는 파일 디스크립터에 대응하는 NVMe 파일에 대해 입출력 명령을 수행하기 위해 파일시스템에서 파일 정보를 추출할 수 있다(S133). 파일 서버(200)은 유니커널 시스템(100)의 리눅스(120)로부터 파일 입출력을 요청을 수신할 때, 파일 디스크립터에 대응하는 파일에 대해 입출력 명령을 수행하기 위해 파일 시스템으로부터 NVMe에서 입출력하기 위한 정보를 추출할 수 있다. 파일 서버(200)는 NVMe에서 입출력 크기만큼의 데이터를 입출력시키고, RDMA로 전송하고 RDMA 엔진을 통해 입출력해야 할 물리 주소에 크기만큼 데이터를 전송할 수 있다. 파일 서버(200)의 리눅스(220)는 NVMe 및 RDMA에 입출력 명령을 수행할 수 있다(S134). 파일 서버(200)의 리눅스(220)는 물리 주소로 대응하는 크기로 데이터를 전송하고, 파일 입출력 결과를 유니커널 시스템(100)의 리눅스(120)로 전송할 수 있다(S135).The operation of the
도 3은 본 발명의 실시 예에 따른 유니커널 시스템(100)의 유니커널(110)에서 리눅스(120)로 파일 입출력 오프로드 정보를 전송하는 과정을 예시적으로 보여주는 도면이다. 도 3을 참조하면, 유니커널 시스템(100)의 내부에서 유니커널(110)에서 리눅스(120)로 파일 입출력 오프로드 정보가 전송되는 과정은 다음과 같이 진행될 수 있다.3 is a diagram exemplarily showing a process of transmitting file input/output offload information from the unikernel 110 to the Linux 120 of the
유니커널(110)은 리눅스(120)에 파일 입출력(IO)을 오프로드(Offload) 하기 위한 파일 입출력 오프로드 정보로써, 유니커널(110)의 입출력 명령, 파일 디스크립터, IO 벡터, 벡터 카운트를 리눅스의 입출력 오프로드 프록시에 전송할 수 있다. 여기서, 입출력 명령은 read(읽기)와 write(쓰기)와 같은 입출력 명령이다. 파일 디스크립터는 시스템으로부터 할당 받은 파일을 대표하는 값이다. IO 벡터는 입출력 버퍼(Buffer)의 가상 주소(VA; Virtual Address)에 매핑되는 물리 페이지들(Physical Pages) 중 연속되는 물리 페이지의 주소와 크기를 하나의 엘리먼트로 하는 집합이다. 벡터 카운트는 IO 벡터를 구성하는 엘리먼트 개수이다.The unikernel 110 is file input/output offload information for offloading file input/output (IO) to the Linux 120 . can be sent to the I/O offload proxy of Here, the input/output command is an input/output command such as read (read) and write (write). A file descriptor is a value representing a file allocated from the system. The IO vector is a set having, as one element, the address and size of a continuous physical page among physical pages mapped to a virtual address (VA) of an input/output buffer. The vector count is the number of elements constituting the IO vector.
도 3에서 도시된, 파일 입출력 명령은 read 이며, 파일 디스크립터는 fd이다. 입출력 버퍼의 가상 주소가 va이고 크기가 sz 일 때, IO 벡터는 가상 주소(va)에서 sz(= sz1 + sz2) 크기 구간에 매칭되는 연속인 물리 주소와 그 크기의 집합인 {{pa1, sz1}, {pa2, sz2}}으로 표현될 수 있다. 벡터 카운트는 IO 벡터의 엘리먼트 개수인 iov_cnt = 2이다. 즉, 유니커널 메모리(130)의 버퍼가 3개의 페이지로 이루어 질 때, 이에 매칭되는 물리 페이지 3개 중 연속인 물리 페이지 들로 구성되는 집합의 엘리먼트는 2개이다.3, the file input/output command is read, and the file descriptor is fd. When the virtual address of the I/O buffer is va and the size is sz, the IO vector is {{pa1, sz1, a set of continuous physical addresses matching the sz (= sz1 + sz2) size interval from the virtual address (va) and its size. }, {pa2, sz2}}. The vector count is iov_cnt = 2, which is the number of elements in the IO vector. That is, when the buffer of the
도 4는 본 발명의 실시 예에 따른 유니커널(110)의 응용 프로그램에 의한 읽기 동작에 대한 파일 입출력 오프로드 과정을 예시적으로 보여주는 도면이다. 도 5는 본 발명의 실시 예에 따른 유니커널(110)의 응용 프로그램에서 리눅스(120)에 파일 입출력을 오프로드하고 파일 서버를 통하여 파일 입출력하는 과정을 예시적으로 보여주는 흐름도이다. 도 4 및 도 5를 참조하면, 유니커널(110)의 응용 프로그램은 다음과 같이 읽기 동작에 대한 파일 입출력 오프로드 동작을 진행할 수 있다.4 is a diagram exemplarily illustrating a file input/output offload process for a read operation by an application program of the unikernel 110 according to an embodiment of the present invention. 5 is a flowchart exemplarily showing a process of offloading file input/output to Linux 120 and file input/output through a file server in an application program of the unikernel 110 according to an embodiment of the present invention. 4 and 5 , the application program of the unikernel 110 may perform a file input/output offload operation for a read operation as follows.
유니커널(110)의 응용 프로그램은 입출력 함수(예, read(fd, va, count)을 수행할 수 있다(S210). 유니커널(110)은 입출력 버퍼의 가상 주소(va)에서 count 크기 구간에 매칭되는 연속인 물리 주소(pa)와 그 크기의 집합인 IO 벡터(= iov[])를 계산할 수 있다(S220). IO 벡터 카운트는 IO 벡터의 엘리먼트 개수인 iov_cnt이다. 유니커널(110)은 파일 입출력 정보에 관련된 파라미터(예, read, fd, iov[], iov_cnt)를 가지는 파일 입출력 정보 메시지를 리눅스(120)로 전송할 수 있다(S230).The application program of the unikernel 110 may perform an input/output function (eg, read(fd, va, count) (S210). The unikernel 110 is located in the count size section from the virtual address va of the input/output buffer. An IO vector (= iov[]), which is a set of matching continuous physical addresses (pa) and their sizes, can be calculated (S220). The IO vector count is iov_cnt, which is the number of elements of the IO vector. A file input/output information message having parameters (eg, read, fd, iov[], iov_cnt) related to file input/output information may be transmitted to the Linux 120 (S230).
리눅스(120)에서 대기 중인 입출력 오프로드 프록시는 파일 입출력 정보 메시지를 수신하고, 파일 입출력 함수(read(fd, iov[], iov_cnt)를 구성하고 수행할 수 있다(S240).The waiting input/output offload proxy in Linux 120 may receive the file input/output information message, configure and perform the file input/output function (read(fd, iov[], iov_cnt) (S240).
리눅스(120)의 파일시스템 스텁이 파일 서버(200)에 요청할 i 번째(0 <= i < iov_cnt) 파일 입출력 함수(예, write_io(fd, iov[i]. pa, iov[i].iov_cnt))를 구성할 수 있다(S250). 리눅스(120)의 파일시스템 스텁은 파일 서버에 i번째 파일 입출력 메시지(예, read, fd, iov[i]. pa, iov[i].iov_cnt)를 파일 서버(200)로 전송할 수 있다(S260).The ith (0 <= i < iov_cnt) file input/output function (eg, write_io(fd, iov[i]. pa, iov[i].iov_cnt) that the file system stub of Linux 120 requests from the file server 200 ) can be configured (S250). The file system stub of Linux 120 may transmit an i-th file input/output message (eg, read, fd, iov[i].pa, iov[i].iov_cnt) to the file server 200 (S260). ).
파일 서버(200)의 리눅스(220)는 수신된 파일 디스크립터에 대응하는 파일로부터 파일 명령을 수행하기 위한 정보를 파일 시스템으로부터 추출할 수 있다. 예를 들어, 파일 디스크립터(fd)를 가지는 파일에 대해 NVMe(232)에 저장된 파일을 입출력하기 위한 정보를 추출할 수 있다. 파일 서버(200는 NVMe(232)내에 입출력할 파일 데이터를 RDMA NIC(234)으로 복사를 명령할 수 있다. NVMe(232)에서 RDMA NIC(234)로 파일 입출력 데이터가 복사될 수 있다(S270). RDMA 엔진은 파일 입출력 데이터를 유니커널(110)의 물리 메모리(예, iov[i].pa)로 RDMA 방식으로 전송할 수 있다.The Linux 220 of the
도 6은 본 발명의 실시 예에 따른 유니커널과 리눅스/파일 서버에 파일 입출력 오프로드를 수행하기 위한 파일 입출력 오프로드 장치(10)를 좀 더 자세하게 보여주는 도면이다. 도 6을 참조하면, 파일 입출력 오프로드 장치(10)는 유니커널 시스템(100) 및 파일 서버(200)를 포함할 수 있다.6 is a diagram showing in more detail the file input/
유니커널 시스템(100)은 제 1 커널 시스템(101) 및 제 2 커널 시스템(102)을 포함할 수 있다.The
제 1 커널 시스템(101)은 유니커널(110) 및 유니커널 메모리(130)를 포함할 수 있다. 유니커널(110)은 응용 프로그램(111), IO 벡터 생성부(112), 파일 입출력 정보 생성부(113), 파일 입출력 오프로드 요청 송신부(114), 파일 입출력 오프로드 수신부(115)를 포함할 수 있다. The
유니커널(110)의 응용 프로그램은 응용 프로그램 코드와 대응하는 응용 프로그램에 필요한 모든 운영 체제 기능이 들어 있어 별도의 운영 체제없이 실행할 수 있다. IO 벡터 생성부(112)는 입출력 버퍼(Buffer)의 가상 주소(Virtual Address; va)에 매핑되는 물리 페이지들 중 연속되는 물리 페이지의 주소와 크기를 하나의 엘리먼트로 하는 집합인 IO 벡터를 생성할 수 있다.The application program of the unikernel 110 includes all operating system functions necessary for the application program code and the corresponding application program, and thus can be executed without a separate operating system. The IO
파일 입출력 정보 생성부(113)는 리눅스(1에 파일 입출력을 오프로드하기 위해 필요한 파일 입출력 오프로드 정보를 생성할 수 있다. 여기서 파일 입출력 정보는 유니커널의 입출력 명령, 파일 디스크립터, IO 벡터, 벡터 카운트 등이 있다.The file input/output
파일 입출력 오프로드 요청 송신부(114)는 리눅스(120)에 파일 입출력 정보를 전송할 수 있다.The file input/output
파일 입출력 오프로드 결과 수신부(115)는 리눅스(120)의 파일 입출력 ?늡족琯? 결과 송신부(125)로부터 파일 입출력 오프로드 결과를 수신할 수 있다.File input/output offload
제 2 커널 시스템(102)은 리눅스(120) 및 RDMA NIC(140)를 포함할 수 있다. 리눅스(120)는 파일 입출력 오프로드 요청 수신부(121), 입출력 오프로드 함수 구성 및 호출부(122), IO 벡터 요청 송신부(123), IO 벡터 결과 수신부(124), 및 파일 입출력 오프로드 결과 송신부(125)를 포함할 수 있다.The
파일 입출력 오프로드 요청 수신부(121)는 유니커널(110)로부터 파일 입출력 정보를 수신할 수 있다.The file input/output offload
파일 입출력 함수 구성 및 호출부(122)는 수신한 파일 입출력 정보를 이용하여 파일 입출력 함수를 구성하고, 파일 입출력을 실행할 수 있다.The file input/output function configuration and
IO 벡터 요청 송신부(123)는 IO 벡터의 엘리먼트 하나에 대한 IO 요청을 파일 서버(200)에 전송할 수 있다. 여기서 IO 벡터 요청은 IO 벡터의 엘리먼트 개수만큼 전송될 수 있다.The IO
IO 벡터 결과 수신부(124)는 파일 서버(200)로부터 IO 벡터 요청에 대응하는 결과를 수신할 수 있다. 즉, IO 벡터 결과 수신부(124)는 NVMe/RDMA를 통하여 IO 벡터의 엘리먼트 하나에 대한 파일 입출력한 결과를 파일 서버로부터 수신할 수 있다. 실시 예에 있어서, IO 벡터 요청이 성공이면, IO 벡터의 다음 엘리먼트에 대한 IO를 수행하기 위해 IO 벡터 요청 송신부(123)로 제어를 분기할 수 있다. 반면에, IO 벡터 요청이 실패이면, 파일 입출력 오프로드 결과 송신부(125)로 제어를 분기할 수 있다.The IO vector
파일 입출력 오프로드 결과 송신부(125)는 수신된 IO 벡터 결과에 대응하는 파일 입출력 오프로드 결과를 유니커널(110)의 파일 입출력 오프로드 결과 수신부(115)에 전송할 수 있다.The file input/output
파일 서버(200)는 리눅스(220), NVMe(230), 및 RDMA NIC(240)를 포함할 수 있다. 리눅스(220)는 IO 벡터 요청 수신부(221), 파일 정보 추출부(222), NVMe/RDMA IO 처리 수행부(223), 및 IO 벡터 결과 송신부(224)를 포함할 수 있다.
IO 벡터 요청 수신부(221)는 IO 벡터의 엘리먼트 하나에 대한 IO 요청을 유니커널 시스템(100)의 리눅스(120)로부터 수신할 수 있다.The IO vector
파일정보 추출부(222)는 수신된 파일 디스크립터에 대응하는 파일로부터 파일 명령을 수행하기 위한 정보를 파일 시스템으로부터 추출할 수 있다.The file
NVMe/RDMA IO 처리 수행부(223)는 NVMe(232)내에 입출력할 파일 데이터를 RDMA NIC(234)으로 복사하고, 복사된 파일 데이터를 RDMA NIC(234)에서 유니커널 시스템(100)의 리눅스(120)에 대응하는 RDMA NIC(134)를 통하여 유니커널(110)의 물리 메모리로 전송할 수 있다.The NVMe/RDMA IO
IO 벡터 결과 송신부(224)는 NVMe/RDMA를 통하여 IO 벡터의 엘리먼트 하나에 대한 파일 입출력한 결과를 유니커널 시스템(100)의 리눅스(120)로 전송할 수 있다.The IO
본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는, 유니커널(110)에 구동되는 응용 프로그램에 의해 리눅스(120) 및 파일 서버(200)에 파일 입출력 오프로드하고 RDMA 기반으로 고속의 파일 입출력을 수행할 수 있다.The file input/
본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는, 유니커널(110)에서 파일 입출력 환경을 구축할 때, 범용 운영체제의 소프트웨어 스택(File system, Network file system)을 이용함으로써 유니커널 측면에서는 리눅스로 파일 입출력을 오프로드하고, RDMA를 통하여 고속으로 파일을 입출력할 수 있다.File input/
본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는, 유니커널(110)에서 고속의 파일 입출력을 수행하기 위해 범용 운영체제에 입출력을 오프로드함으로써, 파일시스템과 같이 무거운 소프트웨어 스택을 유니커널(110)에 구성하지 않을 수 있다.The file input/
본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는, 한 시스템 내에서 다수의 유니커널 응용 프로그램을 구동하더라도 각각의 유니커널에서 파일 시스템을 구축할 필요 없이 다수의 유니커널을 경량의 크기와 최적의 수행을 지원할 수 있도록 커널 라이브러리를 구성할 수 있다.The file input/
도 7은 본 발명의 실시 예에 따른 전자 장치(1000)를 예시적으로 보여주는 도면이다. 도 7을 참조하면, 전자 장치(1000)는 적어도 하나의 프로세서(1100), 네트워크 인터페이스(1200), 메모리(1300), 디스플레이(1400), 및 입출력 장치(1500)를 포함할 수 있다. 도 7에 도시된 전자 장치(1000)는 상술된 유니커널 시스템(100)를 포함할 수 있다.7 is a diagram exemplarily showing an
프로세서(1100)는 도 1 내지 도 6을 통하여 적어도 하나의 장치를 포함하거나, 도 1 내지 도 6을 통하여 전술한 적어도 하나의 방법으로 구현될 수 있다. 프로세서(1100)는, 상술된 바와 같이, 유니커널의 응용 프로그램을 시작하고; 유니커널 응용 프로그램에서 파일 입출력 함수를 호출하고; 유니커널에서 파일 입출력 정보를 생성하고; 유니커널에서 파일 입출력 정보를 리눅스로 전송하고; 리눅스에서 파일 입출력 프록시를 구동하고, 리눅스에서 파일 입출력 정보를 유니커널로 부터 수신하고; 리눅스에서 파일 입출력 정보를 이용하여 파일 입출력 함수 구성 및 호출하고; 리눅스에서 파일 디스크립터에 대응하는 파일에 대해 IO 벡터 크기 만큼 IO 벡터의 물리 주소로 입출력 명령을 파일 서버에 요청하고; 리눅스에서 파일 입출력 정보내의 IO 벡터 개수 만큼 수행 후 그 결과를 유니커널에 전송하고; 유니커널에서 파일 입출력 결과를 리눅스로부터 수신하도록, 인스트럭션들(instructions)을 실행할 수 있다.The
프로세서(1100)는 프로그램을 실행하고, 전자 장치(1000)를 제어할 수 있다. 전자 장치(1000)는 입출력 장치(1500)를 통하여 외부 장치(예를 들어, 퍼스널 컴퓨터 혹은 네트워크)에 연결되고, 데이터를 교환할 수 있다.The
네트워크 인터페이스(1200)는 외부의 네트워크와 다양한 유/무선 방식에 의해 통신을 수행하도록 구현될 수 있다.The
메모리(1300)는 컴퓨터에서 읽을 수 있는 명령어(Instruction)를 포함할 수 있다. 프로세서(1100)는 메모리(1300)에 저장된 명령어가 프로세서(1100)에서 실행됨에 따라 앞서 언급된 동작들을 수행할 수 있다. 메모리(1300)는 휘발성 메모리 혹은 비휘발성 메모리일 수 있다. 메모리(1300)는 사용자의 데이터를 저장하도록 저장 장치를 포함할 수 있다. 저장 장치는 eMMC(embedded Multimedia Card), SSD(Solid State Drive), UFS(Universal Flash Storage) 등 일 수 있다. 저장 장치는 적어도 하나의 비휘발성 메모리 장치를 포함할 수 있다. 비휘발성 메모리 장치는, 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND; VNAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory: RRAM), 상변화 메모리(Phase-Change Memory: PRAM), 자기저항 메모리(Magnetoresistive Random Access Memory: MRAM), 강유전체 메모리(Ferroelectric Random Access Memory: FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory: STT-RAM) 등이 될 수 있다.The
이상에서 설명된 실시 예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/혹은 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(Arithmetic Logic Unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(Field Programmable Gate Array), PLU(Programmable Logic Unit), 마이크로프로세서, 혹은 명령(Instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 혹은 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(Operating System; OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. The embodiments described above may be implemented by a hardware component, a software component, and/or a combination of a hardware component and a software component. For example, the apparatus, methods, and components described in the embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate (FPGA). Array), a programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions, may be implemented using one or more general-purpose or special-purpose computers. The processing device may execute an Operating System (OS) and one or more software applications running on the operating system.
또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 대응하는 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(Processing Element) 및/혹은 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수의 프로세서 혹은 하나의 프로세서 및 하나의 제어기(Controller)를 포함할 수 있다. 또한, 병렬 프로세서(Parallel Processor)와 같은, 다른 처리 구성(Processing Configuration)도 가능하다.The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For convenience of understanding, although one processing device is sometimes described as being used, one of ordinary skill in the art will recognize that the processing device includes a plurality of processing elements and/or a plurality of types of processing. It can be seen that elements can be included. For example, the processing device may include a plurality of processors or one processor and one controller. Other Processing Configurations are also possible, such as a Parallel Processor.
소프트웨어는 컴퓨터 프로그램(Computer Program), 코드(Code), 명령(Instruction), 혹은 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 혹은 결합적으로(Collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/혹은 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 혹은 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(Component), 물리적 장치, 가상 장치(Virtual Equipment), 컴퓨터 저장 매체 혹은 장치, 혹은 전송되는 신호파(Signal Wave)에 영구적으로, 혹은 일시적으로 구체화(Embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more thereof, and configure a processing device to operate as desired or process it independently or in combination (Collectively) You can command the device. The software and/or data may be any kind of machine, component, physical device, virtual equipment, computer storage medium or device to be interpreted by or provide instructions or data to the processing device. , or may be permanently or temporarily embodied in a transmitted signal wave (Embody). The software may be distributed over networked computer systems and stored or executed in a distributed manner. Software and data may be stored in one or more computer-readable recording media.
실시 예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 혹은 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시 예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM, DVD와 같은 광기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto Optical media), 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, etc. alone or in combination. The program instructions recorded on the medium may be specially designed and configured for the embodiment, or may be known and available to those skilled in the art of computer software. Examples of the computer-readable recording medium include magnetic media such as hard disks, floppy disks and magnetic tapes, optical recording media such as CD-ROMs and DVDs, and magnetic media such as floppy disks. - Includes hardware devices specially configured to store and execute program instructions, such as Magneto Optical media, ROM, RAM, Flash memory, and the like. Examples of program instructions include not only machine language codes such as those generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.
유니커널의 파일 입출력 명령을 리눅스 및 파일 서버에 파일 입출력 오프로드함에 있어서,In offloading file I/O commands of unikernel to Linux and file servers,
유니커널의 응용 프로그램이 시작되고 수행 중 파일 입출력 함수가 호출되면, 유니커널은 리눅스에 파일 입출력을 오프로드하기 위하여 유니커널의 파일 입출력 명령, 파일 디스크립터, IO 벡터, 벡터 카운트와 같은 파일 입출력 정보를 생성한다. 파일 입출력 정보에 유니커널의 버퍼에 대한 물리 주소와 크기를 포함하는 IO 벡터를 생성하는 이유는 유니커널과 리눅스는 하나의 같은 물리 주소라 하여도 자신의 가상 주소를 각각 가지지기 때문 상대의 가상 주소를 가지고 메모리에 대한 물리 주소를 추출할 수 없기 때문이다. 또한, 파일 서버에서 유니커널로 파일 입출력을 수행하기 위해서는 RDMA나 DMA 로 데이터를 입출력할 경우에는 운영체제의 가상 주소가 아닌 실제 메모리의 물리 주소가 필요하기 때문이다.When the unikernel application program is started and the file input/output function is called during execution, the unikernel transmits file input/output information such as file input/output commands, file descriptors, IO vectors, and vector counts of the unikernel to offload file I/O to Linux. create The reason for creating an IO vector including the physical address and size of the unikernel buffer in the file input/output information is that unikernel and Linux each have their own virtual address even though they have one and the same physical address. This is because it is not possible to extract the physical address for the memory with In addition, in order to perform file I/O from the file server to the unikernel, when data is input/output through RDMA or DMA, the physical address of the real memory is required, not the virtual address of the operating system.
이에 본 발명은 입출력 버퍼(Buffer)의 가상 주소에 매핑되는 물리 페이지들 중 연속되는 물리 페이지의 주소와 크기를 하나의 엘리먼트로 하는 집합인 IO 벡터를 구성하고 IO 벡터를 구성하는 엘리먼트 개수인 벡터 카운트를 리눅스에 파일 입출력 정보로 전송함으로써, 리눅스는 IO 벡터의 엘리먼트 단위로 파일 서버에 파일 입출력을 요청하게 되고 물리 주소로 시작하는 연속적인 영역에 대해 크기만큼 파일 데이터를 RDMA 기반으로 고속의 입출력을 할 수 있게 된다. Accordingly, the present invention constitutes an IO vector, which is a set in which the address and size of a continuous physical page among physical pages mapped to a virtual address of an input/output buffer, as one element, and the vector count, which is the number of elements constituting the IO vector. by sending file I/O information to Linux, Linux requests file I/O from the file server in units of elements of the IO vector, and RDMA-based high-speed input/output of file data as much as the size of the continuous area starting with the physical address. be able to
본 발명은 유니커널에서 구축하기 어려운 범용 운영체제의 소프트웨어 스택(File system, Network File System)을 이용하게 되는 것으로, 유니커널 측면에서 시스템 내 일부 자원을 이용하여 리눅스를 디바이스 드라이버처럼 이용한 것이다.The present invention uses a software stack (File system, Network File System) of a general-purpose operating system that is difficult to build in a unikernel, and uses Linux as a device driver by using some resources in the system in terms of a unikernel.
본 발명은 유니커널에서 리눅스로 파일 입출력을 오프로드하는데 있어서 NVMe와 RDMA를 통하여 고속으로 파일을 입출력할 수 있다. 본 발명은 데이터 센트릭 HPC(High Performance Computing) 용 커널의 입/출력 기술로 이용하여 이미지 프로세싱, graph 프로세싱, 딥러닝과 같은 데이터 센트릭 컴퓨팅을 수행하는 데 적용 가능하다. 본 발명은 대규모/빈번한 데이터를 기반으로 빠르고 많은 처리를 요구하는 인메모리 DB 및 100G를 지원하는 NIC의 커널 입/출력 기술로 이용할 수 있다. The present invention enables high-speed file input/output through NVMe and RDMA in offloading file input/output from unikernel to Linux. The present invention is applicable to performing data-centric computing such as image processing, graph processing, and deep learning by using the kernel input/output technology for data-centric HPC (High Performance Computing). The present invention can be used as a kernel input/output technology of an in-memory DB that requires a lot of fast processing based on large-scale/frequent data and a NIC supporting 100G.
한편, 본 발명이 유니커널에서 리눅스로 파일 입출력을 오프로드하는 데에 제한되지 않을 것이다. 본 발명은 유니커널에서 모놀리식 커널(Monolothic Kernel)의 어떠한 종류의 운영 체제(유닉스 커널, 솔라니스 커널, 윈도우즈 NT 커널, 벨로나2 커널, AIX 커널 등)로도 파일 입출력을 오프로드 할 수 있다고 이해되어야 할 것이다.On the other hand, the present invention will not be limited to offloading file input/output from unikernel to Linux. According to the present invention, file I/O can be offloaded from the uni-kernel to any type of operating system (Unix kernel, Solaris kernel, Windows NT kernel,
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 이용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.On the other hand, the contents of the present invention described above are only specific examples for carrying out the invention. The present invention will include not only concrete and practically usable means, but also technical ideas that are abstract and conceptual ideas that can be used in future technologies.
10: 파일 입출력 오프로드 시스템
100: 유니커널 시스템
110: 유니커널
111: 응용 프로그램
112: IO 벡터 생성부
113: 파일 입출력 정보 생성부
114: 파일 입출력 오프로드 요청 송신부
115: 파일 입출력 오프로드 결과 수신부
120, 220: 리눅스
121: 파일 입출력 오프로드 요청 수신부
122: 파일 입출력 함수 구성 및 호출부
123: IO 벡터 요청 송신부
124: IO 벡터 결과 수신부
125: 파일 입출력 오프로드 결과 송신부
200: 파일 서버
1000: 전자 장치10: File I/O offload system
100: unikernel system
110: uni-kernel
111: application
112: IO vector generator
113: file input/output information generation unit
114: file input/output offload request transmitter
115: file input/output offload result receiving unit
120, 220: Linux
121: file input/output offload request receiving unit
122: File input/output function configuration and call part
123: IO vector request transmitter
124: IO vector result receiving unit
125: file input/output offload result transmitter
200: file server
1000: electronic device
Claims (20)
상기 유니커널의 응용 프로그램에서 파일 입출력 커널 함수를 호출하는 단계;
상기 파일 입출력 커널 함수에서 파일 입출력 정보를 생성하는 단계;
상기 유니커널에서 상기 파일 입출력 정보를 리눅스로 전송하는 단계;
상기 리눅스에서 상기 파일 입출력 정보를 이용하여 파일 입출력 함수를 구성 및 호출하는 단계; 및
상기 파일 입출력 함수에서 상기 파일 입출력 정보에 대응하는 파일 입출력 요청을 파일 서버로 전송하는 단계를 포함하고,
상기 파일 입출력 정보를 생성하는 단계는,
파일 입출력 버퍼에 대한 연속적인 물리 주소 구간을 추출하는 단계; 및
상기 추출된 물리 주소 구간에 대응하는 주소와 크기를 하나의 엘리먼트로 하는 집합인 IO 벡터를 생성하는 단계를 포함하고,
상기 파일 입출력 정보는 파일 입출력 명령, 파일 디스크립터, 상기 IO 벡터, 상기 IO 벡터의 엘리먼트 개수를 의미하는 벡터 카운트를 포함하는 것을 특징으로 하는 방법.A method of operating a remote direct memory access (RDMA)-based file input/output offload device using a unikernel, the method comprising:
calling a file input/output kernel function in the unikernel application program;
generating file input/output information in the file input/output kernel function;
transmitting the file input/output information from the unikernel to Linux;
constructing and calling a file input/output function using the file input/output information in the Linux; and
Transmitting a file input/output request corresponding to the file input/output information in the file input/output function to a file server,
The step of generating the file input/output information includes:
extracting a continuous physical address section for the file input/output buffer; and
generating an IO vector, which is a set having an address and a size corresponding to the extracted physical address section as one element,
The file input/output information includes a file input/output command, a file descriptor, the IO vector, and a vector count indicating the number of elements of the IO vector.
상기 리눅스의 파일 입출력 프록시를 구동하는 단계를 더 포함하는 방법.The method of claim 1,
The method further comprising the step of driving the file input/output proxy of the Linux.
상기 파일 입출력 프록시에서 상기 유니커널로부터 상기 파일 입출력 정보를 수신하는 단계를 더 포함하는 방법.4. The method of claim 3,
The method further comprising the step of receiving the file input/output information from the unikernel at the file input/output proxy.
상기 파일 입출력 요청을 파일 서버로 전송하는 단계는,
상기 리눅스의 파일 시스템 스텁에서 상기 IO 벡터의 개수에 대응하는 상기 입출력 요청을 상기 파일 서버로 전송하는 단계를 포함하는 방법.The method of claim 1,
Transmitting the file input/output request to the file server comprises:
and transmitting the input/output request corresponding to the number of IO vectors from the file system stub of the Linux to the file server.
상기 리눅스에서 상기 파일 서버로부터 상기 파일 입출력 요청에 대한 결과를 수신하는 단계를 더 포함하는 방법.The method of claim 1,
The method further comprising receiving a result of the file input/output request from the file server in the Linux.
상기 파일 입출력 요청에 대한 결과가 성공일 때, 상기 리눅스에서 상기 유니커널로 상기 입출력 요청에 대한 결과를 전송하는 단계를 더 포함하는 방법.8. The method of claim 7,
When the result of the file input/output request is successful, the method further comprising the step of transmitting the result of the input/output request from the Linux to the unikernel.
상기 파일 입출력 요청에 응답하여 상기 파일 서버의 데이터를 RDMA(Remote Direct Memory Access) 방식으로 상기 유니커널의 메모리로 입출력시키는 단계를 포함하는 방법. The method of claim 1,
and inputting and outputting data from the file server to the memory of the unikernel in a Remote Direct Memory Access (RDMA) method in response to the file input/output request.
파일 서버에서 유니커널 시스템의 리눅스로부터 파일 입출력 요청을 수신하는 단계;
파일 서버에서 상기 파일 입출력 요청에 대응하는 파일 정보를 파일시스템에서 추출하는 단계;
상기 파일 정보를 이용하여 비휘발성 메모리에서 데이터를 입출력하는 단계; 및
상기 입출력된 데이터를 RDMA 엔진을 통하여 상기 유니커널 시스템으로 전송하는 단계를 포함하고,
상기 리눅스는
상기 유니커널 시스템의 유니커널로부터 수신된 파일 입출력 정보에 대응하게 파일 입출력 요청을 전송하고,
상기 파일 입출력 정보는
파일 입출력 명령, 파일 디스크립터, 상기 유니커널의 파일 입출력 버퍼에 대한 연속적인 물리 주소 구간에 대응하는 물리 주소와 크기를 하나의 엘리먼트로 하는 집합인 IO 벡터, 상기 IO 벡터의 엘리먼트의 개수를 의미하는 벡터 카운트를 포함하는 것을 특징으로 하는 방법.A method of operating a remote direct memory access (RDMA)-based file input/output offload device using a unikernel, the method comprising:
Receiving a file input/output request from Linux of a unikernel system in a file server;
extracting file information corresponding to the file input/output request from a file system in a file server;
inputting and outputting data from a non-volatile memory using the file information; and
Transmitting the input/output data to the unikernel system through an RDMA engine,
the linux is
Transmitting a file input/output request corresponding to the file input/output information received from the unikernel of the unikernel system,
The file input/output information is
A file input/output command, a file descriptor, an IO vector that is a set in which a physical address and size corresponding to a continuous physical address section for the file input/output buffer of the unikernel are one element, and a vector indicating the number of elements of the IO vector A method comprising a count.
상기 파일 서버에서 상기 유니커널 시스템의 리눅스로 상기 파일 입출력 요청에 대한 파일 입출력 결과를 전송하는 단계를 더 포함하는 방법.11. The method of claim 10,
The method further comprising the step of transmitting a file input/output result for the file input/output request from the file server to the Linux of the unikernel system.
상기 파일 정보를 상기 파일 시스템에서 추출하는 단계는,
상기 파일 입출력 요청에 포함된 파일 디스크럽터에 대응하는 파일로부터 파일 명령을 수행하기 위한 상기 파일 정보를 추출하는 단계를 포함하는 방법.11. The method of claim 10,
The step of extracting the file information from the file system,
and extracting the file information for executing a file command from a file corresponding to a file descriptor included in the file input/output request.
상기 파일 서버에서 상기 비휘발성 메모리의 상기 입출력된 데이터를 RDMA NIC로 복사를 명령하는 단계를 더 포함하는 방법. 11. The method of claim 10,
The method further comprising the step of instructing the file server to copy the input/output data of the non-volatile memory to an RDMA NIC.
상기 RDMA 엔진은 상기 입출력된 데이터를 상기 유니커널 시스템의 유니커널의 물리 메모리로 RDMA 방식으로 전송하는 것을 특징으로 하는 방법.11. The method of claim 10,
The RDMA engine transmits the input/output data to the unikernel physical memory of the unikernel system in an RDMA manner.
적어도 하나의 프로세서; 및
상기 적어도 하나의 프로세서에 실행되는 유니커널 및 리눅스를 저장하는 메모리를 포함하고,
상기 유니커널은, 응용 프로그램에서 파일 입출력 커널 함수를 호출하고, 상기 파일 입출력 커널 함수에서 파일 입출력 정보를 생성하고; 상기 유니커널에서 상기 파일 입출력 정보를 리눅스로 전송하고,
상기 리눅스는 상기 파일 입출력 정보를 이용하여 파일 입출력 함수를 구성 및 호출하고; 및 상기 파일 입출력 함수에서 상기 파일 입출력 정보에 대응하는 파일 입출력 요청을 파일 서버로 전송하고,
상기 유니커널은,
파일 입출력 버퍼에 대한 연속적인 물리 주소 구간을 추출하고, 상기 추출된 물리 주소 구간에 대응하는 주소와 크기를 하나의 엘리먼트로 하는 집합인 IO 벡터를 생성하되,
상기 파일 입출력 정보는 파일 입출력 명령, 파일 디스크립터, 상기 IO 벡터, 상기 IO 벡터의 엘리먼트 개수를 의미하는 벡터 카운트를 포함하는 것을 특징으로 하는 파일 입출력 오프로드 장치.For a Remote Direct Memory Access (RDMA) based file I/O offload device:
at least one processor; and
A memory for storing a unikernel and Linux running on the at least one processor,
the unikernel calls a file input/output kernel function from an application program, and generates file input/output information from the file input/output kernel function; Transmitting the file input/output information from the unikernel to Linux,
the Linux constructs and calls a file input/output function using the file input/output information; and transmitting a file input/output request corresponding to the file input/output information in the file input/output function to the file server,
The unikernel is
Extracting a continuous physical address section for the file input/output buffer, and generating an IO vector, which is a set having an address and size corresponding to the extracted physical address section as one element,
The file input/output information includes a file input/output command, a file descriptor, the IO vector, and a vector count indicating the number of elements of the IO vector.
상기 리눅스는 파일 입출력 프록시를 구동하여 상기 파일 입출력 정보를 상기 유니커널로부터 수신하는 것을 특징으로 하는 파일 입출력 오프로드 장치.16. The method of claim 15,
The Linux file input/output offload device, characterized in that by driving a file input/output proxy to receive the file input/output information from the unikernel.
상기 리눅스는 상기 파일 입출력 정보를 이용하여 파일 디스크립터에 대응하는 파일에 대하여 IO 벡터 크기만큼 IO 벡터의 물리 주소로 입출력 명령을 상기 파일 서버로 전송하는 것을 특징으로 하는 파일 입출력 오프로드 장치. 16. The method of claim 15,
The Linux file input/output offload device, characterized in that for the file corresponding to the file descriptor by using the file input/output information, the file input/output offload device, characterized in that it transmits the input/output command to the file server as much as the size of the IO vector to the physical address of the IO vector.
상기 리눅스는 입출력 명령에 대응하는 결과는 상기 파일 서버로부터 수신하는 것을 특징으로 하는 파일 입출력 오프로드 장치.18. The method of claim 17,
The Linux file input/output offload device, characterized in that the result corresponding to the input/output command is received from the file server.
상기 파일 서버로부터 상기 입출력 명령에 대응하는 데이터를 RDMA 방식으로 입출력하는 RDMA NIC(Network Interface Card)를 더 포함하는 것을 특징으로 하는 파일 입출력 오프로드 장치. 18. The method of claim 17,
The file input/output offload device further comprising an RDMA NIC (Network Interface Card) for inputting and outputting data corresponding to the input/output command from the file server in an RDMA manner.
상기 리눅스는 상기 파일 서버의 저장 장치에 대한 디바이스 드라이버로 이용되는 것을 특징으로 하는 파일 입출력 오프로드 장치.
16. The method of claim 15,
The file input/output offload device, characterized in that the Linux is used as a device driver for the storage device of the file server.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/582,597 US20200151118A1 (en) | 2018-11-12 | 2019-09-25 | Method and apparatus for offloading file i/o based on remote direct memory access using unikernel |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20180138453 | 2018-11-12 | ||
KR1020180138453 | 2018-11-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200054854A KR20200054854A (en) | 2020-05-20 |
KR102442118B1 true KR102442118B1 (en) | 2022-09-13 |
Family
ID=70919764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190086140A KR102442118B1 (en) | 2018-11-12 | 2019-07-17 | Method and apparatus for offloading file i/o based on remote diret memory access using unikernel |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102442118B1 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102504274B1 (en) * | 2020-06-08 | 2023-02-28 | 한국전자통신연구원 | Server, apparatus and method for accelating file input-output offload for unikernel |
CN112667416B (en) * | 2020-12-25 | 2024-02-27 | 华中科技大学 | Communication method and server of RDMA-based nonvolatile memory system |
KR20230133702A (en) | 2022-03-11 | 2023-09-19 | 성한 주식회사 | IP camera-based remote inspection control system and method |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294234A1 (en) | 2005-06-22 | 2006-12-28 | Cisco Technology, Inc. | Zero-copy network and file offload for web and application servers |
JP5482230B2 (en) | 2010-01-25 | 2014-05-07 | 富士通株式会社 | COMMUNICATION DEVICE, INFORMATION PROCESSING DEVICE, COMMUNICATION DEVICE CONTROL METHOD, AND CONTROL PROGRAM |
US20150006663A1 (en) | 2013-06-26 | 2015-01-01 | Cnex Labs, Inc. | NVM Express Controller for Remote Access of Memory and I/O Over Ethernet-Type Networks |
US20180027074A1 (en) * | 2016-07-22 | 2018-01-25 | 6Wind | System and method for storage access input/output operations in a virtualized environment |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100759816B1 (en) * | 2005-12-08 | 2007-09-20 | 한국전자통신연구원 | Web-Based Development Environment Providing System and Method for Integrated Configuration of Embedded Linux Kernel and Application |
KR20160142681A (en) | 2015-06-03 | 2016-12-13 | 한국전자통신연구원 | Apparatus and method for data offloading using proximity small cell |
-
2019
- 2019-07-17 KR KR1020190086140A patent/KR102442118B1/en active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294234A1 (en) | 2005-06-22 | 2006-12-28 | Cisco Technology, Inc. | Zero-copy network and file offload for web and application servers |
JP5482230B2 (en) | 2010-01-25 | 2014-05-07 | 富士通株式会社 | COMMUNICATION DEVICE, INFORMATION PROCESSING DEVICE, COMMUNICATION DEVICE CONTROL METHOD, AND CONTROL PROGRAM |
US20150006663A1 (en) | 2013-06-26 | 2015-01-01 | Cnex Labs, Inc. | NVM Express Controller for Remote Access of Memory and I/O Over Ethernet-Type Networks |
US20180027074A1 (en) * | 2016-07-22 | 2018-01-25 | 6Wind | System and method for storage access input/output operations in a virtualized environment |
Also Published As
Publication number | Publication date |
---|---|
KR20200054854A (en) | 2020-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11005934B2 (en) | Efficient live-migration of remotely accessed data | |
JP5180373B2 (en) | Lazy processing of interrupt message end in virtual environment | |
KR102442118B1 (en) | Method and apparatus for offloading file i/o based on remote diret memory access using unikernel | |
US20170149920A1 (en) | Method to implement rdma nvme device | |
US20200257629A1 (en) | Systems and methods for streaming storage device content | |
US8897573B2 (en) | Virtual machine image access de-duplication | |
CN110531923B (en) | Memory device including reconfigurable logic and method of operating the same | |
US8850090B2 (en) | USB redirection for read transactions | |
US20210004165A1 (en) | Dummy Host Command Generation For Supporting Higher Maximum Data Transfer Sizes (MDTS) | |
US20190007483A1 (en) | Server architecture having dedicated compute resources for processing infrastructure-related workloads | |
CN105677491A (en) | Method and device for transmitting data | |
US20200151118A1 (en) | Method and apparatus for offloading file i/o based on remote direct memory access using unikernel | |
KR102426416B1 (en) | Method for processing input and output on multi kernel system and apparatus for the same | |
CN110837482A (en) | Distributed block storage low-delay control method, system and equipment | |
US10430220B1 (en) | Virtual devices as protocol neutral communications mediators | |
JP7090080B2 (en) | Hypervisor program | |
US11689621B2 (en) | Computing device and storage card | |
KR20210130992A (en) | Cpmputing system | |
TW202117550A (en) | Storage device and method for storage device characteristics self monitoring | |
KR20230006363A (en) | Computing device and storage card |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |