KR101809573B1 - 데이터플로우 그래프 특징의 평가 방법, 시스템 및 컴퓨터 판독가능 저장 매체 - Google Patents

데이터플로우 그래프 특징의 평가 방법, 시스템 및 컴퓨터 판독가능 저장 매체 Download PDF

Info

Publication number
KR101809573B1
KR101809573B1 KR1020137004164A KR20137004164A KR101809573B1 KR 101809573 B1 KR101809573 B1 KR 101809573B1 KR 1020137004164 A KR1020137004164 A KR 1020137004164A KR 20137004164 A KR20137004164 A KR 20137004164A KR 101809573 B1 KR101809573 B1 KR 101809573B1
Authority
KR
South Korea
Prior art keywords
data flow
flow graph
data
evaluating
expression
Prior art date
Application number
KR1020137004164A
Other languages
English (en)
Other versions
KR20130105604A (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 아브 이니티오 테크놀로지 엘엘시
Publication of KR20130105604A publication Critical patent/KR20130105604A/ko
Application granted granted Critical
Publication of KR101809573B1 publication Critical patent/KR101809573B1/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/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

데이터 처리 성분(308, 310)을 나타내는 정점 및 성분을 연결하고 성분 간의 작업 요소의 흐름을 나타내는 링크(326, 328)를 갖는 데이터플로우 그래프(302)의 하나 이상의 특징을 표현하는 하나 이상의 식(324)이 평가된다. 하나 이상의 변수에 대한 하나 이상의 연산을 포함하는 하나 이상의 식을 평가하라는 요청을 컴퓨팅 시스템(100)이 수신한다. 식의 평가에는, 하나 이상의 필드(320A-320D)를 포함하는 데이터 구조(318)를 정의하고, 데이터플로우 그래프의 실행 동안 데이터플로우 그래프의 하나 이상의 성분과 연관된 추적 정보를 수집하고, 추적 정보와 연관된 값을 하나 이상의 필드에 저장하며, 하나 이상의 식의 하나 이상의 변수를 하나 이상의 필드에 저장된 값으로 교체해서 하나 이상의 식을 평가한 결과를 산출하는 것이 포함된다.

Description

데이터플로우 그래프 특징의 평가 방법, 시스템 및 컴퓨터 판독가능 저장 매체{METHOD, SYSTEM, AND COMPUTER READABLE STORAGE MEDIUM FOR EVALUATING DATAFLOW GRAPH CHARACTERISTICS}
본 개시는 데이터플로우 그래프 특징의 평가에 관한 것이다.
복잡한 계산은 방향성 그래프(directed graph)(이하, "데이터플로우 그래프"라고 함)를 통한 데이터 흐름(data flow)으로 표현할 수 있는데, 여기서 계산의 각 성분(component)은 그래프의 정점(vertex)과 연관되며, 성분 간의 데이터 흐름은 그래프의 링크(아크, 에지)에 대응한다. 성분은 하나 이상의 입력 포트에서 데이터를 수신하고, 그 데이터를 처리하며, 하나 이상의 출력 포트로부터 해당 데이터를 제공하는 데이터 처리 성분과, 데이터 흐름의 소스 또는 싱크로서 작용하는 데이터세트 성분을 포함할 수 있다. 이러한 그래프 기반의 계산(graph-based computation)을 구현하는 시스템은 "EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS"란 명칭의 미국특허 5,966,072호에 개시되어 있다.
하나의 측면으로서, 일반적으로, 방법은, 하나 이상의 식(expression)을 평가하기 위한 컴퓨팅 시스템에 의해 수행되는데, 식은 데이터 처리 성분을 나타내는 정점(vertex) 및 성분을 연결하고 성분 간의 작업 요소의 흐름을 나타내는 링크(link)를 갖는 데이터플로우 그래프(dataflow graph)의 하나 이상의 특징을 표현한다. 상기 방법은, 하나 이상의 변수(variable)에 대한 하나 이상의 연산을 포함하는 하나 이상의 식을 평가하라는 요청을 컴퓨팅 시스템이 수신하는 단계; 및 하나 이상의 식을 컴퓨팅 시스템에 의해 평가하는 단계를 포함한다. 평가하는 단계는, 하나 이상의 필드(field)를 포함하는 데이터 구조를 정의(define)하는 단계; 데이터플로우 그래프의 실행 동안 데이터플로우 그래프의 하나 이상의 성분과 연관된 추적 정보(tracking information)를 수집(collect)하는 단계; 추적 정보와 연관된 값을 하나 이상의 필드에 저장(store)하는 단계; 및 하나 이상의 식의 하나 이상의 변수를 하나 이상의 필드에 저장된 값으로 교체(replace)해서 하나 이상의 식을 평가한 결과를 산출하는 단계를 포함한다.
측면은 이하의 특징들 중의 하나 이상을 포함할 수 있다.
평가하는 단계는 데이터플로우 그래프가 실행되는 동안에 수행된다.
추적 정보는 데이터플로우 그래프의 하나 이상의 서브그래프(subgraph)의 하나 이상의 성분에 추가로 연관된다.
하나 이상의 변수 중의 적어도 제1 변수는, 상기 식에서, 하나 이상의 서브그래프 중의 제1 서브그래프에 대한 참조(reference)를 포함하는 항(term)으로서 표현된다.
제1 변수는 제1 서브그래프 내의 제1 성분에 대한 참조를 포함한다.
하나 이상의 변수 중의 적어도 하나의 변수는 데이터플로우 그래프, 하나 이상의 서브그래프, 및 하나 이상의 성분 중의 하나 이상의 특징에 대응한다.
하나 이상의 식을 평가하는 단계는 미리 정의된 조건에 따라 하나 이상의 식을 평가하는 단계를 포함한다.
미리 정의된 조건은 트리거 이벤트(trigger event)의 검출을 포함한다.
트리거 이벤트는 하나 이상의 처리 리소스(processing resource)가 하나 이상의 처리 리소스에 대한 요구에 비해 적다고 하는 판정을 포함한다.
데이터 구조를 정의하는 단계는, 하나 이상의 필드의 타입과 개수 중의 하나 이상을 식별하기 위해 데이터플로우 그래프를 횡단(traverse)하는 단계를 포함한다.
데이터플로우 그래프를 횡단하는 단계는, 데이터플로우 그래프 중의, 하나 이상의 식과 연관된 부분을 횡단하는 단계를 포함한다.
데이터플로우 그래프의 하나 이상의 성분과 연관된 추적 정보를 수집하는 단계는, 하나 이상의 식에 적어도 부분적으로 기초하여 추적 정보를 필터링(filter)하는 단계를 포함한다.
본 방법은, 결과를 하나 이상의 임계값과 비교하는 단계를 더 포함한다.
본 방법은, 비교에 따라 통보(notification)를 생성하는 단계를 더 포함한다.
본 방법은, 통보에 적어도 부분적으로 기초하여 하나 이상의 자동화 프로세스를 실행하는 단계를 더 포함한다.
본 방법은, 하나 이상의 식을 사용자 인터페이스로부터 수신하는 단계를 더 포함한다.
본 방법은, 하나 이상의 식을 포함하는 미리 정의된 식의 세트를 제공하는 단계를 더 포함한다.
본 방법은, 하나 이상의 식을 주기적으로 평가하는 단계를 더 포함한다.
본 방법은, 둘 이상의 결과를 사용해서 하나 이상의 특징과 연관된 히스토그램(histogram)을 생성하는 단계를 더 포함한다.
본 방법은, 하나 이상의 식을 주기적으로 평가한 결과에 적어도 부분적으로 기초하여, 저장된 이력 데이터(historical data)를 갱신(update)하는 단계를 더 포함한다.
하나 이상의 변수 중의 적어도 하나는, 하나 이상의 식을 평가하라는 요청을 컴퓨팅 시스템에 의해 수신하기 전에 이력 데이터에 저장된 값에 의존한다.
본 방법은, 추적 정보와 연관된 다수의 값을 하나 이상의 필드 중의 하나의 필드 내의 벡터 내에 저장하는 단계를 더 포함한다.
다수의 값의 각각은 특정 파라미터의 상이한 각각의 값과 연관되어 있으며, 다수의 값의 각각은 특정 파라미터의 각각의 값과 연관된 추적 정보에 의해 집계되는 특징의 값에 해당한다.
다른 측면으로서, 일반적으로, 컴퓨터로 판독가능한 저장 매체는, 하나 이상의 식(expression)을 평가하기 위한 컴퓨터 프로그램을 저장하며, 식은 데이터 처리 성분을 나타내는 정점(vertex) 및 성분을 연결하고 성분 간의 작업 요소의 흐름을 나타내는 링크(link)를 갖는 데이터플로우 그래프(dataflow graph)의 하나 이상의 특징을 표현한다. 컴퓨터 프로그램은, 컴퓨터로 하여금, 하나 이상의 변수(variable)에 대한 하나 이상의 연산을 포함하는 하나 이상의 식을 평가하라는 요청을 수신하고; 및 하나 이상의 식을 평가하도록 하는 명령어를 포함한다. 상기 평가는, 하나 이상의 필드(field)를 포함하는 데이터 구조를 정의(define)하며; 데이터플로우 그래프의 실행 동안 데이터플로우 그래프의 하나 이상의 성분과 연관된 추적 정보(tracking information)를 수집(collect)하고; 추적 정보와 연관된 값을 상기 하나 이상의 필드에 저장(store)하며; 및 하나 이상의 식의 하나 이상의 변수를 하나 이상의 필드에 저장된 값으로 교체(replace)해서 하나 이상의 식을 평가한 결과를 산출하는 것을 포함한다.
다른 측면으로서, 일반적으로 하나 이상의 식(expression)을 평가하기 위한 컴퓨팅 시스템이 제공된다. 상기 식은 데이터 처리 성분을 나타내는 정점(vertex) 및 성분을 연결하고 성분 간의 작업 요소의 흐름을 나타내는 링크(link)를 갖는 데이터플로우 그래프(dataflow graph)의 하나 이상의 특징을 표현한다. 컴퓨팅 시스템은, 하나 이상의 변수(variable)에 대한 하나 이상의 연산을 포함하는 하나 이상의 식을 평가하라는 요청을 수신하는 입력 장치 또는 포트; 및 하나 이상의 식을 평가하는 하나 이상의 프로세서를 포함한다. 상기 평가는, 하나 이상의 필드(field)를 포함하는 데이터 구조를 정의(define)하며; 데이터플로우 그래프의 실행 동안 데이터플로우 그래프의 하나 이상의 성분과 연관된 추적 정보(tracking information)를 수집(collect)하고; 추적 정보와 연관된 값을 하나 이상의 필드에 저장(store)하며; 및 하나 이상의 식의 하나 이상의 변수를 하나 이상의 필드에 저장된 값으로 교체(replace)해서 하나 이상의 식을 평가한 결과를 산출하는 것을 포함한다.
다른 측면으로서, 일반적으로, 하나 이상의 식(expression)을 평가하기 위한 컴퓨팅 시스템이 제공된다. 식은 데이터 처리 성분을 나타내는 정점(vertex) 및 성분을 연결하고 성분 간의 작업 요소의 흐름을 나타내는 링크(link)를 갖는 데이터플로우 그래프(dataflow graph)의 하나 이상의 특징을 표현한다. 컴퓨팅 시스템은, 하나 이상의 변수(variable)에 대한 하나 이상의 연산을 포함하는 하나 이상의 식을 평가하라는 요청을 수신하기 위한 수단; 및 하나 이상의 식을 평가하기 위한 수단을 포함한다. 상기 평가는, 하나 이상의 필드(field)를 포함하는 데이터 구조를 정의(define)하며; 데이터플로우 그래프의 실행 동안 데이터플로우 그래프의 하나 이상의 성분과 연관된 추적 정보(tracking information)를 수집(collect)하고; 추적 정보와 연관된 값을 하나 이상의 필드에 저장(store)하며; 및 하나 이상의 식의 하나 이상의 변수를 하나 이상의 필드에 저장된 값으로 교체(replace)해서 하나 이상의 식을 평가한 결과를 산출하는 것을 포함한다.
측면은 이하의 장점들 중 하나 이상을 포함할 수 있다.
데이터플로우 그래프가 실행 환경에서 실행되는 경우, 예를 들어 수행되는 데이터 처리에 관한 다양한 특징을 표본화하기 위해 또는 데이터플로우 그래프의 성분에 의해 수행되는 다양한 계산의 진행을 추적하기 위해, 데이터플로우 그래프의 실행을 모니터링하는 것이 유용한 경우가 많다. 일례로, 사용자는 처리되는 데이터량(예를 들어, 레코드의 수, 데이터의 바이트 수) 및/또는 데이터 처리 동안 소비되는 리소스의 양(예를 들어, 성분에 의해 사용되는 CPU 시간, 또는 성분과 연관된 대기 시간)을 추적하길 원할 수 있다. 일부 실행 환경은 사용자 인터페이스의 일부인 윈도우 내에 표시되는 다양한 특징을 나타내기 위한 데이터를 추적하는 흐름을 수신하는 사용자 인터페이스를 제공하도록 구성된다.
본원에 개시된 일부 기술에 의하면, 사용자는 동적으로 그리고 유연하게 사용자가 모니터링하고자 하는 일부 특징을 정의하는 식을 제공할 수 있다. 일례로, 사용자는 데이터플로우 그래프의 실행 동안 이 데이터플로우 그래프의 모니터링을 위한 식을 제공할 수 있다. 특징은 데이터플로우 그래프의 서브그래프 내의 데이터플로우 그래프의 서브그래프 내의 부분(예를 들어, 성분 또는 데이터플로우 그래프 링크)과 연관될 수 있다. 사용자는 시스템으로 하여금 데이터플로우 그래프의 표현(예를 들어, 성분을 나타내는 노드와 데이터플로우를 나타내는 링크를 갖는 방향성 그래프로서의 데이터플로우 그래프의 표현)의 적절한 부분을 횡단(또는 "스캔")할 수 있도록 하는 완전한 자격을 갖춘 경로가 특정될 수 있도록 하는 표기법을 사용할 수 있다. 추적 정보 중의 사용자에 의해 제공되는 식을 평가하기 위해 필요한 부분을 유지하기 위한 데이터 구조를 생성함으로써, 식은 추적 정보의 스트림으로부터 집계 및 캡슐화되는 적절한 정보를 사용해서 효율적인 방식으로 적절하게 평가될 수 있다. 사용자는 추적 정보를 이해하거나 판독할 수 있을 필요는 없지만, 어떤 시스템이 적절한 추적 정보를 취득할 수 있는지에 기초하여 이해가능한 식을 간단히 생성하고 가장 최근 정보를 이용하여 식을 평가할 수 있다.
이상 설명한 것 외의 본 발명의 다른 특징이나 장점은 이하의 상세한 설명과 청구범위로부터 명백하게 알 수 있을 것이다.
도 1은 그래프 기반의 계산을 실행하기 위한 시스템을 나타내는 블록도이다.
도 2는 데이터플로우 그래프 특징을 평가하기 위한 과정의 예를 나타내는 플로차트이다.
도 3은 데이터플로우 그래프를 모니터링하기 위한 시스템을 나타내는 블록도이다.
도 4는 데이터플로우 그래프 특징을 평가하기 위한 과정의 예를 나타내는 플로차트이다.
도 1은 데이터플로우 그래프 특징을 평가하기 위한 기술이 사용될 수 있는 데이터 처리 시스템(100)의 예를 나타낸다. 데이터 처리 시스템(100)은 다양한 저장 포맷(예를 들어, 데이터베이스 테이블, 스프레드시트 파일, 플랫 텍스트 파일 또는 메인프레임에 의해 사용되는 네이티브 포맷) 중의 임의의 포맷으로 데이터를 기억할 수 있는, 온라인 데이터 스트림(online data streams)에의 접속 또는 저장 장치 등의 하나 이상의 데이터의 소스를 포함할 수 있는 데이터 소스(data source)(101)를 구비한다. 실행 환경(execution environment)(104)은 모니터 모듈(106)과 실행 모듈(112)을 포함한다. 모니터 모듈(106)은 실행 모듈(112)에서 실행되는 하나 이상의 프로세스의 특징을 모니터링하기 위한 하나 이상의 프로세스를 포함한다. 예를 들어, 실행 모듈(112)은 정점(데이터 처리 성분 또는 데이터세트를 나타냄) 및 방향성 링크(작업 요소의 흐름을 나타냄)를 포함하는 데이터플로우 그래프로서 애플리케이션을 실행하도록 구성될 수 있는데, 정점은 정점들 사이의 방향성 링크에 의해 연결되어 있다. 데이터 처리 성분은 입력 데이터플로우에서 작업 요소를 수신하기 위한 임의의 개수의 입력 포트와 출력 데이터플로우에서 작업 요소를 제공하기 위한 임의의 개수의 출력 포트를 가질 수 있다. 모니터 모듈(106)은 하나 이상의 데이터플로우 그래프가 실행되는 동안의 하나 이상의 데이터플로우 그래프의 특징을 모니터링하도록 구성될 수 있다. 실행 환경(104)은 UNIX 운영체제 등의 적절한 운영체제의 제어하에서 하나 이상의 범용 컴퓨터에 호스트될 수 있다. 예를 들어, 실행 환경(104)은 로컬(예를 들어, SMP 컴퓨터 등의 다중 프로세서 시스템) 또는 로컬 분산된(예를 들어, 클러스터 또는 MPP로서 연결된 다중 프로세서), 또는 원격이나 원격 분산된(예를 들어, 근거리 통신망(LAN) 및/또는 광역 통신망(WAN)에 의해 연결된 다중 프로세서), 또는 이들이 임의로 조합된 다수의 중앙처리장치(CPU)를 이용하는 컴퓨터 시스템의 구성을 포함하는 다중 노드 병렬 컴퓨팅 환경을 포함할 수 있다.
일례로, 모니터 모듈(106)은 데이터 저장 시스템(116)으로부터 데이터를 판독한다. 예를 들어, 모니터 모듈(106)은 데이터 저장 시스템(116)에 저장된 하나 이상의 식(expression)(114)에 액세스할 수 있다. 모니터 모듈(106)은 실행 모듈(112)에 의해 실행되고 있는 데이터플로우 그래프의 특징을 평가하기 위해 식(114)을 사용할 수 있다. 이하 더 상세하게 설명하는 바와 같이, 모니터 모듈(106)은 데이터플로우 그래프와 연관된 추적 정보(tracking information)를 사용하여 식(114)을 평가할 수 있다. 실행 모듈(112)은 입력 데이터를 처리하기 위해 실행되는 데이터플로우 그래프에 대한 입력으로서 데이터 소스(102)로부터 데이터를 판독한다. 데이터 소스(102)를 제공하는 저장 장치는, 예를 들어, 실행 환경(104)을 실행하는 컴퓨터에 접속된 저장 매체[예를 들어, 하드 드라이브(108)]에 저장된 실행 환경(104)에 대해 로컬이 되거나, 예를 들어, 원격 접속을 통해 실행 환경(104)을 실행하는 컴퓨터와 통신하는 원격 시스템(예를 들어, 메인프레임(110))에 호스트되는 실행 환경(104)에 대해 원격이 될 수 있다.
실행 모듈(112)은 하나 이상의 컴퓨터 프로세스(예를 들어, 데이터플로우 그래프의 성분과 연관된 프로세스)를 실행할 수 있으며, 모니터 모듈(106)은 모니터 모듈이 실행 모듈(112)에 의해 실행될 때의 데이터플로우 그래프의 활동을 모니터링할 수 있다[예를 들어, 모니터링은 실행 모듈(112)에 의해 실행되는 그래프 프로세스와 함께 실행 환경 내에서 실행되는 하나 이상의 모니터링 프로세스를 사용해서 가능하다]. 데이터 저장 시스템(116)은 또한 개발 환경(development environment)(118)에 액세스 가능하다. 이 개발 환경 내의 개발자(developer)(120)는, 이하에 설명하는 바와 같이, 데이터플로우 그래프의 하나 이상의 특징을 나타내는 식(114)을 정의 또는 입력할 수 있거나, 평가된 식의 결과를 사용해서 액션를 취할 수 있다. 식(114)은 데이터플로우 그래프의 여러 특성을 나타내는 하나 이상의 변수에 대한 하나 이상의 연산과 관련해서 정의될 수 있다. 연산의 결과는 사용자가 모니터링하고자 하는 특징을 나타내는 식의 값을 제공한다. 일례로, 개발 환경(118)은 데이터플로우 그래프로서 애플리케이션을 개발하기 위한 시스템이다. 예를 들어, 이러한 환경에 대해서는, 본원에서 참조에 의해 원용하는, "Managing Parameters for Graph-Based Applications"란 명칭의 미국출원 공개번호 2007/0011668에 상세하게 개시되어 있다. 이러한 그래프 기반의 계산을 실행하기 위한 시스템에 대해서는, 본원에서 참조에 의해 원용하는, "EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS"란 명칭의 미국특허 5,566,072에 개시되어 있다. 상기 시스템에 따라 작성된 데이터플로우 그래프는 그래프 성분에 의해 표현되는 각 프로세서에 대해 입출력되는 정보를 취득하고, 정보를 프로세스 사이에서 전달하며, 프로세스의 실행 순서를 정의하기 위한 방법을 제공한다. 상기 시스템은 프로세스 간 통신 방법(interprocess communication method)을 선택하는 알고리즘을 포함한다(예를 들어, 그래프의 링크에 따른 통신 경로는 TCP/IP 또는 UNIX 도메인 소켓을 사용하거나, 프로세스 사이에서 데이터를 전달하기 위해 공유 메모리를 사용할 수 있음).
시스템(100)은 데이터베이스 시스템의 여러 형식을 포함하는 다양한 유형의 시스템으로부터 데이터를 수신할 수 있다. 데이터는 널 값(null value)을 포함할 수 있는, 각각의 필드("속성" 또는 "컬럼"이라고도 함)에 대한 값을 갖는 레코드로서 구성될 수 있다. 실행 모듈(112)은, 데이터 소스(102)로부터 데이터를 판독하면, 해당 데이터 소스 내의 레코드에 관한 몇몇 개시 포맷 정보로 시작하는 것이 전형적이다. 어떤 경우에, 데이터 소스의 레코드 구조는 처음에는 알지 못할 수 있으며, 데이터 소스를 분석한 이후에 정해질 수도 있다. 레코드에 관한 개시 정보로는 개별 값을 나타내는 비트의 수, 레코드 내의 필드의 순서, 및 비트로서 나타내어지는 값의 유형(예를 들어, 스트링, 부호있는/부호없는 정수) 등이 있다.
도 2는 데이터플로우 그래프의 특징을 평가하기 위한 과정(200)의 예를 나타내는 플로차트이다. 이 과정은 시스템(예를 들어, 도 1의 시스템(100))이 데이터플로우 그래프의 하나 이상의 특징을 나타내는 식을 평가하라는 요청을 수신한다(202). 시스템은, 식을 평가하라는 요청을 수신하면, 하나 이상의 필드를 포함하는 데이터 구조를 정의한다(204). 일례로, 데이터 구조는 실행이 모니터링되는 데이터플로우 그래프의 표현을 횡단(traverse)함으로써 정의되는 필드를 갖는 메모리 내 데이터 구조이다. 일반적으로, 데이터 구조 내의 필드는 식을 평가하는 데에 필요한 데이터를 보유하도록 구성된다.
시스템(100)은 데이터플로우 그래프의 여러 부분과 연관된 추적 정보를 집계함으로써 데이터플로우 그래프를 실행하는 동안 추적 정보를 수집한다(206). 이에 대해서 이하 상세하게 설명한다. 일반적으로, 추적 정보는 데이터플로우 그래프가 실행되는 동안에 생성되며, 데이터플로우 그래프, 그 성분 및 그 서브성분(subcomponent)의 연산과 다양한 연산에 사용되는 리소스의 양에 관한 정보를 제공할 수 있다. 추적 정보가 수집 및/또는 집계되면(또는 추적 정보가 수집 및/또는 집계되고 있으면), 시스템은 추적 정보와 연관된 값을 메모리 내 데이터 구조의 필드에 저장한다(208). 데이터 구조에 값이 저장되면, 평가되는 식의 변수가 데이터 구조의 필드 내에 저장된 값을 사용하여 교체된다(210). 변수를 주지의 양으로 교체함으로써, 시스템은 식을 평가해서 결과를 제공할 수 있다(212). 도 4의 예에 나타낸 바와 같이, 상기 결과는 차후의 처리 작업에서 사용될 수 있다. 상기 결과는, 도 3의 예를 참조해서 이하 더 상세하게 설명하는 바와 같이, 다른 식의 평가에 사용될 수 있는 이력 데이터의 컬렉션에 저장될 수도 있다.
데이터플로우 그래프는 다양한 레벨의 추상화(abstration)로 특정될 수 있다. 성분 및 링크를 포함하는 데이터플로우 그래프 자체인 "서브그래프"(subgraph)는, 서브그래프 내의 성분에 입력을 제공하는 입력 포트와 서브그래프 내의 성분으로부터 출력을 제공하는 출력 포트를 나타내는, 단일 성분으로서 데이터플로우 그래프를 포함하는 다른 그래프 내에 표현될 수 있다. 서브그래프에 의해, 데이터플로우 그래프를 개발함에 있어서 모듈성 및 재사용이 가능하고, 개발자가 소정 서브그래프 내의 성분 및 링크를 보기 위해 해당 서브그래프까지 더 낮은 레벨까지 드릴 다운할 수 있도록 하면서, 소정 레벨의 데이터플로우 그래프에서 개발자로부터 이들 사이의 성분 및 링크의 서브세트의 복잡성을 숨길 수 있다.
도 3은 실행 모듈(112)에 의해 실행되는 데이터플로우 그래프(302)의 특징을 모니터하는 시스템(300)의 예를 나타낸다. 시스템(300)은 데이터 저장부(316), 식 평가 엔진(expression evaluation engine)(322) 및 그래프 횡단 엔진(graph traversal engine)(330)을 포함한다. 이들 엔진은 모니터 모듈(106)에 의해 사용되어 식(324)을 수신 및 평가하여 데이터플로우 그래프(302)의 모니터링된 특징을 나타내는 결과를 제공한다. 식(324)은, 예를 들어 데이터 저장 시스템(116)으로부터 식 평가 엔진(322) 및 그래프 횡단 엔진(330)에 액세스 가능하다. 데이터플로우 그래프(302)는 제1 서브그래프(304)와 제2 서브그래프(306)를 포함하며, 이들 서브그래프는 데이터플로우(예를 들어, 데이터 소스(102)로부터 제공되어 서브그래프에 의해 처리되는 레코드 등의 데이터 요소의 흐름)를 나타내는 링크(328)에 의해 접속된다. 서브그래프(304)는 제1 성분 "C1"(308)과 제2 성분 "C2"(310)를 포함하며, 이들 성분은 데이터플로우[예를 들어, 데이터 소스(102)로부터 제공되어 성분에 의해 처리되는 레코드 등의 데이터 요소의 흐름]를 나타내는 링크(326)에 의해 접속된다. 시스템(300)은 또한 그래프(302)의 성분 및 서브그래프의 실행과 연관된 추적 정보를 집계하며, 데이터 저장부(316)에 통신가능하게 접속된 집계 엔진(aggregation engine)(312)을 포함한다. 집계 엔진(312)은 데이터플로우 그래프(302), 그 서브그래프 및 성분과 연관된 추적 정보를 식 평가 엔진(322)에 전달하도록 구성되며, 데이터 저장부(316)에 통신가능하게 접속된다. 이에 대해서 이하 더 상세하게 설명한다. 집계 엔진(312)은 실행 모듈(112)의 일부로서 또는 모니터 모듈(106)의 일부로서 구현될 수 있다.
하나의 데이터플로우 그래프와 몇 개의 서브그래프 및 성분만이 도시되어 있지만, 데이터플로우 그래프는 모듈식의 엔티티이며 다른 데이터플로우 그래프에 연결되거나 조합될 수 있다. 또한, 도 3의 예는 비교적 적은 개수의 서브그래프 및 성분을 간단히 나타낸 예이지만, 데이터플로우 그래프(302)는 임의의 개수의 서브그래프를 포함할 수 있으며, 각각의 서브그래프는 임의의 개수의 성분을 포함할 수 있다.
일례로, 데이터 저장부(316)는 데이터 저장 시스템(116)의 메모리(예를 들어, 휘발성 및/또는 불휘발성 메모리) 내에 저장된다. 데이터 저장부(316)는 집계된 추적 정보를 저장하기 위한 하나 이상의 데이터 구조(318)를 저장한다. 일례로, 데이터 구조(318)는 필드에 의해 정의된 구조를 갖는 레코드 내에 하나 이상의 추적 정보를 저장하기 위한 하나 이상의 필드(320A, 320B, 320C, 320D)를 포함한다.
도 3의 예에서, 그래프 횡단 엔진(330)은, 이하 더 상세하게 설명하는 바와 같이, 데이터 구조(318)의 정의를 판정하기 위해 데이터플로우 그래프(302)의 표현을 횡단할 때에 어떤 정보가 필요한지를 규정하기 위해 식(324)을 분석한다. 이 횡단은 데이터플로우 그래프(302)의 실행 이전에 또는 데이터플로우 그래프(302)의 실행 중에, 새로운 식(324)의 수신에 응답하여 이루어질 수 있다. 데이터플로우 그래프(302)를 실행하는 동안, 집계 엔진(312)은 정의된 데이터 구조(318)를 집계된 추적 정보로 채운다. 식 평가 엔진(322)은 채워진 데이터 구조(318)를 이용하여 식(324)을 평가한다. 식(324)을 평가한 후, 평가의 결과는 데이터플로우 그래프(302)의 하나 이상의 특징의 표현을 제공한다. 이 결과는 데이터 저장부(316) 내의 이력 데이터(332)의 컬렉션에 임의로 저장될 수 있다.
일례로, 개발자(120, 도 1 참조) 등의 사용자는 평가를 위한 식(324)을 사용자 인터페이스를 통해 입력한다. 사용자는 평가를 위한 새로운 식을 입력하거나(예를 들어, 사용자는 어떤 형식의 프로그래밍 언어 또는 식 생성 툴을 사용해서 평가될 새로운 식을 정의할 수 있다), 사용자는 사전설정된 식이나 디폴트 식 등의 저장된 식의 리스트로부터 선택된 식 등의 기존의 식을 입력할 수 있다. 일반적으로, 사용자는 하나 이상의 데이터플로우 그래프의 특정의 특징에 관한 정보를 취득하기 위해 식을 입력할 수 있다. 예를 들어, 사용자가 성분(C1, C2)이 소비하는 리소스(예를 들어, 하나 이상의 CPU 속도가 성분에 대한 프로세스를 실행하는 시간 등이 CPU 리소스)의 양을 평가하길 원하는 경우, 사용자는 이하의 식을 선택 또는 생성할 수 있다.
CPU Resources Consumed = (SG1.C1.cpu + SG1.C2.cpu)
상기 식은 "도트 표기법" 식의 예이다. 상기 식의 항은 데이터플로우 그래프의 여러 부분(예를 들어, 서브그래프, 성분, 포트, 링크)에 대응하는 이름과 데이터플로우 그래프의 이들 부분과 연관된 특징을 포함한다. 식에서, 서브그래프 또는 성분의 이름들 사이에 있는 "도트"는 해당 "도트"의 오른쪽에 있는 서브그래프 또는 성분이 "도트"의 왼쪽에 있는 서브그래프 또는 성분 내에 있다는 것을 의미한다. 상기 식에서, 마지막 "도트" 다음의 마지막 이름은 모니터링되는 "도트"의 왼쪽에 있는 요소의 특징에 대응한다. "SG1.C1.cpu"는 성분 C1(308)에 의해 소비되는 CPU 리소스를 의미한다. 마찬가지로, "SG1.C2.cpu"는 성분 C2(310)에 의해 소비되는 CPU 리소스를 의미한다. 상기 식에서는, 2개의 성분 C1(308) 및 C2(310)에 의해 소비되는 총 CPU 리소스를 얻기 위해 2개의 항을 더한다. 항 SG1.C1.cpu와 SG1.C2.cpu는 식을 평가하기 전 또는 평가하는 동안에 데이터 구조(318)의 필드로부터 값이 제공될 수 있는 변수이다.
CPU 리소스를 포함하는 몇 가지 특징은 특정의 파라미터로 나눠질 수 있는데, 해당 파라미터의 여러 값에 대한 특징을 개별적으로 모니터링하기 위해서이다. 예를 들어, CPU 리소스 변수에 대한 다수의 여러 값이 "호스트" 파라미터의 각각의 값에 대한 데이터 구조(318)의 필드 내에 저장(예를 들어, 벡터로서)될 수 있다. 특정 서브그래프 내의 특정의 성분은 여러 호스트 컴퓨터에서 병렬로 실행되는 여러 스레드를 가질 수 있다. 각각의 호스트 컴퓨터는 하나 이상의 CPU를 가질 수 있다. 본 예에서, 집계 엔진(312)은 각 호스트에 대한 CPU 시간의 단일의 값을 제공하기 위해 각 호스트에서의 모든 CPU에 대한 CPU 시간을 집계한다. 이들 값은 데이터 구조(318)의 필드 내의 벡터에 저장된다. 필드가 식의 변수에 값을 제공하는 데에 사용되는 경우, 식의 결과는 호스트에 의해 분할된 결과로서 또는 총 결과로서 사용자에게 표시될 수 있다. 식의 결과가 추가의 처리(예를 들어, 경보(alert)의 정의)에 사용된다면, 사용자는 총 결과가 사용될 것인지, 호스트에 의해 분할된 개별의 결과가 사용될 것인지를 체크 표시(예를 들어, 체크박스를 사용해서)할 수 있다. 예를 들어, 경보를 작동시킬 때를 판정하기 위한 식과 연관된 임계값을 정의하는 경우, "총" 체크박스에 체크가 되었다면, 식의 총 결과와 연관될 임계값을 수신하기 위해 단일의 입력 인터페이스가 제공된다. "총" 체크박스에 체크가 되지 않았다면, 각 호스트에 대한 각각의 결과와 연관될 다수의 임계값을 수신하도록 다수의 입력 인터페이스가 제공된다.
상기 예에서, 식(324)은 데이터플로우 그래프(302)의 2개의 성분에 의해 소비되는 CPU에 대한 특징을 정의하지만, 식 평가 엔진(322)은 다른 특징을 표현하는 식을 평가하는 데에도 사용될 수 있다. 예를 들어, 성분을 통해 전달되는 다수의 레코드(또는 바이트), 입력 데이터세트로부터 판독된 또는 출력 데이터세트에 기입된 다수의 레코드(또는 바이트), 경과 시간 등을 제공하기 위해 식을 평가할 수 있다. 일부 특징은 다른 특징에 대하여 표현될 수 있다. 예를 들어, num_records/elapsed_time은 평균 처리 속도(예를 들어, 초당 레코드의 단위)를 나타낸다. 식 평가 엔진(322)은 또한 다수의 식을 동시에 평가할 수 있으며, 미리 정의된 스케줄에 따라 식을 평가하도록 구성될 수 있다. 예를 들어, 식 평가 엔진(322)은 매 시간마다, 또는 처리 리소스가 이들 리소스에 대한 요구에 비해 드물게 된 것의 판정 등과 같은 하나 이상의 트리거 이벤트 또는 조건의 검출할 때에 식(324)을 평가하도록 구성될 수 있다.
식(324)이 평가될 것이라는 지표를 수신한 후에, 그래프 횡단 엔진(330)은 데이터플로우 그래프의 표현을 횡단함으로써 판정되는 데이터플로우 그래프(302)의 분석 및 식(324)의 어휘적 분석(lexical analysis)에 기초하여, 데이터 저장부(316) 내의 데이터 구조(318)를 정의한다. 예를 들어, 성분을 나타내는 데에 사용되는 항은 데이터플로우 그래프의 레벨에서 성분이 얼마나 깊이 위치하는 지에 의존하는 구조를 가질 것이다. 도트 표기법은 <subgraph>.<component>로서 표현되는, 관심 성분에 도달하기 위해 데이터플로우 그래프의 표현을 횡단하기 위한 충분한 자격이 있는 경로를 제공한다. 성분 간의 링크를 나타내는 데에 사용되는 항은 <component>__to__<component>로 표현된다. 데이터 구조(318)는 식(324) 내의 하나 이상의 변수를 대신하기 위해 최종적으로 식 평가 엔진(322)에 제공될 값을 유지하도록 구성되는 필드를 포함한다.
데이터 구조(318)를 생성하기 전에, 그래프 횡단 엔진(330)은 식(324)을 평가하기 위해 요구되는 필드(320A-320D)의 개수와 타입을 정하도록, 데이터플로우 그래프(302)의 표현을 횡단(또는 "스캔")한다. 데이터플로우 그래프(302)를 횡단하기 위한 일부 과정에서, 그래프 횡단 엔진(330)은 데이터플로우 그래프(302)의 최상위 레벨에서 데이터플로우 그래프(302)를 조사하는 것으로 시작하고(성분 및 서브그래프는 최상위 레벨에서 노드로서 표현됨), 이어서 식 내의 변수 이름을 데이터플로우 그래프의 부분들(예를 들어, 성분, 포트, 링크)의 이름과 비교하기 위해 데이터플로우 그래프(302)의 노드를 연결하는 데이터플로우 링크를 조사하여, 식(324)의 평가에 관련되는 데이터플로우 그래프의 부분을 식별할 수 있다. 즉, 그래프 횡단 엔진(330)은 식(324)과 데이터플로우 그래프(302)를 분석해서, 특정 타입(예를 들어, 데이터 타입)의 하나 이상의 필드를 정의할 수 있다. 예를 들어, 상기 식에서, 데이터 구조(318)는 CPU 리소스와 각각 관련된 타입을 갖는 2개의 필드를 가질 것이다. 데이터플로우 그래프(302)의 토폴로지(그래프 횡단 엔진(330)에 의해 정해짐)는 데이터 구조(318) 내에 포함되는 필드의 개수와 타입을 정의한다. 예를 들어, 데이터플로우 그래프가 트리 토폴로지를 갖는 노드의 방향성 그래프로서 표현되는 경우, 식에 기초하여, 그래프 횡단 엔진(330)은 어떤 경로가 루트에서부터 식에서 참초되는 성분/데이터플로우를 나타내는 노드/링크까지 횡단되어야 하는지를 정할 수 있다. 경로가 식에서 참조되는 성분이나 데이터플로우를 나타내는 노드 또는 링크를 포함하지 않으면, 그래프 횡단 엔진(330)은 해당 경로를 횡단하지 않아도 된다. 이와 달리, 일부 예에서, 그래프 횡단 엔진(330)은 경로 전체를 횡단할 수 있다.
데이터 구조(318)가 정의되면, 데이터플로우 그래프(302)는 실행 모듈(112)에 의해 실행되고, 모니터 모듈(106)을 실행하는 동안 하나 이상의 식의 평가를 관리한다. 평가할 각각의 식에 대하여, 정의된 필드의 사양에 기초하여, 추적 정보를 수신하기 위해 데이터 구조의 대응하는 인스턴스가 생성된다. 집계 엔진(312)은 어떤 추적 정보가 실행 모듈(112)에 의해 제공되는 추적 정보의 흐름으로부터 추출될 것인지를 나타내는 입력을 수신한다. 집계 엔진(312)은 정의된 데이터 구조(318)의 인스턴스의 정의된 필드(320A-320D)를, 식(324)의 평가에 관련된 값으로 채우는 것을 시도한다. 이들 값은 데이터플로우 그래프(302)의 실행 동안 실행 모듈(112)에 의해 생성되는 추적 정보에 의해 제공된다. 실행 모듈(112)은, 다양한 서브그래프와 성분을 실행하는 것에 의해, 집계 엔진(312)에 의해 집계되는 추적 정보를 생성할 수 있다. 일례로, 집계 엔진(312)은 각각의 성분, 서브그래프, 및 데이터플로우의 특징을 기술하는 추적 정보를 모으기 위해 데이터플로우 그래프(302)의 프로세스와 함께 구동되는 프로세스를 사용하여 구현될 수 있다.
필드에 적절한 추적 정보를 제공하기 위해, 집계 엔진(312)은 데이터 구조(318)의 생성된 인스턴스를 분석해서, 데이터플로우 그래프의 어떤 측면이 식(324)의 평가와 관련되어 있는지를 식별할 수 있다. 데이터 구조(318)의 인스턴스를 생성하는 프로세스는, 예를 들어, 실행 동안 다시 데이터플로우 그래프의 표현을 횡단하여, 추가의 정보(정의된 필드에 추가로)를 취득하거나, 데이터플로우 그래프의 구조(예를 들어, 실행 전 초기 횡단으로부터 상당한 시간이 경과한 경우)를 확인하기 위해 그래프 횡단 엔진(330)을 사용하는 것을 포함한다.
데이터플로우 그래프의 여러 측면에 대해 여러 타입의 집계가 필요할 수 있다. 한가지 타입의 집계는 더 낮은 레벨로부터 데이터플로우 그래프의 하나의 레벨에 대한 추적 정보를 제공하기 위해 이루어질 수 있다. 예를 들어, 집계 엔진(312)은 서브그래프 내의 개별 성분의 특징(예를 들어, 각 성분에 대한 각 CPU 시간)을 나타내는 추적 정보 내에 소정의 수를 추가하고, 서브그래프의 특징(예를 들어, 총 CPU 시간)을 나타내도록 총합을 제공한다. 다른 타입의 집계는 데이터플로우 그래프의 다른 측면을 포함한다. 병렬의 데이터플로우 그래프의 경우, 입력 데이터플로우를 통해 병렬로 수신된 데이터(예를 들어, 입력 데이터플로우 상의 데이터는 여러 병렬 인스턴스 중에서 구분될 수 있으며, 이는 여러 CPU에서 실행될 수 있음)를 처리하는 소정 성분의 다수의 인스턴스가 존재한다. 집계 엔진(312)은 병렬 성분의 각 인스턴스에 대한 여러 추적 정보를 집계해서 집계된 값(예를 들어, 각 인스턴스에 대한 총 CPU 시간)을 제공한다. 추적 정보가 식(324)의 평가에 관련된 데이터플로우 그래프의 부분들(예를 들어, 관련 데이터 흐름, 성분 또는 서브그래프)에 대응하는 필드 내의 데이터 구조(318)에 저장된 후, 식 평가 엔진(322)은 데이터 구조(318)를 수신하고, 저장된 정보(예를 들어, 성분 C1(308) 및 C2(310)에 관한 정보)를 사용해서 식(324)을 평가한다. 일례로, 집계 엔진(312)은 이들 성분에 대하여 식(324)의 평가에 필요한 것보다 많은 추적 정보를 제공한다(예를 들어, 집계 엔진(312)은 성분을 통해 전달되는 레코드의 수와 같은 다른 식에서 참조되는 변수에 관련된 추적 정보와, 현재 평가되고 있는 식(324)에서 참조되는 성분의 CPU 사용량을 제공할 수 있음). 그러나, 식 평가 엔진(322)은 불필요한 추적 정보를 필터링에 의해 제거하고 식(324)의 평가에 필요한 추적 정보만을 추출하도록 구성될 수 있다.
관련 추적 정보가 집계 엔진(312)에 의해 수집된 후에, 추적 정보는 적절한 필드 내의 데이터 구조(318)에 저장된다. 필드(320A-320D)는 정의된 "타입"이고 추적 정보는 동일 타입이 되도록 필터링되었기 때문에, 필드(320A-320D)에는 호환가능하고 적절한 타입의 추적 정보가 제공될 수 있다. 필드(320A-320D)가 관련 추적 정보(또는 그 추적 정보와 연관된 값)로 채워진 후에, 데이터 구조(318)는 식 평가 엔진(322)에 의해 평가될 수 있는 레코드의 형식을 취한다. 이 시점에서, 식 평가 엔진(322)은 식(324)에서 정의된 변수를 대체하기 위해 필드(320A-320D)로부터 값을 인출할 수 있다.
식(324) 내의 변수가 필드(320A-320D)로부터의 값으로 대체된 후에, 식 평가 엔진(322)은 식(324)을 평가해서 원하는 결과를 얻을 수 있다. 상기 예시한 식을 사용해서, 식을 평가한 결과는 성분 C1(308) 및 C2(310)의 총 CPU 사용량을 나타낼 것이다. 식(324)의 평가는 데이터플로우 그래프가 실행되는 동안에 이루어질 수 있다.
도 4는 과정(200, 도 2 참조)과 유사한 과정(400)이지만, 식의 평가로부터 결과를 얻은 후에 수행될 수 있는 2개의 선택적 연산(414, 416)이 추가되어 있다는 점이 다르다. 이 과정(400)은 시스템(예를 들어, 도 1의 시스템(100))이 데이터플로우 그래프의 하나 이상의 특징을 나타내는 식을 평가하기 위한 요청을 수신하는 것으로 시작한다(402). 식을 평가하라는 요청을 수신한 후, 시스템은 하나 이상의 필드를 포함하는 데이터 구조를 정의한다(404). 일례로, 데이터 구조는 평가되는 데이터플로우 그래프의 표현을 횡단함으로써 정의되는 필드를 갖는 메모리 내 데이터 구조이다. 일반적으로, 데이터 구조 내의 필드는 식을 평가하는 데에 필요한 데이터를 보유하도록 구성된다.
시스템(100)은 데이터플로우 그래프의 여러 부분으로부터 생성되는 추적 정보를 집계함으로써 데이터플로우 그래프로부터 추적 정보를 수집한다(406). 일반적으로, 추적 정보는 데이터플로우 그래프가 실행되는 동안에 생성되며, 데이터플로우 그래프 및 그 성분과 서브성분의 연산에 관한 정보와, 다양한 연산이 사용되는 리소스의 양에 관한 정보를 제공할 수 있다. 추적 정보가 수집 및/또는 집계된 후(또는 추적 정보가 수집 및/또는 집계되고 있는 중), 시스템은 메모리 내 데이터 구조의 필드 내에 추적 정보와 연관된 값을 저장한다(408). 값이 데이터 구조에 저장된 후에, 평가되는 식 내의 변수가 데이터 구조의 필드 내에 저장된 값을 사용하여 교체된다(410). 변수를 주지의 양으로 교체함으로써, 시스템은 식을 평가해서 결과를 얻을 수 있다(412).
결과가 정해진 후, 시스템은 결과를 하나 이상의 임계값과 비교할 수 있다(414). 예를 들어, 시스템은 앞서 설명한 식을 평가해서 성분 C1(308) 및 C2(310)에 대한 CPU 사용량(예를 들어, 80%의 사용량)을 나타내는 결과를 얻는다고 가정한다. 시스템은 80% 결과를 이들 2개의 성분과 연관된 최대 CPU 사용량(예를 들어, 50%)과 관련된 임계값과 비교할 수 있다. 결과가 임계값을 초과하면, 관리자에게 상황을 경고하기 위한 통지가 시스템에서 생성될 수 있다(416). 이 통지는 경고 또는 알람의 형태가 될 수 있으며, 자동화 프로세스를 실행시키도록(예를 들어, 성분 C1(308) 및 C2(310)에 추가의 리소스를 제공하기 위해 추가의 CPU 리소스를 방출) 할 수 있다.
일례로, 결과는 시간에 대한 또는 다른 값들에 대한 하나 이상의 특징을 나타내는 데에 사용될 수 있다. 예를 들어, 식을 평가한 결과는 수집된 이력 데이터(332)에 기초하여 하나 이상의 평가된 특징을 나타내는 히스토그램 또는 다른 통계적 값을 생성하는 데에 사용될 수 있다. 히스토그램은 자동으로 보고서의 형태로 주기적으로 생성될 수 있거나, 시스템(300)의 관리자의 요구에 따라 생성될 수 있다.
앞서 평가한 식의 결과는 이력 데이터(332) 내에 저장되기 때문에, 일부 식은 변수의 이전의 소정의 횟수의 평가 동안 계산된 상기 변수의 평균값 등과 같은 이력 데이터(332)의 함수인 항을 포함할 수 있다. 사용자는 하나 이상의 그래프를 실행하는 작업의 성능을 해당 작업의 과거 성능과 비교하는 식을 기입할 수 있다. 이러한 식은 이력에 기초한 경보(예를 들어, 식에 의해 측정된 그래프 메트릭이 이력 값으로부터 벗어난다는 것을 사용자에게 통보하는 경보)를 생성하는 데에 사용될 수 있다. 디폴트로서, 시스템(300)은 평가되는 각 식의 특정된 개수의 과거 결과(예를 들어, 가장 최근의 50개의 작업 실행으로부터)를 이력 데이터(332) 내에 저장하도록 구성될 수 있다. 특정되는 개수는 사용자에 의해 설정가능하다.
메트릭의 이력 값을 포함하여, 특정 식에 의해 정의되는 메트릭의 값은 다른 식에서 참조될 수 있다. 이하는 이력 데이터(332)에 의존하는 메트릭의 이력 또는 통계 값을 참조하도록 사용자에 의해 사용될 수 있는 변수의 신택스(syntax)의 예이다.
value: 모니터링되는 작업에 대한 메트릭의 현재 값
max_value: 저장된 이력 값에 대한 메트릭의 최대값
min_value: 저장된 이력 값에 대한 메트릭의 최소값
avg_value: 저장된 이력 값에 대한 메트릭의 평균값
stdev_value: 저장된 이력 값에 대한 메트릭의 표준 편차
이들 변수를 사용해서, 사용자는 이하와 같은 불 대수 식(Boolean expression)을 만들 수 있다.
value > avg_value + stdev_value
상기 식은 값이 이력 평균을 표준 편차 이상으로 초과하는 경우에 촉발되는 경고 통지를 정의하는 데에 사용될 수 있다.
이력에 기초한 식을 작성함에 있어서, 사용자에게는 이력 데이터 내의 기본이 되는 각각의 이력 값에 대한 액세스가 주어질 수 있다. 예를 들어, 메트릭의 개별 이력 값은 벡터 history[i]로서 참조될 수 있다. i는 값이 얼마나 최근에 얻어진 것인가를 나타낸다. 예를 들어, 메트릭이 작업에 의해 소비되는 CPU 시간을 나타내는 식에 의해 정의되면, 가장 최근에 완료된 작업 실행에 의해 사용된 총 CPU 시간의 값이 history[0]으로 표현된다. 다음으로 가장 최근에 완료된 실행에 대한 값은 history[1]로 표현된다. 이 이력 벡터의 깊이는 history_length로 표현된다. max_value 및 avg_value 등의 통계값은 이러한 이력 값에 대하여 계산된다. 작업이 history_length 횟수보다 적게 실행되고 history[i] 벡터가 이력 값에 저장된 history_length보다 적은 경우, 시스템(300)은 저장된 모든 이력 값을 사용해서 통계값을 계산한다. 선택적으로, 시스템(300)은 통계값을 제공하기 전에 저장될 최소 개수의 이력 값(예를 들어, 적어도 3개)을 필요로 할 수 있는데, 이것은 제공되는 통계값이 더 의미 있기 때문이다. history[i]에서 이용가능한 개별 값을 사용하여, 사용자는 이력에 기초한 경보를 정의할 수 있다. 예를 들어, 이하의 식은 마지막 2개의 작업 실행에 대한 값의 평균값으로부터 현재 값의 차분으로서 메트릭 값 내의 최근의 "드리프트(drift)"를 나타낸다.
value - (history[0] + history[1])/2
상기 불 대수 식은 가장 최근의 성능을 특징짓는 메트릭으로부터 어느 정도 벗어나도록 그래프 작업을 시작할 때를 사용자에게 통보하는 데에 사용될 수 있다.
일례로, 데이터플로우 그래프는 특정 사용자의 관심에 맞춰진 추적 정보를 생성할 수 있다. 예를 들어, 많은 데이터플로우 그래프가 CPU 사용량에 관련된 데이터를 생성할 것이지만, 데이터플로우 그래프는 특정 성분을 통해 전달되는 다수의 달러에 관련된 추적 정보를 생성하도록 구성될 수도 있다(예를 들어, 사용자가 금융 서비스 산업에 종사하는 경우). 따라서, 식은 사용자의 사업 영역에 중요한 특징을 평가하기 위한 강력한 도구가 될 수 있다.
상기 설명한 데이터플로우 그래프 특징을 평가하기 위한 방법은 컴퓨터에서 실행하기 위한 소프트웨어를 사용해서 구현될 수 있다. 예를 들어, 소프트웨어는 하나 이상의 프로세서, 하나 이상의 데이터 저장 시스템(휘발성, 비휘발성, 비일시적 메모리 및/또는 저장 요소를 포함), 하나 이상의 입력 장치 또는 포트, 및 하나 이상의 출력 장치 또는 포트를 포함하는, 하나 이상의 프로그램된 또는 프로그램가능한 컴퓨터 시스템(분산, 클라이언트/서버, 또는 그리드 등의 다양한 구조를 가짐)에서 실행되는 하나 이상의 컴퓨터 프로그램의 절차를 구성한다. 소프트웨어는 계산 그래프의 설계 및 구성에 관련된 다른 서비스를 제공하는 더 큰 프로그램의 하나 이상의 모듈을 형성할 수 있다. 그래프의 노드 및 요소는 컴퓨터로 판독가능한 매체에 저장된 데이터 구조 또는 데이터 레포지토리 내에 저장된 데이터 모델에 부합하는 다른 조직화된 데이터로서 구현될 수 있다.
소프트웨어는 범용 또는 전용의 프로그램가능한 컴퓨터로 판독가능한 CD-ROM과 같은 저장 매체에 제공되거나, 네트워크와 같은 통신 매체를 통해 실행가능한 컴퓨터로 전달(전파 신호로 부호화되는)될 수 있다. 모든 기능은, 전용의 컴퓨터상에서, 또는 코프로세서와 같은 전용의 하드웨어를 사용해서 수행될 수 있다. 소프트웨어는, 해당 소프트웨어에 의해 특정된 연산의 상이한 부분이 여러 컴퓨터에서 수행되는 분산 방식으로 구현되어도 된다. 이러한 각각의 컴퓨터 프로그램은, 본 명세서에서 설명하는 절차를 수행하도록 저장 매체 또는 디바이스가 컴퓨터 시스템에 의해 판독될 때에 컴퓨터를 구성 및 운영하기 위한, 범용 또는 전용의 프로그램가능한 컴퓨터에 의해 판독가능한 저장 매체 또는 디바이스(예를 들어, 고체 메모리 또는 매체, 자기 또는 광학 매체)에 저장되거나 다운로드되도록 하는 것이 바람직하다. 본 발명의 시스템은 컴퓨터 프로그램에 맞게 구성된, 컴퓨터로 판독가능한 저장 매체로서 구현될 수도 있는데, 이러한 저장 매체는 컴퓨터 시스템으로 하여금, 본 명세서에서 설명한 기능의 수행을 위해 특정되고 미리 정해진 방식으로 동작할 수 있도록 구성된다.
본 발명에 대하여 많은 실시예를 설명하였다. 그렇지만, 본 발명의 범위를 벗어남이 없이 다양한 변형이 가능하다는 것을 알 수 있을 것이다. 예를 들어, 상기 설명한 단계들 중 몇몇은 반드시 그 순서대로 수행되지 않아도 되며, 설명된 것과 다른 순서대로 수행되어도 된다.
이상의 설명은 청구범위에 의해 정해지는 본 발명의 범위를 제한하기 위한 것이 아니라 예시일 뿐이다. 예를 들어, 앞서 설명한 많은 기능적 단계들은 전체적인 과정에 실질적인 영향을 미치지 않으면서, 다른 순서로 수행되어도 된다. 다른 실시예는 이하의 청구범위에 포함된다.
본 출원은 2010년 8월 25일에 출원된 미국출원 61/376,878에 대하여 우선권을 주장하며, 본원에서 참조에 의해 원용한다.

Claims (70)

  1. 하나 이상의 식(expression)을 평가하기 위한 컴퓨팅 시스템에 의해 수행되는 방법으로서,
    상기 식은, 데이터 처리 성분 간의 작업 요소의 흐름을 나타내는 링크(link)에 의해 연결되는 데이터 처리 성분을 나타내는 정점(vertex)을 포함하는 데이터플로우 그래프(dataflow graph)의 하나 이상의 특징을 표현하며,
    상기 방법은,
    하나 이상의 변수(variable)에 대한 하나 이상의 연산을 포함하는 식을, 상기 컴퓨팅 시스템에 의해 평가하는 단계를 포함하며,
    상기 평가하는 단계는,
    하나 이상의 필드(field)를 포함하는 데이터 구조를, 상기 데이터플로우 그래프의 표현의 분석에 기초하여 정의(define)하는 단계;
    상기 데이터플로우 그래프의 실행 동안 상기 데이터플로우 그래프의 데이터 처리 성분들 중 하나 이상과 연관된 추적 정보(tracking information)를 수집(collect)하는 단계;
    상기 추적 정보와 연관된 하나 이상의 값의 각각을 상기 데이터 구조의 대응하는 필드에 저장(store)하는 단계; 및
    상기 식의 하나 이상의 변수의 각각을 저장된 값들 중 하나로 교체(replace)해서 상기 식을 평가한 결과를 산출하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 평가하는 단계는 상기 데이터플로우 그래프가 실행되는 동안에 수행되는, 방법.
  3. 제1항에 있어서,
    상기 추적 정보는 상기 데이터플로우 그래프의 하나 이상의 서브그래프(subgraph)의 하나 이상의 성분에 추가로 연관되는 것인, 방법.
  4. 제3항에 있어서,
    상기 하나 이상의 변수 중의 적어도 제1 변수는, 상기 식에서, 상기 하나 이상의 서브그래프 중의 제1 서브그래프에 대한 참조(reference)를 포함하는 항(term)으로서 표현되는, 방법.
  5. 제4항에 있어서,
    상기 제1 변수는 상기 제1 서브그래프 내의 제1 성분에 대한 참조를 포함하는, 방법.
  6. 제3항에 있어서,
    상기 하나 이상의 변수 중의 적어도 하나의 변수는 상기 데이터플로우 그래프, 상기 하나 이상의 서브그래프, 및 상기 하나 이상의 성분 중의 하나 이상의 특징에 대응하는 것인, 방법.
  7. 제1항에 있어서,
    상기 식을 평가하는 단계는 미리 정의된 조건에 따라 상기 식을 평가하는 단계를 포함하는, 방법.
  8. 제7항에 있어서,
    상기 미리 정의된 조건은 트리거 이벤트(trigger event)의 검출을 포함하는, 방법.
  9. 제8항에 있어서,
    상기 트리거 이벤트는 하나 이상의 처리 리소스(processing resource)가 상기 하나 이상의 처리 리소스에 대한 요구(demand)에 비해 적다고 하는 판정을 포함하는, 방법.
  10. 제1항에 있어서,
    상기 데이터 구조를 정의하는 단계는, 상기 하나 이상의 필드의 타입과 개수 중의 하나 이상을 식별하기 위해 상기 데이터플로우 그래프를 횡단(traverse)하는 단계를 포함하는, 방법.
  11. 제10항에 있어서,
    상기 데이터플로우 그래프를 횡단하는 단계는, 상기 데이터플로우 그래프 중의, 상기 식과 연관된 부분을 횡단하는 단계를 포함하는, 방법.
  12. 제1항에 있어서,
    상기 데이터플로우 그래프의 데이터 처리 성분들 중 하나 이상과 연관된 추적 정보를 수집하는 단계는, 상기 식에 적어도 부분적으로 기초하여 상기 추적 정보를 필터링(filter)하는 단계를 포함하는, 방법.
  13. 제1항에 있어서,
    상기 결과를 하나 이상의 임계값과 비교하는 단계를 더 포함하는 방법.
  14. 제13항에 있어서,
    상기 비교에 기초하여 통보(notification)를 생성하는 단계를 더 포함하는 방법.
  15. 제14항에 있어서,
    상기 통보에 적어도 부분적으로 기초하여 하나 이상의 자동화 프로세스를 실행하는 단계를 더 포함하는 방법.
  16. 제1항에 있어서,
    상기 식을 사용자 인터페이스로부터 수신하는 단계를 더 포함하는 방법.
  17. 제1항에 있어서,
    상기 식을 포함하는 하나 이상의 미리 정의된 식의 세트를 제공하는 단계를 더 포함하는 방법.
  18. 제1항에 있어서,
    상기 평가하는 단계는 상기 식을 주기적으로 평가하는 단계를 더 포함하는 방법.
  19. 제18항에 있어서,
    둘 이상의 결과를 사용해서 상기 데이터플로우 그래프의 하나 이상의 특징과 연관된 히스토그램(histogram)을 생성하는 단계를 더 포함하는 방법.
  20. 제18항에 있어서,
    상기 하나 이상의 식을 주기적으로 평가한 결과에 적어도 부분적으로 기초하여, 저장된 이력 데이터(historical data)를 갱신(update)하는 단계를 더 포함하는 방법.
  21. 제18항에 있어서,
    상기 하나 이상의 변수 중의 적어도 하나는, 상기 식을 평가하라는 요청을 상기 컴퓨팅 시스템에 의해 수신하기 전에 이력 데이터에 저장된 값에 의존하는, 방법.
  22. 제1항에 있어서,
    상기 추적 정보와 연관된 다수의 값을 상기 하나 이상의 필드 중의 하나의 필드 내의 벡터에 저장하는 단계를 더 포함하는 방법.
  23. 제22항에 있어서,
    상기 다수의 값의 각각은 특정 파라미터의 상이한 각각의 값과 연관되어 있으며, 상기 다수의 값의 각각은 상기 특정 파라미터의 각각의 값과 연관된 추적 정보를 통해 집계되는 특징의 값에 해당하는 것인, 방법.
  24. 하나 이상의 식(expression)을 평가하기 위한 컴퓨터 프로그램을 저장하는 컴퓨터로 판독가능한 저장 매체로서,
    상기 식은, 데이터 처리 성분 간의 작업 요소의 흐름을 나타내는 링크에 의해 연결되는 데이터 처리 성분을 나타내는 정점을 포함하는 데이터플로우 그래프의 하나 이상의 특징을 표현하며,
    상기 컴퓨터 프로그램은, 컴퓨터로 하여금,
    하나 이상의 변수(variable)에 대한 하나 이상의 연산을 포함하는 식을 평가하도록 하기 위한 명령어를 포함하며,
    상기 평가하는 것은,
    하나 이상의 필드(field)를 포함하는 데이터 구조를, 상기 데이터플로우 그래프의 표현의 분석에 기초하여 정의(define)하며;
    상기 데이터플로우 그래프의 실행 동안 상기 데이터플로우 그래프의 데이터 처리 성분들 중 하나 이상과 연관된 추적 정보(tracking information)를 수집(collect)하고;
    상기 추적 정보와 연관된 하나 이상의 값의 각각을 상기 데이터 구조의 대응하는 필드에 저장(store)하며; 및
    상기 식의 하나 이상의 변수의 각각을 저장된 값들 중 하나로 교체(replace)해서 상기 식을 평가한 결과를 산출하는 것을 포함하는, 컴퓨터로 판독가능한 저장 매체.
  25. 하나 이상의 식(expression)을 평가하기 위한 컴퓨팅 시스템으로서,
    상기 식은, 데이터 처리 성분 간의 작업 요소의 흐름을 나타내는 링크에 의해 연결되는 데이터 처리 성분을 나타내는 정점을 포함하는 데이터플로우 그래프의 하나 이상의 특징을 표현하며,
    상기 컴퓨팅 시스템은,
    하나 이상의 변수(variable)에 대한 하나 이상의 연산을 포함하는 식을 평가하도록 구성되는 하나 이상의 프로세서를 포함하며,
    상기 평가하는 것은,
    하나 이상의 필드(field)를 포함하는 데이터 구조를, 상기 데이터플로우 그래프의 표현의 분석에 기초하여 정의(define)하며;
    상기 데이터플로우 그래프의 실행 동안 상기 데이터플로우 그래프의 데이터 처리 성분들 중 하나 이상과 연관된 추적 정보(tracking information)를 수집(collect)하고;
    상기 추적 정보와 연관된 하나 이상의 값의 각각을 상기 데이터 구조의 대응하는 필드에 저장(store)하며; 및
    상기 식의 하나 이상의 변수의 각각을 저장된 값들 중 하나로 교체(replace)해서 상기 식을 평가한 결과를 산출하는 것을 포함하는, 컴퓨팅 시스템.
  26. 하나 이상의 식(expression)을 평가하기 위한 컴퓨팅 시스템으로서,
    상기 식은, 데이터 처리 성분 간의 작업 요소의 흐름을 나타내는 링크에 의해 연결되는 데이터 처리 성분을 나타내는 정점을 포함하는 데이터플로우 그래프의 하나 이상의 특징을 표현하며,
    상기 컴퓨팅 시스템은,
    하나 이상의 변수(variable)에 대한 하나 이상의 연산을 포함하는 식을 평가하기 위한 수단을 포함하며,
    상기 평가하는 것은,
    하나 이상의 필드(field)를 포함하는 데이터 구조를, 상기 데이터플로우 그래프의 표현의 분석에 기초하여 정의(define)하며;
    상기 데이터플로우 그래프의 실행 동안 상기 데이터플로우 그래프의 데이터 처리 성분들 중 하나 이상과 연관된 추적 정보(tracking information)를 수집(collect)하고;
    상기 추적 정보와 연관된 하나 이상의 값의 각각을 상기 데이터 구조의 대응하는 필드에 저장(store)하며; 및
    상기 식의 하나 이상의 변수의 각각을 저장된 값들 중 하나로 교체(replace)해서 상기 식을 평가한 결과를 산출하는 것을 포함하는, 컴퓨팅 시스템.
  27. 제24항에 있어서,
    상기 평가하는 것은 상기 데이터플로우 그래프가 실행되는 동안에 수행되는, 컴퓨터로 판독가능한 저장 매체.
  28. 제24항에 있어서,
    상기 추적 정보는 상기 데이터플로우 그래프의 하나 이상의 서브그래프의 하나 이상의 성분에 추가로 연관되는 것인, 컴퓨터로 판독가능한 저장 매체.
  29. 제28항에 있어서,
    상기 하나 이상의 변수 중의 적어도 제1 변수는, 상기 식에서, 상기 하나 이상의 서브그래프 중의 제1 서브그래프에 대한 참조를 포함하는 항으로서 표현되는, 컴퓨터로 판독가능한 저장 매체.
  30. 제29항에 있어서,
    상기 제1 변수는 상기 제1 서브그래프 내의 제1 성분에 대한 참조를 포함하는, 컴퓨터로 판독가능한 저장 매체.
  31. 제28항에 있어서,
    상기 하나 이상의 변수 중의 적어도 하나의 변수는 상기 데이터플로우 그래프, 상기 하나 이상의 서브그래프, 및 상기 하나 이상의 성분 중의 하나 이상의 특징에 대응하는 것인, 컴퓨터로 판독가능한 저장 매체.
  32. 제24항에 있어서,
    상기 식을 평가하는 것은 미리 정의된 조건에 따라 상기 식을 평가하는 것을 포함하는, 컴퓨터로 판독가능한 저장 매체.
  33. 제32항에 있어서,
    상기 미리 정의된 조건은 트리거 이벤트의 검출을 포함하는, 컴퓨터로 판독가능한 저장 매체.
  34. 제33항에 있어서,
    상기 트리거 이벤트는 하나 이상의 처리 리소스가 상기 하나 이상의 처리 리소스에 대한 요구에 비해 적다고 하는 판정을 포함하는, 컴퓨터로 판독가능한 저장 매체.
  35. 제24항에 있어서,
    상기 데이터 구조를 정의하는 것은, 상기 하나 이상의 필드의 타입과 개수 중의 하나 이상을 식별하기 위해 상기 데이터플로우 그래프를 횡단하는 것을 포함하는, 컴퓨터로 판독가능한 저장 매체.
  36. 제35항에 있어서,
    상기 데이터플로우 그래프를 횡단하는 것은, 상기 데이터플로우 그래프 중의, 상기 식과 연관된 부분을 횡단하는 것을 포함하는, 컴퓨터로 판독가능한 저장 매체.
  37. 제24항에 있어서,
    상기 데이터플로우 그래프의 데이터 처리 성분들 중 하나 이상과 연관된 추적 정보를 수집하는 것은, 상기 식에 적어도 부분적으로 기초하여 상기 추적 정보를 필터링하는 것을 포함하는, 컴퓨터로 판독가능한 저장 매체.
  38. 제24항에 있어서,
    상기 컴퓨터 프로그램은 상기 컴퓨터로 하여금 상기 결과를 하나 이상의 임계값과 비교하도록 하기 위한 명령어를 더 포함하는, 컴퓨터로 판독가능한 저장 매체.
  39. 제38항에 있어서,
    상기 컴퓨터 프로그램은 상기 컴퓨터로 하여금 상기 비교에 기초하여 통보를 생성하도록 하기 위한 명령어를 더 포함하는, 컴퓨터로 판독가능한 저장 매체.
  40. 제39항에 있어서,
    상기 컴퓨터 프로그램은 상기 컴퓨터로 하여금 상기 통보에 적어도 부분적으로 기초하여 하나 이상의 자동화 프로세스를 실행하도록 하기 위한 명령어를 더 포함하는, 컴퓨터로 판독가능한 저장 매체.
  41. 제24항에 있어서,
    상기 컴퓨터 프로그램은 상기 컴퓨터로 하여금 상기 식을 사용자 인터페이스로부터 수신하도록 하기 위한 명령어를 더 포함하는, 컴퓨터로 판독가능한 저장 매체.
  42. 제24항에 있어서,
    상기 컴퓨터 프로그램은 상기 컴퓨터로 하여금 상기 식을 포함하는 미리 정의된 식의 세트를 제공하도록 하기 위한 명령어를 더 포함하는, 컴퓨터로 판독가능한 저장 매체.
  43. 제24항에 있어서,
    상기 평가하는 것은 상기 식을 주기적으로 평가하는 것을 더 포함하는, 컴퓨터로 판독가능한 저장 매체.
  44. 제43항에 있어서,
    상기 컴퓨터 프로그램은 상기 컴퓨터로 하여금 둘 이상의 결과를 사용해서 상기 데이터플로우 그래프의 하나 이상의 특징과 연관된 히스토그램을 생성하도록 하기 위한 명령어를 더 포함하는, 컴퓨터로 판독가능한 저장 매체.
  45. 제43항에 있어서,
    상기 컴퓨터 프로그램은 상기 컴퓨터로 하여금 상기 하나 이상의 식을 주기적으로 평가한 결과에 적어도 부분적으로 기초하여, 저장된 이력 데이터를 갱신하도록 하기 위한 명령어를 더 포함하는, 컴퓨터로 판독가능한 저장 매체.
  46. 제43항에 있어서,
    상기 하나 이상의 변수 중의 적어도 하나는, 상기 식을 평가하라는 요청을 상기 컴퓨터에 의해 수신하기 전에 이력 데이터에 저장된 값에 의존하는, 컴퓨터로 판독가능한 저장 매체.
  47. 제24항에 있어서,
    상기 컴퓨터 프로그램은 상기 컴퓨터로 하여금 상기 추적 정보와 연관된 다수의 값을 상기 하나 이상의 필드 중의 하나의 필드 내의 벡터에 저장하도록 하기 위한 명령어를 더 포함하는, 컴퓨터로 판독가능한 저장 매체.
  48. 제47항에 있어서,
    상기 다수의 값의 각각은 특정 파라미터의 상이한 각각의 값과 연관되어 있으며, 상기 다수의 값의 각각은 상기 특정 파라미터의 각각의 값과 연관된 추적 정보를 통해 집계되는 특징의 값에 해당하는 것인, 컴퓨터로 판독가능한 저장 매체.
  49. 제25항에 있어서,
    상기 평가하는 것은 상기 데이터플로우 그래프가 실행되는 동안에 수행되는, 컴퓨팅 시스템.
  50. 제25항에 있어서,
    상기 추적 정보는 상기 데이터플로우 그래프의 하나 이상의 서브그래프의 하나 이상의 성분에 추가로 연관되는 것인, 컴퓨팅 시스템.
  51. 제50항에 있어서,
    상기 하나 이상의 변수 중의 적어도 제1 변수는, 상기 식에서, 상기 하나 이상의 서브그래프 중의 제1 서브그래프에 대한 참조를 포함하는 항으로서 표현되는, 컴퓨팅 시스템.
  52. 제51항에 있어서,
    상기 제1 변수는 상기 제1 서브그래프 내의 제1 성분에 대한 참조를 포함하는, 컴퓨팅 시스템.
  53. 제50항에 있어서,
    상기 하나 이상의 변수 중의 적어도 하나의 변수는 상기 데이터플로우 그래프, 상기 하나 이상의 서브그래프, 및 상기 하나 이상의 성분 중의 하나 이상의 특징에 대응하는 것인, 컴퓨팅 시스템.
  54. 제25항에 있어서,
    상기 식을 평가하는 것은 미리 정의된 조건에 따라 상기 식을 평가하는 것을 포함하는, 컴퓨팅 시스템.
  55. 제54항에 있어서,
    상기 미리 정의된 조건은 트리거 이벤트의 검출을 포함하는, 컴퓨팅 시스템.
  56. 제55항에 있어서,
    상기 트리거 이벤트는 하나 이상의 처리 리소스가 상기 하나 이상의 처리 리소스에 대한 요구에 비해 적다고 하는 판정을 포함하는, 컴퓨팅 시스템.
  57. 제25항에 있어서,
    상기 데이터 구조를 정의하는 것은, 상기 하나 이상의 필드의 타입과 개수 중의 하나 이상을 식별하기 위해 상기 데이터플로우 그래프를 횡단하는 것을 포함하는, 컴퓨팅 시스템.
  58. 제57항에 있어서,
    상기 데이터플로우 그래프를 횡단하는 것은, 상기 데이터플로우 그래프 중의, 상기 식과 연관된 부분을 횡단하는 것을 포함하는, 컴퓨팅 시스템.
  59. 제25항에 있어서,
    상기 데이터플로우 그래프의 데이터 처리 성분들 중 하나 이상과 연관된 추적 정보를 수집하는 것은, 상기 식에 적어도 부분적으로 기초하여 상기 추적 정보를 필터링하는 것을 포함하는, 컴퓨팅 시스템.
  60. 제25항에 있어서,
    상기 하나 이상의 프로세서는 상기 결과를 하나 이상의 임계값과 비교하도록 더 구성되는, 컴퓨팅 시스템.
  61. 제60항에 있어서,
    상기 하나 이상의 프로세서는 상기 비교에 기초하여 통보를 생성하도록 더 구성되는, 컴퓨팅 시스템.
  62. 제61항에 있어서,
    상기 하나 이상의 프로세서는 상기 통보에 적어도 부분적으로 기초하여 하나 이상의 자동화 프로세스를 실행하도록 더 구성되는, 컴퓨팅 시스템.
  63. 제25항에 있어서,
    상기 하나 이상의 프로세서는 상기 식을 사용자 인터페이스로부터 수신하도록 더 구성되는, 컴퓨팅 시스템.
  64. 제25항에 있어서,
    상기 하나 이상의 프로세서는 상기 식을 포함하는 미리 정의된 식의 세트를 제공하도록 더 구성되는, 컴퓨팅 시스템.
  65. 제25항에 있어서,
    상기 평가하는 것은 상기 식을 주기적으로 평가하는 것을 더 포함하는, 컴퓨팅 시스템.
  66. 제65항에 있어서,
    상기 하나 이상의 프로세서는 둘 이상의 결과를 사용해서 상기 데이터플로우 그래프의 하나 이상의 특징과 연관된 히스토그램을 생성하도록 더 구성되는, 컴퓨팅 시스템.
  67. 제65항에 있어서,
    상기 하나 이상의 프로세서는 상기 하나 이상의 식을 주기적으로 평가한 결과에 적어도 부분적으로 기초하여, 저장된 이력 데이터를 갱신하도록 더 구성되는, 컴퓨팅 시스템.
  68. 제65항에 있어서,
    상기 하나 이상의 변수 중의 적어도 하나는, 상기 하나 이상의 식을 평가하라는 요청을 상기 컴퓨팅 시스템에 의해 수신하기 전에 이력 데이터에 저장된 값에 의존하는, 컴퓨팅 시스템.
  69. 제25항에 있어서,
    상기 하나 이상의 프로세서는 상기 추적 정보와 연관된 다수의 값을 상기 하나 이상의 필드 중의 하나의 필드 내의 벡터에 저장하도록 더 구성되는, 컴퓨팅 시스템.
  70. 제69항에 있어서,
    상기 다수의 값의 각각은 특정 파라미터의 상이한 각각의 값과 연관되어 있으며, 상기 다수의 값의 각각은 상기 특정 파라미터의 각각의 값과 연관된 추적 정보를 통해 집계되는 특징의 값에 해당하는 것인, 컴퓨팅 시스템.
KR1020137004164A 2010-08-25 2011-08-25 데이터플로우 그래프 특징의 평가 방법, 시스템 및 컴퓨터 판독가능 저장 매체 KR101809573B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US37687810P 2010-08-25 2010-08-25
US61/376,878 2010-08-25
PCT/US2011/049131 WO2012027560A1 (en) 2010-08-25 2011-08-25 Evaluating dataflow graph characteristics

Publications (2)

Publication Number Publication Date
KR20130105604A KR20130105604A (ko) 2013-09-25
KR101809573B1 true KR101809573B1 (ko) 2018-01-18

Family

ID=44545974

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137004164A KR101809573B1 (ko) 2010-08-25 2011-08-25 데이터플로우 그래프 특징의 평가 방법, 시스템 및 컴퓨터 판독가능 저장 매체

Country Status (8)

Country Link
US (1) US9727438B2 (ko)
EP (1) EP2609507B1 (ko)
JP (1) JP5878537B2 (ko)
KR (1) KR101809573B1 (ko)
CN (1) CN103069394B (ko)
AU (1) AU2011293338C1 (ko)
CA (1) CA2806236C (ko)
WO (1) WO2012027560A1 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7877350B2 (en) * 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
EP2050013A4 (en) * 2006-08-10 2010-01-06 Ab Initio Software Llc DISTRIBUTION SERVICES IN DIAGRAM-BASED CALCULATIONS
KR101758670B1 (ko) 2007-07-26 2017-07-18 아브 이니티오 테크놀로지 엘엘시 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템
KR20150038758A (ko) * 2009-02-13 2015-04-08 아브 이니티오 테크놀로지 엘엘시 태스크 실행 관리
US8667329B2 (en) * 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
EP2583168B1 (en) 2010-06-15 2017-11-08 Ab Initio Technology LLC Dynamically loading graph-based computations
US20120188249A1 (en) * 2011-01-26 2012-07-26 Raytheon Company Distributed graph system and method
US9507682B2 (en) * 2012-11-16 2016-11-29 Ab Initio Technology Llc Dynamic graph performance monitoring
US10108521B2 (en) * 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
WO2015085152A1 (en) 2013-12-05 2015-06-11 Ab Initio Technology Llc Managing interfaces for dataflow graphs composed of sub-graphs
US8811172B1 (en) 2014-04-10 2014-08-19 tw telecom holdings inc. Network path selection using bandwidth prediction
CN106233261B (zh) 2014-04-17 2020-03-20 起元技术有限责任公司 处理环境的一体化监视和控制
US9607073B2 (en) * 2014-04-17 2017-03-28 Ab Initio Technology Llc Processing data from multiple sources
US10705877B2 (en) 2014-05-29 2020-07-07 Ab Initio Technology Llc Workload automation and data lineage analysis
US9959301B2 (en) * 2014-07-25 2018-05-01 Cisco Technology, Inc. Distributing and processing streams over one or more networks for on-the-fly schema evolution
AU2015328574B2 (en) * 2014-10-08 2020-12-10 Splunk Inc. Real-time reporting based on instrumentation of software
US9984105B2 (en) * 2014-12-04 2018-05-29 International Business Machines Corporation Automatic discovery of code and data stores that populate a user interface element
US10394692B2 (en) * 2015-01-29 2019-08-27 Signalfx, Inc. Real-time processing of data streams received from instrumented software
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
AU2016377516B2 (en) 2015-12-21 2020-01-30 Ab Initio Technology Llc Sub-graph interface generation
US20190303263A1 (en) * 2018-03-30 2019-10-03 Kermin E. Fleming, JR. Apparatus, methods, and systems for integrated performance monitoring in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
WO2020068927A2 (en) * 2018-09-25 2020-04-02 Ab Initio Technology Llc A dedicated audit port for implementing recoverability in outputting audit data
US10929110B2 (en) 2019-06-15 2021-02-23 International Business Machines Corporation AI-assisted UX design evaluation
US11132403B2 (en) 2019-09-06 2021-09-28 Digital Asset Capital, Inc. Graph-manipulation based domain-specific execution environment
US10915578B1 (en) 2019-09-06 2021-02-09 Digital Asset Capital, Inc. Graph outcome determination in domain-specific execution environment
US11567998B2 (en) * 2021-03-25 2023-01-31 Databricks, Inc. Dataflow graph processing
US11977580B2 (en) * 2021-11-30 2024-05-07 International Business Machines Corporation Partitioning and parallel loading of property graphs with constraints

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5475844A (en) 1992-11-27 1995-12-12 Nec Corporation Heavily loaded resource evaluation system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2756724B2 (ja) * 1990-08-30 1998-05-25 株式会社日立製作所 計算機システムの状態表示方法
JP3079881B2 (ja) 1993-08-10 2000-08-21 三菱自動車工業株式会社 道路交通状況推定方法および車両運転特性制御方法
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US20070118839A1 (en) * 2005-10-24 2007-05-24 Viktors Berstis Method and apparatus for grid project modeling language
US7870556B2 (en) * 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
KR20150042866A (ko) * 2008-12-02 2015-04-21 아브 이니티오 테크놀로지 엘엘시 데이터 관리 시스템 내의 데이터 집합의 맵핑 인스턴스

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5475844A (en) 1992-11-27 1995-12-12 Nec Corporation Heavily loaded resource evaluation system

Also Published As

Publication number Publication date
CA2806236A1 (en) 2012-03-01
CN103069394A (zh) 2013-04-24
WO2012027560A1 (en) 2012-03-01
JP2013536531A (ja) 2013-09-19
EP2609507B1 (en) 2019-05-15
JP5878537B2 (ja) 2016-03-08
AU2011293338B2 (en) 2015-08-20
CN103069394B (zh) 2016-06-22
AU2011293338A1 (en) 2013-01-31
AU2011293338C1 (en) 2016-03-10
US20120054255A1 (en) 2012-03-01
EP2609507A1 (en) 2013-07-03
KR20130105604A (ko) 2013-09-25
US9727438B2 (en) 2017-08-08
CA2806236C (en) 2021-06-15

Similar Documents

Publication Publication Date Title
KR101809573B1 (ko) 데이터플로우 그래프 특징의 평가 방법, 시스템 및 컴퓨터 판독가능 저장 매체
CN110050257B (zh) 可执行数据流图的差分
Ibidunmoye et al. Performance anomaly detection and bottleneck identification
US20160306613A1 (en) Code routine performance prediction using test results from code integration tool
US20100235349A1 (en) Progress analyzer for database queries
US8903757B2 (en) Proactive information technology infrastructure management
EP2831740B1 (en) Logical grouping of profile data
KR20180108446A (ko) Ict 인프라 관리 시스템 및 이를 이용한 ict 인프라 관리 방법
US20140279797A1 (en) Behavioral rules discovery for intelligent computing environment administration
US11900248B2 (en) Correlating data center resources in a multi-tenant execution environment using machine learning techniques
CN113396395A (zh) 有效评估日志模式的方法
CN104937548A (zh) 动态图的性能监视
CN112529528B (zh) 基于大数据流计算的工作流监控与告警方法、装置及系统
KR101830936B1 (ko) 데이터베이스와 애플리케이션을 위한 웹기반 성능개선 시스템
Roudjane et al. Real-time data mining for event streams
Xie et al. PBScaler: A Bottleneck-aware Autoscaling Framework for Microservice-based Applications
Dahab et al. Enhancing Software Development Process Quality based on Metrics Correlation and Suggestion.
Balliu et al. Bidal: Big data analyzer for cluster traces
KR101845208B1 (ko) 데이터베이스와 애플리케이션을 위한 웹기반 성능개선 방법
Hammad et al. Provenance for business events
Guerreiro Monitoring resources in function-as-a-service platforms
Napolitano Automated Learning of Quantitative Software Models from System Traces
Murdoch Development of a method for software maintenance using event logs
CN117850868A (zh) 安全防护组件自动编排方法和安全防护系统
Beszédes et al. Predicting Critical Problems from Execution Logs of a Large-Scale Software System

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