KR102066591B1 - 네트워크 어플리케이션을 위한 자가적응 기반의 시스템 리소스 최적화 장치 및 방법 - Google Patents

네트워크 어플리케이션을 위한 자가적응 기반의 시스템 리소스 최적화 장치 및 방법 Download PDF

Info

Publication number
KR102066591B1
KR102066591B1 KR1020150044066A KR20150044066A KR102066591B1 KR 102066591 B1 KR102066591 B1 KR 102066591B1 KR 1020150044066 A KR1020150044066 A KR 1020150044066A KR 20150044066 A KR20150044066 A KR 20150044066A KR 102066591 B1 KR102066591 B1 KR 102066591B1
Authority
KR
South Korea
Prior art keywords
application
network
state information
performance
quality value
Prior art date
Application number
KR1020150044066A
Other languages
English (en)
Other versions
KR20160116434A (ko
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 KR1020150044066A priority Critical patent/KR102066591B1/ko
Publication of KR20160116434A publication Critical patent/KR20160116434A/ko
Application granted granted Critical
Publication of KR102066591B1 publication Critical patent/KR102066591B1/ko

Links

Images

Classifications

    • H04L67/322
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/18Protocol analysers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

네트워크 어플리케이션을 위한 자가적응 기반의 시스템 리소스 최적화 장치 및 방법이 개시된다. 본 발명에 따른 자가적응 기반의 시스템 리소스 최적화 장치는 어플리케이션에 상응하는 어플리케이션 상태 정보를 획득하는 어플리케이션 상태 정보 획득부; 상기 어플리케이션의 실행을 위해 연결되는 네트워크의 전송 상태를 모니터링하는 네트워크 모니터링부; 및 상기 어플리케이션 상태 정보 및 상기 전송 상태 중 적어도 하나를 고려하여 상기 어플리케이션에 할당되는 시스템 리소스를 제어하는 리소스 제어부를 포함한다.

Description

네트워크 어플리케이션을 위한 자가적응 기반의 시스템 리소스 최적화 장치 및 방법 {APPARATUS AND METHOD FOR OPTIMIZING RESOURCE OF SYSTEM BASED ON SELF-ADAPTIVE FOR NATWORK APPLICATION}
본 발명은 멀티코어를 구비한 임베디드 시스템에서 복수 개의 네트워크 어플리케이션들의 성능과 네트워크 상태를 기반으로 하여 네트워크 어플리케이션들에게 최적의 리소스가 할당되도록 제어할 수 있는 네트워크 어플리케이션을 위한 자가적응 기반의 시스템 리소스 최적화 기술에 관한 것이다.
최근 임베디드 디바이스 내에 CPU, GPU, 멀티미디어 인코더 및 디코더 등 다양한 용도의 멀티코어 프로세서가 탑재되면서 시스템 내부가 점차 복잡해지고 있는 추세이다. 이에 따라 개발자들이 다양한 종류의 단말기에 대해서 소프트웨어를 최적화하기 위해서는 많은 시간과 노력을 필요로 한다. 특히, 스마트폰과 같은 임베디드 단말기의 활용도가 높아짐에 따라, 사용자들은 앱 스토어를 통해 다양한 어플리케이션들을 단말기에 추가로 탑재하고, 이를 동시에 운용하기 때문에 초기 상태에 비해 점차 성능이 저하되는 현상이 발생한다.
근래에 급격히 증가되고 있는 스마트폰 사용자들은 단말기 내에 자체 설치되고 실행되는 단독 어플리케이션(Stand-alone) 보다는 네트워크와 연결되어 동영상, 게임 및 SNS 등 온라인 형태의 어플리케이션을 더 선호하는 추세이다. 또한, 모바일 단말기 기술의 발전으로 멀티태스킹 기능이 지원됨으로써 하나의 단말에서 동시에 여러 개의 어플리케이션을 실행할 수 있게 되었다. 하지만 단말기에 제공되는 CPU와 네트워크 리소스는 한정되어 있으므로, 현재 단말기의 상황을 판단하여 보다 효율적인 실시간 동적 자원 분배나 시스템 리소스의 최적화가 요구된다.
이와 같은 임베디드 시스템의 리소스 최적화를 위해서는 복수 개의 어플리케이션을 동시에 실행하면서 저전력과 고성능에 대한 Trade-off 관계를 항상 고려해야 한다. 특히, 안드로이드 시스템에서는 시스템 자체에서 여러 개의 CPU 정책 관리기와 스케줄러들을 내장하고 있어서, 필요에 따라 설정하여 사용할 수 있도록 되어있다. 하지만 이는 특정 어플리케이션이 아닌 사용자들이 일반적으로 많이 사용하는 소프트웨어나 단말 초기 상태에 탑재될 소프트웨어만을 대상으로 수행되게 때문에, 개발 단계에서 설정된 이후 거의 변경이 발생하지 않는 문제점이 있다.
따라서, 시스템을 탑재한 단말이 출시된 이후에도 지속적으로 일정한 수준의 어플리케이션 성능을 유지하기 위해, 시스템 스스로 어플리케이션의 특성과 네트워크 등을 고려하여 시스템 리소스를 적절하게 할당할 수 있는 최적화 기술의 필요성이 절실하게 대두된다.
한국 공개 특허 제10-2014-0110486호, 2014년 9월 17일 공개(명칭: 모바일 클라우드 컴퓨팅 환경에서의 리소스 관리 시스템 및 그 방법)
본 발명의 목적은 하나의 단말에서 복수 개의 네트워크 어플리케이션이 동시에 실행되어도 각각의 어플리케이션의 성능이 저하되지 않도록 시스템 스스로 판단하여 최적의 리소스를 할당하는 것이다.
또한, 본 발명의 목적은 단말에서 리소스를 할당할 때, 실시간 네트워크의 상태 변동에 따라 리소스의 할당을 조절하여 사용자에게 최적의 품질을 제공하는 것이다.
또한, 본 발명의 목적은 복수 개의 어플리케이션에 대해서 각각의 어플리케이션이 갖는 특성에 따라 시스템 리소스를 분배함으로써 한정적인 리소스를 보다 효율적으로 사용하는 것이다.
상기한 목적을 달성하기 위한 본 발명에 따른 자가적응 기반의 시스템 리소스 최적화 장치는, 어플리케이션에 상응하는 어플리케이션 상태 정보를 획득하는 어플리케이션 상태 정보 획득부; 상기 어플리케이션의 실행을 위해 연결되는 네트워크의 전송 상태를 모니터링하는 네트워크 모니터링부; 및 상기 어플리케이션 상태 정보 및 상기 전송 상태 중 적어도 하나를 고려하여 상기 어플리케이션에 할당되는 시스템 리소스를 제어하는 리소스 제어부를 포함한다.
이 때, 리소스 제어부는 상기 어플리케이션 상태 정보 및 상기 전송 상태 중 적어도 하나를 기반으로 상기 어플리케이션의 현재 품질 수치를 측정하는 품질 수치 측정부; 및 상기 어플리케이션에 상응하는 목표 품질 수치와 상기 현재 품질 수치의 일치 여부에 따라 상기 시스템 리소스의 할당을 조절하는 리소스 조절부를 더 포함할 수 있다.
이 때, 어플리케이션 상태 정보어플리케이션 상태 정보는 상기 어플리케이션의 정적인 정보에 해당하는 품질 요구사항 및 상기 어플리케이션에 대해 실시간으로 수집된 동적 상태 정보 중 적어도 하나를 포함할 수 있다.
이 때, 동적 상태 정보는 어플리케이션 식별정보, 포트번호, 순간 데이터 사용량, 평균 데이터 사용량 및 대역폭 중 적어도 하나에 상응하는 시스템 수집 정보 및 실행 시간, 프레임 레이트(FPS, Frame Per Second) 및 화면 크기 중 적어도 하나에 상응하는 어플리케이션 측정 정보 중 적어도 하나를 포함하고, 기설정된 체크 주기마다 체크하여 갱신될 수 있다.
이 때, 리소스 조절부는 성능 측정 단위, 성능 최대치, 성능 정상치, 성능 최소치 중 적어도 하나를 포함하는 상기 품질 요구사항품질 요구사항을 기반으로 상기 목표 품질 수치를 계산할 수 있다.
이 때, 네트워크 모니터링부는 네트워크 통신 스택으로부터 큐 모니터링 상태 정보를 실시간으로 획득하고, 상기 큐 모니터링 상태 정보를 기반으로 상기 네트워크의 전송 상태를 판단할 수 있다.
이 때, 큐 모니터링 상태 정보는 상기 어플리케이션이 설치된 단말로 수신되는 TCP 패킷이 임시로 저장되는 적어도 하나의 큐의 상태를 상기 단말에서 실행되고 있는 적어도 하나 이상의 어플리케이션 별로 모니터링 하여 생성될 수 있다.
이 때, 적어도 하나의 큐는 백로그 큐(Backlog queue), 프리큐(Prequeue), 역전 큐(Out of order sequeue) 및 수신큐(Received queue) 중 적어도 하나를 포함할 수 있다.
이 때, 어플리케이션 상태 정보 획득부는 상기 어플리케이션에 상응하는 소스 코드 및 상기 어플리케이션의 성능을 외부 프로그램 및 시스템 커널 중 적어도 하나로 측정하여 생성된 외부 어플리케이션 상태 정보 중 적어도 하나를 기반으로 상기 어플리케이션 상태 정보를 획득할 수 있다.
이 때, 리소스 조절부는 CPU 코어 클럭 주파수, 코어 개수, 코어 타입 및 네트워크 대역폭 중 적어도 하나에 상응하는 상기 시스템 리소스를 조절할 수 있다.
이 때, 리소스 조절부는 상기 어플리케이션의 네트워크 포트번호로 수신된 패킷을 강제 누락시키는 강제 누락 주기를 조절하여 상기 네트워크 대역폭을 조절할 수 있다.
이 때, 리소스 조절부는 상기 목표 품질 수치를 기준으로 목표 성능 범위를 설정하고, 상기 현재 품질 수치가 상기 목표 성능 범위에 상응하면 상기 목표 품질 수치와 상기 현재 품질 수치가 일치하는 것으로 판단할 수 있다.
또한, 본 발명의 일실시예에 따른 자가적응 기반의 시스템 리소스 최적화 방법은, 어플리케이션에 상응하는 어플리케이션 상태 정보를 획득하는 단계; 상기 어플리케이션의 실행을 위해 연결되는 네트워크의 전송 상태를 모니터링 하는 단계; 및 상기 어플리케이션 상태 정보 및 상기 전송 상태 중 적어도 하나를 고려하여 상기 어플리케이션에 할당되는 시스템 리소스를 제어하는 단계를 포함한다.
이 때, 시스템 리소스를 제어하는 단계는 상기 어플리케이션 상태 정보 및 상기 전송 상태 중 적어도 하나를 기반으로 상기 어플리케이션의 현재 품질 수치를 측정하는 단계; 및 상기 어플리케이션에 상응하는 목표 품질 수치와 상기 현재 품질 수치의 일치 여부에 따라 상기 시스템 리소스의 할당을 조절하는 단계를 더 포함할 수 있다.
이 때, 어플리케이션 상태 정보는 상기 어플리케이션의 정적인 정보에 해당하는 품질 요구사항 및 상기 어플리케이션에 대해 실시간으로 수집된 동적 상태 정보 중 적어도 하나를 포함할 수 있다.
이 때, 동적 상태 정보는 어플리케이션 식별정보, 포트번호, 순간 데이터 사용량, 평균 데이터 사용량 및 대역폭 중 적어도 하나에 상응하는 시스템 수집 정보 및 실행 시간, 프레임 레이트(FPS, Frame Per Second) 및 화면 크기 중 적어도 하나에 상응하는 어플리케이션 측정 정보 중 적어도 하나를 포함하고, 기설정된 체크 주기마다 체크하여 갱신될 수 있다.
이 때, 조절하는 단계는 성능 측정 단위, 성능 최대치, 성능 정상치, 성능 최소치 중 적어도 하나를 포함하는 상기 품질 요구사항을 기반으로 상기 목표 품질 수치를 계산하 계산하는 단계를 포함할 수 있다.
이 때, 모니터링 하는 단계는 네트워크 통신 스택으로부터 큐 모니터링 상태 정보를 실시간으로 획득하는 단계를 포함하고, 상기 큐 모니터링 상태 정보를 기반으로 상기 네트워크 전송 상태를 판단할 수 있다.
이 때, 큐 모니터링 상태 정보는 상기 어플리케이션이 설치된 단말로 수신되는 TCP 패킷이 임시로 저장되는 적어도 하나의 큐의 상태를 상기 단말에서 실행되고 있는 적어도 하나 이상의 어플리케이션 별로 모니터링 하여 생성될 수 있다.
이 때, 적어도 하나의 큐는 백로그 큐(Backlog queue), 프리큐(Prequeue), 역전 큐(Out of order sequeue) 및 수신큐(Received queue) 중 적어도 하나를 포함할 수 있다.
이 때, 획득하는 단계는 상기 어플리케이션에 상응하는 소스 코드 및 상기 어플리케이션의 성능을 외부 프로그램 및 시스템 커널 중 적어도 하나로 측정하여 생성된 외부 어플리케이션 상태 정보 중 적어도 하나를 기반으로 상기 어플리케이션 상태 정보를 획득할 수 있다.
이 때, 조절하는 단계는 CPU 코어 클럭 주파수, 코어 개수, 코어 타입 및 네트워크 대역폭 중 적어도 하나에 상응하는 상기 시스템 리소스를 조절하고, 상기 어플리케이션의 네트워크 포트번호로 수신된 패킷을 강제 누락시키는 강제 누락 주기를 조절하여 상기 네트워크 대역폭을 조절할 수 있다.
이 때, 조절하는 단계는 상기 목표 품질 수치를 기준으로 목표 성능 범위를 설정하고, 상기 현재 품질 수치가 상기 목표 성능 범위에 상응하면 상기 목표 품질 수치와 상기 현재 품질 수치가 일치하는 것으로 판단할 수 있다.
본 발명에 따르면, 하나의 단말에서 복수 개의 네트워크 어플리케이션이 동시에 실행되어도 각각의 어플리케이션의 성능이 저하되지 않도록 시스템 스스로 판단하여 최적의 리소스를 할당할 수 있다.
또한, 본 발명은 단말에서 리소스를 할당할 때, 실시간 네트워크의 상태 변동에 따라 리소스의 할당을 조절하여 사용자에게 최적의 품질을 제공할 수 있다.
또한, 본 발명은 복수 개의 어플리케이션에 대해서 각각의 어플리케이션이 갖는 특성에 따라 시스템 리소스를 분배함으로써 한정적인 리소스를 보다 효율적으로 사용할 수 있다.
도 1은 본 발명의 일실시예에 따른 자가적응 기반의 시스템 리소스 최적화 시스템을 나타낸 블록도이다.
도 2는 도 1에 도시된 시스템 리소스 최적화 장치를 나타낸 블록도이다.
도 3은 도 2에 도시된 리소스 제어부를 나타낸 블록도이다.
도 4는 도 1에 도시된 시스템 리소스 최적화 장치와 네트워크 통신 스택을 상세하게 나타낸 블록도이다.
도 5는 본 발명의 일실시예에 따른 어플리케이션 상태 정보를 나타낸 도면이다.
도 6은 본 발명의 일실시예에 따른 자가적응 기반의 시스템 리소스 최적화 방법을 나타낸 동작 흐름도이다.
도 7은 본 발명의 일실시예에 따른 자가적응 기반의 시스템 리소스 최적화 방법을 상세하게 나타낸 동작 흐름도이다.
도 8은 본 발명의 실시예가 구현된 컴퓨터 시스템을 나타낸 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일실시예에 따른 자가적응 기반의 시스템 리소스 최적화 시스템을 나타낸 블록도이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 자가적응 기반의 시스템 리소스 최적화 시스템은 복수 개의 네트워크 어플리케이션을 동시에 실행 시, 어플리케이션의 품질 요구사항품질 요구사항과 네트워크의 동적 상태 정보를 모니터링 하여 최적의 시스템 리소스 할당을 제공할 수 있는 시스템으로, 시스템 리소스 최적화 장치(110), 네트워크 기반 어플리케이션(120), 네트워크 통신 스택(130), 멀티코어 프로세스(140) 및 네트워크 디바이스(150)를 포함한다.
시스템 리소스 최적화 장치(110)는 어플리케이션에 상응하는 어플리케이션 상태 정보를 획득한다.
이 때, 어플리케이션 상태 정보는 어플리케이션의 정적인 정보에 해당하는 품질 요구사항 및 어플리케이션에 대해 실시간으로 수집된 동적 상태 정보 중 적어도 하나를 포함할 수 있다.
이 때, 동적 상태 정보는 어플리케이션 식별정보, 포트번호, 순간 데이터 사용량, 평균 데이터 사용량 및 대역폭 중 적어도 하나에 상응하는 시스템 수집 정보 및 실행 시간, 프레임 레이트(FPS, Frame Per Second) 및 화면 크기 중 적어도 하나에 상응하는 어플리케이션 측정 정보 중 적어도 하나를 포함하고, 기설정된 체크 주기마다 체크하여 갱신될 수 있다.
이 때, 어플리케이션에 상응하는 소스 코드 및 어플리케이션의 성능을 외부 프로그램 및 시스템 커널 중 적어도 하나로 측정하여 생성된 외부 어플리케이션 상태 정보 중 적어도 하나를 기반으로 어플리케이션 상태 정보를 획득할 수 있다.
또한, 시스템 리소스 최적화 장치(110)는 어플리케이션의 실행을 위해 연결되는 네트워크의 전송 상태를 모니터링 한다.
이 때, 네트워크 통신 스택으로부터 큐 모니터링 상태 정보를 실시간으로 획득하고, 큐 모니터링 상태 정보를 기반으로 네트워크 전송 상태를 판단할 수 있다.
이 때, 큐 모니터링 상태 정보는 어플리케이션이 설치된 단말로 수신되는 TCP 패킷이 임시로 저장되는 적어도 하나의 큐의 상태를 단말에서 실행되고 있는 적어도 하나 이상의 어플리케이션 별로 모니터링 하여 생성될 수 있다.
이 때, 적어도 하나의 큐는 백로그 큐(Backlog queue), 프리큐(Prequeue), 역전 큐(Out of order sequeue) 및 수신큐(Received queue) 중 적어도 하나를 포함할 수 있다.
또한, 시스템 리소스 최적화 장치(110)는 어플리케이션 상태 정보 및 전송 상태 중 적어도 하나를 고려하여 어플리케이션에 할당되는 시스템 리소스를 제어한다.
이 때, 어플리케이션 상태 정보 및 전송 상태 중 적어도 하나를 기반으로 어플리케이션의 현재 품질 수치를 측정하고, 어플리케이션에 상응하는 목표 품질 수치와 현재 품질 수치의 일치 여부에 따라 시스템 리소스의 할당을 조절할 수 있다.
이 때, 성능 측정 단위, 성능 최대치, 성능 정상치, 성능 최소치 중 적어도 하나를 포함하는 품질 요구사항품질 요구사항을 기반으로 목표 품질 수치를 계산할 수 있다.
이 때, CPU 코어 클럭 주파수, 코어 개수, 코어 타입 및 네트워크 대역폭 중 적어도 하나에 상응하는 시스템 리소스를 조절할 수 있다.
이 때, 어플리케이션의 네트워크 포트번호로 수신된 패킷을 강제 누락시키는 강제 누락 주기를 조절하여 네트워크 대역폭을 조절할 수 있다.
이 때, 목표 품질 수치를 기준으로 목표 성능 범위를 설정하고, 현재 품질 수치가 목표 성능 범위에 상응하면 목표 품질 수치와 현재 품질 수치가 일치하는 것으로 판단할 수 있다.
이와 같은 시스템 리소스 최적화 장치(110)를 통해 단말에서 운용 중인 복수 개의 어플리케이션들에 대해서 사전에 정의된 성능에 대한 요구 사항을 받고, 현재 가용할 수 있는 시스템의 리소스를 최대한 활용하여 어플리케이션의 성능 및 품질을 유지할 수 있다.
네트워크 기반 어플리케이션(120)은 단말 자체에 설치되어 실행되는 단독 어플리케이션(Stand-alone)의 형태가 아닌 단말이 네트워크와 연결되어 실행되는 어플리케이션의 형태에 상응할 수 있다. 예를 들어, 방송 미디어나, 유투브, IPTV, VOD 서비스와 같이 인터넷에 연결하여 시청할 수 있는 미디어 어플리케이션이나 인터넷에 접속하여 다른 사용자와 함께 플레이 하는 게임 어플리케이션 및 소셜 네트워크에 접속할 수 있는 SNS 어플리케이션 등이 네트워크 기반 어플리케이션(120)에 상응할 수 있다. 또한, 미디어, 게임, SNS에 상응하는 어플리케이션 말고도 네트워크에 접속하여 실행하는 어플리케이션은 네트워크 기반 어플리케이션(120)에 상응할 수 있다.
이와 같은 네트워크 기반 어플리케이션(120)은 단말 시스템의 CPU 및 네트워크 리소스를 주로 사용할 수 있다.
네트워크 통신 스택(130)은 네트워크를 통해 외부로부터 수신되는 통신 메시지를 처리하며, TCP/IP, UDP 및 FTP 패킷과 같이 IP 패킷 레벨 이상의 인터넷 통신 프로토콜을 다룰 수 있다. 또한, 네트워크 통신 스택(120)은 수신되는 데이터 량이 증가할 경우에 이를 처리하기 위해 많은 네트워크 대역폭뿐만 아니라 CPU 리소스를 사용할 수 도 있다.
이러한 네트워크 통신 스택(130)은 여러 레이어(layer)가 있으며, 크게 유저(User) 영역, 커널(Kernel) 영역 및 디바이스(device) 영역으로 나눌 수 있다. 유저 영역과 커널 영역에서의 동작은 CPU가 수행할 수 있는데, 이러한 유저 영역과 커널 영역은 디바이스 영역과 구별하기 위해 호스트(host)라고 나타낼 수 있다. 이 때, 디바이스는 패킷을 송수신하는 NIC(Network Interface Card)에 상응할 수 있다. 흔히 부르는 랜카드가 이에 상응할 수 있다.
네트워크 통신 스택(130)을 통해 데이터를 전송할 시, 우선 어플리케이션이 전송할 데이터를 생성하고, write 시스템 콜을 호출해서 데이터를 보낼 수 있다. 이 때, 소켓은 이미 생성되어 연결되어 있다고 가정한다면, 시스템 콜을 호출하면 커널 영역으로 전환될 수 있다. Linux나 Unix를 포함한 POSIX 계열 운영체제는 소켓을 file descriptor로 어플리케이션에 노출할 수 있다. 이런 POSIX 계열의 운영체제에서 소켓은 파일에 한 종류로, 파일 레이어는 단순한 검사만 하고 파일 구조체에 연결된 소켓 구조체를 사용해서 소켓 함수를 호출할 수 있다.
또한, 커널 소켓은 두 개의 버퍼를 가질 수 있는데, 송신용으로 준비한 send socket buffer와 수신용으로 준비한 receive socket buffer가 이에 상응할 수 있다. Write 시스템 콜을 호출하면 유저 영역의 데이터가 커널 메모리로 복사되고, send socket buffer의 뒷부분에 추가될 수 있다. 이는 데이터를 순서대로 전송하기 위함일 수 있다. 이 후에 TCP를 호출할 수 있는데, 소켓과 연결된 TCP Control Block(TCB)에는 TCP 연결 처리에 필요한 정보가 있을 수 있다. 이 때, TCB에 있는 데이터는 connection state, receive window, congestion window, sequeue 번호, 및 재전송 타이머 등에 상응할 수 있다.
이 때, 현재 TCP 상태가 데이터 전송을 허용하면 새로운 TCP segment, 즉 패킷을 생성할 수 있다. TCP segment에는 TCP 헤더와 페이로드(payload)가 있을 수 있다. 페이로드에는 ACK를 받지 않은 send socket buffer에 있는 데이터가 담겨 있을 수 있다. 페이로드의 최대 길이는 receive window, congestion window, MSS(Maximum Segment Size) 중 최대 값에 상응할 수 있다.
이 후, TCP checksum을 계산할 수 있는데, 이 checksum 계산에는 pseudo 헤더 정보(IP 주소들, segment 길이, 프로토콜 번호)를 포함시킬 수 있다. 여기서 TCP 상태에 따라 패킷을 한 개 이상 전송할 수 있다. 사실 요즘의 네트워크 통신 스택(130)에서는 checksum offload 기술을 사용하기 때문에, 커널이 직접 TCP checksum을 계산하지 않고 대신 NIC가 checksum을 계산할 수 있다. 여기서는 설명의 편의를 위해 커널이 checksum을 계산한다고 가정한다.
이 때, 생성된 TCP segment는 IP 레이어로 이동할 수 있다. IP 레이어에서는 TCP segment에 IP 헤더를 추가하고, IP routing을 수행할 수 있다. IP routing이란 목적지 IP 주소(destination IP)로 가기 위한 다음 장비의 IP 주소(next IP)를 찾는 과정을 말한다. 이 후, IP 레이어에서 IP 헤더 checksum을 계산하여 덧붙인 후, Ethernet 레이어로 데이터를 보낼 수 있다. Ethernet 레이어는 ARP(Address Resolution Protocol)를 사용해서 next hop IP의 MAC 주소를 찾을 수 있다. 그리고 Ethernet 헤더를 패킷에 추가할 수 있다. 이와 같이 Ethernet 헤더까지 붙으면 호스트의 패킷을 완성될 수 있다.
이 후, IP routing을 수행하면 그 결과물로 next hop IP와 해당 IP로 패킷을 전송할 때 사용하는 인터페이스(transmit interface, 혹은 NIC)를 알 수 있다. 따라서 transmit NIC의 드라이버를 호출할 수 있다. 만약 tcpdump나 Wireshark 같은 패킷 캡처 프로그램이 작동 중이면 커널은 패킷 데이터를 프로그램이 사용하는 메모리 버퍼에 복사할 수 있다. 수신도 마찬가지로 드라이버 바로 위에서 패킷을 캡처할 수 있다.
이 후, 드라이버는 NIC 제조사가 정의한 드라이버-NIC 통신 규약에 따라 패킷 전송을 요청할 수 있다. NIC는 패킷 전송 요청을 받고, 메인 메모리에 있는 패킷을 자신의 메모리로 복사하고, 네트워크 선으로 전송할 수 있다. 이 때, Ethernet 표준에 따라 IFG(Inter-Frame Gap), preamble, 그리고 CRC를 패킷에 추가할 수 있다. IFG, preamble은 패킷의 시작을 판단하기 위해 사용하고(네트워킹 용어로는 framing), CRC는 데이터 보호를 위해 사용한다(TCP, IP checksum과 같은 용도이다). 패킷 전송은 Ethernet의 물리적 속도, 그리고 Ethernet flow control에 따라 전송할 수 있는 상황일 때 시작될 수 있다.
또한, NIC가 패킷을 전송할 때 NIC는 호스트 CPU에 인터럽트(interrupt)를 발생시킬 수 있다. 모든 인터럽트에는 인터럽트 번호가 있으며, 운영체제는 인터럽트 번호를 이용하여 해당 인터럽트를 처리할 수 있는 적합한 드라이버를 찾을 수 있다. 드라이버는 인터럽트를 처리할 수 있는 함수(인터럽트 핸들러)를 드라이브가 가동되었을 때 운영체제에 등록해둘 수 있다. 운영체제가 핸들러를 호출하고, 핸들러는 전송된 패킷을 운영체제에 반환할 수 있다.
상기에서 설명한 것은 어플리케이션에서 입력을 하였을 때 데이터가 커널과 디바이스를 거쳐 전송되는 과정에 상응할 수 있다. 그런데 어플리케이션이 입력에 상응하게 쓰기 요청을 직접적으로 하지 않아도 커널이 TCP를 호출해서 패킷을 전송하는 경우가 있을 수도 있다. 예를 들어, ACK을 받아 receive window가 늘어나면 socket buffer에 남아있는 데이터를 포함한 TCP segment를 생성하여 상대편에 전송할 수 있다.
네트워크 통신 스택(130)을 통해 데이터를 수신할 시, 우선 NIC가 패킷을 자신의 메모리에 기록할 수 있다. 이 후, CRC 검사로 패킷이 올바른지 검사하고, 호스트의 메모리 버퍼로 패킷을 전송할 수 있다. 이 때, 메모리 버퍼는 드라이버가 커널에 요청하여 패킷 수신용으로 미리 할당한 메모리이고, 할당을 받은 후 드라이버는 NIC에 메모리 주소와 크기를 알려 줄 수 있다. 만약, NIC가 패킷을 받았는데, 드라이버가 미리 할당해 놓은 호스트 메모리 버퍼가 없으면 NIC가 패킷을 버릴 수 있다 (packet drop).
이 후, 패킷을 호스트 메모리로 전송한 후, NIC가 호스트운영체제에 인터럽트를 보낼 수 있다. 이 후, 드라이버가 새로운 패킷을 보고 자신이 처리할 수 있는 패킷인지 검사할 수 있다. 이 때, 지금까지의 과정은 제조사가 정의한 드라이버-NIC 통신 규약을 사용할 수 있다.
또한, 드라이버가 상위 레이어로 패킷을 전달하려면 운영체제가 이해할 수 있도록, 받은 패킷을 운영체제가 사용하는 패킷 구조체로 포장해야 한다. 예를 들어, Linux의 sk_buff, BSD 계열 커널의 mbuf, 그리고 Microsoft Windows의 NET_BUFFER_LIST가 운영체제의 패킷 구조체에 상응할 수 있다. 따라서, 드라이버는 이렇게 포장한 패킷을 상위 레이어로 전달할 수 있다.
이 후, Ethernet 레이어에서도 패킷이 올바른지 검사하고, 상위 프로토콜(네트워크 프로토콜)을 찾을 수 있다(de-multiplex). 이 때, Ethernet 헤더의 ethertype 값을 사용할 수 있다. 이 때, IPv4 ethertype은 0x0800에 상응할 수 있다. 이 후, Ethernet 헤더를 제거하고 IP 레이어로 패킷을 전달할 수 있다.
또한, IP 레이어에서도 패킷이 올바른지 검사할 수 있다. 즉, IP 헤더 checksum을 확인하는 것이다. 논리적으로 여기서 IP routing을 해서 패킷을 로컬 장비가 처리해야 하는지, 아니면 다른 장비로 전달해야 하는지 판단할 수 있다. 로컬 장비가 처리해야 하는 패킷이면 IP 헤더의 proto 값을 보고 상위 프로토콜(트랜스포트 프로토콜)을 찾을 수 있다. 이 때, TCP proto 값은 6에 상응할 수 있다. 이 후, IP 헤더를 제거하고 TCP 레이어로 패킷을 전달할 수 있다.
또한, 하위 레이어에서와 마찬가지로 TCP 레이어에서도 패킷이 올바른지 검사할 수 있다. 즉, TCP checksum도 확인한다. 앞서 언급했듯이 요즘의 네트워크 스택에는 checksum offload 기술이 적용되어 있기 때문에 커널이 checksum을 직접 계산하지 않을 수 있다.
다음으로 패킷이 속하는 연결, 즉 TCP control block을 찾을 수 있다. 이 때, 패킷의 <소스 IP, 소스 port, 타깃 IP, 타깃 port>를 식별자로 사용할 수 있다. 연결을 찾으면 프로토콜을 수행해서 받은 패킷을 처리할 수 있다. 새로운 데이터를 받았다면, 데이터를 receive socket buffer에 추가하고, TCP 상태에 따라 새로운 TCP 패킷(예를 들어 ACK 패킷)을 전송할 수 있다.
멀티코어 프로세스(140)는 복수 개의 CPU 코어를 가지고 있어 다양한 멀티 알고리즘을 병렬 처리할 수 있다. 특히, 임베디드 시스템에서는 복수 개의 어플리케이션들을 서로 다른 코어에 할당해줌으로써 멀티 실행 환경을 제공할 수도 있다.
네트워크 디바이스(150)는 네트워크를 통해 단말로 통신 메시지를 전달할 수 있다. 즉, 단말에 설치된 네트워크 기반 어플리케이션(120)과 통신을 수행하면서 어플리케이션 실행에 있어 필요한 데이터를 송수신할 수 있다.
도 2는 도 1에 도시된 시스템 리소스 최적화 장치를 나타낸 블록도이다.
도 2를 참조하면, 도 1에 도시된 시스템 리소스 최적화 장치(110)는 어플리케이션 상태 정보 획득부(210), 네트워크 모니터링부(220) 및 리소스 제어부(230)를 포함한다.
어플리케이션 상태 정보 획득부(210)는 어플리케이션에 상응하는 어플리케이션 상태 정보를 획득한다. 단말에서 현재 가용할 수 있는 시스템 리소스를 최대한 활용하여 어플리케이션의 성능 및 품질을 유지하기 위해서, 복수 개의 어플리케이션들 각각 상응하는 어플리케이션 상태 정보를 획득할 수 있다. 이 때, 복수 개의 어플리케이션들은 자신의 품질에 대한 정보를 일정 주기마다 실시간으로 어플리케이션 상태 정보 획득부(210)로 전송할 수 있다.
이 때, 어플리케이션 상태 정보는 정적인 정보에 해당하는 품질 요구사항 및 어플리케이션에 대해 실시간으로 수집된 동적 상태 정보 중 적어도 하나를 포함할 수 있다.
또한, 네트워크 어플리케이션이 단말에서 초기 실행될 때, 네트워크 어플리케이션의 품질 요구사항을 전송할 수 있으며, 이를 위해 네트워크 어플리케이션 자체에 대한 품질 요구사항이 정의될 수 있다.
또한, 어플리케이션 상태 정보는 어플리케이션의 자체 실행에 필요한 아이디 정보, 버전 정보, 아이콘, 필요한 리소스 정보 등에 상응하는 어플리케이션 특성 정보를 포함할 수도 있다.
이 때, 동적 상태 정보는 어플리케이션 식별정보, 포트번호, 순간 데이터 사용량, 평균 데이터 사용량 및 대역폭 중 적어도 하나에 상응하는 시스템 수집 정보 및 실행 시간, 프레임 레이트(FPS, Frame Per Second) 및 화면 크기 중 적어도 하나에 상응하는 어플리케이션 측정 정보 중 적어도 하나를 포함하고, 기설정된 체크 주기마다 체크하여 갱신될 수 있다. 예를 들어, 단말에 설치된 네트워크 어플리케이션이 실행된 후에 어플리케이션의 상태 정보가 지속적으로 변동될 수 있기 때문에, 기설정된 주기마다 실시간으로 동적 상태 정보를 체크하여 어플리케이션에 할당되는 시스템 리소스를 제어하는데 참고할 수 있다.
이 때, 시스템 수집 정보는 시스템, 즉 단말이나 시스템 리소스 최적화 장치를 통해 수집될 수 있으며, 어플리케이션 측정 정보는 어플리케이션을 통해 실시간으로 측정될 수 있다.
이 때, 어플리케이션에 상응하는 소스 코드 및 어플리케이션의 성능을 외부 프로그램 및 시스템 커널 중 적어도 어느 하나로 측정하여 생성된 외부 어플리케이션 상태 정보 중 적어도 하나를 기반으로 어플리케이션 상태 정보를 획득할 수 있다. 예를 들어, 어플리케이션에 소스 코드에 형태로 정의된 어플리케이션 상태 정보를 획득하거나, 어플리케이션의 성능을 측정하는 외부 프로그램을 실행하여 외부 어플리케이션 상태 정보를 생성할 수 있다.
네트워크 모니터링부(220)는 어플리케이션의 실행을 위해 연결되는 네트워크의 전송 상태를 모니터링 한다. 이 때, 네트워크 통신 스택을 통해 네트워크의 전송 상태를 지속적으로 보고받음으로써 모니터링을 수행할 수 있다.
이 때, 네트워크 통신 스택으로부터 큐 모니터링 상태 정보를 실시간으로 획득하고, 큐 모니터링 상태 정보를 기반으로 네트워크의 전송 상태를 판단할 수 있다. 예를 들어, 네트워크 통신 스택은 네트워크 디바이스로부터 수신한 통신 메시지 중에서 단말의 어플리케이션에게 전달되어야 할 패킷만을 걸러낼 수 있다. 이 후, 어플리케이션에 전달된 패킷을 임시로 큐(queue)에 저장하였다가 전달될 수 있는데, 이 때 패킷이 저장되는 적어도 하나의 큐에 대한 큐 모니터링 상태 정보를 실시간으로 획득할 수 있다.
이 때, 큐 모니터링 상태 정보는 어플리케이션이 설치된 단말로 수신되는 TCP 패킷이 임시로 저장되는 적어도 하나의 큐의 상태를 단말에서 실행되고 있는 적어도 하나 이상의 어플리케이션 별로 모니터링 하여 생성될 수 있다. 예를 들어, 네트워크 디바이스로부터 수신된 통신 메시지 중 TCP 패킷만을 걸러내고, 시스템 리소스 최적화 장치에서 무시하도록 지정된 포드 목록을 기반으로 패킷들을 누락시켜 다시 한번 TCP 패킷을 필터링 할 수 있다.
이와 같이 네트워크 통신 스택에서 패킷을 필터링하여 전달함으로써 처리해야 할 메시지 수를 줄일 수 있어 시스템 리소스를 절약할 수 있고, 어플리케이션 별로 소요되는 네트워크 대역폭을 조절할 수도 있다.
이 때, 적어도 하나의 큐는 백로그 큐(Backlog queue), 프리큐(Prequeue), 역전 큐(Out of order sequeue) 및 수신큐(Received queue) 중 적어도 하나를 포함할 수 있다.
백로그 큐는 연결 요청 대기 상태에 있는 패킷이 저장되는 공간에 상응하며, 연결이 수락될 때까지 연결 요청 자체를 대기시킬 수 있는 상태에 있다는 것을 의미할 수 있다. 종래에는 백로그 큐의 크기를 5 정도로 설정하였으나, 웹 서버와 같이 잦은 연결 요청을 받는 서버를 구현할 경우에는 최소 15 이상의 크기로 설정될 수 있다.
역전큐는 여러 TCP 패킷이 중복되거나 순서가 많지 않게 들어와서 쌓이게 되는 공간에 상응하며, 역전큐에 TCP 패킷이 저장된다면 단말 외부의 네트워크 상태가 좋지 않음을 나타낼 수 있다. 또한, 네트워크 상태가 좋지 않음으로 인해 TCP 패킷 처리를 위해 CPU 리소스를 많이 사용하고 있다는 것을 알려줄 수도 있다.
수신큐는 어플리케이션 레벨에서 패킷을 가져가지 않는 경우에 임시 저장되는 공간으로, 수신큐에 패킷이 임시 저장됨에 따라 어플리케이션이 이에 대해 대처할 수 있도록 알려줄 수 있다.
프리큐는 수신된 TCP 패킷을 수신큐에 보낼 수 없을 때 임시 저장하는 공간에 상응할 수 있다.
리소스 제어부(230)는 어플리케이션 상태 정보 및 전송 상태 중 적어도 하나를 고려하여 어플리케이션에 할당되는 시스템 리소스를 제어한다. 즉, 어플리케이션의 상태와 네트워크의 상태를 고려하여 최적의 시스템 리소스 분배를 결정하고, 결정된 시스템 리소스를 어플리케이션에 할당할 수 있다. 이 때, 리소스 제어부(230)는 도 1에 도시된 네트워크 통신 스택(130)과 멀티코어 프로세스(140)를 조정함으로써 시스템 리소스를 제어할 수 있다.
이 때, 어플리케이션 상태 정보 및 전송 상태 중 적어도 하나를 기반으로 어플리케이션의 현재 품질 수치를 측정할 수 있고, 어플리케이션에 상응하는 목표 품질 수치와 현재 품질 수치의 일치 여부에 따라 시스템 리소스의 할당을 조절할 수 있다.
예를 들어, 현재 어플리케이션에서 측정된 현재 품질 수치가 목표로 하는 목표 품질 수치에서 벗어났다고 가정한다면, 현재 품질 수치가 목표 품질 수치를 초과하였는지 또는 미만인지 여부를 판단할 수 있다. 만약, 현재 품질 수치가 목표 품질 수치를 초과하였다면 어플리케이션에 필요 이상의 시스템 리소스를 할당하고 있는 것으로 판단하고, 어플리케이션에 상응하는 포트의 통신 패킷을 강제로 누락하도록 네트워크 통신 스택을 조정하여 네트워크 대역폭과 CPU 리소스를 절약할 수 있다.
또한, 현재 품질 수치가 목표 품질 수치 미만이라면 어플리케이션의 성능이 향상되도록 설정할 수 있다. 예를 들어, 역전큐의 상태를 조회하여 역전큐에 저장된 패킷이 기설정된 임계치 이상이라면, 네트워크 상태가 좋지 않거나 강제 누락 주기가 짧아 누락되는 패킷이 필요이상 많은 것으로 판단할 수 있다. 따라서, 이와 같은 경우에는 특정 포트의 강제 누락 주기를 길게 조절하여 역전큐가 발생하지 않도록 할 수 있다.
또한, 현재 품질 수치가 목표 품질 수치 미만이면서 역전큐에 저장된 패킷이 기설정된 임계치 이상인 상태가 아니라면, 현재 할당된 시스템 리소스가 어플리케이션의 성능을 만족시키지 못하는 수준이라고 판단할 수 있다. 따라서, 이 때에는 CPU 코어 클럭 주파수를 증가시켜 어플리케이션으로 시스템 리소스를 추가로 할당하고, 어플리케이션에 상응하는 포트를 완전히 개방할 수 있도록 강제 누락 주기를 삭제하여 누락되는 패킷이 없도록 조정할 수 있다. 또한, CPU 코어 클럭 주파수 이외에도 CPU 코어 개수를 증가시키거나 고성능에 상응하는 타입으로 코어 타입을 전환하여 시스템 리소스를 추가로 할당할 수도 있다.
이 때, 성능 측정 단위, 성능 최대치, 성능 정상치, 성능 최소치 중 적어도 하나를 포함하는 품질 요구사항을 기반으로 목표 품질 수치를 계산할 수 있다.
이 때, 성능 측정 단위는 어플리케이션에 대해서 측정하고자 하는 품질의 성능 지표를 나타낼 수 있다. 또한, 복수 개의 어플리케이션에 대해 전체적인 성능 개선을 위해 다른 성능 지표와 비교 및 변환에 활용될 수 있다.
이 때, 성능 최대치와 성능 최소치는 네트워크 기반의 어플리케이션이 실행될 때 만족해야 할 품질의 범위를 표현할 수 있다. 즉, 성능 최소치부터 성능 최대치까지의 범위가 어플리케이션이 실행될 때 만족해야 할 품질의 범위에 상응할 수 있다. 또한, 성능 최소치는 어플리케이션이 가져야 하는 최소한의 품질 요구사항에 상응할 수 있고, 성능 최대치는 저전력과 같이 단말이 필요이상 시스템 리소스를 사용하지 않도록 하는데 활용될 수 있다.
성능 정상치는 단말의 시스템 리소스가 충분한 상태에서 사용자에게 최적의 품질에 상응하는 어플리케이션을 제공하는 값에 상응할 수 있으며, 목표 품질 수치를 계산하는 기준값에 상응할 수 있다.
이 때, CPU 코어 클럭 주파수, 코어 개수, 코어 타입 및 네트워크 대역폭 중 적어도 하나에 상응하는 시스템 리소스를 조절할 수 있다. 즉, 어플리케이션에 시스템 리소스를 더 할당해야 하는 경우에는 CPU 코어 클럭 주파수 증가, CPU 코어의 개수 증가 또는 코어의 타입을 고성능 타입으로 전환하는 등의 제어를 수행할 수 있고, 네트워크의 상태가 나쁜 경우에 네트워크 대역폭을 늘여서 원활한 통신이 가능하도록 조절할 수 있다.
이 때, 어플리케이션의 네트워크 포트번호로 수신된 패킷을 강제 누락시키는 강제 누락 주기를 조절하여 네트워크 대역폭을 조절할 수 있다. 예를 들어, 강제 누락 주기를 짧게 조절하여 네트워크 대역폭을 줄이거나, 강제 누락 주기를 길게 조절하여 네트워크 대역폭을 늘릴 수 있다.
이 때, 목표 품질 수치를 기준으로 목표 품질 범위를 설정하고, 현재 품질 수치가 목표 품질 범위에 상응하면 목표 품질 수치와 현재 품질 수치가 일치하는 것으로 판단할 수 있다. 예를 들어, 목표 품질 수치가 N에 상응한다고 가정한다면, N을 기준으로 N을 초과하는 범위와 N 미만의 범위를 설정하여 목표 품질 범위를 설정할 수 있다. 이 후, 현재 품질 수치가 목표 품질 범위에 포함되는 경우 목표 품질 수치와 현재 품질 수치가 일치한다고 판단할 수 있다.
이 때, 목표 품질 범위는 개발자 또는 관리자에 의해 자유롭게 변경이 가능할 수 있다.
이와 같은 시스템 리소스 최적화 장치(110)는 상기에서 설명한 실시예에 한정되지 않고, 메모리, 미디어 인코더, 미디어 디코더 및 캐쉬 등 어플리케이션의 성능을 모니터링하고 제어할 수 있는 소프트웨어 및 하드웨어 장치들에 적용될 수 있다.
도 3은 도 2에 도시된 리소스 제어부를 나타낸 블록도이다.
도 3을 참조하면, 도 2에 도시된 리소스 제어부(230)는 품질 수치 측정부(310) 및 리소스 조절부(320)를 포함한다.
품질 수치 측정부(310)는 어플리케이션 상태 정보 및 전송 상태 중 적어도 하나를 기반으로 어플리케이션의 현재 품질 수치를 측정한다. 예를 들어, 네트워크의 전송 상태가 좋지 않거나 어플리케이션에 할당되는 시스템 리소스의 할당량이 적절하지 않은 경우에는 어플리케이션의 현재 품질 수치가 낮아질 가능성이 있다. 따라서, 어플리케이션을 최적의 조건에서 실행하기 위해 일단 어플리케이션의 성능에 영향을 줄 수 있는 요소들을 고려하여 현재에 상응하는 어플리케이션의 품질 수치를 측정할 수 있다.
리소스 조절부(320)는 어플리케이션에 상응하는 목표 품질 수치와 현재 품질 수치의 일치 여부에 따라 시스템 리소스의 할당을 조절한다.
예를 들어, 현재 품질 수치가 목표 품질 수치에서 벗어났다고 가정한다면, 현재 품질 수치가 목표 품질 수치를 초과하였는지 또는 미만인지 여부를 판단할 수 있다. 만약, 현재 품질 수치가 목표 품질 수치를 초과하였다면 어플리케이션에 필요 이상의 시스템 리소스를 할당하고 있는 것으로 판단하고, 어플리케이션에 상응하는 포트의 통신 패킷을 강제로 누락하도록 네트워크 통신 스택을 조정하여 네트워크 대역폭과 CPU 리소스를 절약할 수 있다.
또한, 현재 품질 수치가 목표 품질 수치 미만이라면 어플리케이션의 성능이 향상되도록 설정할 수 있다. 예를 들어, 역전큐의 상태를 조회하여 역전큐에 저장된 패킷이 기설정된 임계치 이상이라면, 네트워크 상태가 좋지 않거나 강제 누락 주기가 짧아 누락되는 패킷이 필요이상 많은 것으로 판단할 수 있다. 따라서, 이와 같은 경우에는 특정 포트의 강제 누락 주기를 길게 조절하여 역전큐가 발생하지 않도록 할 수 있다.
또한, 현재 품질 수치가 목표 품질 수치 미만이면서 역전큐에 저장된 패킷이 기설정된 임계치 이상인 상태가 아니라면, 현재 할당된 시스템 리소스가 어플리케이션의 성능을 만족시키지 못하는 수준이라고 판단할 수 있다. 따라서, 이 때에는 CPU 코어 클럭 주파수를 증가시켜 어플리케이션으로 시스템 리소스를 추가로 할당하고, 어플리케이션에 상응하는 포트를 완전히 개방할 수 있도록 강제 누락 주기를 삭제하여 누락되는 패킷이 없도록 조정할 수 있다. 또한, 코어의 개수를 증가시키거나 고성능에 상응하게 코어 타입을 전환하여 시스템 리소스를 추가로 할당할 수도 있다.
이 때, 성능 측정 단위, 성능 최대치, 성능 정상치, 성능 최소치 중 적어도 하나를 포함하는 품질 요구사항을 기반으로 목표 품질 수치를 계산할 수 있다.
이 때, 성능 측정 단위는 어플리케이션에 대해서 측정하고자 하는 성능의 지표를 나타낼 수 있다. 또한, 복수 개의 어플리케이션에 대해 전체적인 품질 개선을 위해 다른 성능 지표와 비교 및 변환에 활용될 수 있다.
이 때, 성능 최대치와 성능 최소치는 네트워크 기반의 어플리케이션이 실행될 때 만족해야 할 품질의 범위를 표현할 수 있다. 즉, 성능 최소치부터 성능 최대치까지의 범위가 어플리케이션이 실행될 때 만족해야 할 품질에 범위에 상응할 수 있다. 또한, 성능 최소치는 어플리케이션이 가져야 하는 최소한의 품질 요구사항에 상응할 수 있고, 성능 최대치는 저전력과 같이 단말이 필요이상 시스템 리소스를 사용하지 않도록 하는데 활용될 수 있다.
성능 정상치는 단말의 시스템 리소스가 충분한 상태에서 사용자에게 최적의 품질에 상응하는 어플리케이션을 제공하는 값에 상응할 수 있으며, 목표 품질 수치를 계산하는 기준값에 상응할 수 있다.
이 때, 목표 품질 수치를 기준으로 목표 품질 범위를 설정하고, 현재 품질 수치가 목표 품질 범위에 상응하면 목표 품질 수치와 현재 품질 수치가 일치하는 것으로 판단할 수 있다.
도 4는 도 1에 도시된 시스템 리소스 최적화 장치와 네트워크 통신 스택을 상세하게 나타낸 블록도이다.
도 4를 참조하면, 시스템 리소스 최적화 장치(400)는 단말에서 실행되는 어플리케이션의 품질 요구사항을 기반으로 생성되는 어플리케이션의 어플리케이션 상태 정보와 네트워크 통신 스택(410)이 주기적으로 전송하는 네트워크의 상태 정보를 분석하여 시스템 리소스를 제어할 수 있다.
이 때, 네트워크 통신 스택(410)은 크게 TCP 패킷 처리 모듈(420), TCP 패킷 필터링 모듈(430) 및 IP 패킷 처리 모듈(440)을 포함할 수 있다.
IP 패킷 처리 모듈(440)은 네트워크 디바이스로부터 네트워크를 통해 수신된 복수 개의 통신 패킷들 중에서 해당 단말에 관련된 패킷만을 필터링하여 상위 레이어에 해당하는 TCP 패킷 필터링 모듈(430)로 전달할 수 있다.
TCP 패킷 필터링 모듈(430)은 IP 패킷 처리 모듈(440)로부터 전달된 적어도 하나 이상의 패킷 중에서 특정 포트에 해당되는 TCP 패킷을 걸러내는 역할을 수행할 수 있다.
TCP 패킷 처리 모듈(420)은 TCP 패킷 필터링 모듈(430)을 통과한 TCP 패킷을 해석하고, 큐 그룹(422)에 속한 복수 개의 큐를 거쳐 최종적으로 TCP 패킷을 어플리케이션에 전달하는 역할을 수행할 수 있다.
도 4를 참조하여 전체적인 패킷의 흐름을 설명하면, 네트워크 디바이스로부터 수신된 복수개의 통신 패킷들은 IP 패킷 처리 모듈(440)로 전달될 수 있다.
이 후, IP 패킷 처리 모듈(440)은 전달된 복수 개의 통신 패킷들 중 단말에 해당되는 적어도 하나 이상의 TCP 패킷만 걸러내어 TCP 패킷 필터링 모듈(430)로 전달할 수 있다.
이 후, TCP 패킷 필터링 모듈(430)은 리소스 제어부(403)로부터 수신된 포트 제어에 상응하는 정보, 즉 포트 제어 목록을 확인하고 이에 해당하는 패킷을 강제로 누락하도록 제어할 수 있다. 이와 같은 패킷 강제 누락을 통해 상위 레이어에 상응하는 TCP 패킷 처리 모듈(420)에서 처리할 패킷의 수를 줄여줌으로써 패킷 처리를 위한 시스템 리소스를 절약할 수 있고, 어플리케이션 별로 할당되는 네트워크 대역폭을 조절할 수도 있다.
이 후, TCP 패킷 필터링 모듈(430)은 적어도 하나 이상의 패킷 중에서 누락되지 않고 남은 TCP 패킷을 TCP 패킷 처리 모듈(420)의 큐 그룹(422)에 포함된 큐들로 전달할 수 있다.
이 후, 큐 모니터링 모듈(421)은 큐 그룹(422)에 속한 큐들을 모니터링 하면서 네트워크 모니터링부(402)에게 실시간으로 큐들의 상태를 전달할 수 있다.
이 때, 단말에서 실행되고 있는 적어도 하나 이상의 어플리케이션 별로 큐들의 상태를 모니터링 할 수 있다.
이 때, 큐 그룹(422)에 속하는 큐들은 백로그큐(Backlog queue), 프리큐(Prequeue), 역전큐(Out of order sequeue) 및 수신큐(Received queue) 중 적어도 하나에 상응할 수 있다.
이 때, 역전큐는 여러 개의 TCP 패킷이 중복되거나 순서가 많지 않게 들어와서 저장되는 공간으로 단말 외부 네트워크의 상태가 좋지 않음을 나타낼 수 있다. 또한, 이로 인해 TCP 패킷의 처리를 위한 CPU 리소스, 즉 시스템 리소스를 많이 사용하고 있다는 것을 알 수 있다.
또한, 수신큐는 어플리케이션 레벨에서 패킷을 가져가지 않는 경우에 패킷들이 저장되는 공간으로 어플리케이션에 이를 처리할 수 있도록 알려줄 수 있다.
시스템 리소스 최소화 장치(400)는 상기와 같이 구성된 네트워크 통신 스택(410)으로부터 네트워크의 상태 정보를 수신하고, 어플리케이션 상태 정보 획득부(401)에서 어플리케이션 상태 정보를 획득하여 어플리케이션으로 할당되는 시스템 리소스를 조절할 수 있다.
이 때, 시스템 리소스 최적화 장치(400)는 리소스 제어부(403)를 통해 CPU 코어 클럭 주파수나 코어 개수, 코어 타입 및 네트워크 대역폭을 조절할 수 있다.
이 때, 리소스 제어부(403)는 멀티코어 프로세스를 제어하여 CPU 코어 클럭 주파수, CPU 코어 개수 및 코어 타입 등을 조절할 수 있고, 네트워크 통신 스택(410)으로 패킷을 강제 누락시킬 포트 목록 및 강제 누락 주기를 제공하여 네트워크 대역폭을 조절할 수 있다.
도 5는 본 발명의 일실시예에 따른 어플리케이션 상태 정보를 나타낸 도면이다.
도 5를 참조하면, 스트리밍 미디어 재생 어플리케이션에 있어서 동영상의 재생 속도와 관련된 어플리케이션 상태 정보(500)를 확인할 수 있다.
도 5에 도시된 어플리케이션 상태 정보(500)의 품질 요구사항(510)을 살펴보면, 성능 측정 단위(511), 성능 최대치(512), 성능 정상치(513) 및 성능 최소치(514)를 포함하는 것을 확인할 수 있다.
이 때, 도 5에 도시된 어플리케이션 상태 정보는 성능 측정 단위(511)로 동영상의 재생 단위인 fps(frames per second)가 사용된 것을 확인할 수 있다. 즉, 스트리밍 미디어 재생 어플리케이션의 품질을 측정하는 성능 지표로서 fps를 사용할 수 있다.
또한, 성능 최대치(512)는 어플리케이션에 불필요하게 많은 시스템 리소스가 할당되는지 여부를 확인하는데 활용되는 값일 수 있다. 예를 들어, 어플리케이션 상태 정보(500)에 상응하는 스트리밍 미디어 재생 어플리케이션의 현재 fps를 측정하였을 때, 40fps를 초과하였다면 필요이상으로 많은 시스템 리소스가 할당된 것으로 판단할 수 있다. 따라서, 이 경우에는 스트리밍 미디어 재생 어플리케이션으로 할당되는 시스템 리소스를 감소시킬 수 있다.
또한, 성능 최소치(514)는 네트워크 기반의 어플리케이션이 실행될 수 있는 최소한의 성능일 수 있다.
따라서, 성능 최대치(512)와 성능 최소치(514)를 통해 네트워크 기반의 어플리케이션이 실행될 때 만족해야 하는 성능의 범위를 표현할 수 있다. 예를 들어, 도 5에 상응하는 스트리밍 미디어 재생 어플리케이션의 경우에는 fps를 최소 25fps에서 최대 40fps 사이에 상응하게 유지시켰을 때, 전체적인 문제 없이 어플리케이션이 실행될 수 있다.
또한, 성능 정상치(513)는 단말의 시스템 리소스가 충분한 상태에서 단말의 사용자에게 최적의 품질을 제공할 수 있는 값일 수 있다. 따라서, 성능 정상치(513)는 시스템 리소스 최적화 장치의 목표 품질 수치를 계산하는데 활용될 수 있다.
도 6은 본 발명의 일실시예에 따른 자가적응 기반의 시스템 리소스 최적화 방법을 나타낸 동작 흐름도이다.
도 6을 참조하면, 본 발명의 일실시예에 따른 자가적응 기반의 시스템 리소스 최적화 방법은 어플리케이션에 상응하는 어플리케이션 상태 정보를 획득한다(S610). 단말에서 현재 가용할 수 있는 시스템 리소스를 최대한 활용하여 어플리케이션의 성능 및 품질을 유지하기 위해서, 복수 개의 어플리케이션들 각각 상응하는 어플리케이션 상태 정보를 획득할 수 있다. 이 때, 복수 개의 어플리케이션들은 자신의 품질에 대한 정보를 일정 주기마다 실시간으로 전송해 줄 수 있다.
이 때, 어플리케이션 상태 정보는 정적인 정보에 해당하는 품질 요구사항 및 어플리케이션에 대해 실시간으로 수집된 동적 상태 정보 중 적어도 하나를 포함할 수 있다.
또한, 네트워크 어플리케이션이 단말에서 초기 실행될 때, 네트워크 어플리케이션의 품질 요구사항을 전송할 수 있으며, 이를 위해 네트워크 어플리케이션 자체에 대한 품질 요구사항이 정의될 수 있다.
또한, 어플리케이션 상태 정보는 어플리케이션의 자체 실행에 필요한 아이디 정보, 버전 정보, 아이콘, 필요한 리소스 정보 등에 상응하는 어플리케이션 특성 정보를 포함할 수도 있다.
이 때, 동적 상태 정보는 어플리케이션 식별정보, 포트번호, 순간 데이터 사용량, 평균 데이터 사용량 및 대역폭 중 적어도 하나에 상응하는 시스템 수집 정보 및 실행 시간, 프레임 레이트(FPS, Frame Per Second) 및 화면 크기 중 적어도 하나에 상응하는 어플리케이션 측정 정보 중 적어도 하나를 포함하고, 기설정된 체크 주기마다 체크하여 갱신될 수 있다. 예를 들어, 단말에 설치된 네트워크 어플리케이션이 실행된 후에 어플리케이션의 상태 정보가 지속적으로 변동될 수 있기 때문에, 기설정된 주기마다 실시간으로 동적 상태 정보를 체크하여 어플리케이션에 할당되는 시스템 리소스를 제어하는데 참고할 수 있다.
이 때, 시스템 수집 정보는 시스템, 즉 단말이나 시스템 리소스 최적화 장치를 통해 수집될 수 있으며, 어플리케이션 측정 정보는 어플리케이션을 통해 실시간으로 측정될 수 있다.
이 때, 어플리케이션에 상응하는 소스 코드 및 어플리케이션의 성능을 외부 프로그램 및 시스템 커널로 중 적어도 어느 하나로 측정하여 생성된 외부 어플리케이션 상태 정보 중 적어도 하나를 기반으로 어플리케이션 상태 정보를 획득할 수 있다. 예를 들어, 어플리케이션에 소스 코드에 형태로 정의된 어플리케이션 상태 정보를 획득하거나, 어플리케이션의 성능을 측정하는 외부 프로그램을 실행하여 외부 어플리케이션 상태 정보를 생성할 수 있다.
또한, 본 발명의 일실시예에 따른 자가적응 기반의 시스템 리소스 최적화 방법은은 어플리케이션의 실행을 위해 연결되는 네트워크의 전송 상태를 모니터링 한다(S620). 이 때, 네트워크 통신 스택을 통해 네트워크의 전송 상태를 지속적으로 보고받음으로써 모니터링을 수행할 수 있다.
이 때, 네트워크 통신 스택으로부터 큐 모니터링 상태 정보를 실시간으로 획득하고, 큐 모니터링 상태 정보를 기반으로 네트워크의 전송 상태를 판단할 수 있다. 예를 들어, 네트워크 통신 스택은 네트워크 디바이스로부터 수신한 통신 메시지 중에서 단말의 어플리케이션에게 전달되어야 할 패킷만을 걸러낼 수 있다. 이 후, 어플리케이션에 전달된 패킷을 임시로 큐(queue)에 저장하였다가 전달될 수 있는데, 이 때 패킷이 저장되는 적어도 하나의 큐에 대한 큐 모니터링 상태 정보를 실시간으로 획득할 수 있다.
이 때, 큐 모니터링 상태 정보는 어플리케이션이 설치된 단말로 수신되는 TCP 패킷이 임시로 저장되는 적어도 하나의 큐의 상태를 단말에서 실행되고 있는 적어도 하나 이상의 어플리케이션 별로 모니터링 하여 생성될 수 있다. 예를 들어, 네트워크 디바이스로부터 수신된 통신 메시지 중 TCP 패킷만을 걸러내고, 시스템 리소스 최적화 장치에서 무시하도록 지정된 포드 목록을 기반으로 패킷들을 누락시켜 다시 한번 TCP 패킷을 필터링 할 수 있다.
이와 같이 네트워크 통신 스택에서 패킷을 필터링하여 전달함으로써 처리해야 할 메시지 수를 줄일 수 있어 시스템 리소스를 절약할 수 있고, 어플리케이션 별로 소요되는 네트워크 대역폭을 조절할 수도 있다.
이 때, 적어도 하나의 큐는 백로그 큐(Backlog queue), 프리큐(Prequeue), 역전 큐(Out of order sequeue) 및 수신큐(Received queue) 중 적어도 하나를 포함할 수 있다.
백로그 큐는 연결 요청 대기 상태에 있는 패킷이 저장되는 공간에 상응하며, 연결이 수락될 때까지 연결 요청 자체를 대기시킬 수 있는 상태에 있다는 것을 의미할 수 있다. 종래에는 백로그 큐의 크기를 5 정도로 설정하였으나, 웹 서버와 같이 잦은 연결 요청을 받는 서버를 구현할 경우에는 최소 15 이상의 크기로 설정될 수 있다.
역전큐는 여러 TCP 패킷이 중복되거나 순서가 많지 않게 들어와서 쌓이게 되는 공간에 상응하며, 역전큐에 TCP 패킷이 저장된다면 단말 외부의 네트워크 상태가 좋지 않음을 나타낼 수 있다. 또한, 네트워크 상태가 좋지 않음으로 인해 TCP 패킷 처리를 위해 CPU 리소스를 많이 사용하고 있다는 것을 알려줄 수도 있다.
수신큐는 어플리케이션 레벨에서 패킷을 가져가지 않는 경우에 임시 저장되는 공간으로, 수신큐에 패킷이 임시 저장됨에 따라 어플리케이션이 이에 대해 대처할 수 있도록 알려줄 수 있다.
프리큐는 수신된 TCP 패킷을 수신큐에 보낼 수 없을 때 임시 저장하는 공간에 상응할 수 있다.
또한, 본 발명의 일실시예에 따른 자가적응 기반의 시스템 리소스 최적화 방법은 어플리케이션 상태 정보 및 전송 상태 중 적어도 하나를 고려하여 어플리케이션에 할당되는 시스템 리소스를 제어한다(S630). 즉, 어플리케이션의 상태와 네트워크의 상태를 고려하여 최적의 시스템 리소스 분배를 결정하고, 결정된 시스템 리소스를 어플리케이션에 할당할 수 있다. 이 때, 도 1에 도시된 네트워크 통신 스택(130)과 멀티코어 프로세스(140)를 조정함으로써 시스템 리소스를 제어할 수 있다.
이 때, 어플리케이션 상태 정보 및 전송 상태 중 적어도 하나를 기반으로 어플리케이션의 현재 품질 수치를 측정할 수 있고, 어플리케이션에 상응하는 목표 품질 수치와 현재 품질 수치의 일치 여부에 따라 시스템 리소스의 할당을 조절할 수 있다.
예를 들어, 현재 어플리케이션에서 측정된 현재 품질 수치가 목표로 하는 목표 품질 수치에서 벗어났다고 가정한다면, 현재 품질 수치가 목표 품질 수치를 초과하였는지 또는 미만인지 여부를 판단할 수 있다. 만약, 현재 품질 수치가 목표 품질 수치를 초과하였다면 어플리케이션에 필요 이상의 시스템 리소스를 할당하고 있는 것으로 판단하고, 어플리케이션에 상응하는 포트의 통신 패킷을 강제로 누락하도록 네트워크 통신 스택을 조정하여 네트워크 대역폭과 CPU 리소스를 절약할 수 있다.
또한, 현재 품질 수치가 목표 품질 수치 미만이라면 어플리케이션의 성능이 향상되도록 설정할 수 있다. 예를 들어, 역전큐의 상태를 조회하여 역전큐에 저장된 패킷이 기설정된 임계치 이상이라면, 네트워크 상태가 좋지 않거나 강제 누락 주기가 짧아 누락되는 패킷이 필요이상 많은 것으로 판단할 수 있다. 따라서, 이와 같은 경우에는 특정 포트의 강제 누락 주기를 길게 조절하여 역전큐가 발생하지 않도록 할 수 있다.
또한, 현재 품질 수치가 목표 품질 수치 미만이면서 역전큐에 저장된 패킷이 기설정된 임계치 이상인 상태가 아니라면, 현재 할당된 시스템 리소스가 어플리케이션의 성능을 만족시키지 못하는 수준이라고 판단할 수 있다. 따라서, 이 때에는 CPU 코어 클럭 주파수를 증가시켜 어플리케이션으로 시스템 리소스를 추가로 할당하고, 어플리케이션에 상응하는 포트를 완전히 개방할 수 있도록 강제 누락 주기를 삭제하여 누락되는 패킷이 없도록 조정할 수 있다. 또한, CPU 코어 클럭 주파수 이외에도 코어의 개수를 증가시키거나 고성능에 상응하는 타입으로 코어 타입을 전환함으로써 시스템 리소스를 추가로 할당할 수도 있다.
이 때, 성능 측정 단위, 성능 최대치, 성능 정상치, 성능 최소치 중 적어도 하나를 포함하는 품질 요구사항을 기반으로 목표 품질 수치를 계산할 수 있다.
이 때, 성능 측정 단위는 어플리케이션에 대해서 측정하고자 하는 품질의 성능 지표를 나타낼 수 있다. 또한, 복수 개의 어플리케이션에 대해 전체적인 성능 개선을 위해 다른 성능 지표와 비교 및 변환에 활용될 수 있다.
이 때, 성능 최대치와 성능 최소치는 네트워크 기반의 어플리케이션이 실행될 때 만족해야 할 품질의 범위를 표현할 수 있다. 즉, 성능 최소치부터 성능 최대치까지의 범위가 어플리케이션이 실행될 때 만족해야 할 품질의 범위에 상응할 수 있다. 또한, 성능 최소치는 어플리케이션이 가져야 하는 최소한의 품질 요구사항에 상응할 수 있고, 성능 최대치는 저전력과 같이 단말이 필요이상 시스템 리소스를 사용하지 않도록 하는데 활용될 수 있다.
성능 정상치는 단말의 시스템 리소스가 충분한 상태에서 사용자에게 최적의 품질에 상응하는 어플리케이션을 제공하는 값에 상응할 수 있으며, 목표 품질 수치를 계산하는 기준값에 상응할 수 있다.
이 때, CPU 코어 클럭 주파수, 코어 개수, 코어 타입 및 네트워크 대역폭 중 적어도 하나에 상응하는 시스템 리소스를 조절할 수 있다. 즉, 어플리케이션에 시스템 리소스를 더 할당해야 하는 경우에는 CPU 코어 클럭 주파수 증가, CPU 코어의 개수 증가 또는 코어의 타입을 고성능 타입으로 전환하는 등의 제어를 수행할 수 있고, 네트워크의 상태가 나쁜 경우에 네트워크 대역폭을 늘여서 원활한 통신이 가능하도록 조절할 수 있다.
이 때, 어플리케이션의 네트워크 포트번호로 수신된 패킷을 강제 누락시키는 강제 누락 주기를 조절하여 네트워크 대역폭을 조절할 수 있다. 예를 들어, 강제 누락 주기를 짧게 조절하여 네트워크 대역폭을 줄이거나, 강제 누락 주기를 길게 조절하여 네트워크 대역폭을 늘릴 수 있다.
이 때, 목표 품질 수치를 기준으로 목표 품질 범위를 설정하고, 현재 품질 수치가 목표 품질 범위에 상응하면 목표 품질 수치와 현재 품질 수치가 일치하는 것으로 판단할 수 있다. 예를 들어, 목표 품질 수치가 N에 상응한다고 가정한다면, N을 기준으로 N을 초과하는 범위와 N 미만의 범위를 설정하여 목표 품질 범위를 설정할 수 있다. 이 후, 현재 품질 수치가 목표 품질 범위에 포함되는 경우 목표 품질 수치와 현재 품질 수치가 일치한다고 판단할 수 있다.
이 때, 목표 품질 범위는 개발자 또는 관리자에 의해 자유롭게 변경이 가능할 수 있다.
도 7은 본 발명의 일실시예에 따른 자가적응 기반의 시스템 리소스 최적화 방법을 상세하게 나타낸 동작 흐름도이다.
도 7을 참조하면, 본 발명의 일실시예에 따른 자가적응 기반의 시스템 리소스 최적화 방법은 먼저 어플리케이션에 상응하는 어플리케이션 상태 정보를 획득한다(S710).
이 때, 어플리케이션 상태 정보는 정적인 정보에 해당하는 품질 요구사항 및 어플리케이션에 대해 실시간으로 수집된 동적 상태 정보 중 적어도 하나를 포함할 수 있다.
또한, 동적 상태 정보는 어플리케이션 식별정보, 포트번호, 순간 데이터 사용량, 평균 데이터 사용량 및 대역폭 중 적어도 하나에 상응하는 시스템 수집 정보 및 실행 시간, 프레임 레이트(FPS, Frame Per Second) 및 화면 크기 중 적어도 하나에 상응하는 어플리케이션 측정 정보 중 적어도 하나를 포함하고, 기설정된 체크 주기마다 체크하여 갱신될 수 있다.
이 후, 네트워크의 전송 상태를 모니터링 한다(S720).
이 때, 네트워크 통신 스택을 통해 네트워크의 전송 상태를 지속적으로 보고받음으로써 모니터링을 수행할 수 있다.
또한, 네트워크 통신 스택으로부터 큐 모니터링 상태 정보를 실시간으로 획득하고, 큐 모니터링 상태 정보를 기반으로 네트워크의 전송 상태를 판단할 수 있다.
이 후, 어플리케이션 상태 정보에 포함된 품질 요구사항을 기반으로 목표 품질 수치를 계산하고, 어플리케이션 상태 정보 및 전송 상태 중 적어도 하나를 기반으로 어플리케이션의 현재 품질 수치를 측정한다(S730).
이 후, 현재 품질 수치가 목표 품질 수치와 일치하는지 확인하기 위해서, 현재 품질 수치가 목표 품질 범위에 상응하는지 여부를 판단한다(S735).
단계(S735)의 판단결과 현재 품질 수치가 목표 품질 범위에 상응하면, 시스템 리소스를 조절하지 않고 유지할 수 있다.
그러나, 단계(S735)의 판단결과 현재 품질 수치가 목표 품질 범위에 상응하지 않으면, 현재 품질 수치가 목표 품질 수치 미만인지 여부를 판단한다(S745).
단계(S745)의 판단결과 현재 품질 수치가 목표 품질 수치 미만이 아니면, 네트워크 통신 스택에서 어플리케이션에 상응하는 포트의 강제 누락 주기를 짧게 조절한다(S750). 즉, 현재 품질 수치가 목표 품질 수치보다 높기 때문에 필요이상으로 많은 시스템 리소스가 할당되는 것을 알 수 있다. 따라서, 강제 누락 주기를 짧게 조절함으로써 어플리케이션에 상응하는 포트에서 패킷을 많이 누락시켜 네트워크 대역폭과 CPU 리소스를 절약할 수 있다.
단계(S745)의 판단결과 현재 품질 수치가 목표 품질 수치 미만이면, 역전큐가 임계치 이상인지 여부를 판단한다(S755).
단계(S755)의 판단결과 역전큐가 임계치 이상이면, 네트워크 통신 스택에서 어플리케이션에 상응하는 포트의 강제 누락 주기를 길게 조절한다(S760). 즉, 어플리케이션의 현재 품질 수치가 낮기 때문에 어플리케이션의 성능이 향상되도록 설정할 수 있는데, 이 때 역전큐가 임계치 이상이므로 네트워크 상태가 좋지 않거나 강제 누락 주기가 짧아 누락되는 패킷이 필요이상 많은 것으로 판단할 수 있다. 따라서, 이와 같은 경우에는 어플리케이션에 상응하는 포트의 강제 누락 주기를 길게 조절하여 역전큐가 발생하지 않도록 할 수 있다.
단계(S755)의 판단결과 역전큐가 임계치 이상이 아니면, 멀티코어 프로세스에서 CPU 코어 클럭 주파수를 증가시키고(S770), 네트워크 통신 스택에서 어플리케이션에 상응하는 포트의 강제 누락 주기를 삭제한다(S780). 즉, 어플리케이션의 성능을 향상시켜야 하는 상황에서 역전큐가 임계치 이상이 아니므로, 현재 할당된 시스템 리소스가 어플리케이션의 성능을 만족시키지 못하는 수준이라고 판단할 수 있다. 따라서, 이 때에는 CPU 코어 클럭 주파수를 증가시켜 어플리케이션으로 시스템 리소스를 추가로 할당하고, 어플리케이션에 상응하는 포트를 완전히 개방할 수 있도록 강제 누락 주기를 삭제하여 누락되는 패킷이 없도록 조정할 수 있다. 또한, 코어의 개수를 제어하거나 고성능 및 저전력에 상응할 수 있는 코어 타입을 적절하게 전환하여 시스템 리소스를 조절할 수도 있다.
도 8은 본 발명의 실시예가 구현된 컴퓨터 시스템을 나타낸 도면이다.
도 8을 참조하면, 상술한 본 발명의 실시예는 컴퓨터 시스템에서 구현될 수 있다. 도 8에 도시된 바와 같이, 컴퓨터 시스템(820)은 버스(822)를 통하여 서로 통신하는 하나 이상의 프로세서(821), 메모리(823), 사용자 인터페이스 입력 장치(826), 사용자 인터페이스 출력 장치(827) 및 스토리지(828)를 포함할 수 있다.
또한, 컴퓨터 시스템(820)은 네트워크(830)에 연결되는 하나 이상의 네트워크 인터페이스(829)를 더 포함할 수 있다. 프로세서(821)는 중앙 처리 장치 또는 메모리(823) 또는 스토리지(828)에 저장된 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다. 메모리(823) 및 스토리지(828)는 다양한 형태의 휘발성 또는 비휘발성 저장 매체일 수 있다. 예를 들어, 메모리(823)는 ROM(824)이나 RAM(825)을 포함할 수 있다.
그리고, IoT 시대를 대비하여 컴퓨터 시스템(820)을 소형의 컴퓨팅 디바이스로 구현시킨 경우, 컴퓨팅 디바이스에 이더넷(Ethernet) 케이블을 연결하면 무선 공유기처럼 동작해서 모바일 디바이스가 무선으로 게이트웨이에 붙어서 암복호화 기능을 할 수 있으므로, 이를 위해 컴퓨터 시스템(820)은 무선 통신 칩(와이파이 칩)(831)을 추가로 포함할 수 있다.
따라서, 본 발명의 실시예는 컴퓨터로 구현된 방법이나 컴퓨터에서 실행 가능한 명령어들이 기록된 비일시적인 컴퓨터에서 읽을 수 있는 매체로 구현될 수 있다. 컴퓨터에서 읽을 수 있는 명령어들이 프로세서에 의해서 수행될 때, 컴퓨터에서 읽을 수 있는 명령어들은 본 발명의 적어도 한 가지 태양에 따른 방법을 수행할 수 있다.
이상에서와 같이 본 발명에 따른 네트워크 어플리케이션을 위한 자가적응 기반의 시스템 리소스 최적화 장치 및 방법은 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
110, 400: 시스템 리소스 최적화 장치
120: 네트워크 기반 어플리케이션 130, 410: 네트워크 통신 스택
140: 멀티코어 프로세스 150: 네트워크 디바이스
210, 401: 어플리케이션 상태 정보 획득부
220, 402: 네트워크 모니터링부
230, 403: 리소스 제어부 310: 품질 수치 측정부
320: 리소스 조절부 420: TCP 패킷 처리 모듈
421: 큐 모니터링 모듈 422: 큐 그룹
430: TCP 패킷 필터링 모듈 440: IP 패킷 처리 모듈
500: 어플리케이션 상태 정보 510: 품질 요구사항
511: 성능 측정 단위 512: 성능 최대치
513: 성능 정상치 514: 성능 최소치
820: 컴퓨터 시스템 821: 프로세서
822: 버스 823: 메모리
824: ROM 825: RAM
826: 사용자 인터페이스 입력 장치 827: 사용자 인터페이스 출력 장치
828: 스토리지 829: 네트워크 인터페이스
830: 무선 통신 칩 831: 네트워크

Claims (20)

  1. 어플리케이션에 상응하는 어플리케이션 상태 정보를 획득하는 어플리케이션 상태 정보 획득부;
    상기 어플리케이션의 실행을 위해 연결되는 네트워크의 전송 상태를 모니터링하는 네트워크 모니터링부; 및
    상기 어플리케이션 상태 정보 및 상기 전송 상태 중 적어도 하나를 고려하여 상기 어플리케이션에 할당되는 시스템 리소스를 제어하는 리소스 제어부
    를 포함하고,
    상기 어플리케이션 상태 정보는
    상기 어플리케이션의 정적인 정보에 해당하는 품질 요구 사항 및 상기 어플리케이션에 대해 실시간으로 수집된 동적 상태 정보 중 적어도 하나를 포함하는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 장치.
  2. 청구항 1에 있어서,
    상기 리소스 제어부는
    상기 어플리케이션 상태 정보 및 상기 전송 상태 중 적어도 하나를 기반으로 상기 어플리케이션의 현재 품질 수치를 측정하는 품질 수치 측정부; 및
    상기 어플리케이션에 상응하는 목표 품질 수치와 상기 현재 품질 수치의 일치 여부에 따라 상기 시스템 리소스의 할당을 조절하는 리소스 조절부를 더 포함하는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 장치.
  3. 삭제
  4. 청구항 1에 있어서,
    상기 동적 상태 정보는
    어플리케이션 식별정보, 포트번호, 순간 데이터 사용량, 평균 데이터 사용량 및 대역폭 중 적어도 하나에 상응하는 시스템 수집 정보 및 실행 시간, 프레임 레이트(FPS, Frame Per Second) 및 화면 크기 중 적어도 하나에 상응하는 어플리케이션 측정 정보 중 적어도 하나를 포함하고, 기설정된 체크 주기마다 체크하여 갱신되는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 장치.
  5. 청구항 2에 있어서,
    상기 리소스 조절부는
    성능 측정 단위, 성능 최대치, 성능 정상치, 성능 최소치 중 적어도 하나를 포함하는 상기 품질 요구사항을 기반으로 상기 목표 품질 수치를 계산하는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 장치.
  6. 청구항 2에 있어서,
    상기 네트워크 모니터링부는
    네트워크 통신 스택으로부터 큐 모니터링 상태 정보를 실시간으로 획득하고, 상기 큐 모니터링 상태 정보를 기반으로 상기 네트워크의 전송 상태를 판단하는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 장치.
  7. 청구항 6에 있어서,
    상기 큐 모니터링 상태 정보는
    상기 어플리케이션이 설치된 단말로 수신되는 TCP 패킷이 임시로 저장되는 적어도 하나의 큐의 상태를 상기 단말에서 실행되고 있는 적어도 하나 이상의 어플리케이션 별로 모니터링 하여 생성되는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 장치.
  8. 청구항 7에 있어서,
    상기 적어도 하나의 큐는
    백로그 큐(Backlog queue), 프리큐(Prequeue), 역전 큐(Out of order sequeue) 및 수신큐(Received queue) 중 적어도 하나를 포함하는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 장치.
  9. 청구항 1에 있어서,
    상기 어플리케이션 상태 정보 획득부는
    상기 어플리케이션에 상응하는 소스 코드 및 상기 어플리케이션의 성능을 외부 프로그램 및 시스템 커널 중 적어도 하나로 측정하여 생성된 외부 어플리케이션 상태 정보 중 적어도 하나를 기반으로 상기 어플리케이션 상태 정보를 획득하는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 장치.
  10. 청구항 2에 있어서,
    상기 리소스 조절부는
    CPU 코어 클럭 주파수, 코어 개수, 코어 타입 및 네트워크 대역폭 중 적어도 하나에 상응하는 상기 시스템 리소스를 조절하는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 장치.
  11. 청구항 10에 있어서,
    상기 리소스 조절부는
    상기 어플리케이션의 네트워크 포트번호로 수신된 패킷을 강제 누락시키는 강제 누락 주기를 조절하여 상기 네트워크 대역폭을 조절하는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 장치.
  12. 청구항 2에 있어서,
    상기 리소스 조절부는
    상기 목표 품질 수치를 기준으로 목표 품질 범위를 설정하고, 상기 현재 품질 수치가 상기 목표 품질 범위에 상응하면 상기 목표 품질 수치와 상기 현재 품질 수치가 일치하는 것으로 판단하는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 장치.
  13. 어플리케이션에 상응하는 어플리케이션 상태 정보를 획득하는 단계;
    상기 어플리케이션의 실행을 위해 연결되는 네트워크의 전송 상태를 모니터링 하는 단계; 및
    상기 어플리케이션 상태 정보 및 상기 전송 상태 중 적어도 하나를 고려하여 상기 어플리케이션에 할당되는 시스템 리소스를 제어하는 단계
    를 포함하고,
    상기 어플리케이션 상태 정보는
    상기 어플리케이션의 정적인 정보에 해당하는 품질 요구사항 및 상기 어플리케이션에 대해 실시간으로 수집된 동적 상태 정보 중 적어도 하나를 포함하는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 방법.
  14. 청구항 13에 있어서,
    상기 시스템 리소스를 제어하는 단계는
    상기 어플리케이션 상태 정보 및 상기 전송 상태 중 적어도 하나를 기반으로 상기 어플리케이션의 현재 품질 수치를 측정하는 단계; 및
    상기 어플리케이션에 상응하는 목표 품질 수치와 상기 현재 품질 수치의 일치 여부에 따라 상기 시스템 리소스의 할당을 조절하는 단계를 더 포함하는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 방법.
  15. 삭제
  16. 청구항 13에 있어서,
    상기 동적 상태 정보는
    어플리케이션 식별정보, 포트번호, 순간 데이터 사용량, 평균 데이터 사용량 및 대역폭 중 적어도 하나에 상응하는 시스템 수집 정보 및 실행 시간, 프레임 레이트(FPS, Frame Per Second) 및 화면 크기 중 적어도 하나에 상응하는 어플리케이션 측정 정보 중 적어도 하나를 포함하고, 기설정된 체크 주기마다 체크하여 갱신되는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 방법.
  17. 청구항 14에 있어서,
    상기 조절하는 단계는
    성능 측정 단위, 성능 최대치, 성능 정상치, 성능 최소치 중 적어도 하나를 포함하는 상기 품질 요구사항을 기반으로 상기 목표 품질 수치를 계산하는 단계를 포함하는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 방법.
  18. 청구항 14에 있어서,
    상기 모니터링 하는 단계는
    네트워크 통신 스택으로부터 큐 모니터링 상태 정보를 실시간으로 획득하는 단계를 포함하고,
    상기 큐 모니터링 상태 정보를 기반으로 상기 네트워크의 전송 상태를 판단하는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 방법.
  19. 청구항 13에 있어서,
    상기 획득하는 단계는
    상기 어플리케이션에 상응하는 소스 코드 및 상기 어플리케이션의 성능을 외부 프로그램 및 시스템 커널 중 적어도 하나로 측정하여 생성된 외부 어플리케이션 상태 정보 중 적어도 하나를 기반으로 상기 어플리케이션 상태 정보를 획득하는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 방법.
  20. 청구항 14에 있어서,
    상기 조절하는 단계는
    CPU 코어 클럭 주파수. 코어 개수, 코어 타입 및 네트워크 대역폭 중 적어도 하나에 상응하는 상기 시스템 리소스를 조절하고, 상기 어플리케이션의 네트워크 포트번호로 수신된 패킷을 강제 누락시키는 강제 누락 주기를 조절하여 상기 네트워크 대역폭을 조절하는 것을 특징으로 하는 자가적응 기반의 시스템 리소스 최적화 방법.
KR1020150044066A 2015-03-30 2015-03-30 네트워크 어플리케이션을 위한 자가적응 기반의 시스템 리소스 최적화 장치 및 방법 KR102066591B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150044066A KR102066591B1 (ko) 2015-03-30 2015-03-30 네트워크 어플리케이션을 위한 자가적응 기반의 시스템 리소스 최적화 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150044066A KR102066591B1 (ko) 2015-03-30 2015-03-30 네트워크 어플리케이션을 위한 자가적응 기반의 시스템 리소스 최적화 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20160116434A KR20160116434A (ko) 2016-10-10
KR102066591B1 true KR102066591B1 (ko) 2020-01-15

Family

ID=57146003

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150044066A KR102066591B1 (ko) 2015-03-30 2015-03-30 네트워크 어플리케이션을 위한 자가적응 기반의 시스템 리소스 최적화 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102066591B1 (ko)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101546750B1 (ko) * 2008-09-02 2015-08-24 삼성전자주식회사 큐오에스를 제공하기 위한 단말의 데이터 전송 장치 및 방법
US8665724B2 (en) * 2009-06-12 2014-03-04 Cygnus Broadband, Inc. Systems and methods for prioritizing and scheduling packets in a communication network
KR101237873B1 (ko) * 2009-10-29 2013-02-27 주식회사 케이티 다중 네트워크 인터페이스를 구비한 이동 단말의 네트워크 인터페이스 매핑 방법
EP2434826A1 (en) * 2010-08-30 2012-03-28 NTT DoCoMo, Inc. Method and apparatus for allocating network rates
US8937876B2 (en) * 2010-11-15 2015-01-20 Blackberry Limited Managing communications across a wireless network
KR101531834B1 (ko) 2013-03-08 2015-06-26 주식회사 알투소프트 모바일 클라우드 컴퓨팅 환경에서의 리소스 관리 시스템 및 그 방법

Also Published As

Publication number Publication date
KR20160116434A (ko) 2016-10-10

Similar Documents

Publication Publication Date Title
US11582163B2 (en) System for early system resource constraint detection and recovery
WO2015058698A1 (en) Data forwarding
CN107534981B (zh) 资源重分配
US11782869B2 (en) Data transmission method and related device
WO2015058699A1 (en) Data forwarding
US8341453B2 (en) Transmission apparatus that transmits data according to a protocol, and method for measuring time in the transmission apparatus
US10432530B2 (en) System and method of providing compression technique for jitter sensitive application through multiple network links
US11405489B2 (en) Method and apparatus for determining quality of service, and storage medium
JP2023130418A (ja) クライアント、サーバ、受信方法及び送信方法
US20200125511A1 (en) Roce over wireless
US11991061B2 (en) Processing local area network diagnostic data
CN115277806A (zh) 云桌面连接方法、装置和设备
US20140297791A1 (en) Communication apparatus, method of controlling the same, and storage medium
US9083617B2 (en) Reducing latency of at least one stream that is associated with at least one bandwidth reservation
US9985886B2 (en) Technologies for network packet pacing during segmentation operations
JP2009188655A (ja) 通信制御方法、情報処理システム、情報処理装置及びプログラム
KR102066591B1 (ko) 네트워크 어플리케이션을 위한 자가적응 기반의 시스템 리소스 최적화 장치 및 방법
US11121956B1 (en) Methods and systems for optimizing bidirectional forwarding detection in hardware
WO2014206235A1 (zh) 一种报文发送和处理的方法、装置和系统
US9497088B2 (en) Method and system for end-to-end classification of level 7 application flows in networking endpoints and devices
US9542356B2 (en) Determining, at least in part, one or more respective amounts of buffer memory
US20190357230A1 (en) Wireless Communication Device
Sathyanarayana et al. Design, Implementation, and Evaluation of Host-based In-band Network Telemetry for TCP
US9515887B2 (en) Communication processing device, communication processing method, and program
JP2009159231A (ja) 試験装置測定システム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant