Runtime grouping of tuples in a streaming application

US9497250B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9497250-B2
Application numberUS-201213662931-A
CountryUS
Kind codeB2
Filing dateOct 29, 2012
Priority dateOct 29, 2012
Publication dateNov 15, 2016
Grant dateNov 15, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A system and method for modifying the processing within a streaming application are disclosed. The method may include identifying a grouping location at which it may be possible to group tuples during the runtime execution of a streaming application. In some embodiments, this may include identifying locations at which a runtime grouping condition may be added to one or more stream operators without adversely affecting the performance of a streaming application. The method may add a runtime grouping condition to a processing location within the plurality of stream operators of a streaming application, in some embodiments.

First claim

Opening claim text (preview).

What is claimed is: 1. A method for processing a stream of tuples, comprising: receiving a stream of tuples to be processed by a plurality of processing elements operating on one or more computer processors, each processing element having one or more of a plurality of stream operators, the plurality of stream operators including a first stream operator and a second stream operator determining, an output pattern at the second stream operator, the determining an output pattern includes determining that the second stream operator outputs a first quantity of one or more tuples for every second quantity of one or more tuples that the second stream operator receives, the first and second quantity of one or more tuples being included in the stream of tuples; identifying, based on the output pattern, a grouping location within the plurality of stream operators; and modifying, during runtime, processing at the first stream operator, the modifying including adding a runtime grouping condition to the first stream operator based on the second quantity of one or more tuples that the second stream operator receives such that the first stream operator groups a third quantity of one or more tuples that matches the second quantity of one or more tuples that the second stream operator receives, wherein the first stream operator sends the grouped third quantity to the second stream operator. 2. The method of claim 1 , wherein the grouping location includes a plurality of stream operators. 3. The method of claim 1 , wherein the grouping location includes the second stream operator configured to write output to a memory. 4. The method of claim 1 , further comprising: determining a first performance metric for a portion of the plurality of processing elements; determining, subsequent to modifying processing at the first stream operator, a second performance metric for the portion of the plurality of processing elements; determining that the second performance metric is worsened relative to the first performance metric; and modifying, in response to determining that the second performance metric is worsened relative to the first performance metric, processing at the first stream operator by adding another runtime grouping condition to the first stream operator such that the first stream operator groups another plurality of tuples to send to the second stream operator. 5. The method of claim 1 , wherein the output pattern includes generating an output in response to a particular time period having elapsed and the third quantity of tuples selected for inclusion in the group is determined to include tuples received at the first stream operator during the particular time period. 6. The method of claim 1 , wherein the output pattern at the second stream operator includes generating an output in response to a particular windowing condition having been met and the third quantity of tuples selected for inclusion in the group at the first stream operator is determined to include tuples received at the first stream operator that satisfy the windowing condition. 7. The method of claim 1 , wherein the output pattern includes generating an output in response to receiving a tuple having a particular attribute value as input from the first stream operator and the third quantity of tuples selected for inclusion in the group is determined to include a tuple having the particular attribute value. 8. The method of claim 1 , wherein the output pattern includes generating an output in response to receiving a punctuation as input from the first stream operator and the third quantity of tuples selected for inclusion in the group is determined to include the punctuation, wherein the punctuation is a control signal that is interleaved with the stream of tuples in order to notify the first stream operator to group the third quantity. 9. A method for processing a stream of tuples, comprising: receiving a stream of tuples to be processed by a plurality of processing elements operating on one or more computer processors, each processing element having one or more of a plurality of stream operators, the plurality of stream operators including a first stream operator and a second stream operator configured to receive tuples only from the first stream operator; determining, an output pattern at the second stream operator; identifying, based on the output pattern, a grouping location within the plurality of stream operators; and modifying, during runtime, processing at the first stream operator, the modifying including adding a runtime grouping condition to the first stream operator such that the first stream operator groups a plurality of tuples to send to the second stream operator, wherein the plurality of tuples selected for inclusion in the group at the first stream operator are determined based on a trial and error method, the trial and error method including: taking a first plurality performance metric baselines based on: CPU utilization, a number of processing elements on a compute node, network interface controller/card (NIC) bandwidth remaining, an average amount of time the second operator takes to process a tuple, and an average amount of time the tuple spends in the operator graph; adding a trial runtime grouping condition, the trial runtime grouping condition being a potential runtime grouping condition that is retained in the operator graph when performance metrics improve; taking a second plurality of performance metric baselines; determining, by comparing the first plurality of performance metric baselines with the second plurality of performance metric baselines, that the second plurality of performance metric baselines are an improvement over the first plurality of performance metric baselines; and retaining the trial runtime grouping condition as the runtime grouping condition. 10. A method for processing a stream of tuples, comprising: receiving a stream of tuples from a single source to be processed by a plurality of processing elements operating on one or more computer processors, each processing element having one or more of a plurality of stream operators, the plurality of stream operators including a first stream operator and a second stream operator; determining that a bandwidth of a Network Interface Card (NIC) is below a specified bandwidth threshold; identifying, based on the determining, a grouping location within the plurality of stream operators; and modifying, during runtime, processing at the first stream operator, the modifying including adding a runtime grouping condition to the first stream operator such that the first stream operator groups a plurality of tuples, of the stream of tuples from a single source, to send to the second stream operator to reduce a number of times the NIC is used.

Assignees

Inventors

Classifications

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9497250B2 cover?
A system and method for modifying the processing within a streaming application are disclosed. The method may include identifying a grouping location at which it may be possible to group tuples during the runtime execution of a streaming application. In some embodiments, this may include identifying locations at which a runtime grouping condition may be added to one or more stream operators wit…
Who is the assignee on this patent?
IBM
What technology area does this patent fall under?
Primary CPC classification H04L67/02. Mapped technology areas include Electricity.
When was this patent published?
Publication date Tue Nov 15 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).