KR20240054787A - 어플리케이션의 계측 지점들 간의 인과성을 분석하는 장치 및 방법 - Google Patents
어플리케이션의 계측 지점들 간의 인과성을 분석하는 장치 및 방법 Download PDFInfo
- Publication number
- KR20240054787A KR20240054787A KR1020220135181A KR20220135181A KR20240054787A KR 20240054787 A KR20240054787 A KR 20240054787A KR 1020220135181 A KR1020220135181 A KR 1020220135181A KR 20220135181 A KR20220135181 A KR 20220135181A KR 20240054787 A KR20240054787 A KR 20240054787A
- Authority
- KR
- South Korea
- Prior art keywords
- measurement point
- source
- electronic device
- delay
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 21
- 238000005259 measurement Methods 0.000 claims abstract description 440
- 230000003111 delayed effect Effects 0.000 claims abstract description 26
- 238000009826 distribution Methods 0.000 claims description 63
- 230000001364 causal effect Effects 0.000 claims description 43
- 238000004458 analytical method Methods 0.000 claims description 22
- 238000012549 training Methods 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 41
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000013528 artificial neural network Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 6
- 230000002123 temporal effect Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 206010010099 Combined immunodeficiency Diseases 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000001360 collision-induced dissociation Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 210000004185 liver Anatomy 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3409—Recording 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/3419—Recording 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 by assessing time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3447—Performance evaluation by modeling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3452—Performance evaluation by statistical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/835—Timestamp
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
일 실시예에 따른 전자 장치는 각각 명령어들의 일련의 스트림인 복수의 태스크들을 포함하는 어플리케이션에서 명령어들 간의 인과성을 분석할 수 있다. 예를 들어, 전자 장치는 어플리케이션에 복수의 계측 지점들을 설치하고, 복수의 계측 지점들 중 소스 계측 지점(source instrumentation point)의 지연에 의해 유발되는 타겟 계측 지점(target instrumentation point)의 지연 여부를 관측한 것에 기초하여, 소스 계측 지점 및 타겟 계측 지점 간의 인과 정보(causality information)를 결정할 수 있다.
Description
아래의 개시는 어플리케이션의 계측 지점들 간의 인과성 분석에 관한 것이다.
어플리케이션들은 멀티쓰레딩(Multithreading)을 많이 사용하고 있다. 멀티쓰레딩 프로그램은 다중 프로세서에서 어떠한 프로세스라도 병렬적으로 실행하는 환경을 제공한다. 컴퓨터 프로그래밍에 있어서, 쓰레드는 다수의 사용자들의 요청을 동시에 처리할 수 있는 프로그램이 각각의 사용과 관련하여 가지고 있는 정보들을 의미하며, 프로그램의 관점에서 쓰레드는 한 명의 개별 사용자 또는 특정한 서비스 요청에 대응하는데 필요한 정보이다.
쓰레드는 여러 동작들이 동시에 요청되는 경우에 각 동시 요청에 대응하여 다수 개가 생성되어 관리될 수 있다. 이 경우 다수의 요청에 의하여 발생된 쓰레드는 상호 간섭하는 현상을 일으킬 수 있다. 예를 들어, 한 쓰레드에서의 동작이 완료되기 전까지 다른 쓰레드에서의 동작이 지연될 수 있다.
일 실시예에 따른 전자 장치는, 각각 명령어들의 일련의 스트림인 복수의 태스크들을 포함하는 어플리케이션을 저장하는 메모리; 및 상기 어플리케이션에 복수의 계측 지점들을 설치하고, 상기 복수의 계측 지점들 중 소스 계측 지점(source instrumentation point)의 지연에 의해 유발되는 타겟 계측 지점(target instrumentation point)의 지연 여부를 관측한 것에 기초하여, 소스 계측 지점 및 타겟 계측 지점 간의 인과 정보(causality information)를 결정하도록 설정되는 프로세서를 포함할 수 있다.
상기 프로세서는, 상기 어플리케이션의 복수의 태스크들 중 소스 태스크를 선택할 수 있다. 프로세서는 상기 소스 태스크에서 실행되는 소스 계측 지점을 선택할 수 있다. 프로세서는 상기 소스 계측 지점에 적용할 딜레이 량을 결정하고, 상기 결정된 딜레이 량에 기초하여 상기 소스 계측 지점에서의 지연 이후에 상기 소스 태스크에서 실행될 계측 지점들의 후속 타임스탬프를 예측할 수 있다.
상기 프로세서는, 소스 태스크에서 실행되는 계측 지점에서 기록된 타임스탬프 및 예측된 타임스탬프 간의 불일치를 검출한 것에 기초하여, 해당하는 계측 지점에 대한 방문 시점들 간의 도착 시간 간격에 관한 정보를 예측하기 위한 시퀀스 예측기 모델을 트레이닝할 수 있다.
상기 프로세서는, 복수의 계측 지점들 중 도착 시간 간격의 분산이 임계 분산을 초과하는 계측 지점을 상기 소스 계측 지점으로 선택할 수 있다.
상기 프로세서는, 상기 어플리케이션의 총 실행 시간 대비 상기 복수의 계측 지점들이 개별적으로 설치된 명령어들의 실행 시간들의 비율들에 기초하여, 상기 복수의 계측 지점들 중으로부터 상기 소스 계측 지점을 선택할 수 있다.
상기 프로세서는, 상기 타겟 계측 지점의 도착 시간 간격의 분포에 기초하여 상기 소스 계측 지점에 적용할 딜레이 량 을 결정할 수 있다.
상기 프로세서는, 상기 소스 계측 지점에 대한 딜레이 량을 상기 타겟 계측 지점의 도착 시간 간격의 분포에 기초하여 결정된 최소 딜레이부터 점진적으로 증가시킬 수 있다.
상기 프로세서는, 상기 소스 계측 지점에 적용된 지연 및 상기 타겟 계측 지점에서 발생한 지연 간의 관계성을 지시하는 인과성 점수를 상기 인과 정보로서 계산할 수 있다.
상기 프로세서는, 상기 타겟 계측 지점에 대해 기록된 타임스탬프가 상기 타겟 계측 지점의 원본 분포를 따를 확률 값 및 상기 타겟 계측 지점의 지연된 분포를 따를 확률 값 간의 비교에 기초하여, 상기 소스 계측 지점 및 상기 타겟 계측 지점 간의 상기 인과 정보를 결정할 수 있다.
상기 프로세서는, 상기 설치된 복수의 계측 지점들 중 임계 점수보다 낮은 인과성 점수를 가지는 계측 지점을 상기 어플리케이션으로부터 제거할 수 있다. 프로세서는 나머지 계측 지점을 가지는 상기 어플리케이션을 실행하면서 상기 인과 정보를 결정할 수 있다.
상기 프로세서는, 상기 어플리케이션을 반복적으로 실행하는 것에 기초하여 상기 복수의 계측 지점들의 시간 정보를 수집할 수 있다. 프로세서는 상기 수집된 시간 정보의 분석에 기초하여 상기 소스 계측 지점과 다른 계측 지점의 예측된 타임스탬프를 추정할 수 있다. 프로세서는 복수의 계측 지점들 중 기록된 타임스탬프 및 상기 예측된 타임스탬프 간의 불일치(mismatch)가 관측된 계측 지점을 상기 타겟 계측 지점으로 결정할 수 있다.
상기 프로세서는, 콜링 컨텍스트 정보에 기초하여 식별된 복수의 계측 지점들 별로 상기 시간 정보를 수집할 수 있다.
상기 프로세서는, 상기 수집된 시간 정보를 이용하여, 계측 지점 별로 해당 계측 지점의 마지막 방문 시점(time point)으로부터 다음 방문 시점까지의 도착 시간 간격(inter arrival time)에 대한 정보를 출력하도록 설정된 시퀀스 예측기 모델을 트레이닝시킬 수 있다. 프로세서는 상기 복수의 예측 지점들에 대해 상기 트레이닝된 시퀀스 예측기 모델을 이용하여 다음 방문 시점을 예측할 수 있다.
상기 프로세서는, 계측 지점에 도착하는 것에 기초하여 해당 계측 지점에 대한 새로운 도착 시간 간격을 포함하는 도착 시간 간격들을 클러스터링할 수 있다. 프로세서는 상기 도착 시간 간격들을 클러스터링한 결과에 기초하여 시퀀스 예측 모델을 트레이닝시킬 수 있다. 프로세서는 상기 도착 시간 간격들의 클러스터 별로 분포를 획득할 수 있다.
상기 프로세서는, 상기 소스 계측 지점 및 상기 타겟 계측 지점 간의 인과성 점수가 임계 점수를 초과하는 것에 기초하여, 상기 소스 계측 지점에 대응하는 실행 구간에서 디폴트 전력보다 낮은 전력으로 소스 태스크에 할당된 프로세서의 코어를 동작시키도록 유발하는 프로파일을 생성할 수 있다. 프로세서는 상기 생성된 프로파일을 통신부를 통해 다른 전자 장치에게 배포할 수 있다.
일 실시예에 따른 프로세서로 구현되는 방법은, 각각 명령어들의 일련의 스트림인 복수의 태스크들을 포함하는 어플리케이션에 복수의 계측 지점들을 설치하는 단계; 및 상기 복수의 계측 지점들 중 소스 계측 지점의 지연에 의해 유발되는 타겟 계측 지점의 지연 여부를 관측한 것에 기초하여, 소스 계측 지점 및 타겟 계측 지점 간의 인과 정보를 결정하는 단계를 포함할 수 있다.
도 1은 일 실시예에 따른 어플리케이션의 태스크를 도시한다.
도 2는 일 실시예에 따른 인과성 분석 방법을 도시한 흐름도이다.
도 3 및 도 4는 일 실시예에 따른 계측 지점의 결정을 도시한 도면이다.
도 5 내지 도 8은 일 실시예에 따른 계측 지점별 시간 정보의 수집 및 이용을 도시한 도면이다.
도 9 및 도 10은 일 실시예에 따른 소스 계측 지점에 지연을 적용하는 것을 도시한 도면이다.
도 11은 일 실시예에 따른 인과성 점수의 산출 예시를 도시한다.
도 12는 일 실시예에 따른 인과 정보에 기초하여 생성된 프로파일의 배포를 도시하는 도면이다.
도 13은 일 실시예에 따른 전자 장치의 구성을 도시한 블록도이다.
도 2는 일 실시예에 따른 인과성 분석 방법을 도시한 흐름도이다.
도 3 및 도 4는 일 실시예에 따른 계측 지점의 결정을 도시한 도면이다.
도 5 내지 도 8은 일 실시예에 따른 계측 지점별 시간 정보의 수집 및 이용을 도시한 도면이다.
도 9 및 도 10은 일 실시예에 따른 소스 계측 지점에 지연을 적용하는 것을 도시한 도면이다.
도 11은 일 실시예에 따른 인과성 점수의 산출 예시를 도시한다.
도 12는 일 실시예에 따른 인과 정보에 기초하여 생성된 프로파일의 배포를 도시하는 도면이다.
도 13은 일 실시예에 따른 전자 장치의 구성을 도시한 블록도이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나", "A, B 또는 C", "A, B 및 C 중 적어도 하나", 및 "A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능한 조합을 포함할 수 있다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시예에 따른 어플리케이션의 태스크를 도시한다.
일 실시예에 따른 태스크는 명령어들의 일련의 스트림(sequential stream of instructions)일 수 있다. 예시적으로, 운영체제 수준에서 태스크는 스레드일 수 있고, MPI(Message-Passing Interface)에서는 랭크(rank)일 수 있다. 다만 태스크를 이로 한정하는 것은 아니고, 멀티 티어 어플리케이션을 사용하는 데이터 센터에서는 개별 어플리케이션이 태스크로 해석될 수도 있다. 본 명세서에서는 복수의 태스크들을 포함하는 어플리케이션(100)의 예시를 주로 설명한다.
복수의 태스크들이 병렬적으로 실행되는 어플리케이션(100)(예: 멀티 태스크 어플리케이션)에서는, 임의의 한 태스크 상의 명령어에 따른 단계(operation)이 다른 태스크 상의 명령어에 의한 동작이 완료되어야 실행 가능한 상황이 발생할 수 있다. 전술한 두 태스크들은 서로 인과성(causality)이 존재한다고 나타낼 수 있다. 인과성(causality)은, 제1 이벤트가 제2 이벤트의 발생을 위해 필요한 것으로 인식되는, 제1 이벤트 및 제2 이벤트 간의 관계를 나타낼 수 있다. 본 명세서에서 이벤트는 태스크에서 명령어에 따른 동작을 실행하는 것일 수 있다. 인과성은 임의의 한 태스크에서 명령어에 따른 단계(operation)이 다른 태스크에서 명령어에 따른 동작에 의존적(dependent)인 지 여부를 나타낼 수 있다. 인과성은 종속성(dependency)이라고도 나타낼 수 있다. 본 명세서에서는 서로 다른 태스크에서 실행되는 계측 지점들 간의 인과성이 설명된다.
멀티 태스크 어플리케이션(100)의 전체 실행 시간을 예측하기 위해서는, 태스크에서 실행되는 명령어에 의한 동작들 간의 인과성, 및 함수들 간의 인과성이 분석되어야 한다. 단일 태스크를 갖는 어플리케이션에서는 해당 태스크에서 명령어를 실행하는 시간 및 명령어의 반복 횟수를 곱하면 어플리케이션의 전체 실행 시간이 계산될 수 있다. 반면, 멀티 태스크 어플리케이션(100)에서는 한 태스크에서 선행(preceding) 동작이 완료되어야 후속(subsequent) 동작이 다른 태스크에서 실행될 수 있어, 실행 시간의 계산이 복잡할 수 있다. 예를 들어, 도 1에 도시된 어플리케이션(100)에서, 메인 태스크(110)의 실행 시간 중 Send 시간은 워커 태스크(worker task)(120)에서 상응하는 Recv가 준비되길 기다리는 시간을 포함할 수 있다. 유사하게, 워커 태스크(120)의 실행 시간 중 Recv 시간은 메인 태스크(110)에서 상응하는 Send가 준비되길 기다리는 시간을 포함할 수 있다. 태스크들 간의 다양한 상호작용 케이스가 발생할 수 있다.
일 실시예에 따른 전자 장치는 전술한 인과성을 분석함으로써 어플리케이션(100)의 동작에 대한 시뮬레이션에서의 정확도를 개선하기 위한 정보를 제공할 수 있다. 예를 들어, 전자 장치는 후술하는 명령어들에 설치된 계측 지점들 간의 인과 정보를 생성할 수 있다. 전자 장치는 생성된 인과 정보에 기초하여 계측 지점들 간의 인과성을 나타내는 의존성 그래프(dependency graph)를 자동으로 생성할 수 있다. 전자 장치는 생성된 인과 정보를 이용하여 새로운 워크로드에 대해 자동으로 워크로드 모델을 구축할 수 있다. 또한, 전자 장치는 함수 이름과 전달 인자를 이해할 필요 없이 자동으로 인과 정보를 추출할 수 있다. 전자 장치는 새로운 API(Application Programming Interface)를 개별적으로 코드 레벨에서 분석할 필요 없이, 전술한 인과 정보를 분석할 수 있다. 전자 장치는 데이터센터의 멀티티어 어플리케이션들 간의 인과 정보도 분석할 수 있다.
도 2는 일 실시예에 따른 인과성 분석 방법을 도시한 흐름도이다.
도 2에서 설명되는 동작들이 설명된 순서대로 수행되는 것으로 한정하는 것은 아니고, 설계에 따라 달라질 수 있다. 설명된 동작들 중 일부가 생략되거나, 다른 동작이 추가될 수 있고, 동작 순서가 변경될 수도 있다.
단계(210)에서 전자 장치는 어플리케이션에 복수의 계측 지점들(instrumentation points)을 설치할 수 있다. 계측 지점은 어플리케이션에 포함된 명령어 지점에 설치될 수 있다. 계측 지점의 설치는 하기 도 3 및 도 4에서 설명한다.
단계(220)에서 전자 장치는 어플리케이션을 반복적으로 실행하는 것에 기초하여 계측 지점들의 시간 정보를 수집 및 이용할 수 있다. 예를 들어, 전자 장치는 어플리케이션을 실행하면서 단계(210)에서 설치된 계측 지점들에 방문할 때마다 해당 계측 지점을 호출한 콜링 컨텍스트 정보 및 시간 정보를 기록할 수 있다. 콜링 컨텍스트 정보는 계측 지점이 설치된 명령어에 대응하는 동작을 호출 및 실행하는 맥락에 관한 정보로서, 하기 도 6에서 설명한다. 어플리케이션이 충분히 반복하여 실행되면, 각 계측 지점이 호출된 콜링 컨텍스트의 시간 정보(예: 도착 시간 간격)에서 주기성이 나타날 수 있다. 전자 장치는 시간 정보의 주기성을 학습한 시퀀스 예측기 모델(예: 기계학습에 기반한 모델)를 통해 도착 시간 간격을 예측할 수 있다. 참고로, 후술하는 계측 지점의 다음 타임스탬프의 예측은 전술한 단계(220)에서 수집된 계측 지점들 별 시간 정보에 기초하여 트레이닝된 시퀀스 예측기 모델에 의해 수행될 수 있다. 시퀀스 예측기 모델의 이용은 하기 도 5에서 설명한다.
단계(230)에서 전자 장치는 복수의 계측 지점들 중 소스 계측 지점(source instrumentation point)의 지연에 의해 유발되는 타겟 계측 지점(target instrumentation point)의 지연 여부를 관측한 것에 기초하여, 소스 계측 지점 및 타겟 계측 지점 간의 인과 정보(causality information)를 결정할 수 있다. 소스 계측 지점은 전자 장치에 의해 명령어 실행이 지연되는 계측 지점으로서, 복수의 계측 지점들 중에서 선택될 수 있다. 타겟 계측 지점은 소스 계측 지점에서의 지연으로 인해 명령어 실행이 지연되는 것으로 관측된 계측 지점을 나타낼 수 있다. 예를 들어, 전자 장치는 태스크들 중 소스 태스크를 선택하고, 복수의 계측 지점들 중 소스 태스크에서 소스 계측 지점을 선택할 수 있다. 전자 장치는, 어플리케이션을 실행하는 동안, 소스 계측 지점에서 명령어 실행을 지연시킨 후 재개할 수 있다. 전자 장치는 명령어 실행의 지연을 고려하여 다른 계측 지점들에 대해 예측된 후속 타임스탬프 및 명령어 실행을 재개한 후 기록된 타임스탬프에 기초하여 소스 계측 지점에 대해 인과성을 가지는 계측 지점(예: 타겟 계측 지점)을 결정할 수 있다.
계측 지점의 타임스탬프는, 해당 계측 지점이 설치된 명령어에 대응하는 동작을 실행하는 시점을 지시하는 타임스탬프를 나타낼 수 있다. 계측 지점의 예측된 타임스탬프 또는 예측된 후속 타임스탬프는, 전술한 지연을 수행한 이후에 해당 계측 지점에 방문(visit) 또는 도착(arrive)할 것으로 예측되는 시점을 지시하는 타임스탬프를 나타낼 수 있다. 본 명세서에서 계측 지점에 방문 및 계측 지점에 도착은 같은 의미를 가질 수 있다.
각 계측 지점에 대한 후속 타임스탬프는, 해당 계측 지점이 소스 계측 지점과 같은 태스크에서 실행되는지 여부에 기초하여 예측될 수 있다. 아래에서 설명의 편의를 위해, 복수의 계측 지점들 중 전술한 소스 계측 지점과 같은 태스크(예: 소스 태스크)에서 호출 및 실행되는 명령어에 설치된 계측 지점을 제1 계측 지점이라고 나타낼 수 있다. 소스 태스크와 다른 태스크에서 호출 및 실행되는 명령어에 설치된 계측 지점을 제2 계측 지점이라고 나타낼 수 있다.
예를 들어, 제1 계측 지점의 명령어 실행은, 소스 계측 지점에서 지연된 딜레이 량과 동일한 딜레이 량만큼 지연될 수 있다. 따라서, 전자 장치는 단계(220)에서 수집된 시간 정보에서 나타나는 방문 패턴(예: 도착 시간 간격 또는 도착 시간 간격의 분포)에 더하여 지연된 딜레이 량에 기초하여, 제1 계측 지점의 후속 타임스탬프를 예측할 수 있다. 예시적으로, 전자 장치는 방문 패턴(예: 도착 시간 간격)을 학습한 시퀀스 예측기 모델(예: 도 5의 시퀀스 예측기 모델)를 이용하여 추정된 타임스탬프에 딜레이 량을 부가함으로써 후속 타임스탬프를 예측할 수 있다.
제2 계측 지점의 명령어 실행은, 소스 계측 지점과의 인과 관계(causal relation)가 존재하지 않는 경우, 소스 태스크에서의 지연에도 불구하고 지연되지 않을 수 있다. 소스 계측 지점과의 인과성을 가지지 않는 제2 계측 지점의 타임스탬프는 소스 계측 지점에서의 지연에 대해 독립적일 수 있다. 소스 계측 지점과의 인과성을 가지지 않는 제2 계측 지점은, 단계(220)에서 수집된 시간 정보에서 나타나는 방문 패턴을 따르는 타임스탬프를 가질 수 있다. 전자 장치는 전술한 소스 태스크에서의 지연과 무관하게, 제2 계측 지점 자체의 방문 패턴에 기초하여 제2 계측 지점의 후속 타임스탬프를 예측할 수 있다.
전자 장치는 전술한 바와 같이 예측된 타임스탬프 및 기록된 타임스탬프 간의 비교에 기초하여 각 계측 지점(예: 제2 계측 지점)이 소스 계측 지점에 대해 인과성을 가지는지 여부를 판단할 수 있다. 예를 들어, 제2 계측 지점에 대해 예측된 타임스탬프 및 기록된 타임스탬프가 일치하는 경우, 전자 장치는 해당 제2 계측 지점이 소스 계측 지점에 대해 독립적이고, 인과성을 가지지 않는다고 판단할 수 있다. 다른 예를 들어, 전자 장치는 소스 태스크와 다른 태스크의 제2 계측 지점에서 예측된 타임스탬프 및 기록된 타임스탬프 간의 불일치를 관측하는 경우, 해당 제2 계측 지점이 소스 계측 지점과 인과성(causality)을 가지는 것으로 판단할 수 있다. 소스 계측 지점에 대해 인과성을 가지는 제2 계측 지점을 타겟 계측 지점이라고 나타낼 수 있다. 소스 계측 지점과의 인과성을 가지는 제2 계측 지점(예: 타겟 계측 지점)의 타임스탬프는, 소스 계측 지점에서의 지연으로 인해 지연될 수 있다. 타겟 계측 지점은 기존 수집된 시간 정보에서 나타나는 방문 패턴에 더하여 소스 계측 지점에 적용된 딜레이 량만큼 지연된 타임스탬프를 가질 수 있다. 따라서, 제2 계측 지점에서 예측된 타임스탬프 및 기록된 타임스탬프 간의 불일치는, 제2 계측 지점이 소스 계측 지점에 대해 잠재적으로 인과성을 가지는 것을 나타낼 수 있다. 전자 장치는 잠재적으로 인과성을 가지는 타겟 계측 지점에 대해 인과 정보를 결정할 수 있다. 소스 계측 지점 및 타겟 계측 지점 간의 인과 정보의 결정은 하기 도 11에서 설명한다.
도 3 및 도 4는 일 실시예에 따른 계측 지점의 결정을 도시한 도면이다.
도 3에서 설명되는 동작들이 설명된 순서대로 수행되는 것으로 한정하는 것은 아니고, 설계에 따라 달라질 수 있다. 설명된 동작들 중 일부가 생략되거나, 다른 동작이 추가될 수 있고, 동작 순서가 변경될 수도 있다.
단계(311)에서 전자 장치는 계측 지점(410)들을 결정할 수 있다. 예를 들어, 전자 장치는 어플리케이션에 포함된 명령어들 중에서 복수의 명령어들에 대응하는 계측 지점(410)들을 선택할 수 있다. 전자 장치는 무작위로 계측 지점(410)들을 선택할 수 있다. 추가적으로, 전자 장치는 계측 지점(410)을 배치하는 호출 깊이를 변경할 수 있다. 예를 들어, 전자 장치는 최초 선택된 계측 지점(410)의 함수보다 상위 함수에 대응하는 명령어로 계측 지점(410)을 변경함으로써 분석 오버헤드를 감소시킬 수 있다. 다른 예를 들어, 전자 장치는 최초 선택된 계측 지점(410)의 함수보다 하위 함수에 대응하는 명령어로 계측 지점(410)을 변경함으로써 분석 해상도를 증가시킬 수 있다.
단계(312)에서 전자 장치는 계측 지점들을 설치할 수 있다. 예를 들어, 전자 장치는 소스 코드 수정을 통해 계측 지점(410)을 설치할 수 있다. 전자 장치는, 일 실시예에 따른 인과성 분석 프레임워크와 직접 상호작용할 수 있도록 개발자에게 제공되는, API 함수 호출 구문을 어플리케이션의 소스 코드에 추가할 수 있다. 다른 예를 들어, 전자 장치는 소스 코드 수정 없이 계측 지점(410)을 설치할 수도 있다. 전자 장치는 GDB(GNU Project debugger) 브레이크포인트를 GDB 파이썬 인터페이스(Python Interface) 및 GDB 머신 인터페이스(Machine Interface)에서 이용하여 계측 지점(410)을 설치할 수 있다. 다만, 이로 한정하는 것은 아니고, 전자 장치는 라이브러리 인터포저(Library interposer), uprobe + BPF(Berkeley Packet Filter) (sleepable), USDT(User Space Dtrace), 또는 바이너리 변환(Binary Translation)에 기초하여 계측 지점(410)을 설치할 수 있다. 전술한 바와 같이, 디버거를 이용한 구현 방식은 소스 코드를 수정하지 않고도 계측 지점(410)을 설치할 수 있다.
도 4에서는 예시적으로 소스 코드에 삽입된 계측 위치가 도시된다. 계측 위치가 설치된 명령어의 실행이 발생하는 경우, 하기 도 5에 따라 시간 정보가 수집될 수 있다. 본 명세서에서는 함수 호출(420)이 계측 위치로 설정되는 예시를 설명하나, 이로 한정하는 것은 아니고, 다른 임의의 명령어가 계측 위치로 설정될 수도 있다.
참고로, 더 빠른 분석을 위해 의미 없는(예: 인과성이 낮은) 계측 지점(410)은 분석 중에 제거될 수 있는데, 계측 지점(410)의 제거는 하기 도 9에서 설명한다.
도 5 내지 도 8은 일 실시예에 따른 계측 지점별 시간 정보의 수집 및 이용을 도시한 도면이다.
도 5는 계측 지점 별로 시간 정보를 수집하여 이용하는 동작을 설명하는 흐름도이다. 도 5에서 설명되는 동작들이 설명된 순서대로 수행되는 것으로 한정하는 것은 아니고, 설계에 따라 달라질 수 있다. 설명된 동작들 중 일부가 생략되거나, 다른 동작이 추가될 수 있고, 동작 순서가 변경될 수도 있다.
단계(521)에서 전자 장치는 계측 지점들에서 타임스탬프를 수집할 수 있다. 일 실시예에 따른 전자 장치는 어플리케이션(600)을 반복적으로 실행하는 것에 기초하여 복수의 계측 지점들의 시간 정보를 수집할 수 잇다. 전자 장치는 콜링 컨텍스트 정보에 기초하여 식별된 복수의 계측 지점들 별로 시간 정보를 수집할 수 있다. 예를 들어, 전자 장치는 어플리케이션(600)을 실행하는 동안 콜링 컨텍스트 정보에 따라 계측 지점을 방문한 시간을 지시하는 타임스탬프를 기록할 수 있다. 도 6에서는 콜링 컨텍스트 정보로 사용될 수 있는 예시들이 도시된다. 예를 들어, 호스트이름(650), 태스크 ID(651)(예: 프로세스 랭크의 ID), 함수의 호출 깊이(call depth), 함수 이름(function name), 및 함수의 호출 인자(call argument)가 콜링 컨텍스트 정보로서 사용될 수 있다. 도 6에 도시된 예시에서 함수 function_a의 호출 깊이는 0, 호출 인자는 없을 수 있다. 함수 function_b의 호출 깊이는 1, 호출 인자는 (1000, 2)일 수 있다. 함수 function_c의 호출 깊이는 2, 호출 인자는 i일 수 있다. 도 6에서 계측 지점(610)은 함수 function_c에 속하는 명령어에 위치되므로, 함수 function_c의 콜링 컨텍스트 정보로 식별될 수 있다. 하기 표 1에서는 콜링 컨텍스트 정보와 함께 수집 및 기록된 시간 정보의 예시가 설명된다.
Calling Context | LVT | IATs | IAT Distributions | CIDs | Pred. Next CID |
('node0', 100, ('main', 'MPI_Send', 0xa0), (0x81,32,4,1,0,2)) | 20000 | [105, 95, 1002, 102, 93, 1004] | {0: N(98.8, 4.92), 1: N(1003, 1)} |
[0 0 1 0 0 1] | 0 |
('node1', 101, ('main', 'MPI_Recv', 0x80), (0x82,32,4,1,0,2)) | 20010 | [102, 99, 1000, 98, 106, 1002] | {0: N(101.3, 3.1),1: N(1001, 1)} | [0 0 1 0 0 1] | 0 |
표 1에서 콜링 컨텍스트 정보(Calling context information)는 (hostname, threadID, callstack, funcArgs)을 나타낼 수 있다. 콜링 컨텍스트 정보는 설치된 계측 지점을 지시하는 일종의 식별자일 수 있다. 같은 계측 지점이라도, 호출되는 컨텍스트(예: 임의의 함수가 상이한 깊이들에서 상이한 함수들에서 호출되는 케이스)에 따라 구별되어 식별될 수 있다. 표 1의 첫 행의 예시에서, 콜링 컨텍스트 정보는 ('node0', 100, ('main', 'MPI_Send', 0xa0), (0x81,32,4,1,0,2))로 예시적으로 기재된다. 해당 행에서 호스트 이름(hostname)은 'node0'일 수 있다. 스레드 ID는 100번일 수 있다. 콜스택은 ('main', 'MPI_Send')일 수 있는데, 'main' 함수 및 'MPI_Send' 함수가 스택되어 호출된 것을 나타낼 수 있다. 0xa0는 최하위 함수 내의 명령어의 상대 주소를 나타낼 수 있다. 명령어의 상대 주소도 계측 지점을 구분하기 위해 사용될 수 있다. (0x81,32,4,1,0,2)는 계측 지점이 설치된 함수에 주어진 함수 호출 인자(function call argument)를 나타낼 수 있다. 예를 들어, 도 6에 도시된 예시에서 함수의 타겟 프로세스 랭크(target process rank)가 함수 호출 인자에 따라 달라질 수 있는 바, 같은 명령어에 설치된 계측 지점이더라도 상이한 함수 호출 인자에 대해서는 구별될 수 있다. 함수 호출 인자는 예시적으로 GDB 브레이크포인트 방식 사용시 수집가능할 수 있다.다만, 콜링 컨텍스트 정보를 이로 한정하는 것은 아니다. 명령어 어드레스도 콜링 컨텍스트 정보로서 추가적으로 사용될 수 있다. 같은 명령어 또는 같은 함수라도 콜링 컨텍스트에 따라 동작이 달라질 수 있으므로, 전자 장치는 계측 지점의 명령어 실행과 관련된 시간 정보를 콜링 컨텍스트 정보에 따라 구분하여 수집할 수 있다.
전술한 콜링 컨텍스트 정보 별로 수집된 시간 정보는 표 1의 예시에서 LVT(Last-visit Timestamp), 도착 시간 간격(Inter-arrival Times, IAT), IAT 분포(IAT distribution), CID(Cluster ID), 및 예측된 다음 CID를 포함할 수 있다.
LVT는 해당 콜링 컨텍스트 정보로 식별된 계측 지점에 마지막으로 방문 또는 도착한 시점을 지시하는 타임스탬프를 나타낼 수 있다. 표 1의 예시에서는 ('node0', 100, ('main', 'MPI_Send', 0xa0), (0x81,32,4,1,0,2))의 컨텍스트 정보로 식별된 계측 지점에 마지막으로 기록된 LVT가 20000의 타임스탬프인 것으로 설명된다. 본 명세서에서 타임스탬프의 단위는 생략되었는데, 타임스탬프의 단위가 ns(nanosecond)라고 가정할 경우, 전술한 예시에서 LVT의 타임스탬프는 20000ns일 수 있다.
IAT는 해당 콜링 컨텍스트 정보로 식별된 계측 지점에 방문 또는 도착한 시간 간격의 시퀀스를 나타낼 수 있다. 표 1의 예시에서는 ('node0', 100, ('main', 'MPI_Send', 0xa0), (0x81,32,4,1,0,2))의 컨텍스트 정보로 식별된 계측 지점에 대해 도착한 시간 간격이 [105, 95, 1002, 102, 93, 1004]의 시퀀스로 표현될 수 있다. 예시적으로 해당 계측 지점에 대한 1번째 방문 타임스탬프와 2번째 방문 타임스탬프 간의 시간 간격은 105, 2번째 방문 타임스탬프와 3번째 방문 타임스탬프 간의 시간 간격은 95, 3번째 방문 타임스탬프와 4번째 방문 타임스탬프 간의 시간 간격은 1002일 수 있다. 예시적인 계측 지점에 대한 도착 시간 간격은 해당 계측 지점에 대략적으로 100 정도의 시간 간격으로 2번 방문, 및 대략적으로 1000정도의 시간 간격으로 1번 방문을 반복하는 패턴을 가질 수 있다.
전술한 계측 지점에 대한 방문 패턴(예: 도착 시간 간격의 시퀀스가 나타내는 패턴)은 IAT 분포 및 클러스터 ID 시퀀스(예: CIDs)로 모델링될 수 있다. IAT 분포는 같은 계측 지점에 대해 반복되는 도착 시간 간격의 분포를 나타내는 정보일 수 있다. 전자 장치는 해당 계측 지점에 대해 수집된 도착 시간 간격들을 분포(예: 정규 분포)에 피팅함으로써, 분포에 따른 도착 시간 간격들의 평균 값(mean value) 및 분산 값(variance value)을 획득할 수 있다. 도착 시간 간격을 이산 타임스탬프(Discrete Timestamp)로 기록하는 실시예 대비 노이즈 저항성이 증가될 수 있다. 참고로, 본 명세서에서 주로 정규 분포를 예로 들어 설명하나 이로 한정하는 것은 아니다. 도착 과정(arrival process)이 푸아송 과정(Poisson process)에 해당하는 경우, 도착 시간 간격은 지수 분포(exponential distribution)를 따를 수 있다.
표 1에 설명된 예시와 같이 하나의 콜링 컨텍스트 정보로 식별된 계측 지점에 대해 도착 시간 간격들이 상이한 분포들로 혼재되어 발생할 수 있다. 전자 장치는 해당 계측 지점에 대해 수집된 도착 시간 간격들을 하나 이상의 클러스터로 클러스터링하고, 각 클러스터 별로 분포 정보(예: 평균 값 및 분산 값)을 획득할 수 있다. 예를 들어, 전자 장치는 임의의 콜링 컨텐스트 정보로 식별된 한 계측 지점에 대해 단일 가우시안 정규 분포로 피팅함으로써 분포 정보를 획득할 수 있다. 전자 장치는 수집된 도착 시간 간격들을 정규 분포로 피팅한 결과, 분산 값이 임계 분산을 초과하는 경우 수집된 도착 시간 간격들에 대한 클러스터링을 시도할 수 있다. 전자 장치는 수집된 도착 시간 간격들에 대해 복수의 클러스터들이 형성되는 경우, 복수의 클러스터들의 각각에 속하는 도착 시간 간격들에 대해 가우시안 분포를 생성할 수 있다. 예를 들어 표 1에서, ('node0', 100, ('main', 'MPI_Send', 0xa0), (0x81,32,4,1,0,2))의 컨텍스트 정보로 식별된 계측 지점에 대한 IAT 분포는 {0: N(98.8, 4.92), 1: N(1003, 1)}로 표현될 수 있다. N()은 정규 분포를 나타내는 기호일 수 있다. '0: N(98.8, 4.92)'은 0번 클러스터에 속하는 도착 시간 간격들이 98.8의 평균 값 및 4.92의 분산 값으로 분포된 것을 나타낼 수 있다. '1: N(1003, 1)'은 `1번 클러스터에 속하는 도착 시간 간격들이 1003의 평균 값 및 1의 분산 값으로 분포된 것을 나타낼 수 있다.
클러스터 ID 시퀀스는 IAT 분포에서 도착 시간 간격들의 클러스터들이 관측된 시퀀스를 나타낼 수 있다. 예를 들어, 표 1에서 ('node0', 100, ('main', 'MPI_Send', 0xa0), (0x81,32,4,1,0,2))의 컨텍스트 정보로 식별된 계측 지점에 대한 클러스터 ID 시퀀스는 [0 0 1 0 0 1]일 수 있다. [0 0 1 0 0 1]의 클러스터 ID 시퀀스는, 0번 클러스터에 속하는 방문 시간 간격(예: 105), 0번 클러스터에 속하는 방문 시간 간격(예: 95), 1번 클러스터에 속하는 방문 시간 간격(예: 1002), 0번 클러스터에 속하는 방문 시간 간격(예: 102), 0번 클러스터에 속하는 방문 시간 간격(예: 93), 및 1번 클러스터에 속하는 방문 시간 간격(예: 1004)가 순차적으로 기록된 것을 나타낼 수 있다. 표 1의 예시에서 105, 95, 102, 및 93의 도착 시간 간격들은 0번 클러스터(예: N(98.8, 4.92)의 분포를 갖는 클러스터)에 속할 수 있고, 1002, 1004의 도착 시간 간격들은 1번 클러스터(예: N(1003, 1)의 분포를 갖는 클러스터)에 속할 수 있다. 클러스터 ID 시퀀스는 후술하는 시퀀스 예측기 모델의 트레이닝에 사용될 수 있다.
예측된 다음 CID는 마지막 방문 타임스탬프 이후 해당 계측 지점에 다음에 방문할 때까지의 방문 시간 간격이 속할 클러스터를 예측한 결과를 나타낼 수 있다. 전자 장치는 트레이닝된 시퀀스 예측기 모델을 이용하여 다음 클러스터 ID를 예측할 수 있다. 표 1의 예시에서, ('node0', 100, ('main', 'MPI_Send', 0xa0), (0x81,32,4,1,0,2))의 컨텍스트 정보로 식별된 계측 지점에 대해 예측된 다음 클러스터 ID는 0일 수 있다. 클러스터 ID 시퀀스를 참조하면, 0번 클러스터, 0번 클러스터, 및 1번 클러스터의 패턴이 반복되고 있으므로, 다음 클러스터 ID는 0번 클러스터일 것으로 예상될 수 있다. 따라서, 전자 장치는 수집된 시간 정보의 분석에 기초하여 계측 지점들에 대해 후속 타임스탬프를 예측할 수 있다. 예를 들어, 시퀀스 예측기 모델은 수집된 시간 정보를 분석한 결과에 기초하여 트레이닝될 수 있다. 전자 장치는 트레이닝된 시퀀스 예측기 모델을 이용하여 전술한 바와 같이 계측 지점에 대해 후속 방문 시간 간격이 속할 클러스터를 식별할 수 있다. 전자 장치는 식별된 후속 클러스터에 대응하는 방문 시간 간격을 마지막 방문 타임스탬프에 가산함으로써 계측 지점들의 예측된 타임스탬프를 추정할 수 있다. 표 1의 예시에서, 예측된 다음 CID인 0번 클러스터의 평균 값은 98.8이고 마지막 방문 타임스탬프는 20000이므로, 전자 장치는 후속 타임스탬프가 20098.8일 것으로 예측할 수 있다.
단계(522)에서 전자 장치는 수집된 시간 정보에 기초하여 시퀀스 예측기 모델을 트레이닝할 수 있다. 예를 들어, 전자 장치는 계측 지점 별로 도착 시간 간격을 예측하기 위한 시퀀스 예측기 모델을 트레이닝시킬 수 있다. 단계(523)에서 전자 장치는 시퀀스 예측기 모델의 트레이닝이 수렴(예: 완료)했는지 여부를 판단할 수 있다. 예를 들어, 전자 장치는 시퀀스 예측기 모델의 예측 정확도가 임계치 이상인 경우, 트레이닝이 수렴한 것으로 결정할 수 있다. 다른 예를 들어, 전자 장치는 시퀀스 예측기 모델의 학습 시 업데이트되는 파라미터 혹은 예측 정확도의 변동률이 임계치 미만인 경우 트레이닝이 수렴한 것으로 결정할 수 있다. 전자 장치는 전술한 예측 정확도, 파라미터의 변동률, 또는 예측 정확도의 변동률 중 적어도 하나를 이용하여 트레이닝의 수렴 여부를 판단할 수도 있다. 시퀀스 예측기 모델의 트레이닝은 하기 도 7에서 설명한다. 다만, 후속 타임스탬프의 예측을 전술한 클러스터 예측에 기반하는 것으로 한정하는 것은 아니다. 후속 타임스탬프 자체를 예측하도록 설계된 기계학습 모델이 사용될 수도 있고, 기계학습 모델 대신 통계적인 방법이 사용될 수도 있다.
도 7은 시간 정보의 수집 및 시퀀스 예측기 모델의 트레이닝을 설명하는 흐름도이다. 도 7에서 설명되는 동작들이 설명된 순서대로 수행되는 것으로 한정하는 것은 아니고, 설계에 따라 달라질 수 있다. 설명된 동작들 중 일부가 생략되거나, 다른 동작이 추가될 수 있고, 동작 순서가 변경될 수도 있다.
단계(711)에서 전자 장치는 어플리케이션 실행에서 계측 지점에 도달할 수 있다. 전자 장치는 도착한 계측 지점의 콜링 컨텍스트 정보를 식별할 수 있다.
단계(712)에서 전자 장치는 해당 계측 지점의 새로운 도착 간격을 계산할 수 있다. 예를 들어, 전자 장치는 해당 계측 지점의 이전 마지막 방문 타임스탬프와 현재 타임스탬프(예: 계측 지점에 도착한 시점을 지시하는 타임스탬프) 간의 차이를 새로운 도착 시간 간격으로 결정할 수 있다.
단계(713)에서 전자 장치는 마지막 방문 타임스탬프를 업데이트할 수 있다. 예를 들어, 전자 장치는 마지막 방문 타임스탬프를 현재 타임스탬프로 교체할 수 있다.
단계(721)에서 전자 장치는 새로운 도착 간격으로 클러스터링을 수행할 수 있다. 예를 들어, 전자 장치는 계측 지점에 도착하는 것에 기초하여 해당 계측 지점에 대한 새로운 도착 시간 간격을 포함하는 도착 시간 간격들을 클러스터링할 수 있다. 예를 들어, 전자 장치는 복수의 도착 시간 간격들을 서로 유사한 도착 시간 간격들(예: 상호간의 차이가 임계 차이 미만인 도착 시간 간격들)을 같은 클러스터로 분류할 수 있다. 전자 장치는 같은 클러스터에 속하는 도착 시간 간격들 간의 분산 값이 임계 분산을 초과하면 별도 클러스터로 구분할 수도 있다. 도 8은 클러스터링 결과의 예시를 도시한다. 제1 분포(810)는 0번 클러스터(CID=0)의 분포를 나타내고, 제2 분포(820)는 1번 클러스터(CID=1)의 분포를 나타낼 수 있다. 도 8에서 가로축은 도착 시간 간격, 세로축은 각 도착 시간 간격의 발생 빈도를 나타낼 수 있다. 참고로, 전자 장치는 계측 지점이 설치된 함수가 계층적인 구조에 속하는 경우(예: 해당 함수가 다른 상위 함수에 의해 호출되는 경우), 계층적 클러스터링(hierarchical clustering)을 수행할 수도 있다.
단계(722)에서 전자 장치는 클러스터 ID를 업데이트할 수 있다. 예를 들어, 전자 장치는 새로운 도착 시간 간격이 속하는 클러스터 ID를 클러스터 ID 시퀀스에 추가할 수 있다.
단계(723)에서 전자 장치는 새로운 도착 간격에 분포를 피팅할 수 있다. 예를 들어, 전자 장치는 도착 시간 간격들의 클러스터 별로 분포를 획득할 수 있다. 전자 장치는 새로운 도착 시간 간격이 속하는 클러스터의 분포 정보(예: 평균 값 및 분산 값)를 재계산할 수 있다.
단계(724)에서 전자 장치는 새로운 클러스터 ID로 클러스터 시퀀스 예측기(예: 시퀀스 예측기 모델)를 트레이닝할 수 있다. 전자 장치는 수집된 시간 정보를 이용하여, 계측 지점 별로 해당 계측 지점의 마지막 방문 시점(time point)으로부터 다음 방문 시점까지의 도착 시간 간격(inter arrival time)에 대한 정보를 출력하도록 설정된 시퀀스 예측기 모델을 트레이닝시킬 수 있다. 도착 시간 간격(inter arrival time)에 대한 정보는, 예시적으로 도착 시간 간격이 속할 클러스터 ID를 포함할 수 있다. 시퀀스 예측기 모델은 클러스터 ID 시퀀스에서 나타나는 패턴에 따라 현재 방문 시점 이후에 해당 계측 지점에 다음에 방문할 때까지의 방문 시간 간격이 속할 클러스터를 예측하도록 설계 및 트레이닝된 모델을 나타낼 수 있다. 시퀀스 예측기 모델은 기계학습 모델로 구현될 수 있으며, 예시적으로 뉴럴 네트워크를 포함할 수 있다. 다만, 시퀀스 예측기 모델을 이로 한정하는 것은 아니다. 전자 장치는 도착 시간 간격들을 클러스터링한 결과에 기초하여 시퀀스 예측 모델을 트레이닝시킬 수 있다. 예를 들어, 수집된 클러스터 ID 시퀀스 중 일부 시퀀스가 트레이닝 입력, 일부 시퀀스 직후의 클러스터 ID가 트레이닝 출력으로 설정(set)될 수 있다. 전자 장치는 트레이닝 입력을 시퀀스 예측 모델에 입력한 결과 및 트레이닝 출력에 기초하여 목적 함수 값(예: 손실(loss))을 산출할 수 있다. 전자 장치는 목적 함수 값이 수렴할 때까지 시퀀스 예측 모델의 파라미터(예: 뉴럴 네트워크의 연결 가중치)를 반복적으로 업데이트함으로써, 시퀀스 예측 모델을 트레이닝시킬 수 있다.
뉴럴 네트워크는 머신 러닝(예: 딥러닝)에 기반하여 비선형적 관계에 있는 입력 데이터 및 출력 데이터를 서로 매핑함으로써 전술한 후속 클러스터 예측을 수행할 수 있다. 딥 러닝은 빅 데이터 세트로부터 다양한 문제를 해결하기 위한 기계 학습 기법으로서, 지도식(supervised) 또는 비지도식(unsupervised) 학습을 통해 입력 데이터 및 출력 데이터를 서로 매핑할 수 있다. 뉴럴 네트워크는 복수의 레이어들을 포함하고, 레이어들의 노드들은 출력 신호를 전송하기 위한 링크들(예: 연결선)을 통해 다음 레이어의 노드들과 연결될 수 있다. 링크들의 수는 다음 레이어에 포함된 노드들의 수에 대응할 수 있다. 노드에는 이전 레이어에 포함된 노드들의 가중된 입력들(weighted inputs)에 관한 활성 함수(activation function)의 출력이 입력될 수 있다. 가중된 입력은 이전 레이어에 포함된 노드들로부터 전파되는 값에 가중치(weight)가 곱해진 것이다. 가중치(예: 연결 가중치)는 뉴럴 네트워크의 파라미터로 지칭될 수 있다. 예시적으로 뉴럴 네트워크는 입력 레이어에서 클러스터 ID 시퀀스(예: 일부 시퀀스)를 수신하고, 출력 레이어에서 후속 클러스터를 예측한 값(예: 클러스터 ID를 지시하는 레이블 또는 클러스터 ID 별 확률)을 출력할 수 있다.
전자 장치는 복수의 예측 지점들에 대해 트레이닝된 시퀀스 예측기 모델을 이용하여 다음 방문 시점을 예측할 수 있다. 예를 들어, 전자 장치는 시퀀스 예측기 모델에 기초하여 출력된 클러스터에 속하는 후속 도착 시간 간격을 결정할 수 있다. 전자 장치는 후속 도착 시간 간격 및 마지막 방문 타임스탬프에 기초하여 다음 방문 시점을 지시하는 타임스탬프를 예측할 수 있다.
도 9 및 도 10은 일 실시예에 따른 소스 계측 지점에 지연을 적용하는 것을 도시한 도면이다.
도 9에서 설명되는 동작들이 설명된 순서대로 수행되는 것으로 한정하는 것은 아니고, 설계에 따라 달라질 수 있다. 설명된 동작들 중 일부가 생략되거나, 다른 동작이 추가될 수 있고, 동작 순서가 변경될 수도 있다.
단계(931)에서 전자 장치는 딜레이 플랜을 생성할 수 있다. 딜레이 플랜은 복수의 계측 지점들 중 실행을 지연시킬 계측 지점 및 딜레이 량에 관한 정보를 포함할 수 있다.
일 실시예에 따르면, 단계(931a)에서 전자 장치는 어플리케이션의 복수의 태스크들 중 소스 태스크를 선택할 수 있다. 단계(931b)에서 전자 장치는 소스 태스크에서 실행되는 소스 계측 지점을 선택할 수 있다. 전자 장치는 선택된 소스 태스크에서 실행되는 계측 지점들 중 소스 계측 지점을 선택할 수 있다. 다만, 이로 한정하는 것은 아니고, 전자 장치는 복수의 계측 지점들 중 소스 계측 지점을 선택하고, 소스 계측 지점의 명령어가 실행되는 태스크를 소스 태스크로 선택할 수도 있다.
예를 들어, 전자 장치는 복수의 계측 지점들 중 소스 계측 지점을 무작위로 선정할 수 있다.
다른 예를 들어, 전자 장치는 복수의 계측 지점들 중 도착 시간 간격의 분산이 임계 분산을 초과하는 계측 지점을 소스 계측 지점으로 선택할 수 있다. 도착 시간 간격의 분산이 클 수록, 다른 태스크의 계측 지점과의 인과성이 검출될 가능성이 높을 수 있다. 분산이 크다는 것은 도착 시간 간격의 변동이 많은 것인 바, 해당 계측 지점에게 다른 태스크의 간섭이 자주 발생하는 것으로 해석될 수 있기 때문이다. 따라서, 전자 장치는 계측 지점들 중 도착 시간 간격에 대해 큰 분산 값을 가지는 계측 지점부터 작은 분산 값을 가지는 계측 지점의 순서(예: 내림차순)로 소스 계측 지점을 순차적으로 선정할 수도 있다.
또 다른 예를 들어, 전자 장치는 어플리케이션의 총 실행 시간 대비 복수의 계측 지점들이 개별적으로 설치된 명령어들의 실행 시간들의 비율들에 기초하여, 복수의 계측 지점들 중으로부터 소스 계측 지점을 선택할 수 있다. 전자 장치는 벽시계 시간(Wall clock time)에서 차지하는 비중이 높은 명령어들에 설치된 계측 지점을 우선적으로 소스 계측 지점으로 선정할 수도 있다. 전자 장치는 전술한 단계(220)에서 계측 지점들 별로 시간 정보를 수집하였으므로, 어플리케이션의 전체 실행 시간에서 각 계측 지점에 대응하는 명령어의 실행시간들의 비율을 계산할 수 있다. 전자 장치는 명령어들의 실행 시간들의 비율들 중 높은 비율의 실행 시간을 가지는 계측 지점부터 낮은 비율의 실행 시간을 가지는 계측 지점의 순서(예: 내림차순)로 소스 계측 지점을 순차적으로 선정할 수도 있다.
단계(931c)에서 전자 장치는 소스 계측 지점에 적용할 딜레이 량을 결정할 수 있다. 전자 장치는 딜레이 량을 무작위로 결정할 수 있으나 이로 한정하는 것은 아니다. 일 실시예에 따르면 전자 장치는 계측 지점들의 도착 시간 간격의 분포에 기초하여 딜레이 량을 결정할 수 있다. 예를 들어, 소스 계측 지점에 대해 잠재적으로 인과성을 가지는 타겟 계측 지점이 식별된 경우, 전자 장치는 타겟 계측 지점의 도착 시간 간격의 분포에 기초하여 소스 계측 지점에 적용할 딜레이 량을 결정할 수 있다. 전자 장치는 분석 속도의 저하를 최소화하면서 어플리케이션의 행동(behavior)을 유지하고, 노이즈 대비 유의미한 딜레이 량을 결정할 수 있다. 어플리케이션이 동적 스케줄러(Dynamic scheduler) 또는 타임아웃 로직(timeout logic)을 가지는 경우, 과도한 딜레이 량이 적용될 경우 어플리케이션의 행동이 달라질 수 있기 때문이다.
예를 들어, 전자 장치는 타겟 계측 지점의 방문 시간 간격의 분포에서 95% 신뢰 구간(confidence interval)의 상한(upper limit)(예: 95번째 테일 지연시간(95th tail latency))에 기초하여 딜레이 량을 결정할 수 있다. 전자 장치는 해당 분포의 95% 신뢰 구간의 상한의 2배에 대응하는 지연 시간을 딜레이 량으로 결정할 수 있다. 다른 예를 들어, 전자 장치는 타겟 계측 지점의 방문 시간 간격의 분포에 기초하여 최소 딜레이를 결정하고, 최소 딜레이 이상의 범위 내에서 무작위로 딜레이 량을 결정할 수도 있다. 또 다른 예를 들어, 전자 장치는 소스 계측 지점에 대한 딜레이 량을 타겟 계측 지점의 도착 시간 간격의 분포에 기초하여 결정된 최소 딜레이부터 점진적으로 증가시킬 수도 있다. 전자 장치는 잠재적으로 소스 계측 지점과 인과성이 있는 타겟 계측 지점의 후보를 먼저 검출하고, 이후에 딜레이 량을 변경하면서 인과 정보(예: 인과성 점수)를 정밀하게 결정할 수도 있다. 또한, 락 프리 큐(Lock-free queue)를 포함하는 어플리케이션에서는 빈 상태(empty state) 또는 가득찬 상태(full state)에서만 인과성이 관측될 수도 있다. 전자 장치는 빈 상태를 유도하기 위해 어플리케이션의 프로듀서(producer)에 대응하는 계측 지점에 충분한 딜레이를 적용할 수 있다. 전자 장치는 가득찬 상태를 유도하기 위해 컨슈머(consumer)에 충분한 딜레이를 적용할 수도 있다.
참고로, 전자 장치는, 소스 계측 지점에 대해 인과성을 가지는 타겟 계측 지점이 식별되기 전에는, 계측 지점들에 대한 방문 순서에 기초하여 예비적인 타겟 계측 지점을 결정할 수 있다. 전자 장치는 계측 지점들의 콜링 컨텍스트를 방문한 순서대로 글로벌 리스트에 기록함으로써, 각 계측 지점에 대한 방문 순서를 기록할 수 있다. 전자 장치는 글로벌 리스트에 콜링 컨텍스트뿐만 아니라 타임 스탬프도 함께 기록할 수 있다. 전자 장치는 글로벌 리스트를 고정된 크기 큐(fixed size queue)에 저장하고, 가장 오래된 것부터 폐기할 수 있다. 전자 장치는 글로벌 리스트에서 소스 계측 지점에 시간적으로 인접한 후속 계측 지점들 중 소스 태스크와 다른 태스크에서 실행되는 계측 지점을 예비적인 타겟 계측 지점으로 결정할 수 있다. 전자 장치는 예비적인 타겟 계측 지점들의 도착 시간 간격들의 분포에 기초하여, 소스 계측 지점에 대해 전술한 딜레이 량을 결정할 수도 있다.
예를 들어, 어플리케이션(예: 프로그램)은 동작을 반복하는 특성이 있는데, 전자 장치가 어플리케이션을 실행하면서 콜링 컨텍스트들을 A, B, C, D, E의 순서로 방문한 경우, 다음에도 A, B, C, D, E의 순서로 재방문할 가능성이 높다. 전자 장치는 콜링 컨텍스트 A와 같은 태스크의 콜링 컨텍스트를 제외할 수 있다. 예시적으로, 콜링 컨텍스트 B, D가 남을 수 있다. 달리 말해, 전자 장치는 소스 계측 지점에 방문한 후 인접한 시간 구간 동안 방문한 계측 지점들 중 소스 태스크와 다른 태스크에서 실행되는 계측 지점들을 예비적인 타겟 계측 지점(예: 콜링 컨텍스트 B, D에 대응하는 계측 지점들)으로 결정할 수 있다. 시간적으로 인접한 계측 지점들 간에 인과성이 수립될 가능성이 높기 때문이다. 전자 장치는 소스 계측 지점(예: 콜링 컨텍스트 A에 대응하는 계측 지점)와 인접한 예비적인 계측 지점들(예: 콜링 컨텍스트 B, D에 대응하는 계측 지점들)의 각각의 도착 시간 간격들의 분포에 기초하여 결정된 지연 시간(예: 95% 신뢰 구간의 상한) 중 최대 값 또는 지연 시간들의 가중합을 딜레이 량으로 결정할 수 있다. 지연 시간들의 가중합은, 예를 들어, 소스 계측 지점에 대한 시간적 간격(예: 타임스탬프들의 간격)의 역수를 가중치로 각 지연 시간에 적용한 결과의 평균(예: 가중 평균)일 수 있다. 다만, 예비적인 타겟 계측 지점의 결정을 이로 한정하는 것은 아니고, 전자 장치는 임의로 소스 계측 지점에 딜레이 량을 적용한 후, 인과성이 관측되는 타겟 계측 지점을 발견할 수도 있다. 전자 장치는 발견된 타겟 계측 지점의 도착 시간 간격들의 분포를 이용하여 딜레이 량을 전술한 방식에 따라 조정할 수도 있다.
단계(932)에서 전자 장치는 전술한 단계(931)에서 생성된 딜레이 플랜을 실행할 수 있다. 전자 장치는 선택된 소스 계측 지점에 딜레이 량에 따른 지연을 적용할 수 있다. 도 10은 딜레이 플랜에 따른 딜레이 량을 소스 계측 지점에 적용하기 전의 태스크 플로우(task flow)(1010)와 딜레이 량을 소스 계측 지점에 적용한 후의 태스크 플로우(1020)를 도시한다. 도 10에서 소스 계측 지점은 20번째 타임스탬프의 함수 A에 대응하는 계측 지점으로 도시된다. 소스 계측 지점에 2의 시간 유닛만큼의 딜레이 량이 적용될 수 있다. 시간 유닛은 타임스탬프들 간의 단위 시간 간격을 나타낼 수 있다.
단계(933)에서 전자 장치는 딜레이 플랜에 따라 소스 태스크의 다음 타임스탬프를 예측할 수 있다. 일 실시예에 따르면, 전자 장치는 수집된 시간 정보의 분석에 기초하여 소스 계측 지점과 다른 계측 지점의 예측된 타임스탬프를 추정할 수 잇다. 전자 장치는 결정된 딜레이 량에 기초하여 소스 계측 지점에서의 지연 이후에 소스 태스크에서 실행될 계측 지점들의 후속 타임스탬프를 예측할 수 있다.
예를 들어, 표 2는 콜링 컨텍스트 정보 별로 계측 지점에 방문한 타임스탬프 및 예측된 타임스탬프를 설명한다. 참고로, 하기 표 2에서는 콜링 컨텍스트 정보로서, (TID, 스택된 함수)를 설명한다. 이는 순전히 설명의 편의를 위한 것으로서, 전술한 바와 같이 콜링 컨텍스트 정보는 함수 호출의 맥락과 관련된 다양한 정보를 포함할 수도 있다.
Calling context | Timestamps | Next Pred. |
(T0, (main, A)) | … 4 12 20 | 28→30 |
(T0, (main, B, C)) | … 7 8 9 15 16 17 23 | 24→26 |
(T1, (main, D)) | … 5 13 21 | 29 |
(T1, (main, E)) | … 0 8 16 | 24 |
전술한 표 2 및 도 10에서, T0은 0번 태스크로서 메인 태스크, T1은 1번 태스크로서 워커 태스크를 나타낼 수 있다. main은 메인 함수, A, B, C, D, E는 각각 함수들을 나타낼 수 있다. (T0, (main, A))은 태스크 T0에서 main 함수 및 A 함수의 호출을 나타내는 콜링 컨텍스트 정보일 수 있다. (T0, (main, A))에 대응하는 소스 계측 지점에 대해 20번째 타임스탬프에서 2의 시간 유닛만큼 지연되었으므로, 소스 태스크(예: 태스크 T0)에서 이후 명령어들이 2의 시간 유닛만큼 지연되어 실행될 수 있다. 따라서, (T0, (main, A))의 소스 계측 지점에 대응하는 후속 타임스탬프는 시퀀스 예측기 모델에 기초하여 획득된 28에 2를 부가한 30으로 예측될 수 있다. 유사하게, (T0, (main, B, C))의 계측 지점에 대응하는 후속 타임스탬프는 24에 2를 부가한 26으로 예측될 수 있다. 또한, 전자 장치는 소스 태스크와 다른 태스크에서 실행되는 계측 지점들에 대해서도 후속 타임스탬프를 예측할 수 있다. 전술한 바와 같이, 전자 장치는, 다른 태스크의 계측 지점에 대해서는 소스 계측 지점에서의 지연을 배제하고, 해당 계측 지점에서의 도착 시간 간격들의 방문 패턴에 기초하여 후속 타임스탬프를 예측할 수 있다. 표 2을 참조하면, 전자 장치가 (T1, (main, D))의 계측 지점에 5의 간격마다 방문하고 있으므로, 후속 타임스탬프를 29로 예측할 수 있다. 유사하게, 전자 장치는 (T1, (main, E))의 계측 지점에 대해서 후속 타임스탬프를 24로 예측할 수 있다.
단계(934)에서 전자 장치는 각 계측 지점에 방문 또는 도착할 때마다 타임스탬프를 수집할 수 있다.
단계(935)에서 전자 장치는 각 계측 지점에서 예측된 타임스탬프와 수집된 타임스탬프 간의 불일치가 있는지 모니터링할 수 있다. 전자 장치는 불일치가 발견되지 않는 경우, 단계(934)에 따른 타임스탬프 수집을 계속할 수 있다. 전자 장치는 다른 태스크의 계측 지점에서 불일치를 발견하는 경우, 해당 계측 지점이 소스 계측 지점과 인과성을 가지는 것으로 판단할 수 있다. 예를 들어, 전자 장치는 복수의 계측 지점들 중 기록된 타임스탬프 및 예측된 타임스탬프 간의 불일치(mismatch)가 관측된 계측 지점을 타겟 계측 지점으로 결정할 수 있다. 소스 계측 지점에 대해 인과성을 가지는 계측 지점에서는 소스 계측 지점에서의 지연으로 인해 예측된 타임스탬프 및 예측된 타임스탬프 간의 불일치가 유발될 수 있다.
Calling context | Timestamps | Next Pred. | Observed |
(T0, (main, A)) | … 4 12 20 | 30 | Not yet |
(T0, (main, B, C)) | … 7 8 9 15 16 17 23 | 26 | 26 |
(T1, (main, D)) | … 5 13 21 | 29 | Not yet |
(T1, (main, E)) | … 0 8 16 | 24 | 26 |
도 10 및 표 3을 참조하면, 소스 태스크에서 실행되는 계측 지점들에 더하여, 다른 태스크(예: T1 태스크)에서 실행되는 (T1, (main, E))에 대응하는 계측 지점도 소스 계측 지점의 지연에 영향을 받는 것으로 해석될 수 있다. (T1, (main, E))에 대응하는 계측 지점에 대해 예측된 후속 타임스탬프는 24였으나, 실제 관측된 타임스탬프는 26일 수 있다. 소스 계측 지점에서의 지연으로 인해 (T1, (main, E))에 대응하는 계측 지점에서의 명령어 실행이 지연된 것일 수 있다. 달리 말해, (T1, (main, E))에 대응하는 계측 지점은 소스 계측 지점에 대해 인과성을 가지는 타겟 계측 지점일 수 있다.단계(939)에서 전자 장치는 전술한 불일치가 소스 태스크에서 발생한 것인지 판단할 수 있다. 소스 태스크와 다른 태스크의 계측 지점에서 수집된 타임스탬프 및 예측된 타임스탬프 간의 불일치는 소스 계측 지점과 타겟 계측 지점 간의 인과성이 존재한다는 것을 암시할 수 있다. 반면, 소스 태스크 내의 계측 지점에서 발견된 불일치는 타임스탬프 예측이 부정확한 것을 암시할 수 있다. 소스 태스크에서는 이론적으로 의도적인 지연량만큼 뒤의 계측 지점도 딜레이되어야 하기 문이다. 전자 장치는 소스 태스크에서 실행되는 계측 지점에서 기록된 타임스탬프 및 예측된 타임스탬프 간의 불일치를 검출한 것에 기초하여, 단계(522)로 돌아가 해당하는 계측 지점에 대한 방문 시점들 간의 도착 시간 간격에 관한 정보를 예측하기 위한 시퀀스 예측기 모델을 트레이닝할 수 있다.
단계(936)에서 전자 장치는 인과성 점수를 계산 및 업데이트할 수 있다. 전자 장치는 타겟 계측 지점과 소스 계측 지점 간의 인과 정보로서 인과성 점수를 계산할 수 있다. 기존에 계산된 인과성 점수가 있는 경우, 전자 장치는 인과성 점수를 새로 예측된 타임스탬프 및 새로 기록된 타임스탬프에 기초하여 업데이트할 수 있다. 인과성 점수의 계산은 하기 도 11에서 설명한다.
단계(937)에서 전자 장치는 인과성 점수가 수렴하는지 여부를 판단할 수 있다. 일 실시예에 따르면, 전자 장치는 업데이트된 인과성 점수가 기존 인과성 점수와의 일관성(consistency)을 유지하는 경우, 인과성 점수가 수렴한 것으로 결정할 수 있다. 예를 들어, 전자 장치는 인과성 점수의 계산 이력에 기초하여 인과성 점수의 수렴 여부를 판단할 수 있다. 전자 장치는 해당 타겟 계측 지점에 대해 이전에 계산된 미리 결정된 개수의 인과성 점수들 및 현재 계산된 인과성 점수 간의 오차가 임계 오차 미만인 경우, 인과성 점수의 업데이트가 수렴한 것으로 결정할 수 있다. 전자 장치는 소스 계측 지점에 대해 인과성을 가지는 타겟 계측 지점에 대한 인과성 점수의 업데이트가 수렴한 경우, 해당 소스 계측 지점에 대한 인과성 분석이 완료된 것으로 결정할 수 있다.
단계(938)에서 전자 장치는 인과성 점수가 수렴하지 않은 경우, 다음 분석에서 계측 지점을 유지할 지 여부를 결정할 수 있다. 일 실시예에 따르면 전자 장치는 어플리케이션의 실행을 반복하면서 인과 정보를 분석하는 과정에서 계측 지점을 변경할 수 있다. 예를 들어, 전자 장치는 설치된 복수의 계측 지점들 중 임계 점수보다 낮은 인과성 점수를 가지는 계측 지점을 어플리케이션으로부터 제거할 수 있다. 전자 장치는 나머지 계측 지점을 가지는 어플리케이션을 실행하면서 인과 정보를 결정할 수 있다. 계측 지점을 유지하기로 결정한 경우, 전자 장치는 단계(931)부터 동작을 반복할 수 있다.
도 11은 일 실시예에 따른 인과성 점수의 산출 예시를 도시한다.
일 실시예에 따른 전자 장치는 소스 계측 지점에 대해 인과성을 가지는 타겟 계측 지점에 대해 인과 정보로서 인과성 점수를 산출할 수 있다. 인과성 점수는 소스 계측 지점에 적용된 지연 및 타겟 계측 지점에서 발생한 지연 간의 관계성을 지시하는 점수일 수 있다. 예를 들어, 인과성 점수는 소스 계측 지점에 적용된 지연으로 인해 타겟 계측 지점에서 지연이 유발되는 정도(level)를 지시하는 점수로서, 1에 가까울수록 큰 인과성을 나타내고 0에 가까울수록 작은 인과성을 나타낼 수 있다.
예를 들어, 전자 장치는 타겟 계측 지점에 대해 기록된 타임스탬프가 타겟 계측 지점의 원본 분포를 따를 확률 값 및 타겟 계측 지점의 지연된 분포를 따를 확률 값 간의 비교에 기초하여, 소스 계측 지점 및 타겟 계측 지점 간의 인과 정보를 결정할 수 있다. 도 11에서는 타겟 계측 지점의 원본 분포(1110) 및 딜레이 량(1170)만큼의 지연이 가정된 지연된 분포(1120)이 도시된다. 도 11의 그래프(1100)에서 세로축은 타겟 계측 지점의 도착 시간 간격 별 빈도, 가로축은 도착 시간 간격을 나타낼 수 있다. 전자 장치는 타겟 계측 지점에 대해 도착 시간 간격 τ을 관측한 경우, 도착 시간 간격 τ가 각 분포를 따를 확률을 계산할 수 있다. P(X=τ)는 도착 시간 간격 τ가 원본 분포(1110)를 따를 확률을 나타내고, P(X'=τ)는 도착 시간 간격 τ가 지연된 분포(1120)를 따를 확률을 나타낼 수 있다. 도 11에서는 P(X=τ)보다 P(X'=τ)가 큰 예시가 도시된다. 도착 시간 간격 τ가 지연된 분포(1120)를 따를 확률이 높으므로, 타겟 계측 지점에서 관측된 도착 시간 간격 τ는 소스 계측 지점에서의 지연으로 인해 딜레이된 간격일 수 있다. 따라서, 전자 장치는 타겟 계측 지점에서 도착 시간 간격 τ가 노이즈로 인해 달라졌는지, 소스 계측 지점에서의 지연으로 인해 지연된 것인지 여부를 확률 분포에 기초하여 결정할 수 있다.
전자 장치는 소스 계측 지점과 인과성이 있는 것으로 판단된 타겟 계측 지점에 대한 인과성 점수를 타겟 계측 지점의 지연된 분포(1120)에 기초하여 결정할 수 있다. 예를 들어, 전자 장치는 관측된 도착 시간 간격 τ에 대응하는 지점(1181) 및 지연된 분포(1120)의 평균을 기준으로 대칭된 지점(1182) 사이의 구간에 대응하는 면적(1180)(예: AUC(area under curve)을 1로부터 차감한 값(예: 1-AUC)을 인과성 점수로 산출할 수 있다. 달리 말해, 전자 장치는 지연된 분포(1120)에서 관측된 도착 시간 간격 τ에 대응하는 지점(1181) 및 그 대칭 지점(1182)을 초과하는 면적(1190)을 인과성 점수로 산출할 수 있다. 산출된 인과성 점수는 소스 계측 지점 및 타겟 계측 지점의 콜링 컨텍스트 정보 페어(pair)에 대해 매핑되어 저장될 수 있다. 예시적으로 하기 표 4와 같이 설명된다.
콜링 컨텍스트 정보 | 인과성 점수 | |
소스 계측 지점 | 타겟 계측 지점 | |
(T0, (main, A)) | (T1, (main, E)) | 0.95 |
다만, 이로 한정하는 것은 아니고, 인과성 점수는 min(1, (타겟 계측 지점에서 발생한 딜레이 량 / 소스 계측 지점에 적용된 딜레이 량)으로 계산될 수도 있다. 인과성에 의한 지연의 영향을 미치는(affect) 강도를 정량화하는 다양한 척도(metric)가 사용될 수 있다.참고로, 설명의 편의를 위해 한 소스 계측 지점에서의 명령어 실행을 지연시키고 분석하는 예시를 설명하였으나, 이로 한정하는 것은 아니다. 전자 장치는 둘 이상의 소스 계측 지점들을 선정하고, 어플리케이션을 실행하는 동안 선정된 둘 이상의 소스 계측 지점들의 각각에서 명령어 실행을 지연시키면서 인과성 분석을 수행할 수도 있다.
도 12는 일 실시예에 따른 인과 정보에 기초하여 생성된 프로파일의 배포를 도시하는 도면이다.
일 실시예에 따르면 제1 전자 장치(1201)(예: 서버)는 어플리케이션에 대해 분석한 인과 정보에 기초하여 해당 어플리케이션의 실행을 위한 프로파일을 제2 전자 장치(1202)(예: 모바일 단말)에게 배포할 수 있다. 예를 들어, 단계(1210)에서 제1 전자 장치(1201)는 인과성 분석 프레임워크와 함께 어플리케이션을 실행하여 분석할 수 있다. 인과성 분석 프레임워크는 도 1 내지 도 11에서 전술한 동작들을 수행하기 위한 명령어를 포함하는 컴퓨터 프로그램일 수 있다.
단계(1220)에서 제1 전자 장치(1201)는 계측 지점별 시간적 인과성 점수에 기초하여 해당 계측 지점에서의 동작을 설정하는 프로파일을 설정할 수 있다. 프로파일은 어플리케이션을 실행하는 장치로 하여금 장치의 하드웨어 설정을 포함할 수 있다. 하드웨어 설정은 예를 들어, 프로세서가 복수의 코어들을 포함하는 경우 해당 어플리케이션의 실행을 위해 사용하기로 선택된 코어, 코어의 전압, 또는 코어의 주파수 중 적어도 하나를 포함할 수 있다. 일 실시예에 따른 프로파일은 어플리케이션의 명령어들 중 계측 지점 단위로 하드웨어 설정을 동적으로 변경 및/또는 스케줄링하는 것을 포함할 수 있다. 예를 들어, 전자 장치는 소스 계측 지점 및 타겟 계측 지점 간의 인과성 점수가 임계 점수를 초과하는 것에 기초하여, 소스 계측 지점에 대응하는 실행 구간(예: 소스 계측 지점에 도달한 후 일정 시간 구간)에서 디폴트 전력보다 낮은 전력으로 소스 태스크에 할당된 프로세서의 코어를 동작시키도록 유발하는 프로파일을 생성할 수 있다. 프로파일은 어플리케이션의 실행 정책(execution policy)라고도 나타낼 수 있다.
단계(1230)에서 제1 전자 장치(1201)는 생성된 프로파일을 통신부를 통해 다른 전자 장치에게 배포할 수 있다. 도 12에서는 제2 전자 장치(1202)에게 배포되는 예시가 설명된다.
단계(1240)에서 제2 전자 장치(1202)는 배포된 프로파일에 기초하여 어플리케이션을 실행할 수 있다. 제2 전자 장치(1202)는 어플리케이션을 실행하는 동안 어플리케이션에 포함된 복수의 태스크들에 대해 동적으로 여러 코어들을 개별적으로 할당하여 동작할 수 있다. 예를 들어, 태스크 별로 상이한 코어들이 할당될 수 있는데, 제2 전자 장치(1202)는 소스 계측 지점에 대응하는 실행 구간에서는 소스 태스크에 할당된 코어를 저전압으로 동작시킬 수 있다. 따라서, 제2 전자 장치(1202)는 배포된 프로파일에 기초하여 DVFS(dynamic voltage frequency scaling)로 대기 시간(wait time)이 발생하는 태스크 및 구간에서 저전력으로 느리게 동작함으로써 전력효율적으로 동작할 수 있다. 도 12에 도시된 예시를 참조하면, 어플리케이션의 실행 동안 임계 경로(critical path)가 위치되는 태스크가 변경될 수 있다. 제2 전자 장치(1202)에 의한 어플리케이션 실행이 소스 계측 지점(Source Inst Point)에 도달하는 경우, 임계 경로가 메인 태스크로부터 워커 태스크로 전환될 수 있다. 이 때 임계 경로가 워커 태스크에 있는 동안 메인 태스크에서 대기 시간이 발생하므로, 메인 태스크에 할당된 코어를 저전력으로 동작시킴으로써 제2 전자 장치(1202)의 전력 효율이 개선될 수 있다. 다만, 프로파일을 전술한 바로 한정하는 것은 아니다.
예를 들어, 프로파일은 어플리케이션의 인과성 분석에 기초하여 코어 스케줄링을 수행하도록 설정될 수 있다. 프로파일은 제2 전자 장치(1202)의 프로세서가 이기종 다중 코어들(heterogeneous multi cores)를 포함하는 경우, 프로파일은 프로세서에 포함된 다중 코어들 중 어플리케이션의 각 태스크에 할당된 코어를 계측 지점 별로 동적으로 변경하도록 설정될 수 있다. 프로파일은 계측 지점 별 태스크 별 E 코어(efficient core) 또는 P 코어(performance core)를 선택적으로 할당할 수 있다. 프로파일은 소스 태스크에 P 코어를 기본적으로 할당하고, 소스 태스크의 소스 계측 지점에 대응하는 실행 구간에서는 일시적으로 E 코어를 할당하는 스케줄을 포함할 수 있다.
다만, 인과 정보를 이용한 예시를 프로파일로 한정하는 것은 아니다. 하기 도 13에서 인과 정보를 이용하는 추가적인 예시가 설명된다.
도 13은 일 실시예에 따른 전자 장치의 구성을 도시한 블록도이다.
일 실시예에 따른 전자 장치(1300)(예: 도 12의 제1 전자 장치(1201))는 프로세서(1310), 메모리(1320), 및 통신부(1330)를 포함할 수 있다.
메모리(1320)는 각각 명령어들의 일련의 스트림인 복수의 태스크들을 포함하는 어플리케이션을 저장할 수 있다. 저장된 어플리케이션은 도 1 내지 도 12에서 전술한 인과성 분석의 대상이 될 수 있다.
프로세서(1310)는 어플리케이션에 복수의 계측 지점들을 설치할 수 있다. 프로세서(1310)는 복수의 계측 지점들 중 소스 계측 지점(source instrumentation point)의 지연에 의해 유발되는 타겟 계측 지점(target instrumentation point)의 지연 여부를 관측한 것에 기초하여, 소스 계측 지점 및 타겟 계측 지점 간의 인과 정보(causality information)를 결정할 수 있다. 다만, 프로세서(1310)의 동작을 이로 한정하는 것은 아니고, 프로세서(1310)는 도 1 내지 도 12에서 전술한 동작들 중 적어도 하나를 동시에 또는 시계열적으로 수행할 수 있다.
통신부(1330)는 다른 전자 장치와 유선 또는 무선으로 통신을 수립하는 통신 회로를 포함할 수 있다. 통신부(1330)는 인과 정보에 기초하여 생성된 프로파일을 다른 전자 장치에게 전송할 수 있다. 또한, 통신부(1330)는 분석 대상인 어플리케이션을 외부 장치로부터 수신할 수도 있다.
참고로, 본 명세서에서 전자 장치(1300)가 서버로서 동작하는 예시를 설명하였으나, 이로 한정하는 것은 아니다. 도 1 내지 도 12에서 전술한 어플리케이션의 계측 지점들 간의 인과성 분석을 위한 동작들은 다양한 전자 장치(예: 모바일 단말)에서도 수행될 수 있다.
일 실시예에 따른 전자 장치는 신규 어플리케이션 또는 변경된 어플리케이션에 대해서도 전술한 지연을 적용함으로써 능동적으로 계측 지점들에 대한 시간 정보를 수집할 수 있다. 전자 장치는 계측 지점들 간의 인과 정보를 신속하게 분석할 수 있다. 전자 장치는 현재 구성된 어플리케이션 및/또는 시스템에서 발생하기 어려운 상황도 전술한 바와 같이 능동적인 지연 적용을 통해 유도하여 관측할 수 있다. 전자 장치는 새로운 어플리케이션 및/도는 시스템에서 개선된 예측 정확도를 가질 수 있다.
일 실시예에 따른 전자 장치는 어플리케이션에 대해 분석된 인과 정보를 운영체제에서 코어 스케줄링을 위해 사용할 수 있다. 전자 장치는 운영체제에서 실행되는 각 어플리케이션 내의 계측 지점들 간의 인과 정보에 기초하여, 개별 어플리케이션의 태스크 별 계측 지점의 명령어 실행 시간 및 계측 지점들 간의 인과 정보를 이용하여 태스크들의 스케줄링을 수행할 수 있다. 예를 들어, 전자 장치는 소스 계측 지점 및 타겟 계측 지점 간의 인과성으로 인해 소스 계측 지점에서 소스 태스크에서 대기 시간이 예상되는 경우, 다른 태스크의 명령어를 먼저 실행하고, 소스 태스크의 명령어를 나중에 실행할 수도 있다. 다른 예를 들어, 전자 장치는 태스크들의 종료 시간이 비슷해지도록, 긴 대기 시간이 예상되는 태스크에 대해서는 명령어 실행을 일시적으로 유보할 수도 있다.
일 실시예에 따른 전자 장치는 어플리케이션의 계측 지점들 간의 인과 정보에 기초하여, 어플리케이션의 모델링을 자동화할 수 있다. 예를 들어, 전자 장치는 계측 지점들 간의 인과성을 나타내는 의존성 그래프를 자동으로 빌드할 수 있다. 전자 장치는 의존성 그래프 및 각 명령어 실행 시간에 기초하여 임의의 하드웨어에서 해당 어플리케이션의 총 실행 시간을 자동으로 계산할 수 있다. 전자 장치는 다양한 하드웨어 모델들에 대해서 어플리케이션의 실행 시간을 자동으로 계산할 수 있다. 따라서, 인과 정보는 임의의 어플리케이션에 대해 최적의 하드웨어를 설계하는데 참고될 수 있는 지표로서 이용될 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 저장할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
Claims (20)
- 전자 장치에 있어서,
각각 명령어들의 일련의 스트림인 복수의 태스크들을 포함하는 어플리케이션을 저장하는 메모리; 및
상기 어플리케이션에 복수의 계측 지점들을 설치하고,
상기 복수의 계측 지점들 중 소스 계측 지점(source instrumentation point)의 지연에 의해 유발되는 타겟 계측 지점(target instrumentation point)의 지연 여부를 관측한 것에 기초하여, 소스 계측 지점 및 타겟 계측 지점 간의 인과 정보(causality information)를 결정하도록 설정되는 프로세서
를 포함하는 전자 장치. - 제1항에 있어서,
상기 프로세서는,
상기 어플리케이션의 복수의 태스크들 중 소스 태스크를 선택하고,
상기 소스 태스크에서 실행되는 소스 계측 지점을 선택하며,
상기 소스 계측 지점에 적용할 딜레이 량을 결정하고,
상기 결정된 딜레이 량에 기초하여 상기 소스 계측 지점에서의 지연 이후에 상기 소스 태스크에서 실행될 계측 지점들의 후속 타임스탬프를 예측하는,
전자 장치. - 제1항에 있어서,
상기 프로세서는,
소스 태스크에서 실행되는 계측 지점에서 기록된 타임스탬프 및 예측된 타임스탬프 간의 불일치를 검출한 것에 기초하여, 해당하는 계측 지점에 대한 방문 시점들 간의 도착 시간 간격에 관한 정보를 예측하기 위한 시퀀스 예측기 모델을 트레이닝하는,
전자 장치. - 제1항에 있어서,
상기 프로세서는,
복수의 계측 지점들 중 도착 시간 간격의 분산이 임계 분산을 초과하는 계측 지점을 상기 소스 계측 지점으로 선택하는,
전자 장치. - 제1항에 있어서,
상기 프로세서는,
상기 어플리케이션의 총 실행 시간 대비 상기 복수의 계측 지점들이 개별적으로 설치된 명령어들의 실행 시간들의 비율들에 기초하여, 상기 복수의 계측 지점들 중으로부터 상기 소스 계측 지점을 선택하는,
전자 장치. - 제1항에 있어서,
상기 프로세서는,
상기 타겟 계측 지점의 도착 시간 간격의 분포에 기초하여 상기 소스 계측 지점에 적용할 딜레이 량을 결정하는,
전자 장치. - 제1항에 있어서,
상기 프로세서는,
상기 소스 계측 지점에 대한 딜레이 량을 상기 타겟 계측 지점의 도착 시간 간격의 분포에 기초하여 결정된 최소 딜레이부터 점진적으로 증가시키는,
전자 장치. - 제1항에 있어서,
상기 프로세서는,
상기 소스 계측 지점에 적용된 지연 및 상기 타겟 계측 지점에서 발생한 지연 간의 관계성을 지시하는 인과성 점수를 상기 인과 정보로서 계산하는,
전자 장치. - 제1항에 있어서,
상기 프로세서는,
상기 타겟 계측 지점에 대해 기록된 타임스탬프가 상기 타겟 계측 지점의 원본 분포를 따를 확률 값 및 상기 타겟 계측 지점의 지연된 분포를 따를 확률 값 간의 비교에 기초하여, 상기 소스 계측 지점 및 상기 타겟 계측 지점 간의 상기 인과 정보를 결정하는,
전자 장치. - 제1항에 있어서,
상기 프로세서는,
상기 설치된 복수의 계측 지점들 중 임계 점수보다 낮은 인과성 점수를 가지는 계측 지점을 상기 어플리케이션으로부터 제거하고,
나머지 계측 지점을 가지는 상기 어플리케이션을 실행하면서 상기 인과 정보를 결정하는,
전자 장치. - 제1항에 있어서,
상기 프로세서는,
상기 어플리케이션을 반복적으로 실행하는 것에 기초하여 상기 복수의 계측 지점들의 시간 정보를 수집하고,
상기 수집된 시간 정보의 분석에 기초하여 상기 소스 계측 지점과 다른 계측 지점의 예측된 타임스탬프를 추정하며,
복수의 계측 지점들 중 기록된 타임스탬프 및 상기 예측된 타임스탬프 간의 불일치(mismatch)가 관측된 계측 지점을 상기 타겟 계측 지점으로 결정하는,
전자 장치. - 제11항에 있어서,
상기 프로세서는,
콜링 컨텍스트 정보에 기초하여 식별된 복수의 계측 지점들 별로 상기 시간 정보를 수집하는,
전자 장치. - 제11항에 있어서,
상기 프로세서는,
상기 수집된 시간 정보를 이용하여, 계측 지점 별로 해당 계측 지점의 마지막 방문 시점(time point)으로부터 다음 방문 시점까지의 도착 시간 간격(inter arrival time)에 대한 정보를 출력하도록 설정된 시퀀스 예측기 모델을 트레이닝시키고,
상기 복수의 예측 지점들에 대해 상기 트레이닝된 시퀀스 예측기 모델을 이용하여 다음 방문 시점을 예측하는,
전자 장치. - 제1항에 있어서,
상기 프로세서는,
계측 지점에 도착하는 것에 기초하여 해당 계측 지점에 대한 새로운 도착 시간 간격을 포함하는 도착 시간 간격들을 클러스터링하며,
상기 도착 시간 간격들을 클러스터링한 결과에 기초하여 시퀀스 예측 모델을 트레이닝시키고,
상기 도착 시간 간격들의 클러스터 별로 분포를 획득하는,
전자 장치. - 제1항에 있어서,
상기 프로세서는,
상기 소스 계측 지점 및 상기 타겟 계측 지점 간의 인과성 점수가 임계 점수를 초과하는 것에 기초하여, 상기 소스 계측 지점에 대응하는 실행 구간에서 디폴트 전력보다 낮은 전력으로 소스 태스크에 할당된 프로세서의 코어를 동작시키도록 유발하는 프로파일을 생성하고,
상기 생성된 프로파일을 통신부를 통해 다른 전자 장치에게 배포하도록 설정된,
전자 장치. - 프로세서로 구현되는 방법에 있어서,
각각 명령어들의 일련의 스트림인 복수의 태스크들을 포함하는 어플리케이션에 복수의 계측 지점들을 설치하는 단계; 및
상기 복수의 계측 지점들 중 소스 계측 지점의 지연에 의해 유발되는 타겟 계측 지점의 지연 여부를 관측한 것에 기초하여, 소스 계측 지점 및 타겟 계측 지점 간의 인과 정보를 결정하는 단계
를 포함하는 방법. - 제16항에 있어서,
상기 인과 정보를 결정하는 단계는,
상기 어플리케이션의 복수의 태스크들 중 소스 태스크를 선택하는 단계;
상기 소스 태스크에서 실행되는 소스 계측 지점을 선택하는 단계;
상기 소스 계측 지점에 적용할 딜레이 량을 결정하는 단계; 및
상기 결정된 딜레이 량에 기초하여 상기 소스 계측 지점에서의 지연 이후에 상기 소스 태스크에서 실행될 계측 지점들의 후속 타임스탬프를 예측하는 단계
를 포함하는 방법. - 제16항에 있어서,
상기 인과 정보를 결정하는 단계는,
상기 어플리케이션을 반복적으로 실행하는 것에 기초하여 상기 복수의 계측 지점들의 시간 정보를 수집하는 단계;
상기 수집된 시간 정보의 분석에 기초하여 상기 소스 계측 지점과 다른 계측 지점의 예측된 타임스탬프를 추정하는 단계; 및
복수의 계측 지점들 중 기록된 타임스탬프 및 상기 예측된 타임스탬프 간의 불일치(mismatch)가 관측된 계측 지점을 상기 타겟 계측 지점으로 결정하는 단계
를 포함하는 방법 - 제16항에 있어서,
상기 소스 계측 지점 및 상기 타겟 계측 지점 간의 인과성 점수가 임계 점수를 초과하는 것에 기초하여, 상기 소스 계측 지점에 대응하는 실행 구간에서 디폴트 전력보다 낮은 전력으로 소스 태스크에 할당된 프로세서의 코어를 동작시키도록 유발하는 프로파일을 생성하는 단계; 및
상기 생성된 프로파일을 통신부를 통해 다른 전자 장치에게 배포하는 단계
를 더 포함하는 방법. - 제16항 내지 제19항 중 어느 한 항의 방법을 수행하기 위한 명령어를 포함하는 하나 이상의 컴퓨터 프로그램을 저장한 컴퓨터 판독 가능 기록 매체.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220135181A KR20240054787A (ko) | 2022-10-19 | 2022-10-19 | 어플리케이션의 계측 지점들 간의 인과성을 분석하는 장치 및 방법 |
US18/194,082 US20240232051A9 (en) | 2022-10-19 | 2023-03-31 | Method and device for finding causality between application instrumentation points |
CN202310538159.8A CN117909188A (zh) | 2022-10-19 | 2023-05-12 | 用于找出应用的插桩点之间的因果关系的方法和装置 |
EP23178239.2A EP4357925A1 (en) | 2022-10-19 | 2023-06-08 | Method and device for finding causality between application instrumentation points |
JP2023134330A JP2024060572A (ja) | 2022-10-19 | 2023-08-22 | アプリケーション計測地点との間の因果性を探す装置及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220135181A KR20240054787A (ko) | 2022-10-19 | 2022-10-19 | 어플리케이션의 계측 지점들 간의 인과성을 분석하는 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20240054787A true KR20240054787A (ko) | 2024-04-26 |
Family
ID=86732764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220135181A KR20240054787A (ko) | 2022-10-19 | 2022-10-19 | 어플리케이션의 계측 지점들 간의 인과성을 분석하는 장치 및 방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20240232051A9 (ko) |
EP (1) | EP4357925A1 (ko) |
JP (1) | JP2024060572A (ko) |
KR (1) | KR20240054787A (ko) |
CN (1) | CN117909188A (ko) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6807583B2 (en) * | 1997-09-24 | 2004-10-19 | Carleton University | Method of determining causal connections between events recorded during process execution |
US20090320021A1 (en) * | 2008-06-19 | 2009-12-24 | Microsoft Corporation | Diagnosis of application performance problems via analysis of thread dependencies |
US10977154B2 (en) * | 2018-08-03 | 2021-04-13 | Dynatrace Llc | Method and system for automatic real-time causality analysis of end user impacting system anomalies using causality rules and topological understanding of the system to effectively filter relevant monitoring data |
-
2022
- 2022-10-19 KR KR1020220135181A patent/KR20240054787A/ko unknown
-
2023
- 2023-03-31 US US18/194,082 patent/US20240232051A9/en active Pending
- 2023-05-12 CN CN202310538159.8A patent/CN117909188A/zh active Pending
- 2023-06-08 EP EP23178239.2A patent/EP4357925A1/en active Pending
- 2023-08-22 JP JP2023134330A patent/JP2024060572A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
CN117909188A (zh) | 2024-04-19 |
JP2024060572A (ja) | 2024-05-02 |
US20240134775A1 (en) | 2024-04-25 |
EP4357925A1 (en) | 2024-04-24 |
US20240232051A9 (en) | 2024-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wen et al. | Fog orchestration for internet of things services | |
US9052954B2 (en) | Predicting resource requirements for a computer application | |
Bashar | Autonomic scaling of cloud computing resources using BN-based prediction models | |
Mahmoudi et al. | Performance modeling of metric-based serverless computing platforms | |
JP2011086295A (ja) | 応答時間に基づいてサービスリソース消費を推定すること | |
Ranjan | Modeling and simulation in performance optimization of big data processing frameworks | |
Wan et al. | Analysis and modeling of the end-to-end i/o performance on olcf's titan supercomputer | |
US20110172963A1 (en) | Methods and Apparatus for Predicting the Performance of a Multi-Tier Computer Software System | |
Gandhi et al. | Providing performance guarantees for cloud-deployed applications | |
US8832839B2 (en) | Assessing system performance impact of security attacks | |
Kalim et al. | Caladrius: A performance modelling service for distributed stream processing systems | |
EP3499374B1 (en) | An adaptive system and a method for application error prediction and management | |
WO2024027384A1 (zh) | 一种故障检测方法、装置、电子设备及存储介质 | |
CN115913967A (zh) | 一种云环境下基于资源需求预测的微服务弹性伸缩方法 | |
Ostrowski et al. | Diagnosing latency in multi-tier black-box services | |
Zhang et al. | Autrascale: an automated and transfer learning solution for streaming system auto-scaling | |
KR20190078453A (ko) | 분산 클라우드 환경에서 퍼지값 재조정에 따른 마이그레이션 시스템 및 방법 | |
Russo et al. | MEAD: Model-based vertical auto-scaling for data stream processing | |
Antonescu et al. | Sla-driven predictive orchestration for distributed cloud-based mobile services | |
Zhang et al. | uqSim: Scalable and Validated Simulation of Cloud Microservices | |
KR20240054787A (ko) | 어플리케이션의 계측 지점들 간의 인과성을 분석하는 장치 및 방법 | |
Géhberger et al. | Data-driven monitoring for cloud compute systems | |
Umesh et al. | Software rejuvenation model for cloud computing platform | |
Gan et al. | Seer: Leveraging big data to navigate the increasing complexity of cloud debugging | |
Taghinezhad-Niar et al. | Modeling of resource monitoring in federated cloud using Colored Petri Net |