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 PDF

Info

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
Application number
KR1020190086140A
Other languages
Korean (ko)
Other versions
KR20200054854A (en
Inventor
정연정
김진미
람닉
전승협
정성인
차승준
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to US16/582,597 priority Critical patent/US20200151118A1/en
Publication of KR20200054854A publication Critical patent/KR20200054854A/en
Application granted granted Critical
Publication of KR102442118B1 publication Critical patent/KR102442118B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring 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.

Figure R1020190086140
Figure R1020190086140

Description

유니커널을 이용하는 원격 직접 메모리 접근 기반 파일 입출력 오프로드 방법 및 장치{METHOD AND APPARATUS FOR OFFLOADING FILE I/O BASED ON REMOTE DIRET MEMORY ACCESS USING UNIKERNEL}Method and apparatus for remote direct memory access-based file I/O offload using unikernel

본 발명은 유니커널(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.

한국공개특허: 10-2016-0142681, 공개일: 2016년 12월 13일, 제목: 근접 소형셀 파일 클라우드를 이용하는 오프로딩 장치 및 방법.Korean Patent Laid-Open Patent: 10-2016-0142681, Publication date: December 13, 2016, Title: Offloading apparatus and method using a nearby small cell file cloud. 미국공개특허: US 2010-0161855, 공개일: 2010년 6월 24일, 제목: LIGHWEIGHT INPUT/OUTPUT PROTOCOL.US Patent Publication: US 2010-0161855, Publication Date: June 24, 2010, Title: LIGHWEIGHT INPUT/OUTPUT PROTOCOL. 미국공개특허: US 2019/0114193, 공개일: 2019년 4월 18일, 제목: METHOD FOR PROCESSING INPUT AND OUTPUT ON MULTI KERNEL SYSTEM AND APPARATUS FOR THE SAME.US Patent Publication: US 2019/0114193, Publication Date: April 18, 2019, Title: METHOD FOR PROCESSING INPUT AND OUTPUT ON MULTI KERNEL SYSTEM AND APPARATUS FOR THE SAME.

본 발명의 목적은 유니커널에서 고속으로 파일 입출력을 수행할 수 있는 파일 입출력 오프로드 방법 및 장치를 제공하는데 있다.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/output offload device 10 according to an embodiment of the present invention.
FIG. 2 is a ladder diagram exemplarily illustrating a process of file I/O offloading from the unikernel of the input/output offload device 10 to Linux and the file server 200 according to an embodiment of the present invention.
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 unikernel system 100 according to an embodiment of the present invention.
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/output offload device 10 for performing file input/output offload to the unikernel and the Linux/file server according to an embodiment of the present invention.
7 is a diagram exemplarily showing an electronic device 1000 according to an embodiment of the present invention.

아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.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/output offload device 10 according to an embodiment of the present invention. Referring to FIG. 1 , the file input/output offload device 10 may include a unikernel system 100 and a file server 200 .

유니커널 시스템(100)은 유니커널(110), 리눅스(120), 및 공유 메모리(130)를 포함할 수 있다.The unikernel system 100 may include a unikernel 110 , a Linux 120 , and a shared memory 130 .

유니커널(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 file server 200 .

공유 메모리(130)는 유니커널 메모리(132) 및 RDMA NIC(Remote Direct Memory Access Network Interface Card; 134)를 포함할 수 있다.The shared memory 130 may include a uni-kernel memory 132 and an RDMA Remote Direct Memory Access Network Interface Card (NIC) 134 .

파일 서버(200)는 리눅스(220; '제 2 리눅스') 및 메모리(230)를 포함할 수 있다. 여기서 메모리(230)는 비휘발성 메모리(NVMe; 232), RDMA NIC(234)를 포함할 수 있다. 한편, 비휘발성 메모리는 NVMe(Non-Volatile Memory Express) 외에도 다양한 종류의 비휘발성 메모리로 구현될 수 있다고 이해되어야 할 것이다.The file server 200 may include a Linux 220 ('second Linux') and a memory 230 . Here, the memory 230 may include a non-volatile memory (NVMe) 232 and an RDMA NIC 234 . Meanwhile, it should be understood that the non-volatile memory may be implemented as various types of non-volatile memory in addition to Non-Volatile Memory Express (NVMe).

본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는 유니커널(110)에서 고속으로 파일 입출력을 수행할 수 있다.The file input/output offload apparatus 10 according to an embodiment of the present invention may perform file input/output in the unikernel 110 at high speed.

파일 입출력 오프로드 장치(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/output offload device 10 may offload the input/output generated in the unikernel 110 to the first Linux 120 in order to perform input/output in the unikernel 110 at high speed. Here, the offloaded file input/output is to input/output data of a file stored in the NVMe 232 through the first Linux 120 and the file server 200 to the memory 132 of the unikernel 110 in an RDMA manner. can In an embodiment, the unikernel input/output (IO) may offload the IO of the unikernel 110 to the Linux 120 to access the NVMe 232 on the network through the RDMA NICs 134 and 234 . . In an embodiment, the unikernel 110 may allow a user to remotely access the NVMe 232 over a network and perform all disk operations (read, write, etc.) as if connected to a local machine.

정리하면, 본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는 유니커널(110)에서 고속으로 입출력을 수행하기 위하여 유니커널(110)에서 발생하는 입출력을 유니커널 시스템(100) 내부의 리눅스(120)에 오프로드하고, 오프로드된 파일 입출력을 리눅스(120)와 파일 서버(200)를 통해 NVMe(232)에 저장되어 있는 파일의 데이터를 RDMA 방식으로 유니커널 메모리(132)에 입출력할 수 있다.In summary, the file input/output offload device 10 according to an embodiment of the present invention transfers the input/output generated in the uni-kernel 110 to the uni-kernel system 100 in order to perform the input/output in the uni-kernel 110 at high speed. Offloaded to Linux 120, the offloaded file input/output is input/output to the unikernel memory 132 in the RDMA method with the data of the file stored in the NVMe 232 through the Linux 120 and the file server 200 can do.

본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는, 유니커널(110)에서 응용 프로그램이 리눅스(120) 및 파일 서버(200)에 파일 입출력 오프로드하고 RDMA 기반으로 고속의 파일 입출력을 수행할 수 있다.In the file input/output offload device 10 according to an embodiment of the present invention, an application program offloads file input/output to the Linux 120 and the file server 200 in the unikernel 110 and performs high-speed file input/output based on RDMA. can be done

본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는, 유니커널 환경에서 구축하기 어려운 범용 운영체제의 소프트웨어 스택(File system, Network File System)을 이용하여 유니커널 측면에서 리눅스로 파일 입출력을 오프로드하고, RDMA를 통하여 고속으로 파일을 입출력할 수 있다.The file input/output offload device 10 according to an embodiment of 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 environment to offload file input/output to Linux from the unikernel side. It can load and input/output files at high speed through RDMA.

본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는, 유니커널(110)에서 고속의 파일 입출력을 수행하기 위해 범용 운영체제에 입출력을 오프로드함으로써 파일시스템과 같이 무거운 소프트웨어 스택을 유니커널(110)에서 구성하지 않을 수 있다.The file input/output offload device 10 according to an embodiment of the present invention loads a heavy software stack such as a file system by offloading input/output to a general-purpose operating system in order to perform high-speed file input/output in the unikernel 110. 110) may not be configured.

본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는, 한 시스템 내에서 다수의 유니커널 응용 프로그램을 구동하더라도 각각의 유니커널에서 파일 시스템을 구축할 필요 없이 다수의 유니커널을 경량의 크기와 최적의 수행을 지원하도록 커널 라이브러리를 구성할 수 있다.The file input/output offload device 10 according to an embodiment of the present invention is a lightweight size for a plurality of unikernels without the need to build a file system in each unikernel even when a plurality of unikernel applications are driven in one system. and the kernel library can be configured to support optimal performance.

도 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/output offload device 10 to the Linux and file server 200 according to an embodiment of the present invention. Referring to FIG. 2 , the file input/output offload process may be performed as follows.

유니커널(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 unikernel 111 to the Linux 120 is that the unikernel 110 and the Linux 120 are one Each has its own virtual address for the physical address of , because it is impossible to extract the physical address of the memory with the other virtual address. In addition, the reason for inputting/outputting data using RDMA or DMA is that the physical address of the real memory is required, not the virtual address of the operating system. The file input/output information of the unikernel generated as above may be transmitted to the input/output offload proxy of the Linux 120 . Thereafter, the unikernel 110 may receive the file input/output function result as many as the number of IO vectors from the Linux 120 ( S115 ).

리눅스(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 file server 200 through a file system stub of Linux. Linux 120 may request an input/output command from the file server 200 to the physical address of the IO vector as much as the size of the IO vector for the file corresponding to the file descriptor (S124). In this case, the file system stub may request file I/O from the file server for one IO vector element as many as the number of IO vectors. That is, it is possible to process input/output by using consecutive physical addresses as one unit. At this time, the transmitted file I/O information is a file I/O command, a file descriptor, a physical address of an IO vector, and an I/O size of an IO vector.

이후에, 리눅스(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 NVMe 232/RDMA NIC 234 from the file server 200 ( 125 ). Thereafter, the Linux 120 may transmit the result of the file input/output function as many as the number of IO vectors to the unikernel memory 134 of the unikernel 110 .

파일 서버(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 file server 200 may proceed as follows. The file server 200 may drive a file server daemon in Linux 220 (S131). The Linux 220 of the file server 200 may receive a file input/output request from the Linux 120 of the unikernel system 100 ( S132 ). The Linux 220 of the file server 200 may extract file information from the file system in order to perform an input/output command on the NVMe file corresponding to the file descriptor (S133). When the file server 200 receives a file input/output request from the Linux 120 of the unikernel system 100, information for input/output from the file system to the NVMe to perform an input/output command on a file corresponding to the file descriptor can be extracted. The file server 200 may input/output data corresponding to the input/output size in NVMe, transmit it in RDMA, and transmit the data as much as the size to a physical address to be input/output through the RDMA engine. The Linux 220 of the file server 200 may perform input/output commands to NVMe and RDMA (S134). The Linux 220 of the file server 200 may transmit data with a size corresponding to the physical address and transmit the file input/output result to the Linux 120 of the unikernel system 100 (S135).

도 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 unikernel system 100 according to an embodiment of the present invention. Referring to FIG. 3 , the process of transmitting file input/output offload information from the unikernel 110 to the Linux 120 inside the unikernel system 100 may proceed as follows.

유니커널(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 unikernel memory 130 consists of three pages, there are two elements of a set consisting of consecutive physical pages among three matching physical pages.

도 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 file server 200 may extract information for executing a file command from a file corresponding to the received file descriptor from the file system. For example, information for inputting/outputting a file stored in the NVMe 232 may be extracted with respect to a file having the file descriptor fd. The file server 200 may command to copy the file data to be input/output in the NVMe 232 to the RDMA NIC 234. The file input/output data may be copied from the NVMe 232 to the RDMA NIC 234 (S270) The RDMA engine may transmit the file input/output data to the physical memory (eg, iov[i].pa) of the unikernel 110 in an RDMA manner.

도 6은 본 발명의 실시 예에 따른 유니커널과 리눅스/파일 서버에 파일 입출력 오프로드를 수행하기 위한 파일 입출력 오프로드 장치(10)를 좀 더 자세하게 보여주는 도면이다. 도 6을 참조하면, 파일 입출력 오프로드 장치(10)는 유니커널 시스템(100) 및 파일 서버(200)를 포함할 수 있다.6 is a diagram showing in more detail the file input/output offload device 10 for performing file input/output offload to the unikernel and the Linux/file server according to an embodiment of the present invention. Referring to FIG. 6 , the file input/output offload device 10 may include a unikernel system 100 and a file server 200 .

유니커널 시스템(100)은 제 1 커널 시스템(101) 및 제 2 커널 시스템(102)을 포함할 수 있다.The unikernel system 100 may include a first kernel system 101 and a second kernel system 102 .

제 1 커널 시스템(101)은 유니커널(110) 및 유니커널 메모리(130)를 포함할 수 있다. 유니커널(110)은 응용 프로그램(111), IO 벡터 생성부(112), 파일 입출력 정보 생성부(113), 파일 입출력 오프로드 요청 송신부(114), 파일 입출력 오프로드 수신부(115)를 포함할 수 있다. The first kernel system 101 may include a unikernel 110 and a unikernel memory 130 . The unikernel 110 may include an application program 111 , an IO vector generator 112 , a file input/output information generator 113 , a file input/output offload request transmitter 114 , and a file input/output offload receiver 115 . can

유니커널(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 vector generation unit 112 generates 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 (va) of an input/output buffer (Buffer) as one element. can

파일 입출력 정보 생성부(113)는 리눅스(1에 파일 입출력을 오프로드하기 위해 필요한 파일 입출력 오프로드 정보를 생성할 수 있다. 여기서 파일 입출력 정보는 유니커널의 입출력 명령, 파일 디스크립터, IO 벡터, 벡터 카운트 등이 있다.The file input/output information generation unit 113 may generate file input/output offload information necessary for offloading file input/output to Linux 1. Here, the file input/output information includes unikernel input/output commands, file descriptors, IO vectors, and vectors. count, etc.

파일 입출력 오프로드 요청 송신부(114)는 리눅스(120)에 파일 입출력 정보를 전송할 수 있다.The file input/output offload request transmitter 114 may transmit file input/output information to the Linux 120 .

파일 입출력 오프로드 결과 수신부(115)는 리눅스(120)의 파일 입출력 ?늡족琯? 결과 송신부(125)로부터 파일 입출력 오프로드 결과를 수신할 수 있다.File input/output offload result receiving unit 115 is the file input/output of Linux 120 ? A file input/output offload result may be received from the result transmitter 125 .

제 2 커널 시스템(102)은 리눅스(120) 및 RDMA NIC(140)를 포함할 수 있다. 리눅스(120)는 파일 입출력 오프로드 요청 수신부(121), 입출력 오프로드 함수 구성 및 호출부(122), IO 벡터 요청 송신부(123), IO 벡터 결과 수신부(124), 및 파일 입출력 오프로드 결과 송신부(125)를 포함할 수 있다.The second kernel system 102 may include a Linux 120 and an RDMA NIC 140 . Linux 120 includes a file input/output offload request receiver 121, an input/output offload function configuration and call unit 122, an IO vector request transmitter 123, an IO vector result receiver 124, and a file input/output offload result transmitter (125).

파일 입출력 오프로드 요청 수신부(121)는 유니커널(110)로부터 파일 입출력 정보를 수신할 수 있다.The file input/output offload request receiving unit 121 may receive file input/output information from the unikernel 110 .

파일 입출력 함수 구성 및 호출부(122)는 수신한 파일 입출력 정보를 이용하여 파일 입출력 함수를 구성하고, 파일 입출력을 실행할 수 있다.The file input/output function configuration and call unit 122 may configure a file input/output function using the received file input/output information and execute file input/output.

IO 벡터 요청 송신부(123)는 IO 벡터의 엘리먼트 하나에 대한 IO 요청을 파일 서버(200)에 전송할 수 있다. 여기서 IO 벡터 요청은 IO 벡터의 엘리먼트 개수만큼 전송될 수 있다.The IO vector request transmitter 123 may transmit an IO request for one element of the IO vector to the file server 200 . Here, the IO vector request may be transmitted as many as the number of elements of the IO vector.

IO 벡터 결과 수신부(124)는 파일 서버(200)로부터 IO 벡터 요청에 대응하는 결과를 수신할 수 있다. 즉, IO 벡터 결과 수신부(124)는 NVMe/RDMA를 통하여 IO 벡터의 엘리먼트 하나에 대한 파일 입출력한 결과를 파일 서버로부터 수신할 수 있다. 실시 예에 있어서, IO 벡터 요청이 성공이면, IO 벡터의 다음 엘리먼트에 대한 IO를 수행하기 위해 IO 벡터 요청 송신부(123)로 제어를 분기할 수 있다. 반면에, IO 벡터 요청이 실패이면, 파일 입출력 오프로드 결과 송신부(125)로 제어를 분기할 수 있다.The IO vector result receiving unit 124 may receive a result corresponding to the IO vector request from the file server 200 . That is, the IO vector result receiving unit 124 may receive a file input/output result for one element of the IO vector from the file server through NVMe/RDMA. In an embodiment, if the IO vector request is successful, control may be branched to the IO vector request transmitter 123 to perform IO on the next element of the IO vector. On the other hand, if the IO vector request fails, control may be branched to the file input/output offload result transmission unit 125 .

파일 입출력 오프로드 결과 송신부(125)는 수신된 IO 벡터 결과에 대응하는 파일 입출력 오프로드 결과를 유니커널(110)의 파일 입출력 오프로드 결과 수신부(115)에 전송할 수 있다.The file input/output offload result transmitter 125 may transmit a file input/output offload result corresponding to the received IO vector result to the file input/output offload result receiver 115 of the unikernel 110 .

파일 서버(200)는 리눅스(220), NVMe(230), 및 RDMA NIC(240)를 포함할 수 있다. 리눅스(220)는 IO 벡터 요청 수신부(221), 파일 정보 추출부(222), NVMe/RDMA IO 처리 수행부(223), 및 IO 벡터 결과 송신부(224)를 포함할 수 있다.File server 200 may include Linux 220 , NVMe 230 , and RDMA NIC 240 . Linux 220 may include an IO vector request receiving unit 221 , file information extracting unit 222 , NVMe/RDMA IO processing performing unit 223 , and IO vector result transmitting unit 224 .

IO 벡터 요청 수신부(221)는 IO 벡터의 엘리먼트 하나에 대한 IO 요청을 유니커널 시스템(100)의 리눅스(120)로부터 수신할 수 있다.The IO vector request receiving unit 221 may receive an IO request for one element of the IO vector from the Linux 120 of the unikernel system 100 .

파일정보 추출부(222)는 수신된 파일 디스크립터에 대응하는 파일로부터 파일 명령을 수행하기 위한 정보를 파일 시스템으로부터 추출할 수 있다.The file information extraction unit 222 may extract information for executing a file command from a file corresponding to the received file descriptor from the file system.

NVMe/RDMA IO 처리 수행부(223)는 NVMe(232)내에 입출력할 파일 데이터를 RDMA NIC(234)으로 복사하고, 복사된 파일 데이터를 RDMA NIC(234)에서 유니커널 시스템(100)의 리눅스(120)에 대응하는 RDMA NIC(134)를 통하여 유니커널(110)의 물리 메모리로 전송할 수 있다.The NVMe/RDMA IO processing performing unit 223 copies the file data to be input/output in the NVMe 232 to the RDMA NIC 234, and copies the copied file data from the RDMA NIC 234 to the Linux ( 120) may be transmitted to the physical memory of the unikernel 110 through the RDMA NIC 134.

IO 벡터 결과 송신부(224)는 NVMe/RDMA를 통하여 IO 벡터의 엘리먼트 하나에 대한 파일 입출력한 결과를 유니커널 시스템(100)의 리눅스(120)로 전송할 수 있다.The IO vector result transmitter 224 may transmit the result of file input/output for one element of the IO vector to the Linux 120 of the unikernel system 100 through NVMe/RDMA.

본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는, 유니커널(110)에 구동되는 응용 프로그램에 의해 리눅스(120) 및 파일 서버(200)에 파일 입출력 오프로드하고 RDMA 기반으로 고속의 파일 입출력을 수행할 수 있다.The file input/output offload device 10 according to an embodiment of the present invention offloads file input/output to the Linux 120 and the file server 200 by an application program driven by the unikernel 110, and performs RDMA-based high-speed File I/O can be performed.

본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는, 유니커널(110)에서 파일 입출력 환경을 구축할 때, 범용 운영체제의 소프트웨어 스택(File system, Network file system)을 이용함으로써 유니커널 측면에서는 리눅스로 파일 입출력을 오프로드하고, RDMA를 통하여 고속으로 파일을 입출력할 수 있다.File input/output offload device 10 according to an embodiment of the present invention, when building a file input/output environment in the unikernel 110, by using a software stack (File system, Network file system) of a general-purpose operating system, uni-kernel side can offload file I/O to Linux, and high-speed file I/O through RDMA.

본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는, 유니커널(110)에서 고속의 파일 입출력을 수행하기 위해 범용 운영체제에 입출력을 오프로드함으로써, 파일시스템과 같이 무거운 소프트웨어 스택을 유니커널(110)에 구성하지 않을 수 있다.The file input/output offload device 10 according to an embodiment of the present invention offloads I/O to a general-purpose operating system in order to perform high-speed file input/output in the unikernel 110, thereby converting a heavy software stack such as a file system to the unikernel. (110) may not be configured.

본 발명의 실시 예에 따른 파일 입출력 오프로드 장치(10)는, 한 시스템 내에서 다수의 유니커널 응용 프로그램을 구동하더라도 각각의 유니커널에서 파일 시스템을 구축할 필요 없이 다수의 유니커널을 경량의 크기와 최적의 수행을 지원할 수 있도록 커널 라이브러리를 구성할 수 있다.The file input/output offload device 10 according to an embodiment of the present invention is a lightweight size for a plurality of unikernels without the need to build a file system in each unikernel even when a plurality of unikernel applications are driven in one system. and the kernel library can be configured to support optimal performance.

도 7은 본 발명의 실시 예에 따른 전자 장치(1000)를 예시적으로 보여주는 도면이다. 도 7을 참조하면, 전자 장치(1000)는 적어도 하나의 프로세서(1100), 네트워크 인터페이스(1200), 메모리(1300), 디스플레이(1400), 및 입출력 장치(1500)를 포함할 수 있다. 도 7에 도시된 전자 장치(1000)는 상술된 유니커널 시스템(100)를 포함할 수 있다.7 is a diagram exemplarily showing an electronic device 1000 according to an embodiment of the present invention. Referring to FIG. 7 , the electronic device 1000 may include at least one processor 1100 , a network interface 1200 , a memory 1300 , a display 1400 , and an input/output device 1500 . The electronic device 1000 illustrated in FIG. 7 may include the above-described unikernel system 100 .

프로세서(1100)는 도 1 내지 도 6을 통하여 적어도 하나의 장치를 포함하거나, 도 1 내지 도 6을 통하여 전술한 적어도 하나의 방법으로 구현될 수 있다. 프로세서(1100)는, 상술된 바와 같이, 유니커널의 응용 프로그램을 시작하고; 유니커널 응용 프로그램에서 파일 입출력 함수를 호출하고; 유니커널에서 파일 입출력 정보를 생성하고; 유니커널에서 파일 입출력 정보를 리눅스로 전송하고; 리눅스에서 파일 입출력 프록시를 구동하고, 리눅스에서 파일 입출력 정보를 유니커널로 부터 수신하고; 리눅스에서 파일 입출력 정보를 이용하여 파일 입출력 함수 구성 및 호출하고; 리눅스에서 파일 디스크립터에 대응하는 파일에 대해 IO 벡터 크기 만큼 IO 벡터의 물리 주소로 입출력 명령을 파일 서버에 요청하고; 리눅스에서 파일 입출력 정보내의 IO 벡터 개수 만큼 수행 후 그 결과를 유니커널에 전송하고; 유니커널에서 파일 입출력 결과를 리눅스로부터 수신하도록, 인스트럭션들(instructions)을 실행할 수 있다.The processor 1100 may include at least one device with reference to FIGS. 1 to 6 , or may be implemented with at least one method described above with reference to FIGS. 1 to 6 . The processor 1100, as described above, starts an application program of the unikernel; calling file input/output functions from a unikernel application; generate file input/output information in the unikernel; transfer file input/output information from unikernel to linux; Run a file I/O proxy in Linux, and receive file I/O information from a unikernel in Linux; Configure and call file input/output functions using file input/output information in Linux; In Linux, for the file corresponding to the file descriptor, request an input/output command from the file server with the physical address of the IO vector as much as the size of the IO vector; In Linux, the number of IO vectors in the file input/output information is executed, and the result is transmitted to the unikernel; In Unikernel, you can execute instructions to receive file input/output results from Linux.

프로세서(1100)는 프로그램을 실행하고, 전자 장치(1000)를 제어할 수 있다. 전자 장치(1000)는 입출력 장치(1500)를 통하여 외부 장치(예를 들어, 퍼스널 컴퓨터 혹은 네트워크)에 연결되고, 데이터를 교환할 수 있다.The processor 1100 may execute a program and control the electronic device 1000 . The electronic device 1000 may be connected to an external device (eg, a personal computer or a network) through the input/output device 1500 and exchange data.

네트워크 인터페이스(1200)는 외부의 네트워크와 다양한 유/무선 방식에 의해 통신을 수행하도록 구현될 수 있다.The network interface 1200 may be implemented to communicate with an external network through various wired/wireless methods.

메모리(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 memory 1300 may include computer-readable instructions. The processor 1100 may perform the aforementioned operations as an instruction stored in the memory 1300 is executed in the processor 1100 . The memory 1300 may be a volatile memory or a non-volatile memory. The memory 1300 may include a storage device to store user data. The storage device may be an embedded multimedia card (eMMC), a solid state drive (SSD), a universal flash storage (UFS), or the like. The storage device may include at least one non-volatile memory device. Non-volatile memory devices include NAND flash memory (NAND flash memory), vertical NAND flash memory (VNAND), NOR flash memory (NOR flash memory), resistive random access memory (RRAM), phase change memory (Phase-Change Memory: PRAM), Magnetoresistive Random Access Memory (MRAM), Ferroelectric Random Access Memory (FRAM), Spin Transfer Torque Random Access Memory (STT-RAM), etc. this can be

이상에서 설명된 실시 예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/혹은 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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, Bellona 2 kernel, AIX kernel, etc.) of a monolithic kernel. will have to be understood

한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 이용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.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)

유니커널을 이용하는 원격 직접 메모리 접근(Remote Direct Memory Access; RDMA) 기반 파일 입출력 오프로드 장치의 동작 방법에 있어서,
상기 유니커널의 응용 프로그램에서 파일 입출력 커널 함수를 호출하는 단계;
상기 파일 입출력 커널 함수에서 파일 입출력 정보를 생성하는 단계;
상기 유니커널에서 상기 파일 입출력 정보를 리눅스로 전송하는 단계;
상기 리눅스에서 상기 파일 입출력 정보를 이용하여 파일 입출력 함수를 구성 및 호출하는 단계; 및
상기 파일 입출력 함수에서 상기 파일 입출력 정보에 대응하는 파일 입출력 요청을 파일 서버로 전송하는 단계를 포함하고,
상기 파일 입출력 정보를 생성하는 단계는,
파일 입출력 버퍼에 대한 연속적인 물리 주소 구간을 추출하는 단계; 및
상기 추출된 물리 주소 구간에 대응하는 주소와 크기를 하나의 엘리먼트로 하는 집합인 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.
삭제delete 제 1 항에 있어서,
상기 리눅스의 파일 입출력 프록시를 구동하는 단계를 더 포함하는 방법.
The method of claim 1,
The method further comprising the step of driving the file input/output proxy of the Linux.
제 3 항에 있어서,
상기 파일 입출력 프록시에서 상기 유니커널로부터 상기 파일 입출력 정보를 수신하는 단계를 더 포함하는 방법.
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.
삭제delete 제 1 항에 있어서,
상기 파일 입출력 요청을 파일 서버로 전송하는 단계는,
상기 리눅스의 파일 시스템 스텁에서 상기 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.
제 1 항에 있어서,
상기 리눅스에서 상기 파일 서버로부터 상기 파일 입출력 요청에 대한 결과를 수신하는 단계를 더 포함하는 방법.
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.
제 7 항에 있어서,
상기 파일 입출력 요청에 대한 결과가 성공일 때, 상기 리눅스에서 상기 유니커널로 상기 입출력 요청에 대한 결과를 전송하는 단계를 더 포함하는 방법.
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.
제 1 항에 있어서,
상기 파일 입출력 요청에 응답하여 상기 파일 서버의 데이터를 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.
유니커널을 이용하는 원격 직접 메모리 접근(Remote Direct Memory Access; RDMA) 기반 파일 입출력 오프로드 장치의 동작 방법에 있어서,
파일 서버에서 유니커널 시스템의 리눅스로부터 파일 입출력 요청을 수신하는 단계;
파일 서버에서 상기 파일 입출력 요청에 대응하는 파일 정보를 파일시스템에서 추출하는 단계;
상기 파일 정보를 이용하여 비휘발성 메모리에서 데이터를 입출력하는 단계; 및
상기 입출력된 데이터를 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.
제 10 항에 있어서,
상기 파일 서버에서 상기 유니커널 시스템의 리눅스로 상기 파일 입출력 요청에 대한 파일 입출력 결과를 전송하는 단계를 더 포함하는 방법.
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.
제 10 항에 있어서,
상기 파일 정보를 상기 파일 시스템에서 추출하는 단계는,
상기 파일 입출력 요청에 포함된 파일 디스크럽터에 대응하는 파일로부터 파일 명령을 수행하기 위한 상기 파일 정보를 추출하는 단계를 포함하는 방법.
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.
제 10 항에 있어서,
상기 파일 서버에서 상기 비휘발성 메모리의 상기 입출력된 데이터를 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.
제 10 항에 있어서,
상기 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.
원격 직접 메모리 접근(Remote Direct Memory Access; RDMA) 기반 파일 입출력 오프로드 장치에 있어서:
적어도 하나의 프로세서; 및
상기 적어도 하나의 프로세서에 실행되는 유니커널 및 리눅스를 저장하는 메모리를 포함하고,
상기 유니커널은, 응용 프로그램에서 파일 입출력 커널 함수를 호출하고, 상기 파일 입출력 커널 함수에서 파일 입출력 정보를 생성하고; 상기 유니커널에서 상기 파일 입출력 정보를 리눅스로 전송하고,
상기 리눅스는 상기 파일 입출력 정보를 이용하여 파일 입출력 함수를 구성 및 호출하고; 및 상기 파일 입출력 함수에서 상기 파일 입출력 정보에 대응하는 파일 입출력 요청을 파일 서버로 전송하고,
상기 유니커널은,
파일 입출력 버퍼에 대한 연속적인 물리 주소 구간을 추출하고, 상기 추출된 물리 주소 구간에 대응하는 주소와 크기를 하나의 엘리먼트로 하는 집합인 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.
제 15 항에 있어서,
상기 리눅스는 파일 입출력 프록시를 구동하여 상기 파일 입출력 정보를 상기 유니커널로부터 수신하는 것을 특징으로 하는 파일 입출력 오프로드 장치.
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.
제 15 항에 있어서,
상기 리눅스는 상기 파일 입출력 정보를 이용하여 파일 디스크립터에 대응하는 파일에 대하여 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.
제 17 항에 있어서,
상기 리눅스는 입출력 명령에 대응하는 결과는 상기 파일 서버로부터 수신하는 것을 특징으로 하는 파일 입출력 오프로드 장치.
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.
제 17 항에 있어서,
상기 파일 서버로부터 상기 입출력 명령에 대응하는 데이터를 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.
제 15 항에 있어서,
상기 리눅스는 상기 파일 서버의 저장 장치에 대한 디바이스 드라이버로 이용되는 것을 특징으로 하는 파일 입출력 오프로드 장치.


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.


KR1020190086140A 2018-11-12 2019-07-17 Method and apparatus for offloading file i/o based on remote diret memory access using unikernel KR102442118B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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