KR102456150B1 - 실제 환경에서 대용량 시스템에 대한 포괄적 성능평가를 수행하는 방법 및 이를 지원하는 장치 - Google Patents

실제 환경에서 대용량 시스템에 대한 포괄적 성능평가를 수행하는 방법 및 이를 지원하는 장치 Download PDF

Info

Publication number
KR102456150B1
KR102456150B1 KR1020220038737A KR20220038737A KR102456150B1 KR 102456150 B1 KR102456150 B1 KR 102456150B1 KR 1020220038737 A KR1020220038737 A KR 1020220038737A KR 20220038737 A KR20220038737 A KR 20220038737A KR 102456150 B1 KR102456150 B1 KR 102456150B1
Authority
KR
South Korea
Prior art keywords
performance
program
computing system
poll
polling
Prior art date
Application number
KR1020220038737A
Other languages
English (en)
Inventor
박성원
정철영
정진홍
Original Assignee
(주)한국소프트웨어아이엔씨
주식회사 비에이치에이
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)한국소프트웨어아이엔씨, 주식회사 비에이치에이 filed Critical (주)한국소프트웨어아이엔씨
Application granted granted Critical
Publication of KR102456150B1 publication Critical patent/KR102456150B1/ko
Priority to PCT/KR2023/001037 priority Critical patent/WO2023146231A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3428Benchmarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • G06N3/0454
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

컴퓨터 시스템의 성능 평가 방법이 개시된다. 본 명세서의 일 실시예에 따른 컴퓨터 시스템의 성능 평가 방법은, 상기 컴퓨팅 시스템의 성능 메트릭(metric)을 수집하고, 미리 정해진 주기에 따라 폴(poll) 함수를 호출하여 상기 컴퓨팅 시스템의 상태를 요청하고, 복수의 주기적인 스냅샷(snapshot) 구간이 경과되면, 상기 폴 함수의 호출횟수에 대응한 이벤트 기록횟수를 카운트한 폴링 결과를 획득하고, 상기 폴링 결과를 상기 성능 메트릭과 함께 로그파일에 기록한다.

Description

실제 환경에서 대용량 시스템에 대한 포괄적 성능평가를 수행하는 방법 및 이를 지원하는 장치 {A method and apparatus for performing an overall performance evaluation for large scaled system in real environment}
본 명세서는 대용량 시스템에 관한 것으로, 보다 구체적으로 실제 환경에서 대용량 시스템에 대한 포괄적 성능평가를 수행하는 방법 및 이를 지원하기 위한 장치에 관한 것이다.
개인이나 기업이 사용하는 서버와 스토리지의 상대적인 성능에 대해서 지수로 나타낼 수 있으며 실제 특정 엑세스 시간을 초과하는 볼륨들의 이름과 개수를 파악하고 그 볼륨을 사용하는 프로그램을 모니터링할 수 있다. 예를 들면 평균 엑세스 시간이 50msec 를 초과하는 볼륨의 개수와 그 볼륨을 사용하는 프로그램을 인지하여 IO 부하의 정도를 인지하고 성능이슈를 해결할 방법을 찾도록 도와준다.
시스템의 성능평가 방법은 그 평가 자체가 부분적이거나 일시적인 경우일 수밖에 없다. 실제 시스템 사용환경에서의 시스템의 성능평가는 위의 방법들에 의한 성능평가 방법으로도 어느 정도 결과를 구할 수 있지만 실 환경에서의 변화하는 요소를 적절히 반영하지 않고 있다.
실제 컴퓨팅 시스템 사용환경에서는 컴퓨팅 시스템의 성능을 측정할 수 있는 하드웨어나 측정기를 사용하여 측정하거나, 실제로 대상 프로그램을 실행한 결과에 기초하여 컴퓨팅 시스템의 상대적 성능을 평가할 수 있다. 시스템의 사양에 기초한 시스템 성능 예측은 사양에 의존하여 성능에 대한 예상되는 성능평가는 가능하나 이론적 성능과 실질적 성능에 있어서 차이가 있다.
특히, 실제 환경에서는 시스템의 사용자나 프로그램이 수시로 변경되기 마련이며, 어떤 시점을 기준으로 언제든지 시스템의 성능이 문제가 될 수 있고, 시스템의 튜닝(tuning)이 끊임없이 이루어져야 하는 니즈가 발생한다.
본 명세서는 전술한 문제점 및 필요성을 해결하기 위한 것으로서, 폴 함수를 이용한 시스템 콜을 이용하여 시스템이 정량적 작업 부하를 가지고 실행될 때, 주기적인 스냅샷으로 시스템 콜을 수행하여 다중 입출력(I/O Multiplexing) 능력을 소정의 수치로 환산하여 시스템의 성능 상태를 확인할 수 있도록 하는 것을 목적으로 한다.
본 발명이 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 이하의 발명의 상세한 설명으로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 명세서의 일 실시예에 따른 컴퓨팅 시스템의 성능 평가 방법은, 상기 컴퓨팅 시스템의 성능 메트릭(metric)을 수집하는 단계; 미리 정해진 주기에 따라 폴(poll) 함수를 호출하여 상기 컴퓨팅 시스템의 상태를 요청하는 폴링 단계; 복수의 주기적인 스냅샷(snapshot) 구간이 경과되면, 상기 폴 함수의 호출횟수에 대응한 이벤트 기록횟수를 카운트한 폴링 결과를 획득하는 단계; 및 상기 폴링 결과를 상기 성능 메트릭과 함께 로그파일에 기록하는 단계;를 포함한다.
상기 컴퓨팅 시스템의 성능 평가 방법은, 상기 컴퓨팅 시스템의 성능을 평가하기 위한 제1 프로그램을 미리 정해진 제1 시간 동안 실행되도록 제어하는 단계; 및 상기 제1 프로그램의 실행이 시작되면 시스템 트레이스(system trace)를 수행하는 제2 프로그램을 호출하는 단계;를 더 포함할 수 있다. 상기 제2 프로그램이 실행됨에 따라 상기 폴 함수가 호출될 수 있다.
상기 컴퓨팅 시스템의 성능 평가 방법은, 상기 제1 프로그램은 5초 동안 실행되도록 하고, 상기 5초가 경과되면 상기 제2 프로그램이 종료되도록 하는 단계; 상기 제1 프로그램은, 상기 5초가 경과되면, 웨이크업 콜을 상기 제2 프로그램에 전달하는 단계; 및 상기 제2 프로그램은, 상기 웨이크업 콜에 응답하여 상기 폴링 결과를 상기 제1 프로그램에 전달하는 단계;를 더 포함할 수 있다.
일 실시예에 따라, 상기 미리 정해진 주기는 50msec이고, 한 구간의 스냅샷 동안 상기 50msec의 간격으로 폴링 동작을 수행할 수 있다.
일 실시예에 따라, 상기 폴링 결과를 획득하는 단계는, 상기 폴 함수의 호출에 대응하여 데이터의 읽기 및 쓰기 동작이 정상적으로 수행된 경우, 상기 이벤트 기록횟수를 업 카운트하는 단계; 및 상기 업 카운트된 결과값을 획득한는 단계;를 더 포함할 수 있다.
본 명세서의 다른 실실시예에 따른 비 일시적 컴퓨터 판독 가능한 매체는, 컴퓨터 실행 가능한 명령들을 포함하고, 상기 컴퓨터 실행 가능한 명령들은, 컴퓨팅 시스템의 성능 메트릭(metric)을 수집하는 명령, 미리 정해진 주기에 따라 폴(poll) 함수를 호출하여 상기 컴퓨팅 시스템의 상태를 요청하는 명령, 복수의 주기적인 스냅샷(snapshot) 구간이 경과되면, 상기 폴 함수의 호출횟수에 대응한 이벤트 기록횟수를 카운트한 폴링 결과를 획득하는 명령, 상기 폴링 결과를 상기 성능 메트릭과 함께 로그파일에 기록하도록 하는 명령을 포함한다.
본 명세서의 일 실시예에 따르면, 성능 메트릭에 편향되지 않은 성능 결과를 실시간으로 파악하고 성능 저하를 쉽게 파악할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 명세서에 관한 이해를 돕기 위해 상세한 설명의 일부로 포함되는, 첨부 도면은 본 명세서에 대한 실시예를 제공하고, 상세한 설명과 함께 본 명세서의 기술적 특징을 도면과 함께 설명한다.
도 1은 본 명세서의 일 실시예에 따른 컴퓨팅 시스템의 예시적인 블록도이다.
도 2는 본 명세서의 일 실시예에 따른 컴퓨팅 시스템의 성능 평가 장치의 예시적인 블록도이다.
도 3은 본 명세서의 일 실시예에 다른 컴퓨팅 시스템의 성능 평가 방법의 흐름도이다.
도 4는 본 명세서의 일 실시예에 따라 하드비트(hearbeat) 방식이 적용되는 컴퓨팅 시스템의 성능 평가 방법을 설명하기 위한 흐름도이다.
도 5는 본 명세서의 일 실시예에 따른 컴퓨팅 시스템의 성능 평가 프로그램의 턴어라운드 타임과 CPU 사용율을 설명하기 위한 도면이다.
본 발명에 관한 이해를 돕기 위해 상세한 설명의 일부로 포함되는, 첨부 도면은 본 발명에 대한 실시예를 제공하고, 상세한 설명과 함께 본 발명의 기술적 특징을 설명한다.
본 명세서에서 사용되는 기술적 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 명세서에 개시된 기술의 사상을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 명세서에서 사용되는 기술적 용어는 본 명세서에서 특별히 다른 의미로 정의되지 않는 한, 본 명세서에 개시된 기술이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 명세서에서 사용되는 기술적인 용어가 본 명세서에 개시된 기술의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는, 본 명세서에 개시된 기술이 속하는 분야에서 통상의 지식을 가진 자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 명세서에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥 상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
본 명세서에서 사용되는 제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
이하, 첨부된 도면을 참조하여 본 명세서에 개시된 실시 예들을 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
또한, 본 명세서에 개시된 기술을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 명세서에 개시된 기술의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 명세서에 개시된 기술의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 그 기술의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
시스템의 성능이란 시스템을 구성하고 있는 CPU, 메모리, 디스크,네트워크 등의 자원을 활용하여 특정 부하(Workload)를 수행할 수 있는 능력을 의미한다. 시스템의 성능을 나타내는 수치를 성능지수로 표현하는데 성능지수는 상대적인 수치로 나타나게 된다.
시스템의 성능평가는 응답시간,Throughput, 비용의 세가지로 구분하여 할 수 있다. 응답시간은 인터렉티브 명령어에 대한 응답시간 또는 배치 작업에 대한 응답시간을 측정하는 것이 그 전형적인 방법이며 Throughput은 단위 시간당 시스템에 의해 수행되는 연산이나 처리량으로 측정되며 비용은 시스템을 구입시에 소요되는 비용으로 시스템의 비용에 대한 Responsibility와 Throughput의 효율로 평가된다. 실 환경에서의 시스템의 성능평가는 고정적인 것이 아니고 성능요인 변수(factor)에 따라 항상 변하게 마련이다. 따라서 실 환경에서의 성능평가는 다음과 같은 단계로 나누어 일정주기를 갖는 일련의 프로세스로 나타낼 수 있다.
수집 (Collect)
수집단계는, 시스템의 KSI(Kemel Statistics Interface)를 통해서 성능을 나타내는 Metrics 자료를 프로세스별로 세부정보를 포함하여 수집하는 단계를 나타낸다. 모든 성능 자료에 타임스템프를 같이 표기하고 시스템의 구성에 따라 네트워크를 통해서 여러 시스템의 성능 자료를 중앙에서 수집할 수도 있다. 일반적으로 시스템에서 제공되고 있는 명령어나 시스템의 어카운팅 데이터, 그리고 벤더가 제공하는 도구가 사용될 수도 있다. 성능 평가에 대한 첫 단계인 만큼 정확한 자료의 수집이 성능평가를 정확히 할 수 있는 요건이 된다. 자료의 수집에서 문제가 될 수 있는 것을 수집되는 자료의 범위와 크기가 될 수 있는데 성능평가 자료에서 벗어나는 내용이나, 너무 방대하게 수집되는 자료의 크기에 대해서는 여과(filtering)작업이 필요하다.
모니터링 (Monitoring)
모니터링 단계는, 전형적인 GUI 형태로 수집한 자료를 디스플레이하고 내역관리를 할 수 있는 실시간 형태의 스냅샷(Snapshot) 데이터를 모니터링 한다. 실시간 자료는 성능 병목 현상에 대한 문제해결(troubleshoot)로 사용될 수 있다. 또한 모니터링 단계에서는, 특정 범위내에서 알람이나 이벤트 기능도 가능하여야 한다. 내역정보는 장기간의 경향분석과 잠재적인 문제를 규명하는 데 도움이 된다.
분석 (Analyze)
분석 단계는, 수집/모니터링 단계에서의 자료에 기초하여 시스템에 대해 성능 분석을 하는 단계로서, 특정 임계치(threshold)에 기준을 두고 실시간 스냅샷(snapshot) 데이터를 분석하여 성능개선, 시스템용량 산정에 대한 기초자료로 활용될 수 있도록 하는 단계이다. 분석단계 또한, 알람이나 이벤트를 발생시킬 수 있다.
현재로서 분석기법은 제공하는 벤더의 솔루션에 의존하게 되어 있다. 또한 분석을 위해서는 시스템의 전문적인 지식이나 사용하는 분석도구에 대한 기술이 요구되는 것이 문제로 제기될 수가 있다. 내역 데이터에 근거를 둔 성능에 대한 분석은 시스템의 잠재적인 문제(potential problem)라든지 커지는 문제(growing problem)를 규명하는데 크게 도움이 되지 못한다. 따라서 정확한 분석을 위해서는 성능평가를 위한 요인 변수를 기초로 성능 저하를 유발시키는 원인을 찾아내야 한다.
개선 (tuning)
성능평가의 목적이 될 수 있는 것이 성능 개선단계이다. 개선단계는 성능데이터를 수집/모니터링/분석을 통해서 현재상태의 성능저하 문제를 유발시키는 개선점들을 도출해 내고 이를 토대로 시스템의 구성을 변경하게 되는 단계를 의미 한다. 실제로 시스템의 성능에 직접적인 영향을 줄 수 있는 단계이기 때문에 시스템의 구성 변경 시에 많은 주의를 요구한다. 시스템의 개선 작업이 이루어 지면 바로 수집/모니터링/분석 단계로 다시 반복하고 더 이상 개선의 여지가 없고 성능저하 현상이 계속되는 경우에는 현 시스템의 사양과 시스템의 부하를 고려하여 시스템을 증설/교체하는 시스템 용량 산정(capacity planning)을 한다.
예측 (forecast)
예측단계는, 다음과 같은 하나 이상의 데이터 모델링 기법에 기초하여 성능 수준에 대해서 예측하는 단계이다.
-heuristic 기법
- 선형 프로그래밍
- 네트워크 큐잉 모델
- 시뮬레이션
- 워크로드 벤치마크
또한, 시스템의 성능평가 방법은
1)BMT(Benchmark Test)에 의한 방법,
2)한정된 어플리케이션 프로그램을 실행하여 상대적으로 평가하는 방법,
3)성능평가 도구를 사용하는 방법,
4)실 측정에 의한 방법, 그리고
5)주어진 시스템의 사양(Specification)에 의거 성능에 대한 예측을 하는 방법들을 들 수 있다.
(1) BMT(Benchmark Test)에 의한 방법은 시스템의 구성 요소인 CPU, 캐쉬, 메모리, I/O, 디스플레이, 그리고 네트워크 별로 단위성능 평가를 할 수 있으며 다음과 같은 프로그램의 종류가 있다.
성능특성 벤치마크 프로그램
CPU SPECint92, SPECfp92, Linpack
Memory membench
IO Bonnie, dbgen
DB TPC-C, TPC-D
Multitasking SDM, AIM-III
NFS LADDIS, Nhfsstone
Graphic GPC
<표 1> 벤치마크 프로그램
(2) 어플리케이션을 실행하여 상대적으로 성능평가를 하는 방법은 시스템에서 가장 많이 사용할 프로그램 또는 가장 시스템의 자원(resource)을 많이 사용하는 프로그램을 실제로 실행하여 시스템의 성능을 평가하는 방법으로 비교적 실 환경에 적합한 성능 평가를 할 수 있다. 성능평가 도구를 사용하여 시스템의 성능을 평가하는 방법은 시스템의 성능을 나타낼 수 있는 요인factor)별로 수치적 평가와 분석으로 시스템의 성능을 비교 평가할 수 있다.
(3) 성능평가 도구를 사용하는 방법
WebLOAD, LoadNinja, SmartMeter.io, LoadView, Apache JMeter 등의 성능평가를 사용하여 시스템의 성능을 평가할 수 있다.
(4) 실 측정에 의한 방법은 성능을 측정할 수 있는 하드웨어나 측정기를 사용하여 측정하거나 실제로 대상 프로그램을 실행하여 결과를 토대로 상대적 성능을 평가할 수 있다. 시스템의 사양에 기초한 시스템의 성능예측 방법은 사양에 의존하여 성능에 대한 예상되는 성능평가를 할 수 있으나 이론적 성능과 실질적 성능의 차가 있을 수 있다. 이와 같은 시스템의 성능평가 방법은 그 평가 자체가 부분적이거나 일시적인 경우일 수밖에 없다. 실환경에서의 시스템의 성능평가는 위의 방법들에 의한 성능평가 방법으로도 어느 정도 결과를 구할 수 있지만 실 환경에서의 변화하는 요소를 적절히 반영하지 않고 있다. 실 환경에서는 시스템의 사용자나 프로그램이 수시로 변경되기 마련이며 어느 시점을 기준으로 언제든지 시스템의 성능이 문제가 될 수 있고 시스템의 튜닝(tuning)이 끊임없이 이루어져야 한다. 종래의 다른 성능 측정 방법들의 가장 큰 문제점은 어떤 특정(special purpose) 성능 metric을 사용하여 성능을 측정하기 때문에 성능 metric에 편향된 결과가 나올 수 있다는 것이고 pgage를 사용하면 general-purpose의 성능 결과를 실시간으로 파악하고 성능 저하를 쉽게 찾을 수 있다. 여기서, pgage는 시스템 콜을 통한 데이터 읽기 요청에 응답하여, 데이터 읽기 결과를 포함하여 제공되는 응답데이터일 수 있다. 상기 데이터 읽기 결과는 어카운트 데이터 형식으로 제공될 수 있다.
(5) 주어진 시스템의 사양(Specification)에 의거 성능에 대한 예측을 하는 방법
CPU의 clock 속도 GHz라든가 MIPS(Million Instruction Per Second)단위 또는 IO 성능을 나타내는 읽기(read)와 쓰기(write)의 시스템 사양에서 나타내는 peak 성능을 의미하고 sustain performance를 나타내지 않는다.
본 명세서의 실시예들에서, 컴퓨팅 장치들(예를 들어, 데스크탑 컴퓨터, 태블릿 컴퓨터, 스마트폰과 같은 모바일 컴퓨팅 장치 등)에 대한 성능 및 시스템 정보를 수집, 추적 및 저장하기 위한 방법은 하나 이상의 컴퓨팅 장치들에 대한 시스템 및 성능 정보를 수집 및 저장한다.
일 실시예들에서, 컴퓨팅 장치의 성능 정보는 예를 들어, 컴퓨팅 장치에 대한 배터리 사용, 프로세서 자원 사용, 등과 같은 임의의 적합한 성능 정보를 포함한다. 컴퓨팅 장치의 시스템 정보는 임의의 적합한 시스템 정보(예를 들어, 이벤트 정보 등)를 포함할 수 있다. 여기서 이벤트 정보는 예를 들어, 신호 레벨의 변화(예를 들어, 무선 네트워크와의 연결에서의 신호 세기 변화), 새로 설치된 소프트웨어에 대한 정보, 컴퓨팅 장치에 접속되거나 또는 그로부터 분리된 주변 장치들(예를 들어, USB, 방화벽, 프린터, 스캐너 등)의 로그정보, 컴퓨팅 장치가 어떤 네트워크에 대해 접속 및/또는 분리되는지에 관한 정보, 컴퓨팅 장치를 통해 방문되는 임의의 웹 사이트 등을 포함할 수 있다.
일 실시예들에서, 시스템은 미리 정해진 간격(예를 들어, 매일, 매주, 매시간, 또는 임의의 적합한 간격)으로 이러한 정보를 수집하고 저장할 수 있다. 또한, 시스템은 이벤트가 발생함에 따라 실질적으로 자동으로 데이터를 수집하도록 구성될 수도 있다.
도 1은 본 명세서의 일 실시예에 따른 컴퓨팅 시스템의 예시적인 블록도이다.
도 1을 참조하면, 본 명세서의 일 실시예에 따른 컴퓨팅 시스템은 시스템(및/또는 시스템 정보서버)(1), 데이터 베이스(2), 하나 이상의 네트워크(3), 클라이언트 컴퓨팅 디바이스(4, 예를 들어, 스마트폰, 태블릿 컴퓨터, 웨어러블 컴퓨팅 장치, 랩탑 컴퓨터 등)를 포함할 수 있다.
시스템(1)과 데이터베이스(2) 간의 통신 링크는 예를 들어, 근거리 통신망(LAN)을 통해 또는 인터넷을 통해 구현될 수 있다. 하나 이상의 네트워크(3)는 인터넷 개인 인트라넷, 메시 네트워크, 공중 교환 전화망(PSTN) 또는 임의의 유형의 네트워크(예를 들어, 블루투스 등 근거리 무선 통신 네트워크)와 같은 임의의 다양한 유형의 유무선 컴퓨터 네트워크를 포함할 수 있다.
도 2는 본 명세서의 일 실시예에 따른 컴퓨팅 시스템의 성능 평가 장치의 예시적인 블록도이다.
도 2는 도 1의 시스템(1, 또는 서버 컴퓨터) 내에서 사용될 수 있는 컴퓨터 아키텍처를 개략적으로 표현한 것을 의미할 수도 있다. 시스템(1)은 컴퓨팅 장치들에 대한 성능 및 시스템 정보를 수집, 추적 및 저장하기 위해 구성되는 시스템의 컨텍스트 내의 컴퓨터로 사용하기에 적합할 수 있다.
일 실시예에 따르면, 시스템(1)은 LAN, 인트라넷, 익스트라 넷, 및/또는 인터넷에 있는 다른 컴퓨터들에 연결될 수 있다. 시스템(1)은 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 컴퓨터의 역할로서 또는 피어 투 피어 네트워크 환경에서 피어 컴퓨터(peer computer)로서 동작할 수 있다. 시스템(1)은 데스크탑 컴퓨터, 태블릿 컴퓨터, 셋탑 박스(STB), 웹 어플라이언스, 서버, 네트워크 라우터, 스위치 또는 브릿지 또는 상기 컴퓨터에 의해 취해질 동작들을 명시하는 명령들의 세트를 실행할 수 있는 임의의 다른 컴퓨터를 포함할 수 있다. 또한, 상기 시스템(1)은 단일 컴퓨터 외에 본 명세서에서 설명되는 하나 이상의 방법들을 수행하기 위한 명령어 세트를 개별적으로 또는 공동으로 실행하는 컴퓨터들의 임의의 조합들을 포함할 수도 있다.
시스템(1)은 프로세서(110), 메모리(120), 입력 장치(130), 출력 장치(140), 네트워크 인터페이스(150)를 포함할 수 있다.
프로세서(110)는 마이크로 프로세서, CPU 등과 같은 하나 이상의 범용 프로세싱 장치들을 의미할 수 있다. 프로세서(110)는 본 명세서에서 설명되는 다양한 동작들과 단계들을 수행하기 위한 프로세싱 로직을 실행하도록 구성될 수 있다. 여기서, '프로세서(processor)'는, 예를 들어 프로그램 내에 포함된 코드 또는 명령으로 표현된 기능을 수행하기 위해 물리적으로 구조화된 회로를 갖는, 하드웨어에 내장된 데이터 처리 장치를 의미할 수 있다. 이와 같이 하드웨어에 내장된 데이터 처리 장치의 일 예로써, 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit: CPU), 프로세서 코어(processor core), 멀티 프로세서(multiprocessor), ASIC(application-specific integrated circuit), FPGA(field programmable gate array) 등의 처리 장치를 망라할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
메모리(120)는 프로세서(110)에 의해 즉시 사용되는 데이터를 일시적으로 저장하기 위한 것으로서, 시스템 메모리 또는 컴퓨터 메모리로 메인 메모리(1차 기억장치로 불리기도 함)의 기능을 수행할 수 있다. 또한, 메모리는 컴퓨팅 장치에서 처리되는 데이터를 일시적 또는 영구적으로 저장하기 위한 것으로서, 2차 기억장치, 보조기억 장치의 기능을 수행할 수 있다. 통상 메인 메모리는 ROM(Read Only Memory) 및 RAM(Random Access Memory) 으로 구현되고, 보조 메모리는 하드 디스크 드라이브와 같은 자기 디스크로 구현되어 보조 메모리에 컴퓨팅 장치에 설치되는 OS 프로그램, 애플리케이션 프로그램, 기타 프로그램 모듈 등을 저장하고, 메인 메모리는 프로세서의 제어에 따라서 보조 메모리에 저장된 데이터를 프로세서(120)에 의해 처리되는 동안 일시적으로 저장한다.
메모리(120)는 보조 메모리로서 하드 디스크 드라이브 외에 다양한 저장장치를 더 포함할 수 있다. 예를 들어, CD-ROM 또는 기타 광 매체 등의 광 디스크로부터 정보를 판독하거나 그 광 디스크에 정보를 기록하는 광 디스크 드라이브를 더 포함할 수 있다. 하드 디스크 드라이브, 자기 디스크 드라이브, 및 광 디스크 드라이브는 각각 하드 디스크 드라이브 인터페이스, 자기 디스크 드라이브-인터페이스 및 광 드라이브 인터페이스에 의해 I/O 버스에 접속된다.
입력장치(130)는 I/O 버스에 연결된 입출력 인터페이스를 통해 프로세서(120)에 접속될 수 있다. 상기 입력장치(130)는, 키보드, 포인팅 장치, 마이크로폰, 조이스틱, 게이패드, 스캐너 등을 포함할 수 있다. 입출력 인터페이스는 직렬 포트 인터페이스, PS/2 인터페이스, 병렬 포트 인터페이스, USB 인터페이스, IEEE 1394 인터페이스와 같은 매우 다양한 인터페이스 중 어느 하나를 포함하거나, 다른 인터페이스의 조합까지도 논리적으로 나타낼 수 있다.
출력장치(140)는 디스플레이장치, 스피커 또는 마이크로폰과 같은 음향 출력 장치를 포함할 수 있다. 이들은, 비디오/오디오 인터페이스를 통해 I/O 버스에 접속된다. 비디오/오디오 인터페이스는 HDMI(High Definition Multi-media Interface), GDI(Graphic Device Interface) 등을 포함할 수 있다. 출력장치(140)는 시각, 청각 또는 촉각 등과 관련된 출력을 발생시키기 위한 것으로, 디스플레이부, 음향 출력부, 햅팁 모듈, 광 출력부 중 적어도 하나를 포함할 수 있다. 디스플레이부는 터치 센서와 상호 레이어 구조를 이루거나 일체형으로 형성됨으로써, 터치 스크린을 구현할 수 있다. 이러한 터치 스크린은, 디바이스와 사용자 사이의 입력 인터페이스를 제공하는 사용자 입력부로써 기능함과 동시에, 디바이스와 사용자 사이의 출력 인터페이스를 제공할 수 있다.
네트워크 인터페이스(150)는 외부 소스로부터 데이터를 수신하거나, 외부 소스로 데이터를 전송할 수 있다. 네트워크 인터페이스(160)는 네트워크 인터페이스 카드 및 대응하는 네트워크 드라이버 인터페이스 사양(Network Interface Specification: NDIS) 스택과 같은 하나 이상의 소프트웨어 및/또는 하드웨어 모듈의 논리적 조합을 나타낼 수 있다.
컴퓨팅 장치는 입출력 인터페이스를 통해 모뎀(표준 모뎀, 케이블 모뎀 또는 DSL)에 연결될 수 있으며, 연결된 모뎀을 통해 외부 소스로부터 데이터를 수신하거나 외부 소스로 데이터를 전송할 수 있다.
상기 컴퓨팅 장치는 전원이 공급되면 보조 메모리에 저장된 OS 프로그램을 메인 메모리로부터 불러들여 실행하고, 상기 OS 프로그램의 실행에 의해 다양한 어플리케이션 프로그램이 구동될 수 있는 OS 환경이 구축된다. 상기 OS 환경에서 사용자 요청 또는 설정에 따라 보조 메모리에 저장된 하나 이상의 어플리케이션 프로그램을 메인 메모리로 불러들여 실행함으로써, 각 어플리케이션 프로그램에서 제공하는 기능을 실행한다.
통신부(미도시)는 유선 및/또는 무선 통신 모듈로 구성될 수 있다. 예를 들어, 통신부는, 와이파이(Wireless Fidelity, Wi-Fi), 블루투스(Bluetooth), 지그비(Zigbee), 엔에프씨(near field communication: NFC), 와이브로(Wireless Broadband Internet: Wibro) 등의 무선 통신모듈과 이더넷(Ethernet) 등의 유선 랜(LAN)과 같은 유선 통신 모듈 등을 포함할 수 있다. 통신부는 네트워크를 통해 사용자 장치와 유/무선 통신을 수행할 수 있다.
도 3은 본 명세서의 일 실시예에 다른 컴퓨팅 시스템의 성능 평가 방법의 흐름도이다. 도 3에 도시된 흐름도는 도 1 및/또는 도 2에 도시된 시스템(1) 및/또는 프로세서(110)에 의해 구현될 수 있다. 본 명세서는 시스템의 성능 평가를 위해 폴(poll) 시스템 콜을 응용하여 하트비트(heartbeat) 개념을 제안한다. 하트비트(heartbeat)는 시스템이 정량적 작업 부하로 실행될 때 주기적인 스냅샷(snapshot)으로 폴(poll) 시스템 콜을 수행하여 다중 입출력(I/O Multiplexing) 능력을 일정한 수치로 환산함으로써, 시스템의 성능 상태를 나타낼 수 있도록 한다.
이에 따라, 폴 시스템 콜에 대하여 먼저 살펴본다.
I/O polling
사용자의 프로세스는 두 개의 시스템 콜인 poll()과 LSETSIG flag를 이용한 ioctl()에 기초해서 다수의 스트림(STREAM)을 효과적으로 모니터하고 제어할 수 있다. 상기 두 가지의 시스템 콜은 사용자 프로세스로 하여금 한 개 또는 그 이상의 스트림(STREAM) 헤드에서 발생하는 이벤트, 예를 들면 read 큐상에서 데이터나 메시지를 수신하거나, write 큐상에서 플로우 컨트롤(flow control)을 중지하는 경우를 인지할 수 있다.
Poll()은 스트림(STREAM)이 아닌 어떠한 문자 디바이스에서도 사용할 수 없다. Poll()을 사용해서 STREAM을 모니터하기 위해서는 사용자의 프로세스가 이 시스템 콜을 issue 하고 모니터 하게 될 STREAM과 파일, 체크할 이벤트, 그리고 이벤트를 위해 대기할 시간을 지정한다. Poll()은 시간이 초과되거나 이벤트가 발생한 후에 프로세스를 블록시킨다. 이벤트가 발생하면, poll()은 이벤트의 유형과 이벤트가 발생한 파일 디스크립터를 리턴한다. 이벤트가 발생할 때까지 기다리는 대신에 사용자 프로세스는 다른 데이터를 처리하는 동안 하나 이상의 STREAM을 모니터링 할 수 있다. 이렇게 하기 위해서는 STREAM과 이벤트를 지정하면서 LSETSIG를 셋팅하고 ioctl()을 issue 한다. 만일 선택된 STREAM 상에 선택된 이벤트가 발생하면 STREAM 은 연관된 모든 요청 프로세스들에게 SIGPOLL을 보낸다. Poll()은 사용자가 송신하거나 수신한 데이터의 STREAM을 식별하는 기능을 제공한다. 폴(poll) 될수 있는 이벤트의 유형은 POLLIN, POLLRDNORM, POLLRDBAND, POLLPRI, POLLOUT, POLLWRNORM, POLLWRBAND으로 아래의 표는 이들 이벤트에 대한 설명을 나타낸다.
Event 유형 내용
POLLIN 높은 우선 순위를 갖는 메시지는 blocking 없이 read 할 수 있다
POLLRDNORM 우선 순위를 갖지 않는 정상 메시지는 read 큐의 STREAM-head의 front에 있다
POLLRDBAND 높은 우선순위의 메시지가 STREAM-head 큐의 front에 있을 때
POLLPRI 높은 우선 순위의 메시지가 STREAM-head 큐의 front에 있을 때
POLLOUT 큐의 정상 우선 순위 band가 write 가능할 때
POLLWRNORM POLLOUT과 동일
<표 2> poll 시스템 콜의 이벤트 유형
Poll()은 요청된 이벤트의 파일 디스크립터를 체크해서 파일 디스크립터 상에 이벤트가 발생했는지를 리턴 값으로 나타낸다. 만일 poll 된 파일 디스크립터 상에 이벤트가 발생하지 않는다면 poll()은 요청 이벤트나 타임아웃이 발생할 때까지 블록된다. Poll()은 다음과 같은 아규먼트를 파라미터로 받는다.
- 파일 디스크립터의 어레이와 poll 될 이벤트
- poll 하게 될 파일 디스크립터 의 수
- poll 이 이벤트가 pending 될 때 조차도 기다리게 될 millisecond의 수
사용자가 poll fd 구조의 이벤트 필드를 POLLIN으로 셋팅 함으로서 poll 될 이벤트를 지정한다. 이 요청은 poll()에게 각 STREAM에 어떠한 데이터가 있음을 사용자에게 알린다.
int poll (struct pollfd fds[], nfds_t nfds, int timeout)
fds[]: 파일 디스크립터 어레이
nfds : pollfd 의 수
timeout: timeout milisecond
만일,Poll()이 성공하면 프로그램은 poll fds 어레이 내의 각 엔트리를 체크한다. 
revent가 0으로 셋팅되면 파일 디스크립터에 어떠한 이벤트도 발생하지 않음을 나타낸다. 그리고 revent 가 POLLIN 으로 세팅되면 STREAM 상에 데이터가 유효함을 나타낸다.
그래서, 유효한 데이터는 폴(poll)된 마이너 디바이스로부터 읽음(read) 해서 다른 마이너 디바이스에 쓰기(write)할 수 있다.
revent 가 0이나 POLLIN 이외의 값으로 셋팅 되면 에러가 발생하게 되는데 다음과 같은 세가지 유형의 에러가 있다.
Error 유형 내용
POLLERR 지정된 파일 디스크립터와 연관된 STREAM상에 에러가 발생
POLLHUP 지정된 파일 디스크립터와 연관된 STREAM상에 hangup 조건이 발생이 event와 POLLOUT은 mutually exclusive 조건, 그러나 이때 hangup이 발생해도 STREAM은 write 할 수 있다
POLLNVAL 지정된 파일 디스크립터가 open STREAM과 관련되지 않았을 때
<표 3> poll 시스템 콜의 에러 유형
도 3를 참조하여, 폴(poll) 함수를 이용하여 시스템 성능 평가에 대한 전체적인 흐름을 먼저 살펴본다. 프로세서(110)는 성능 메트릭(metric)을 수집한다. 성능 메트릭(metric)은 vmstat와 커널로부터 획득될 수 있다(S300).
Vmstat (virtual memory statistics)는 오퍼레이팅 시스템 메모리, 프로세서, 인터럽트, 페이징 및 블록 I/O 에 대한 요약정보를 수집하고 표시하는, 컴퓨터 시스템 모니터링 툴로서, 가상 메모리의 정보를 통계 형식으로 출력할 수 있다.
성능 메트릭(metric)은 로그와 달리 주기적으로 발생하며, 시스템 리소스 모니터링에 정기적으로 수집되는 데이터를 의미할 수 있다. 일 실시예에 따라 수집되는 성능 메트릭은 CPU, 메모리, I/O, 네트워크의 성능 메트릭값을 포함할 수 있다.
프로세서(110)는 미리 정해진 주기로 폴(poll) 함수를 호출한다(S310). 여기서 미리 정해진 주기는 50msec일 수 있다. 프로세서(110)는 시스템 성능을 위한 프로그램을 실행한 이후 상기 프로그램이 종료될 때 까지 복수의 스냅샷(snapshot) 구간을 포함할 수 있다. 프로세서(110)는 한 구간의 스냅 샷 구간 동안 상기 폴 함수의 호출주기에 따라 복수의 폴 함수 호출이 이루어지도록 제어할 수 있다.
프로세서(110)는 복수의 주기적 스냅샷 구간이 경과되었는지 여부를 판단할 수 있다(S320). 상기 복수의 주기적 스냅샷 구간은 상기 시스템 성능 평가 프로그램이 실행된 이후 종료될 때 까지의 시간 내에 포함된 구간들로 정의될 수 있다. 따라서, 상기 프로그램이 시작된 이후 종료될 때 까지 복수의 주기적 스냅샷 구간이 정의될 수 있다.
프로세서(110)는 폴함수의 호출회수에 대응한 이벤트 기록 횟수를 카운트한 폴링 결과를 획득할 수 있다(S330). 본 명세서는 시스템의 I/O Multiplexing 능력을 일정한 수치로 전환하여 시스템의 성능 상태를 확인하기 위한 것으로서, 상기 폴링 결과가 소정의 값을 가질 수 있으며, 상기 폴링 결과는 폴 함수의 호출 횟수 대비 이벤트의 기록횟수를 카운트한 값으로 리턴될 수 있다. 예를 들어, 폴 함수의 호출횟수가 100번인 경우, 폴링 결과값이 80일 경우, 100번의 요청에 응답하여 80번의 데이터 확인이 이루어진 것을 의미할 수 있다. 다만, 시스템의 성능 메트릭을 종합적으로 고려하여 상기 80번의 데이터 확인값을 평가할 필요가 있다.
프로세서(110)는 폴링 결과를 성능 메트릭과 함께 로그파일에 기록할 수 있다(S340).
이하, 전술한 컴퓨팅 시스템 성능 평가 방법이 적어도 하나의 프로그램을 통해 구현되는 과정을 보다 구체적으로 설명한다.
도 14는 본 명세서의 일 실시예에 따라 하드비트(hearbeat) 방식이 적용되는 컴퓨팅 시스템의 성능 평가 방법을 설명하기 위한 흐름도이다.
설명의 편의를 위해, 본 명세서의 일 실시예에 따른 컴퓨팅 장치의 성능 평가 방법을 구현하는 프로그램을 Heartbeat 프로그램으로 호칭한다.
Heartbeat 프로그램은 크게 메인 프로그램인 제1 프로그램과 서브프로그램인 제2 프로그램(Systrs 프로그램)으로 이루어졌으며 이 두 프로그램 간의 상호작동을 설명하면 다음과 같다. 여기서 제1 프로그램은 컴퓨팅 시스템 성능을 평가하기 위한 프로그램이며, 제2 프로그램은 제1 프로그램이 시작되면 시스템 트레이스(system trace)를 수행하는 프로그램으로 정의될 수 있다.
프로세서(110)는 상기 컴퓨팅 시스템의 성능을 평가하기 위한 제1 프로그램을 미리 정해진 제1 시간 동안 실행되도록 제어할 수 있다. 또한, 프로세서(110)는 상기 제1 프로그램의 실행이 시작되면 시스템 트레이스(system trace)를 수행하는 제2 프로그램을 호출할 수 있다. 여기서 상기 제2 프로그램이 실행됨에 따라 상기 폴 함수가 호출될 수 있다.
프로세서(110)는 상기 제1 프로그램은 5초 동안 실행되도록 하고, 상기 5초가 경과되면 상기 제2 프로그램이 종료되도록 제어할 수 있다. 프로세서(110)는 상기 제1 프로그램은, 상기 5초가 경과되면, 웨이크업 콜을 상기 제2 프로그램에 전달하도록 제어할 수 있다. 프로세서(110)는 상기 제2 프로그램이, 상기 웨이크업 콜에 응답하여 상기 폴링 결과를 상기 제1 프로그램에 전달하도록 제어할 수 있다.
제1 프로그램
1. 현재 시간을 마크한다.
2. vmstat와 커널로부터 성능 metric(CPU, 메모리, I/O)을 수집한다.
3. systrs를 call하고 제1 프로그램의 실행시간이 5초가 되면 제2 프로그램(systrs 프로그램)을 종료하도록 signal을 보낸다.
4. 제2 프로그램(systrs)에서 리턴된 pgage를 받아서 현재의 시스템 CPU 부하를 나타내는 load 수치를 구하고 이들을 step 2. 에서 수집한 성능 metric 과 함께 로그 파일에 마크한다. 여기서 pgage는 제1 프로그램의 요청에 응답하여, 제2 프로그램이 폴 함수 요청 결과, 데이터의 읽기 및/또는 쓰기 동작이 정상적으로 수행된 경우, 이벤트 기록횟수를 업카운드한 카운트 데이터값일 수 있다.
제2 프로그램(Systrs 프로그램)
1. event를 POLLIN으로 셋팅 한다.
2. 50 msec의 주기로 poll() 시스템 콜을 수행한다. STREAM상에서 read와 write를 할 수 있으면 카운터를 하나 증가시킨다.
3. 제1 프로그램으로부터 웨이크업(wakeup) 시스템 콜을 수신하면pgage 값을 제1 프로그램에게 리턴한다.
도 5는 본 명세서의 일 실시예에 따른 컴퓨팅 시스템의 성능 평가 프로그램의 턴어라운드 타임과 CPU 사용율을 설명하기 위한 도면이다.
도 5를 참조하면, 프로세서(110)는 컴퓨팅 시스템 성능 평가 프로그램을 시작해서 종료할 때까지의 시간 동안에 주기적인 스냅샷(snapshot) 시간 내의 polling 간격시간(
Figure 112022033724490-pat00001
t: 50msec)으로 polling 함수를 호출(call) 하여 STREAM I/O 를 할 수 있는 능력을 정수로 환산한다.
i 번째의 snapshot 시간이 tsi 이고 그 때의 polling 함수콜에 대한 지연시간 twi 이면 i 번째의 poll 시스템 콜의 반복횟수는 다음과 같은 수식으로 표현된다.
(tsi + twi) /
Figure 112022033724490-pat00002
t
그리고 프로그램 실행에 소요된 CPU 시간은 사용자의 프로그램을 수행하는데 사용된 CPU시간,시스템 콜에 사용된 시간,I/O를 위해 기다린 시간, 그리고 idle 시간의 합으로 나타낸다.
CPU소요시간 =CPU사용자+ CPU시스템+ I/O대기시간 + Idle
Poll 함수는 소요된 CPU 시간 중 시스템 콜을 수행하는 시간에 포함된다 (CPU시스템). 프로세서(110)는 시스템 콜 수행시간이 전체 CPU소요시간 중 일정 수준 이상의 부분을 차지할 때 시스템 자원이 과 사용되고 있는 것으로 예측할 수 있다.
이하, 본 명세서의 일 실시예에 따른 컴퓨팅 시스템의 성능 평가 방법에 따른 성능 테스트 결과에 대하여 설명한다. 성능 테스트는 벤치마킹 환경과 성능 테스트 결과로 구분하여 설명한다.
[1] 성능 테스트를 위한 벤치마킹 환경
PROG: Mirrored UFS
RAID: Raid File System
MIX: Normal UFS
IOBENCH: 100MB read/write test
LINPACK: 1000X1000 single precision operation
QSORT: 2천만개의 element를 random하게 생성한 후 sorting
TPC-D: read-only query와 200MB의 DB 생성
COMP: IOBENCH+LINGPACK+QSORT+TPC-D 모두 실행
[2]성능 테스트 결과
PROG 환경에서는 LINPACK 과 TCP-D 프로그램이 함께 수행되며 시스템 CPU의 부하를 증가시켜 I/O-intensive 와 CPU-Intensive 에 대한 부하가 동시에 시스템에 주어져서 pgage는 변화가 크게 I/O 에 대한 부하를 인지하였지만 주어진 CPU 부하에 CPU 의 사용율은 80%이상 점유할 수 있도록 되어있어 PROG 환경에서 I/O 부하는 시스템의 CPU를 사용하는데 심각한 수준이 되지 않는 것으로 나타난다.
그러나 시스템 콜의 부하를 나타내는 시스템 CPU 시간은 1020%수준까지의 수치를 나타내므로 시스템의 자원을 사용하는 시스템 콜의 부하는 시스템의 성능 저하에 영향을 줄 수 있는 요소(factor)가 될 수 있다.
RAID 환경에서도 PROG 환경에서와 마찬가지로 pgage의 Min/Max의 차가 큰 것으로 나타났는데 이는 TCP-D의 Write 시스템 콜이 IOBENCH 프로그램과 함께 실행되면서 시스템에 I /O 부하가 가중시킨 결과로 볼 수 있다.
시스템 자원을 사용하는 시스템 CPU 시간은 프로그램의 실행과 종료시점까지 10-20%를 점유하는 것으로 나타났으며 이는 PROG 환경에서 보다 높은 수치로 나타났다. 이는, I/O 부하에 대한 의존도가 PROG 환경에 비해서 높은 결과를 보여주는 것이다. MIX 환경에서의 pgage 결과는 PROG 나 RAID에 비하여 Min/Max 값의 차가 적고 기복이 심한 것으로 나타났지만 사용자 CPU 점유율은 80%이상을 유지하는 결과를 나타내고 있는데 이는 MIX 환경에서는 I/O 부하가 있다고 하더라도 사용자 CPU를 점유하는데 큰 부담이 되지 않고 있다는 것을 보여주고 있다.
상대적으로 시스템 CPU를 사용하는 시간의 점유율도 PROG 나 RAID 환경에 비해 적은 것으로 나타났다. 이는 MIX 환경에서 시스템자원을 사용하는 시스템의 실행이 비교적 원활하게 이루어진 것을 의미한다.
결론적으로 성능 평가의 결과는 MIX2, PROG, RAID의 순으로 나타났으며 pgage의 Min/Max 값의 차이가 클수록 프로그램이나 시스템 환경은 I/O에 민감하며, TPC-D의 결과에서 보여주듯이 단일 프로그램 실행에서 I/O 부하가 TARGET 시스템에 영향을 주지 않았지만 workload를 5 배 증가시킨 10 부하의 증가를 pgage가 인지하여 결과를 보여준다.
본 명세서에서 제안하는 방법 또는 기능을 구현하기 위한 장치는 제어부 (또는 프로세서), 저장부(일시적 또는 비 일시적 저장장치)(또는 메모리), 데이터 전송을 위한 버스(미도시) 또는 외부와 통신을 수행하기 위한 통신부 및 출력부를 포함할 수 있다.
저장부는 자기 저장 매체(magnetic storage media) 또는 플래시 저장 매체(flash storage media)를 포함할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
통신부는 유선 및/또는 무선 통신 모듈로 구성될 수 있다. 예를 들어, 통신부는, 와이파이(Wireless Fidelity, Wi-Fi), 블루투스(Bluetooth), 지그비(Zigbee), 엔에프씨(near field communication: NFC), 와이브로(Wireless Broadband Internet: Wibro) 등의 무선 통신모듈과 이더넷(Ethernet) 등의 유선 랜(LAN)과 같은 유선 통신 모듈 등을 포함할 수 있다. 통신부는 네트워크를 통해 사용자 장치와 유/무선 통신을 수행할 수 있다.
제어부는 프로세서(processor)와 같이 데이터를 처리할 수 있는 모든 종류의 장치를 포함할 수 있다. 여기서, '프로세서(processor)'는, 예를 들어 프로그램 내에 포함된 코드 또는 명령으로 표현된 기능을 수행하기 위해 물리적으로 구조화된 회로를 갖는, 하드웨어에 내장된 데이터 처리 장치를 의미할 수 있다. 이와 같이 하드웨어에 내장된 데이터 처리 장치의 일 예로써, 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit: CPU), 프로세서 코어(processor core), 멀티 프로세서(multiprocessor), ASIC(application-specific integrated circuit), FPGA(field programmable gate array) 등의 처리 장치를 망라할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
출력부는 시각, 청각 또는 촉각 등과 관련된 출력을 발생시키기 위한 것으로, 디스플레이부, 음향 출력부, 햅팁 모듈, 광 출력부 중 적어도 하나를 포함할 수 있다. 디스플레이부는 터치 센서와 상호 레이어 구조를 이루거나 일체형으로 형성됨으로써, 터치 스크린을 구현할 수 있다. 이러한 터치 스크린은, 디바이스와 사용자 사이의 입력 인터페이스를 제공하는 사용자 입력부로써 기능함과 동시에, 디바이스와 사용자 사이의 출력 인터페이스를 제공할 수 있다.
이상에서 설명된 실시 예들은 본 발명의 구성요소들과 특징들이 소정 형태로 결합된 것들이다. 각 구성요소 또는 특징은 별도의 명시적 언급이 없는 한 선택적인 것으로 고려되어야 한다. 각 구성요소 또는 특징은 다른 구성요소나 특징과 결합되지 않은 형태로 실시될 수 있다. 또한, 일부 구성요소들 및/또는 특징들을 결합하여 본 발명의 실시 예를 구성하는 것도 가능하다. 본 발명의 실시 예들에서 설명되는 동작들의 순서는 변경될 수 있다. 어느 실시예의 일부 구성이나 특징은 다른 실시 예에 포함될 수 있고, 또는 다른 실시예의 대응하는 구성 또는 특징과 교체될 수 있다. 특허청구범위에서 명시적인 인용 관계가 있지 않은 청구항들을 결합하여 실시 예를 구성하거나 출원 후의 보정에 의해 새로운 청구항으로 포함시킬 수 있음은 자명하다.
본 발명에 따른 실시 예는 다양한 수단, 예를 들어, 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다. 하드웨어에 의한 구현의 경우, 본 발명의 일 실시 예는 하나 또는 그 이상의 ASICs(application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 프로세서, 콘트롤러, 마이크로 콘트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명의 일 실시 예는 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차, 함수 등의 형태로 구현될 수 있다. 소프트웨어 코드는 메모리에 저장되어 프로세서에 의해 구동될 수 있다. 상기 메모리는 상기 프로세서 내부 또는 외부에 위치하여, 이미 공지된 다양한 수단에 의해 상기 프로세서와 데이터를 주고 받을 수 있다.
본 발명은 본 발명의 필수적 특징을 벗어나지 않는 범위에서 다른 특정한 형태로 구체화될 수 있음은 통상의 기술자에게 자명하다. 따라서, 상술한 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니 되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.

Claims (6)

  1. 컴퓨팅 시스템의 성능 평가 방법에 있어서,
    상기 컴퓨팅 시스템의 성능 메트릭(metric)을 수집하는 단계;
    미리 정해진 주기에 따라 폴(poll) 함수를 호출하여 상기 컴퓨팅 시스템의 상태를 요청하는 폴링 단계;
    복수의 주기적인 스냅샷(snapshot) 구간이 경과되면, 상기 폴 함수의 호출횟수에 대응한 이벤트 기록횟수를 카운트한 폴링 결과를 획득하는 단계; 및
    상기 폴링 결과를 상기 성능 메트릭과 함께 로그파일에 기록하는 단계;
    를 포함하는 컴퓨팅 시스템의 성능 평가 방법.
  2. 제 1 항에 있어서,
    상기 컴퓨팅 시스템의 성능을 평가하기 위한 제1 프로그램을 미리 정해진 제1 시간 동안 실행되도록 제어하는 단계;
    상기 제1 프로그램의 실행이 시작되면 시스템 트레이스(system trace)를 수행하는 제2 프로그램을 호출하는 단계;를 더 포함하고,
    상기 제2 프로그램이 실행됨에 따라 상기 폴 함수가 호출되는 것을 특징으로 하는 컴퓨팅 시스템의 성능 평가 방법.
  3. 제 2 항에 있어서,
    상기 제1 프로그램은 5초 동안 실행되도록 하고, 상기 5초가 경과되면 상기 제2 프로그램이 종료되도록 하는 단계;
    상기 제1 프로그램은, 상기 5초가 경과되면, 웨이크업 콜을 상기 제2 프로그램에 전달하는 단계;
    상기 제2 프로그램은, 상기 웨이크업 콜에 응답하여 상기 폴링 결과를 상기 제1 프로그램에 전달하는 단계;
    를 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템의 성능 평가 방법.
  4. 제 2 항에 있어서,
    상기 미리 정해진 주기는 50msec이고, 한 구간의 스냅샷 동안 상기 50msec의 간격으로 폴링 동작을 수행하는 것을 특징으로 하는 컴퓨터 시스템의 성능 평가 방법.
  5. 제 1 항에 있어서,
    상기 폴링 결과를 획득하는 단계는,
    상기 폴 함수의 호출에 대응하여 데이터의 읽기 및 쓰기 동작이 정상적으로 수행된 경우, 상기 이벤트 기록횟수를 업 카운트하는 단계; 및
    상기 업 카운트된 결과값을 획득한는 단계;
    를 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템의 성능 평가 방법.
  6. 컴퓨터 실행 가능한 명령들을 저장한 비 일시적 컴퓨터 판독 가능한 매체에 있어서,
    상기 컴퓨터 실행 가능한 명령들은,
    컴퓨팅 시스템의 성능 메트릭(metric)을 수집하고,
    미리 정해진 주기에 따라 폴(poll) 함수를 호출하여 상기 컴퓨팅 시스템의 상태를 요청하고,
    복수의 주기적인 스냅샷(snapshot) 구간이 경과되면, 상기 폴 함수의 호출횟수에 대응한 이벤트 기록횟수를 카운트한 폴링 결과를 획득하고,
    상기 폴링 결과를 상기 성능 메트릭과 함께 로그파일에 기록하도록 하는 비 일시적 컴퓨터 판독 가능한 매체.
KR1020220038737A 2022-01-26 2022-03-29 실제 환경에서 대용량 시스템에 대한 포괄적 성능평가를 수행하는 방법 및 이를 지원하는 장치 KR102456150B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/KR2023/001037 WO2023146231A1 (ko) 2022-01-26 2023-01-20 실제 환경에서 대용량 시스템에 대한 포괄적 성능평가를 수행하는 방법 및 이를 지원하는 장치

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20220011168 2022-01-26
KR1020220011168 2022-01-26

Publications (1)

Publication Number Publication Date
KR102456150B1 true KR102456150B1 (ko) 2022-10-18

Family

ID=83803822

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220038737A KR102456150B1 (ko) 2022-01-26 2022-03-29 실제 환경에서 대용량 시스템에 대한 포괄적 성능평가를 수행하는 방법 및 이를 지원하는 장치

Country Status (2)

Country Link
KR (1) KR102456150B1 (ko)
WO (1) WO2023146231A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023146231A1 (ko) * 2022-01-26 2023-08-03 주식회사 한국소프트웨어아이엔씨 실제 환경에서 대용량 시스템에 대한 포괄적 성능평가를 수행하는 방법 및 이를 지원하는 장치

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7698705B1 (en) * 2004-10-19 2010-04-13 Oracle America, Inc. Method and system for managing CPU time consumption
JP2014109975A (ja) * 2012-12-04 2014-06-12 Nippon Telegr & Teleph Corp <Ntt> 性能分析装置、性能分析方法及び性能分析プログラム
JP2014206786A (ja) * 2013-04-10 2014-10-30 富士通株式会社 性能データ収集プログラム、装置、及び方法
US10528512B1 (en) * 2018-03-14 2020-01-07 Parallels International Gmbh Improving efficiency of asynchronous input/output operations based on observed performance
KR20210019758A (ko) * 2019-08-13 2021-02-23 주식회사 셀파소프트 Db 성능데이터 초정밀 산출 방법 및 db 성능데이터 초정밀 산출을 위한 db 모니터링 장치

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102456150B1 (ko) * 2022-01-26 2022-10-18 (주)한국소프트웨어아이엔씨 실제 환경에서 대용량 시스템에 대한 포괄적 성능평가를 수행하는 방법 및 이를 지원하는 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7698705B1 (en) * 2004-10-19 2010-04-13 Oracle America, Inc. Method and system for managing CPU time consumption
JP2014109975A (ja) * 2012-12-04 2014-06-12 Nippon Telegr & Teleph Corp <Ntt> 性能分析装置、性能分析方法及び性能分析プログラム
JP2014206786A (ja) * 2013-04-10 2014-10-30 富士通株式会社 性能データ収集プログラム、装置、及び方法
US10528512B1 (en) * 2018-03-14 2020-01-07 Parallels International Gmbh Improving efficiency of asynchronous input/output operations based on observed performance
KR20210019758A (ko) * 2019-08-13 2021-02-23 주식회사 셀파소프트 Db 성능데이터 초정밀 산출 방법 및 db 성능데이터 초정밀 산출을 위한 db 모니터링 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023146231A1 (ko) * 2022-01-26 2023-08-03 주식회사 한국소프트웨어아이엔씨 실제 환경에서 대용량 시스템에 대한 포괄적 성능평가를 수행하는 방법 및 이를 지원하는 장치

Also Published As

Publication number Publication date
WO2023146231A1 (ko) 2023-08-03
WO2023146231A8 (ko) 2023-08-31

Similar Documents

Publication Publication Date Title
US7568028B2 (en) Bottleneck detection system, measurement object server, bottleneck detection method and program
US20130160024A1 (en) Dynamic Load Balancing for Complex Event Processing
US20210184947A1 (en) Automatic capture of detailed analysis information based on remote server analysis
US8132170B2 (en) Call stack sampling in a data processing system
CN104113585A (zh) 用于产生指示负载平衡状态的硬件级中断的方法和设备
US20100333071A1 (en) Time Based Context Sampling of Trace Data with Support for Multiple Virtual Machines
US9886195B2 (en) Performance-based migration among data storage devices
US20100241760A1 (en) Web Front-End Throttling
WO2020093637A1 (zh) 设备状态预测方法、系统、计算机装置及存储介质
WO2014208139A1 (ja) 異常検出装置、制御方法、及びプログラム
JPWO2005017736A1 (ja) ディスクアレイ装置におけるボトルネックを検出するシステムおよびプログラム
US9396087B2 (en) Method and apparatus for collecting performance data, and system for managing performance data
CN115373835A (zh) Flink集群的任务资源调整方法、装置及电子设备
CN112749013B (zh) 线程负载的检测方法、装置、电子设备及存储介质
KR102456150B1 (ko) 실제 환경에서 대용량 시스템에 대한 포괄적 성능평가를 수행하는 방법 및 이를 지원하는 장치
CN115803716A (zh) 用于流处理应用程序的自动调整大小
CN114035990A (zh) 一种面向Linux操作系统时序数据的实时异常检测方法
US20090157923A1 (en) Method and System for Managing Performance Data
JP2022011579A (ja) 運用管理装置及び運用管理方法
CN114637656B (zh) 基于Redis的监控方法、装置、存储介质和设备
WO2020232903A1 (zh) 监控任务动态调整方法、装置、计算设备和存储介质
US20180123866A1 (en) Method and apparatus for determining event level of monitoring result
CN115525392A (zh) 容器监控方法、装置、电子设备及存储介质
US20200250004A1 (en) Information processing device and storage medium
US8249824B2 (en) Analytical bandwidth enhancement for monitoring telemetric signals

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant