IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アルテリックス インコーポレイテッドの特許一覧

特表2024-506610データ処理タスクの制御によるメモリ管理
<>
  • 特表-データ処理タスクの制御によるメモリ管理 図1
  • 特表-データ処理タスクの制御によるメモリ管理 図2
  • 特表-データ処理タスクの制御によるメモリ管理 図3
  • 特表-データ処理タスクの制御によるメモリ管理 図4
  • 特表-データ処理タスクの制御によるメモリ管理 図5
  • 特表-データ処理タスクの制御によるメモリ管理 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-14
(54)【発明の名称】データ処理タスクの制御によるメモリ管理
(51)【国際特許分類】
   G06F 9/48 20060101AFI20240206BHJP
   G06F 12/02 20060101ALI20240206BHJP
【FI】
G06F9/48 300G
G06F12/02 510A
G06F9/48 300C
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023547761
(86)(22)【出願日】2022-02-08
(85)【翻訳文提出日】2023-10-04
(86)【国際出願番号】 US2022015653
(87)【国際公開番号】W WO2022173746
(87)【国際公開日】2022-08-18
(31)【優先権主張番号】17/171,595
(32)【優先日】2021-02-09
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】519405569
【氏名又は名称】アルテリックス インコーポレイテッド
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】アダム デイビッド ライリー
(72)【発明者】
【氏名】クリストファー エイチ.キングズリー
(72)【発明者】
【氏名】セルギー マルダ
(72)【発明者】
【氏名】コスティアンティン シュプリク
(72)【発明者】
【氏名】レオニド リシュク
(72)【発明者】
【氏名】ロマン サフチェンコ
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA12
(57)【要約】
モジュールは、データ処理タスクをスケジュールすることによって、コンピュータ内のメモリの使用を管理する。モジュールは、コンピュータに関連付けられたメモリがデータ処理タスクを実行するために利用可能であるかどうかを判定する。メモリがデータ処理タスクを実行するために利用可能でないと決定することに応答して、モジュールは、データ処理タスクのためのファクトリオブジェクトを生成する。ファクトリオブジェクトは、データ処理タスクを生成するための命令を指定する。ファクトリオブジェクトが生成された後、モジュールは、要求を受信して、データ処理タスクを実行する。モジュールは、要求に応答してファクトリオブジェクトを使用してデータ処理タスクを生成し、メモリがデータ処理タスクを実行するために利用可能であるかどうかを再び決定する。メモリがデータ処理タスクを実行するために現在利用可能であるという決定に応答して、モジュールは、メモリを使用してデータ処理タスクを実行する。
【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、
第1の時間において、コンピュータに関連付けられたメモリがデータ処理タスクを実行するために利用可能であるかどうかを決定するステップと、
前記第1の時間において、前記メモリが前記データ処理タスクを実行するために利用可能ではないと決定することに応答して、前記データ処理タスクのためのファクトリオブジェクトを生成するステップであって、前記ファクトリオブジェクトは、前記データ処理タスクを生成するための命令を指定するステップと、
前記ファクトリオブジェクトを生成した後で、前記データ処理タスクを実行する要求を受信するステップと、
前記要求に応答して、前記ファクトリオブジェクトを使用して前記データ処理タスクを生成するステップと、
前記第1の時間の後の第2の時間において、前記メモリが前記データ処理タスクを実行するために利用可能であると決定するステップと、
前記メモリを使用して前記データ処理タスクを実行するステップと、
を含むコンピュータ実装方法。
【請求項2】
前記ファクトリオブジェクトは、実行されると、コンピュータプロセッサに前記データ処理タスクを生成させるプログラム命令を含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記ファクトリオブジェクトは、前記データ処理タスクのメモリフットプリントよりも小さいメモリフットプリントを有する、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記第1の時間において、前記メモリが前記データ処理タスクを実行するために利用可能でないと決定することに応答して、前記データ処理タスクをデータ処理タスクのキューに入れるステップと、
前記第2の時間において、前記メモリが前記データ処理タスクを実行するために利用可能であると決定することに応答して、前記データ処理タスクのパフォーマンスをスケジューリングし、前記データ処理タスクのキューから前記データ処理タスクを除去するステップと、をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記第1の時間の後、前記第2の時間の前の第3の時間において、前記メモリが前記データ処理タスクを実行するために利用可能であるかどうかを決定するステップと、
前記第3の時間において、前記メモリが前記データ処理タスクを実行するために利用可能でないと決定することに応答して、前記データ処理タスクを前記キューに戻すステップと、をさらに含む、請求項4に記載のコンピュータ実装方法。
【請求項6】
前記第1の時間において、前記メモリが前記データ処理タスクを実行するために利用可能であるかどうかを決定するステップは、
前記データ処理タスクを実行するために必要なメモリの量を決定するステップと、
他のデータ処理タスクのために予約されていないメモリの量を決定するステップと、
前記データ処理タスクを実行するために必要な前記メモリの量が、他のデータ処理タスクのために予約されていない前記メモリの量よりも多いかどうかを決定するステップと、
前記データ処理タスクを実行するために必要な前記メモリの量が、他のデータ処理タスクのために予約されていない前記メモリの量よりも多いと決定することに応答して、前記メモリが前記データ処理タスクを実行するために利用可能でないと決定するステップと、
を含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記ファクトリオブジェクトを生成した後、前記第2の時間において、前記メモリが前記データ処理タスクを実行するために利用可能であると決定するステップは、
前記データ処理タスクを実行するために必要なメモリの量を決定するステップと、
他のデータ処理タスクのために予約されていないメモリの量を決定するステップと、
前記データ処理タスクを実行するために必要な前記メモリの量が、他のデータ処理タスクのために予約されていない前記メモリの量よりも多いかどうかを決定するステップと、
前記データ処理タスクを実行するために必要な前記メモリの量が、他のデータ処理タスクのために予約されていない前記メモリの量よりも多いと決定することに応答して、前記データ処理タスクの縮小された範囲を実行するために必要なメモリの量を決定するステップと、
前記データ処理タスクの前記縮小された範囲を実行するために必要な前記メモリの量が、他のデータ処理タスクのために予約されていない前記メモリの量以下であると決定するステップと、を含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
コンピュータ内のメモリを管理するコンピュータシステムであって、
コンピュータプロセッサと、
実行可能なコンピュータプログラム命令を格納する非一時的コンピュータ可読記憶媒体であって、前記コンピュータプログラム命令は、実行されると前記コンピュータプロセッサに、
第1の時間において、前記コンピュータに関連付けられたメモリがデータ処理タスクを実行するために利用可能であるかどうかを決定することと、
前記第1の時間において、前記メモリが前記データ処理タスクを実行するために利用可能ではないと決定することに応答して、前記データ処理タスクのためのファクトリオブジェクトを生成することであって、前記ファクトリオブジェクトは、前記データ処理タスクを生成するための命令を指定することと、
前記ファクトリオブジェクトを生成した後で、前記データ処理タスクを実行する要求を受信することと、
前記要求に応答して、前記ファクトリオブジェクトを使用して前記データ処理タスクを生成することと、
前記第1の時間の後の第2の時間において、前記メモリが前記データ処理タスクを実行するために利用可能であると決定することと、
前記メモリを使用して前記データ処理タスクを実行することと、
を含む動作を実行させる非一時的コンピュータ可読記憶媒体と、
を備えるコンピュータシステム。
【請求項9】
前記ファクトリオブジェクトは、実行されると、コンピュータプロセッサに前記データ処理タスクを生成させるプログラム命令を含む、請求項8に記載のコンピュータシステム。
【請求項10】
前記ファクトリオブジェクトは、前記データ処理タスクのメモリフットプリントよりも小さいメモリフットプリントを有する、請求項8に記載のコンピュータシステム。
【請求項11】
前記動作は、前記第1の時間において、前記メモリが前記データ処理タスクを実行するために利用可能でないと決定することに応答して、前記データ処理タスクをデータ処理タスクのキューに入れることと、
前記第2の時間において、前記メモリが前記データ処理タスクを実行するために利用可能であると決定することに応答して、前記データ処理タスクのパフォーマンスをスケジューリングし、前記データ処理タスクのキューから前記データ処理タスクを除去することと、をさらに含む、請求項8に記載のコンピュータシステム。
【請求項12】
前記動作は、前記第1の時間の後、前記第2の時間の前の第3の時間において、前記メモリが前記データ処理タスクを実行するために利用可能であるかどうかを決定することと、
前記第3の時間において、前記メモリが前記データ処理タスクを実行するために利用可能でないと決定することに応答して、前記データ処理タスクを前記キューに戻すことと、をさらに含む、請求項11に記載のコンピュータシステム。
【請求項13】
前記第1の時間において、前記メモリが前記データ処理タスクを実行するために利用可能であるかどうかを決定することは、
前記データ処理タスクを実行するために必要なメモリの量を決定することと、
他のデータ処理タスクのために予約されていないメモリの量を決定することと、
前記データ処理タスクを実行するために必要な前記メモリの量が、他のデータ処理タスクのために予約されていない前記メモリの量よりも多いかどうかを決定することと、
前記データ処理タスクを実行するために必要な前記メモリの量が、他のデータ処理タスクのために予約されていない前記メモリの量よりも多いと決定することに応答して、前記メモリが前記データ処理タスクを実行するために利用可能でないと決定することと、
を含む、請求項8に記載のコンピュータシステム。
【請求項14】
前記ファクトリオブジェクトを生成した後、前記第2の時間において、前記メモリが前記データ処理タスクを実行するために利用可能であると決定することは、
前記データ処理タスクを実行するために必要なメモリの量を決定することと、
他のデータ処理タスクのために予約されていないメモリの量を決定することと、
前記データ処理タスクを実行するために必要な前記メモリの量が、他のデータ処理タスクのために予約されていない前記メモリの量よりも多いかどうかを決定することと、
前記データ処理タスクを実行するために必要な前記メモリの量が、他のデータ処理タスクのために予約されていない前記メモリの量よりも多いと決定することに応答して、前記データ処理タスクの縮小された範囲を実行するために必要なメモリの量を決定することと、
前記データ処理タスクの前記縮小された範囲を実行するために必要な前記メモリの量が、他のデータ処理タスクのために予約されていない前記メモリの量以下であると決定することと、を含む、請求項8に記載のコンピュータシステム。
【請求項15】
コンピュータ内のメモリを管理するための実行可能なコンピュータプログラム命令を格納する非一時的コンピュータ可読記憶媒体であって、前記コンピュータプログラム命令は、実行されるとコンピュータプロセッサに動作を実行させる命令を含み、前記動作は、
第1の時間において、コンピュータに関連付けられたメモリがデータ処理タスクを実行するために利用可能であるかどうかを決定することと、
前記第1の時間において、前記メモリが前記データ処理タスクを実行するために利用可能ではないと決定することに応答して、前記データ処理タスクのためのファクトリオブジェクトを生成することであって、前記ファクトリオブジェクトは、前記データ処理タスクを生成するための命令を指定することと、
前記ファクトリオブジェクトを生成した後で、前記データ処理タスクを実行する要求を受信することと、
前記要求に応答して、前記ファクトリオブジェクトを使用して前記データ処理タスクを生成することと、
前記第1の時間の後の第2の時間において、前記メモリが前記データ処理タスクを実行するために利用可能であると決定することと、
前記メモリを使用して前記データ処理タスクを実行することと、
を含む非一時的コンピュータ可読記憶媒体。
【請求項16】
前記ファクトリオブジェクトは、実行されると、コンピュータプロセッサに前記データ処理タスクを生成させるプログラム命令を含む、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項17】
前記ファクトリオブジェクトは、前記データ処理タスクのメモリフットプリントよりも小さいメモリフットプリントを有する、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
前記動作は、前記第1の時間において、前記メモリが前記データ処理タスクを実行するために利用可能でないと決定することに応答して、前記データ処理タスクをデータ処理タスクのキューに入れることと、
前記第2の時間において、前記メモリが前記データ処理タスクを実行するために利用可能であると決定することに応答して、前記データ処理タスクのパフォーマンスをスケジューリングし、前記データ処理タスクのキューから前記データ処理タスクを除去することと、をさらに含む、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
前記第1の時間において、前記メモリが前記データ処理タスクを実行するために利用可能であるかどうかを決定することは、
前記データ処理タスクを実行するために必要なメモリの量を決定することと、
他のデータ処理タスクのために予約されていないメモリの量を決定することと、
前記データ処理タスクを実行するために必要な前記メモリの量が、他のデータ処理タスクのために予約されていない前記メモリの量よりも多いかどうかを決定することと、
前記データ処理タスクを実行するために必要な前記メモリの量が、他のデータ処理タスクのために予約されていない前記メモリの量よりも多いと決定することに応答して、前記メモリが前記データ処理タスクを実行するために利用可能でないと決定することと、
を含む、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項20】
前記ファクトリオブジェクトを生成した後、前記第2の時間において、前記メモリが前記データ処理タスクを実行するために利用可能であると決定することは、
前記データ処理タスクを実行するために必要なメモリの量を決定することと、
他のデータ処理タスクのために予約されていないメモリの量を決定することと、
前記データ処理タスクを実行するために必要な前記メモリの量が、他のデータ処理タスクのために予約されていない前記メモリの量よりも多いかどうかを決定することと、
前記データ処理タスクを実行するために必要な前記メモリの量が、他のデータ処理タスクのために予約されていない前記メモリの量よりも多いと決定することに応答して、前記データ処理タスクの縮小された範囲を実行するために必要なメモリの量を決定することと、
前記データ処理タスクの前記縮小された範囲を実行するために必要な前記メモリの量が、他のデータ処理タスクのために予約されていない前記メモリの量以下であると決定することと、を含む、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
記述される実施形態は、概してコンピュータメモリ管理に関し、特に、データ処理タスクの制御によるメモリ使用の管理に関する。
【背景技術】
【0002】
ビッグデータ分析などのデータ分析プラットフォームの成長により、データ処理は大量のデータを処理してビジネス価値のある情報を抽出するツールへと拡大した。例えば、小規模企業は、専用のコンピューティング及び人的リソースを使用するサードパーティのデータ分析環境を利用して、外部データプロバイダー、内部データソース(ローカルコンピュータのファイルなど)、ビッグデータストア、クラウドベースのデータ(ソーシャルメディア情報など)のような、様々なデータソースからの膨大な量のデータを、収集、処理、及び分析し得る。データ分析で使用されるこのような大規模なデータセットを、有用な定量的及び定性的情報を抽出する方法で処理することは、典型的に、強力なコンピュータデバイスに実装された複雑なソフトウェアツールが必要である。
【0003】
加えて、複数のデータ分析処理を同時に実行して、異なるデータソースからの大規模なデータセットに効率的にアクセスし、処理し、分析することができる。このようなマルチプロセッシング環境では、データ分析プラットフォームが処理間で利用可能なメモリを効果的に共有することが不可欠である。しかし、現在利用可能なデータ分析プラットフォームは、複数のデータ分析処理を実行するという課題に直面している。例えば、従来のデータ分析プラットフォームは、典型的には、処理のための空きメモリ空間を抑え、その空き空間が実際には処理を実行するのに十分でない場合であっても、その空きメモリ空間が他の処理によって使用されることを防止し、非効率的なメモリ使用を引き起こす。これはまた、特に多数の処理が同時に実行されている場合に、過剰なメモリ使用を引き起こす可能性がある。その結果、パフォーマンスのボトルネックが発生し、データ分析プラットフォームの機能を妨げ、データの処理を遅らせ、データから抽出された情報の品質を低下させる可能性がある。
【発明の概要】
【0004】
上記及び他の問題は、コンピュータ内のメモリを管理するための方法、コンピュータシステム、及びコンピュータ可読記憶媒体によって対処される。方法の実施形態は、第1の時間において、コンピュータに関連付けられたメモリがデータ処理タスクを実行するために利用可能であるかどうかを決定することを含む。方法は、第1の時間において、メモリがデータ処理タスクを実行するために利用可能でないと決定することに応答して、データ処理タスクのためのファクトリオブジェクトを生成することをさらに含む。ファクトリオブジェクトは、データ処理タスクを生成するための命令を指定する。方法は、ファクトリオブジェクトを生成した後、データ処理タスクを実行する要求を受信することをさらに含む。方法は、要求に応答して、ファクトリオブジェクトを使用することによってデータ処理タスクを生成することをさらに含む。方法は、第1の時間の後である第2の時間において、メモリがデータ処理タスクを実行するために利用可能であると決定することをさらに含む。方法はまた、メモリを使用することによってデータ処理タスクを実行することを含む。
【0005】
コンピュータシステムの一実施形態は、コンピュータプログラム命令を実行するためのコンピュータプロセッサを含む。システムはまた、実行されるとコンピュータプロセッサに動作を実行させるコンピュータプログラム命令を格納する非一時的なコンピュータ可読記憶媒体も含む。動作は、第1の時間において、コンピュータに関連付けられたメモリがデータ処理タスクを実行するために利用可能であるかどうかを決定することを含む。動作は、第1の時間において、メモリがデータ処理タスクを実行するために利用可能でないと決定することに応答して、データ処理タスクのためのファクトリオブジェクトを生成することをさらに含む。ファクトリオブジェクトは、データ処理タスクを生成するための命令を指定する。動作は、ファクトリオブジェクトを生成した後、データ処理タスクを実行する要求を受信することをさらに含む。方法は、要求に応答して、ファクトリオブジェクトを使用することによってデータ処理タスクを生成することをさらに含む。方法は、第1の時間の後である第2の時間において、メモリがデータ処理タスクを実行するために利用可能であると決定することをさらに含む。動作はまた、メモリを使用することによってデータ処理タスクを実行することを含む。
【0006】
非一時的なコンピュータ可読メモリの実施形態は、実行可能なコンピュータプログラム命令を格納する。命令は、第1の時間において、コンピュータに関連付けられたメモリがデータ処理タスクを実行するために利用可能であるかどうかを決定するための動作を実行するために実行可能である。動作は、第1の時間において、メモリがデータ処理タスクを実行するために利用可能でないと決定することに応答して、データ処理タスクのためのファクトリオブジェクトを生成することをさらに含む。ファクトリオブジェクトは、データ処理タスクを生成するための命令を指定する。動作は、ファクトリオブジェクトを生成した後、データ処理タスクを実行する要求を受信することをさらに含む。方法は、要求に応答して、ファクトリオブジェクトを使用することによってデータ処理タスクを生成することをさらに含む。方法は、第1の時間の後である第2の時間において、メモリがデータ処理タスクを実行するために利用可能であると決定することをさらに含む。動作はまた、メモリを使用することによってデータ処理タスクを実行することを含む。
【図面の簡単な説明】
【0007】
図1】一実施形態による、データ分析システムを含むデータ分析環境を示すブロック図である。
図2】一実施形態による、データを処理するデータ分析システムを使用して作成されたワークフローを示すブロック図である。
図3】一実施形態による、データ分析アプリケーションを示すブロック図である。
図4】一実施形態による、データ処理タスクの制御を通じてメモリ使用を管理するプロセスを示す概略図である。
図5】一実施形態による、データ処理タスクの制御を通じてメモリ使用を管理するプロセスを示すフローチャートである。
図6】一実施形態による、図1のデータ分析システムとして使用するための典型的なコンピュータシステムの機能図を示すハイレベルブロック図である。
【0008】
図面は、例示のみを目的として、多様な実施形態を示している。当業者は、本明細書に例示された構造及び方法の代替的実施形態が、本明細書に記載の本発明の原理から逸脱することなく利用することができることを以下の説明から容易に認識する。様々な図面における同様の参照記号及び表示は、同様の要素を指す。
【発明を実施するための形態】
【0009】
図1は、一実施形態によるデータ分析システム110を含むデータ分析環境100を示すブロック図である。環境100は、ネットワーク130を介してデータ分析システム110に接続された複数のデータソース120をさらに含む。例示された環境100は、複数のデータソース120に結合された1つのデータ分析システム110のみを含むが、実施形態は、複数のデータ分析システム及び単一のデータソースを有することができる。
【0010】
データ分析システム110は、大量のデータを処理するために利用されるコンピュータベースのシステムである。データは、ネットワーク130を介して複数のデータソース120から収集(collect)、採取(gather)、又はアクセスされる。データ分析システム110は、多種多様なデータソースからのデータ処理タスクに用いられるスケーラブルなソフトウェアツール及びハードウェアリソースを実装することができる。データ処理タスク(タスクとも呼ばれる)は、データを処理するためのコンピューティング動作である。データ処理タスクは、例えば、データにアクセスすること、データを準備すること、データをブレンドすること、データをパッケージすること、データを分析すること、データに対する他のタイプの動作、又はそれらのいくつかの組み合わせを含む。例えば、データ分析システム110は、データ集約型プロセス及びワークフロー、例えば、図2と併せて以下に説明するワークフローの実行をサポートする。データ分析システム110は、本明細書で説明されるメモリ管理技術を含むデータ分析機能を実装するために使用されるコンピューティングデバイスとすることができる。データ分析システム110は、複数のタスクを並行して実行することができる。利用可能なコンピュータリソース(例えば、メモリ)を有するとき、実行する準備ができている複数のタスクから実行するタスクを選択することができる。
【0011】
図1の実施形態では、データ分析システム110は、メモリ140及びデータ分析アプリケーション150を含む。メモリ140は、データ分析動作で使用されるデータを格納し、データ格納領域へのアクセスを提供する。いくつかの実施形態では、メモリ140は、ランダムアクセスメモリ(RAM)、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、他の形態のコンピュータメモリ、又はそれらのいくつかの組み合わせを含む。メモリ140の使用は、データ分析アプリケーション150によって管理される。
【0012】
データ分析アプリケーション150は、メモリ140の使用を制御する方法でデータ処理タスクを実行するソフトウェアアプリケーションである。例えば、データ処理タスクを受信した後、データ分析アプリケーション150は、データ処理タスクのためのデータを格納するためにメモリ140のブロックを直接ロックするのではなく、まず、メモリ140がデータ処理タスクのために利用可能であるかどうか、例えば、メモリ140の予約されていないブロックがタスクのデータを格納するのに十分であるかどうかを決定する。メモリ140が利用可能であると決定することに応答して、データ分析アプリケーション150は、次いで、メモリブロックをロックし、データ処理タスクを実行する。
【0013】
しかしながら、データ分析アプリケーション150が、メモリ140の予約されていないブロックがタスクを実行するのに不十分であると決定する状況では、データ処理タスクの実行を保留する。いくつかの実施形態では、データ分析アプリケーション150は、次回タスクを実行しようとするときに、後でファクトリオブジェクトからタスクを生成することができるように、データ処理タスクを生成する命令を指定するファクトリオブジェクトを生成する。いくつかの他の実施形態では、データ分析アプリケーション150は、データ処理タスクをデータ処理タスクのキューに入れる。キューは、例えば、十分なメモリ(及び/又は他のタイプの必要なコンピュータリソース)が不足しているために実行する準備ができていないが、メモリが利用可能になったときに実行できるタスクを含む。他のタスクのためにロックされたメモリブロックは、それらのタスクが完了すると解放され得ることを考えると、メモリ140は、後でタスクのための十分な空き領域を有することができる。データ分析アプリケーション150は、メモリがデータ処理タスクのために利用可能になるかどうかを後でチェックし、メモリが利用可能になるときに、ファクトリオブジェクトを使用することによって、又はキューからデータ処理タスクを取得し、データ処理タスクを実行することができる。
【0014】
ファクトリオブジェクト又はキューを使用することによって、データ分析アプリケーション150は、タスクを実行する前に、タスクのデータの入力又は読み取りのためにメモリブロックを割り当てる必要がなくなる。このようにして、タスクを実行するのに十分な利用可能なメモリがあるまで、メモリブロックはロックされない。データ分析アプリケーション150は、ロックが回避されたメモリブロックを使用して、他のデータ処理タスクを実行することができる。例えば、メモリが400MBの空き領域のみを有するが、タスクを実行するために600MBが必要とされる状況では、従来のデータ分析プラットフォームは、典型的には、とにかくタスクのために400MBのメモリブロックをロックし、タスクを実行するために別の200MBが利用可能になるまで待つ。400MBは、待機中に「無駄」である。従来のデータ分析プラットフォームとは異なり、データ分析アプリケーション150は、400MBをロックしない。むしろ、その400MBを使って、メモリがタスクに十分な空き領域ができるのを待っている間に400MBを超えない必要とする他のデータ処理タスクを実行する。したがって、データ分析アプリケーション150によって実装されるメモリ管理技術は、メモリ140の使用を最適化し、データ処理効率を改善する。
【0015】
データ分析アプリケーション150によって実装されるメモリ管理技術はまた、複数のデータ処理タスクが同時にメモリをロックする状況を回避し、したがって、メモリ140の過剰な使用を防止する。また、ファクトリオブジェクトは、タスクのメモリフットプリントよりも小さいメモリフットプリントを有し得るため、データ分析アプリケーション150は、タスク自体とは対照的に、ファクトリオブジェクトをメモリ140に格納することによって、メモリ使用をさらに改善する。したがって、データ分析アプリケーション150は、従来のデータ分析プラットフォームよりも有利なメモリ管理技術を提供する。
【0016】
いくつかの実施形態では、メモリ140は、比較的小さなデータ格納領域への比較的高速なアクセスを提供するプライマリメモリ140と、比較的大きなデータ格納領域への比較的遅いアクセスを提供するセカンダリメモリ150とを含む。データ分析アプリケーション150は、プライマリ及びセカンダリメモリの使用を管理し、効率的なデータ処理を提供する。
【0017】
場合によっては、データ分析アプリケーション150は、複数のエンドユーザに対するデータ分析ツール及びマクロへのネットワーク化された、又はクラウドベースのアクセスをサポートするソフトウェアを提供する。一例として、データ分析アプリケーション150は、モバイルアプリケーションストア又は他のクラウドベースのサービスと同様の方法で、ユーザが分析を共有、閲覧、及び消費することを可能にする。分析データ、マクロ、及びワークフローは、例えば、データ分析システム110の他のユーザによってアクセスすることができる、より小規模でカスタマイズ可能な分析アプリケーション(すなわち、アプリ)としてパッケージ化及び実行することができる。場合によっては、公開された分析アプリへのアクセスは、データ分析システム110によって管理され得、すなわち、アクセスを許可又は取り消し、それによってアクセス制御及びセキュリティ機能を提供する。データ分析アプリケーション150は、作成、展開、公開、反復、更新などの分析アプリに関連付けられた機能を実行することができる。
【0018】
さらに、データ分析アプリケーション150は、分析結果にアクセス、準備、ブレンド、分析、出力の機能など、データ分析に関与する様々な段階で実行される機能をサポートすることができる。いくつかの場合では、データ分析アプリケーション150は、様々なデータソースにアクセスし、例えば、データのストリーム内の生データを取得することができる。データ分析アプリケーション150によって収集されたデータストリームは、生データの複数のレコードを含むことができ、生データは異なるフォーマット及び構造である。少なくとも1つのデータストリームを受信した後、データ分析アプリケーション150は、データストリームのレコードをデータ分析動作の入力として使用されることを可能にする動作を実行することができる。さらに、予測分析(例えば、予測モデリング、クラスタリング、データ調査)などのレコードの統計的、定性的、又は定量的処理に関与する分析機能は、データ分析アプリケーション150によって実装することができる。
【0019】
データ分析アプリケーション150はまた、ソフトウェアツールをサポートし、ビジュアルグラフィカルユーザインターフェース(GUI)を介して、反復可能なワークフローを設計及び実行することができる。一例として、データ分析アプリケーション150に関連付けられたGUIは、データブレンド、データ処理、及び高度なデータ分析のためのドラッグアンドドロップワークフロー環境を提供する。さらに、ワークフローには、特定の処理動作又はデータ分析機能を実行する一連のデータ処理ツールを含めることができる。ワークフローの一部である各ツールは、ツールに固有のデータに関連する機能を実行する。一例として、ワークフローは、入力/出力、準備、参加、予測、空間的、調査、ならびに解析及び変換動作のうちの1つ又は複数を含む様々なデータ分析機能を実装するツールを含むことができる。ワークフローの詳細は、図2に関連して説明される。
【0020】
上述のように、データソース120は、電子データをデータ分析システム110に提供する。データソース120は、コンピュータ、データベース、又はクラウドストレージシステムであり得る。データソース120はまた、別のソースからデータを取り出すことができるコンピュータシステムであってもよい。データソース120は、データ分析システム110から離れていてもよく、ネットワーク130を介してデータを提供してもよい。さらに、データソース120の一部又はすべては、データ分析システムに直接に結合され、ネットワーク130を介してデータを渡すことなく、データを提供してもよい。データソース120から提供されるデータは典型的に、データレコードに編成され、各データレコードは1つ又は複数の値を含む。例えば、データソースによって提供されるデータレコードは、一連のコンマ区切りされた値を含む場合がある。データは、データ分析システムを使用する企業に関連する情報を記述する。例えば、データソース120からのデータは、ウェブサイト上でアクセス可能なコンテンツ及び/又はソーシャルメディアアプリケーションとのコンピュータベースの相互作用(例えば、クリック追跡データ)を記述することができる。
【0021】
ネットワーク130は、データ分析システム110とデータソース120との間の通信経路を表す。一実施形態では、ネットワーク130は、インターネットであり、標準の通信技術及び/又はプロトコルを使用する。ネットワーク130を介して交換されるデータは、ハイパーテキストマークアップ言語(HTML)、拡張マークアップ言語(XML)などを含む技術及び/又はフォーマットを使用して表されることができる。別の実施形態では、エンティティは、上記の技術の代わりに、又はそれに加えて、カスタム及び/又は専用のデータ通信技術を使用することができる。
【0022】
図2は、一実施形態による、データを処理するデータ分析システム110を使用して作成されたワークフロー200を示すブロック図である。一実施形態では、ワークフロー200は、データ分析システム110のGUIによってサポートされるビジュアルワークフロー環境を使用して作成される。ビジュアルワークフロー環境は、ワークフローを設計するためのソフトウェアコードを提供する必要性をなくし、及びワークフローによって実装される複雑な数式を識別する必要性をなくす一連のドラッグアンドドロップツールを可能にする。別の実施形態では、ワークフロー200は、拡張マークアップ言語(XML)ドキュメントなどのドキュメント内に作成され、記述される。ワークフロー200は、データ分析システム110のコンピュータデバイスによって実行される。しかしながら、他の実施形態では、ワークフロー200は、ネットワーク(例えば、ネットワーク130)を介してデータ分析システム110に通信可能に接続され得る別のコンピュータデバイスに配備される。
【0023】
ワークフローは、特定の処理動作又はデータ分析機能を実行する一連のツールを含むことができる。一般的な例として、ワークフローのツールは、入力/出力、準備、参加、予測、空間、調査、ならびに解析及び変換動作の1つ又は複数のデータ分析機能を実行することができる。ワークフローを実装することは、データ分析プロセスを定義、実行、自動化することが含まれ、データはワークフロー内の各ツールに渡され、各ツールは受信したデータに対してそれぞれの処理動作を実行する。個々のレコードの集約グループを含むレコードは、ワークフローのツールを通過させることができ、このことは、個々の処理動作がデータに対してより効率的に動作することを可能にする。このようなデータ集約技術は、大量のデータを処理する場合でも、ワークフローの開発及び実行の速度を上げることができる。ワークフローは、繰り返し可能な一連の動作を定義、又はその他の方法で構造化し、指定されたツールの動作順序を指定することができる。場合によっては、ワークフローに含まれるツールは、直線的な順序で実行される。別の場合、複数のツールは並行して実行される。
【0024】
図示のように、図2のワークフロー200は、入力ツール205及び206、ならびにブラウズツール230として示される入力/出力ツールを含む。入力ツール205及び206は、特定のデータソース120からレコードにアクセスするように機能する。入力ツール205及び206は、アクセスされたレコードをワークフローに取り込み、ワークフロー200の後続のツールにレコードを提供する。この例では、入力ツール205は、アクセスされたレコードをフィルタツール210に提供し、入力ツール206は、アクセスされたレコードを選択ツール211に提供する。ブラウズツール230は、ワークフロー200の最後に位置し、ワークフロー200の上流ツールのそれぞれの実行から生じる出力を受信する。ブラウズツール230は、この例ではワークフロー200の終わりに位置するが、ブラウズツール230は、ワークフロー内の任意の時点で追加され、ワークフローの上流ツールの実行からの結果をレビュー及び検証することができる。
【0025】
図2の例を続けると、ワークフロー200は、フィルタツール210、選択ツール211、フォーミュラツール215、及びサンプルツール212として示される準備ツールを含む。フィルタツール210は、式に基づいてレコードを照会し、式を満たすレコードを含む真のストリーム及び式を満たさないレコードを含む偽のストリームの2つのストリームにデータを分ける。選択ツール211は、フィールドの選択、選択解除、並べ替え、及び名前変更、フィールドタイプ又はサイズの変更、ならびに説明の割り当てを行うために使用されることができる。フォーミュラツール215は、1つ又は複数の式を使用してフィールドを作成又は更新し、多種多様な計算及び/又は演算を実行する。サンプルツール212は、受信したレコードのストリームを、レコードの数、割合、又はランダムなセットに限定する。
【0026】
ワークフロー200は、複数のデータソースをブレンドする結合ツール220も含む。具体的には、結合ツール220は、共通のフィールド(又はレコード位置)に基づいて2つの入力データストリームを組み合わせる。図2のワークフロー200は、さらなる分析に使用されるフォーマットにデータを再構築及び再形成することができる解析及び変換ツールであるサマライズツール225を含むように示されている。サマライズツール225は、グループ化、合計、カウント、空間処理、及び文字列連結によってデータの要約化を実行することができる。一実施形態では、サマライズツール225によって生成された出力は、計算の結果を含む。
【0027】
いくつかの実施形態では、ワークフロー200の実行は、入力ツール205が、フィルタツール210及びフォーミュラツール215を通じて、すべてのレコードが処理されて結合ツール220に到達するまで、レコードを一度に1つずつ渡すことになる。その後、入力ツール206は、選択ツール211及びサンプルツール212を通じて、レコードが同じ結合ツール220に渡されるまで、レコードを一度に1つずつ渡し始める。ワークフロー200のいくつかの個々のツールは、データの最後のブロックを処理しながらデータのブロックの読み取りを開始したり、ソートツールなどのコンピュータ集約的な動作を複数の部分に分けたりするなど、独自の並列動作を実装する機能を持つことができる。しかしながら、いくつかの既存のワークフロー技術では、レコードのセットからの各レコードは、ワークフローの各ツールによって、パイプライン方式で、処理動作を実行するために複数のレコードを必要とするワークフローのツール(例えば、ソートツール、結合ツール、サマライズツールなど)に到達するまで、一度に1レコードずつ個別に処理される。
【0028】
図3は、一実施形態によるデータ分析アプリケーション300を示すブロック図である。データ分析アプリケーション300は、指定されたワークフローに従って、効率的なデータ処理及びメモリ管理を提供する。データ分析アプリケーション300は、図1のデータ分析アプリケーション150の実施形態である。図3の実施形態では、データ分析アプリケーション300は、データ受信モジュール310、ツールモジュール320、メモリ割り当てモジュール330、スケジューリングモジュール340、及びデータサービングモジュール350を含む。当業者は、他の実施形態がここで記述したものとは異なる及び/又は他のコンポーネントを有することができ、機能が異なる方法でコンポーネントの間に分散できることを認識するであろう。
【0029】
データ受信モジュール310は、データソース、例えば、データソース120からデータレコードを受信し、データレコードをデータ分析アプリケーション300内の他のモジュールに提供する。一実施形態では、データ受信モジュール310は、図2に示される入力ツール206などのデータ分析アプリケーション内のツール間の相互作用として機能する。別の実施形態では、データ受信モジュール310は存在せず、データ受信モジュール310の機能は、ツールによって実行される。
【0030】
ツールモジュール320は、ワークフロー内の特定のデータ処理タスクを実行するデータ処理ツールのセット(ツールとも称される)を提供する。ツールは、データ受信モジュール310によってデータソースから受信されたデータレコード上で動作する。いくつかの実施形態では、ツールモジュール320は、図2と併せて説明されるワークフロー200に含まれるツールを提供する。ツールモジュール320の1つ又は複数のツールは、ワークフローのデータレコードを処理しながら並列に実行し得る。ツールは、複数の別個のスレッドとして実行され、各スレッドは、プロセッサ302の別個のコアで動作する。例えば、結合ツールの実施形態は、結合動作に関連付けられたタスクを複数のスレッドに分配して、プロセッサ302の並列処理能力を活用する。ツールは、その動作を実行するためのタスクを作成する。ツールの動作は、1つ又は複数のタスクを含む。各タスクは、スレッドによって実行されるためにツールのスレッドに割り当てられる。いくつかの実施形態では、ツールは、動作のタスクを作成する前に、動作に必要なメモリを要求する。要求されたメモリは、メモリ割り当てモジュール330によってツールに割り当てることができる。割り当てられたメモリは、タスクを実行するためにスレッドによって共有することができる。
【0031】
タスクが割り当てられるスレッドは、データ分析アプリケーション150の他のモジュールと相互作用し、タスクを実行する。いくつかの実施形態では、スレッドは、メモリ可用性要求をメモリ割り当てモジュール330に送信して、タスクを実行するために利用可能な十分なメモリがあるかどうかを照会する。一実施形態では、メモリ可用性要求は、タスクを実行するために必要とされるメモリの量(「必要なメモリ」)を指定する。必要なメモリの量は、スレッドによって決定され得るか、又はタスクがスレッドに割り当てられたときにスレッドによって受信され得る。
【0032】
スレッドは、メモリ割り当てモジュール330からメモリ可用性応答を受信する。メモリ可用性応答は、タスクに利用可能な十分なメモリがあるかどうかを示す情報を含む。いくつかの実施形態では、スレッドは、メモリ可用性応答に基づいて、メモリがタスクを実行するために利用可能であるかどうかを決定する。例えば、メモリ可用性応答は、利用可能なメモリの量を指定する。一実施形態では、スレッドは、メモリ可用性応答における利用可能なメモリの量を、必要なメモリの量と比較する。スレッドは、利用可能なメモリ量が必要なメモリ量を下回らないことを比較で示した場合、十分なメモリが利用可能であると決定する。それ以外の場合、スレッドは、メモリがタスクに使用できないと決定する。
【0033】
別の実施形態では、スレッドが利用可能なメモリの量が必要なメモリの量よりも少ないと決定した後でさえ、スレッドは、タスクの縮小された範囲を実行するために必要なメモリの量、及びタスクの縮小された範囲を実行するために必要なメモリの量で利用可能なメモリの量を決定する。比較の結果、タスクの縮小された範囲を実行するために必要なメモリの量が利用可能なメモリの量よりも少ないことを示す場合、スレッドは、十分なメモリが利用可能であると決定する。
【0034】
十分なメモリが利用可能である状況では、スレッドはメモリ割り当てモジュール330にメモリ割り当て要求を送信して、メモリ割り当てモジュール330に必要なメモリをタスクに割り当てることを要求する。スレッドはまた、スケジューリングモジュール340にスケジューリング要求を送信して、タスクのそのパフォーマンスをスケジューリングする。次いで、スレッドは、割り当てられたメモリでスケジュールされたようにタスクを実行し、メモリ割り当てモジュール330に、タスクが完了した後に(例えば、メモリ解放要求をメモリ割り当てモジュール330に送信することによって)割り当てられたメモリを解放するように要求する。
【0035】
利用可能な十分なメモリがない状況では、スレッドは、タスクのためのファクトリオブジェクトを生成し、ファクトリオブジェクトをスケジューリングモジュール320に登録する。あるいは、スレッドは、スケジューリングモジュール340によって維持されるデータ処理タスクのキューにタスクを入れる。その後、スレッドは自由に他のタスクを実行できるようになる。
【0036】
タイムウィンドウが経過すると、スレッド(同じスレッドかもしれず、又は異なるスレッドかもしれない)は、例えば、スケジューリングモジュール340から、要求を受信して、タスクを実行する。要求に応答して、スレッドは、タスクファクトリからタスクを生成し、第2の時間のために、タスク実行を試みる。スレッドは、メモリ割り当てモジュール330に別のメモリ可用性要求を送信し、第2の時間のために、メモリがタスクに利用可能かどうかを決定する。他のデータ処理タスクに使用されるメモリは、これらのタスクがタイムウィンドウ中に完了したときに解放され得るため、メモリは、タイムウィンドウ中に利用可能になり得る。その場合、スレッドは、上述のようにタスクを実行するプロセス、すなわち、メモリ割り当てを要求し、タスクのスケジューリングを要求し、タスクを実行し、タスクが終了した後にメモリを解放する。しかしながら、メモリがまだ利用可能でない場合、スレッドは、スケジューリングモジュール340に、タスクをキューに保持することを要求する。
【0037】
メモリ割り当てモジュール330は、ツールモジュール320によるメモリ使用を管理する。メモリ割り当てモジュール330は、データ分析アプリケーション150内のツールモジュール320からメモリ可用性要求を受信する。メモリ可用性要求は、例えば、ツールがワークフローを処理している間に、ツールモジュール320のツールから受信され得る。このようなメモリ可用性要求に応答して、メモリ割り当てモジュール330は、対応するタスクのために予約できる利用可能であるメモリの量を決定する。いくつかの実施形態では、利用可能なメモリは、他のデータ処理タスクのために予約されていないメモリである。メモリ割り当てモジュール330は、必要なメモリの量を利用可能なメモリの量と比較する。必要なメモリの量が利用可能なメモリの量よりも多いと決定した後、メモリ割り当てモジュール330は、タスクに利用可能なメモリがないことを示すメモリ利用可能性応答を生成し、一方、必要なメモリの量が利用可能なメモリの量よりも多くないと決定した後、タスクに利用可能なメモリがあることを示すメモリ利用可能応答を生成する。メモリ割り当てモジュール330は、メモリ可用性応答をツールモジュール320に送信する。
【0038】
メモリ割り当てモジュール330はまた、ツールがワークフローを実装するときに、ツールモジュール320のツールによって処理されているデータレコードを格納するためのメモリを割り当て、解放する。いくつかの実施形態では、メモリ割り当てモジュール330は、ツールモジュール320のツールからメモリ割り当て要求を受信して、メモリのブロックを予約する。このようなメモリ割り当て要求に応答して、メモリ割り当てモジュールは、論理的に連続したメモリブロックを割り当て、要求ツールにメモリブロックへのハンドルを返し、ブロックが要求ツールによってロックされ、他のツールに利用できなくなるようにする。いくつかの実施形態では、メモリ割り当て要求は、ブロックサイズを指定し、メモリ割り当てモジュール330は、ブロックサイズに基づいてブロックを割り当てる。
【0039】
メモリ割り当てモジュール330はまた、メモリのブロックへのハンドルを指定するメモリ解放要求を受信する。メモリ割り当てモジュール330は、ブロックが後続の要求において再割り当てされるために利用可能であるように、そのようなメモリブロックを解放する。メモリ割り当てモジュール330は、再割り当て可能である空きブロックのリストを保持する。
【0040】
一実施形態では、メモリ割り当てモジュール330は、データ分析アプリケーション150に専用である。メモリ割り当てモジュール330は、データ分析システム110によって提供されるメモリ管理機能と別々に相互作用し得る。例えば、メモリ割り当てモジュール330は、データ分析システム110上で動作するオペレーティングシステムによって提供される異なるメモリ管理システムと相互作用し得る。メモリ割り当てモジュール330は、オペレーティングシステムのメモリ管理システムから離れてデータ分析アプリケーション150のメモリ動作を抽象化する。
【0041】
スケジューリングモジュール340は、ツールモジュール320と相互作用して、ツールモジュール320によるデータ処理タスクのパフォーマンスをスケジュールする。一例では、ツールモジュール320のツールは、タスクを作成し、スケジューリングモジュール340と通信して、タスクのパフォーマンスをスケジュールする。ツールは、スケジューリングモジュール340と直接タスクをスケジュールすることができ、及び/又はスケジューリングモジュール340がタスクを照会するためにスケジューリングモジュール340とファクトリオブジェクトとしてタスクを登録することができる。別の例では、スケジューリングモジュール340は、ツールのスレッドを監視し、タスクを実行するための自由なスレッド(「フリースレッド」)を検出する。フリースレッドは、データ処理タスクを実行していないアイドルスレッドであり得、したがって、新しいタスクを実行するために利用可能である。フリースレッドの検出に応答して、スケジューリングモジュール340は、タスクを照会する。
【0042】
いくつかの実施形態では、スケジューリングモジュール340は、登録されたファクトリオブジェクトを要求することによってタスクを照会して、タスクを生成する。スケジューリングモジュール340は、実行する準備ができている(すなわち、タスクを実行するのに十分なメモリがある)タスクを生成することができないという応答、又は準備ができたタスクを生成することができるという応答をファクトリオブジェクトから受信し得る。いくつかの他の実施形態では、スケジューリングモジュール340は、キューを確認することによってタスクを照会し、キュー内の任意のタスクが実行される準備ができているかどうかを決定する。タスク(ファクトリオブジェクトから又はキューからのいずれか)が実行される準備ができていることに応答して、スケジューリングモジュール340は、タスクをフリースレッドに割り当て、スレッドによるタスクの実行をスケジュールする。スケジューリングモジュール340はまた、スレッドを用いて将来のタスクをスケジューリングしてもよい。
【0043】
データ出力モジュール350は、データ分析アプリケーション150によって実行された処理の結果を出力する。すなわち、データ出力モジュール350は、ワークフロー200の実行によって生成された処理されたデータレコードを受信し、データレコードを他のシステム及び/又は人間のレビュアーに利用可能にする。例えば、データ出力モジュール350は、企業に関連付けられた人間のレビュアーが、企業に関連付けられたデータレコードの処理から生じるワークフロー200の出力をレビューすることができるGUIを提供し得る。
【0044】
図4は、一実施形態による、データ処理タスクをスケジューリングすることによってメモリ使用を管理するプロセスを示す概略図である。プロセスは、メモリ割り当てモジュール330、ツールモジュール320、及びスケジューリングモジュール340によって実行される。図4は、データ処理タスクを実行する過程における3つのモジュールの様々なアクションを示す。
【0045】
プロセスは、例えば、ツールモジュール320にタスクを生成するように要求することによって、スケジューリングモジュール340がタスクについて照会することから始まる。要求に応答して、ツールモジュール320は、そのタスクを生成する。ツールモジュール320はまた、例えばメモリ可用性要求をメモリ割り当てモジュール330に送信することによって、メモリ割り当てモジュール330を使用してメモリを要求する。ツールモジュール320は、タスクを実行するために必要なメモリの量を決定し、メモリ可用性要求にその量を含み得る。
【0046】
メモリ割り当てモジュール330は、メモリがタスクを実行するために利用可能でないことを示す応答をツールモジュール320に送信する。応答は、他のタスクを実行するためにロックされていないメモリの量が、このタスクを実行するために必要とされるメモリの量よりも少ないという決定に基づいて生成され得る。メモリ割り当てモジュール330から応答を受信した後、ツールモジュール320は、タスクを実行しないことを決定する。むしろ、タスクをキューに入れるか、又はスケジューリングモジュール340にファクトリオブジェクトを登録して、タスクが後で実行されるためにファクトリオブジェクトから生成され得るようにする。スケジューリングモジュール340は、必要なメモリが利用可能になったときにタスクを実行させることを試みる。
【0047】
一定時間が経過した後、スケジューリングモジュール340は、ファクトリオブジェクト又はキューにタスクを照会する。例えば、スケジューリングモジュール340は、スレッドがタスクを実行するために空きであると決定し、決定に応答して、ファクトリオブジェクト又はキューを照会する。タスクがファクトリオブジェクトから生成されるか、又はキューから取得された後、スケジューリングモジュール340は、タスクをフリースレッドに割り当てる。ツールモジュール320は、要求を受信した後、ファクトリオブジェクトからタスクを生成し、メモリ割り当てモジュール330と共に再びメモリを要求する。今回、メモリ割り当てモジュール330からの応答はまた、メモリが利用可能ではないということである。再び、ツールモジュール320は、タスクを実行しないことを決定する。タスクがキューから取得される実施形態では、タスクは、キューに戻される。
【0048】
さらに時間が経過した後、スケジューリングモジュール340は、タスクに対するフリースレッド(前回のフリースレッドと同じ又は異なるスレッドであってもよい)要求を再び識別する。前回と同様に、スケジューリングモジュール340は、タスクを(ファクトリオブジェクト又はキューのいずれかから)メモリ割り当てモジュール330と共にメモリを要求するフリースレッドに割り当てる。今回、ツールモジュール320は、メモリ割り当てモジュール330から、メモリがタスクを実行するために利用可能であるという応答を受信する。応答に基づいて、ツールモジュール320は、タスクのためのメモリのブロックをロックするようにメモリ割り当てモジュール330に要求し、タスクをスケジュールするようにスケジューリングモジュール320に要求する。ツールモジュールからの要求に応答して、メモリ割り当てモジュール330は、メモリブロックがロックされ、他のタスクを実行するために使用することができないように、タスクのためにメモリブロックを予約し、スケジューリングモジュール320は、タスクの実行をスケジュールし、キューからタスクを除去する。ツールモジュール320は、ロックされたメモリブロックでスケジュールされたようにタスクを実行し、タスクを完了した後にロックされたメモリブロックを解放する。
【0049】
図5は、一実施形態による、データ処理タスクをスケジューリングすることによってメモリの使用を管理するプロセスを示すフローチャートである。いくつかの実施形態では、方法は、データ分析アプリケーション150によって実行されるが、他の実施形態では、方法における動作の一部又はすべてが他のエンティティによって実行され得る。いくつかの実施形態では、フローチャートの動作は、異なる順序で実行され、異なる及び/又は追加のステップを含むことができる。
【0050】
データ分析アプリケーション150は、第1の時間において、コンピュータに関連付けられたメモリがデータ処理タスクを実行するために利用可能であるかどうかを決定する。いくつかの実施形態では、データ分析アプリケーション150は、データ処理タスクを実行するために必要なメモリの量を決定する。データ分析アプリケーション150はまた、他のデータ処理タスクのために予約されていないメモリの量を決定する。次いで、データ分析アプリケーション150は、データ処理タスクを実行するために必要なメモリの量が、他のデータ処理タスクのために予約されていないメモリの量よりも多いかどうかを決定する。データ処理タスクを実行するために必要なメモリの量が、他のデータ処理タスクのために予約されていないメモリの量よりも多いと決定することに応答して、データ分析アプリケーション150は、メモリがデータ処理タスクを実行するために利用可能でないと決定する。
【0051】
いくつかの実施形態では、第1の時間において、メモリがデータ処理タスクを実行するために利用可能でないと決定することに応答して、データ分析アプリケーション150は、データ処理タスクをデータ処理タスクのキューに入れる。データ分析アプリケーション150は、メモリがタスクのために利用可能になった後に、後でキューからタスクを取得してタスクを実行することができる。
【0052】
データ分析アプリケーション150は、第1の時間において、メモリがデータ処理タスクを実行するために利用可能でないと決定することに応答して、データ処理タスクのためのファクトリオブジェクトを生成する。ファクトリオブジェクトは、命令を指定して、データ処理タスクを生成する。いくつかの実施形態では、ファクトリオブジェクトは、実行されると、コンピュータプロセッサにデータ処理タスクを生成させるプログラム命令を含む。ファクトリオブジェクトは、メモリに格納される。ファクトリオブジェクトは、データ処理タスクのメモリフットプリントよりも小さいメモリフットプリントを有し得る。
【0053】
ファクトリオブジェクトを生成した後、データ分析アプリケーション150は、データ処理タスクを実行する要求を受信する。いくつかの実施形態では、データ分析アプリケーション150は、第1の時間において、メモリが利用可能でないと決定してから所定の時間が経過した後に要求を受信する。いくつかの他の実施形態では、データ分析アプリケーション150は、データ分析アプリケーション150がタスクを実行するために利用可能であるツールを有するという検出に応答して要求を受信する。
【0054】
要求に応答して、データ分析アプリケーション150は、ファクトリオブジェクトを使用することによって、例えば、ファクトリオブジェクト内のプログラム命令を実行することによって、データ処理タスクを生成する。データ分析アプリケーション150は、第1の時間の後の第2の時間において、メモリがデータ処理タスクを実行するために利用可能であることを決定する。いくつかの実施形態では、データ分析アプリケーション150は、データ処理タスクを実行するために必要なメモリの量、及び他のデータ処理タスクのために予約されていないメモリの量を決定する。次いで、データ分析アプリケーション150は、データ処理タスクを実行するために必要なメモリの量が、他のデータ処理タスクのために予約されていないメモリの量よりも多いかどうかを決定する。データ処理タスクを実行するために必要なメモリの量が、他のデータ処理タスクのために予約されていないメモリの量よりも多いと決定することに応答して、データ分析アプリケーション150は、データ処理タスクの縮小された範囲を実行するために必要なメモリの量を決定する。データ分析アプリケーション150は、データ処理タスクの縮小された範囲を実行するために必要なメモリの量が、他のデータ処理タスクのために予約されていないメモリの量以下であるかどうかを決定する。データ処理タスクの縮小された範囲を実行するために必要なメモリの量が、他のデータ処理タスクのために予約されていないメモリの量以下であると決定することに応答して、データ分析アプリケーション150は、メモリがデータ処理タスクを実行するために利用可能であると決定する。
【0055】
いくつかの実施形態では、第2の時間において、メモリがデータ処理タスクを実行するために利用可能であると決定することに応答して、データ分析アプリケーション150は、タスクをスケジュールし、タスクをキューから除去する。
【0056】
いくつかの実施形態では、データ分析アプリケーション150は、第3の時間において、メモリがデータ処理タスクを実行するために利用可能であるかどうかを決定する。第3の時間は、第1の時間の後、第2の時間の前である。第3の時間において、メモリがデータ処理タスクを実行するために利用可能でないという決定に応答して、データ分析アプリケーション150は、スケジューリングモジュール330に、データ処理タスクをキューに戻すように要求する。
【0057】
データ分析アプリケーション150は、メモリを使用することによってデータ処理タスクを実行する。データ分析アプリケーション150がタスクを完了した後、メモリを解放する。
【0058】
図6は、一実施形態による、図1の機械学習サーバ110として使用するための典型的なコンピュータシステム600の機能図を示すハイレベルブロック図である。
【0059】
例示されるコンピュータシステムは、チップセット604に結合された少なくとも1つのプロセッサ602を含む。プロセッサ602は、同じダイ上に多様なプロセッサコアを含むことができる。チップセット604は、メモリコントローラーハブ620及び入力/出力(I/O)コントローラーハブ622を含む。メモリ606及びグラフィックアダプター612は、メモリコントローラーハブ620に結合されて、ディスプレイ618は、グラフィックアダプター612に結合される。ストレージデバイス608、キーボード610、ポインティングデバイス614、及びネットワークアダプター616は、I/Oコントローラーハブ622に結合され得る。いくつかの別の実施形態では、コンピュータシステム600は、追加のコンポーネント、より少ないコンポーネント、又は異なるコンポーネントを有してもよく、コンポーネントは、異なる結合であってもよい。例えば、コンピュータシステム600の実施形態は、ディスプレイ及び/又はキーボードを欠く場合がある。加えて、コンピュータシステム600は、いくつかの実施形態では、ラック搭載ブレードサーバーとして、又はクラウドサーバーインスタンスとしてインスタンス化され得る。
【0060】
メモリ606は、プロセッサ602によって使用される命令及びデータを保持する。いくつかの実施形態では、メモリ606は、ランダムアクセスメモリである。ストレージデバイス608は、非一時的なコンピュータ可読記憶媒体である。ストレージデバイス608は、HDD、SSD、又は他のタイプの非一時的なコンピュータ可読記憶媒体とすることができる。機械学習サーバ110によって処理及び分析されたデータは、メモリ606及び/又はストレージデバイス608に格納され得る。
【0061】
ポインティングデバイス614は、マウス、トラックボール、又は他のタイプのポインティングデバイスであり得、キーボード610と組み合わせて使用して、データをコンピュータシステム600に入力する。グラフィックアダプター612は、画像及び他の情報をディスプレイ618に表示する。いくつかの実施形態において、ディスプレイ618は、ユーザ入力及び選択を受信するためのタッチスクリーン機能を含む。ネットワークアダプター616は、コンピュータシステム600をネットワーク160に結合する。
【0062】
コンピュータシステム600は、本明細書で説明される機能を提供するためのコンピュータモジュールを実行するように適合されている。本明細書で使用される「モジュール」という用語は、特定の機能を提供するためのコンピュータプログラム命令及びその他のロジックを指す。モジュールは、ハードウェア、ファームウェア、及び/又はソフトウェアで実装されることができる。モジュールは、1つ又は複数のプロセスを含むことができ、及び/又はプロセスの一部のみによって提供されることができる。モジュールは、典型的にストレージデバイス608に格納され、メモリ606にロードされ、プロセッサ602によって実行される。
【0063】
コンポーネントの特定の命名、用語の大文字化、属性、データ構造、又はその他のプログラミング又は構造上の側面は、必須又は重要ではなく、説明されている実施形態を実装するメカニズムは、異なる名前、フォーマット、又はプロトコルを有してもよい。さらに、システムは、説明したようにハードウェアとソフトウェアの組み合わせを介して、又は完全にハードウェア要素で実装され得る。また、本明細書で記述される様々なシステムコンポーネント間の機能の特定の分割は、単なる例示であり、必須ではない。単一のシステムコンポーネントによって実行される機能は、代わりに多様なコンポーネントによって実行される場合があり、多様なコンポーネントによって実行される機能は、代わりに単一のコンポーネントによって実行される場合がある。
【0064】
上記の説明のいくつかの部分は、情報の操作のアルゴリズム及び記号表現に関する特徴を示している。これらのアルゴリズムの記述及び表現は、データ処理技術の当業者が自分の作業の内容を他の当業者に最も効果的に伝えるために使用する手段である。これらの操作は、機能的又は論理的に説明されているが、コンピュータプログラムによって実装されると理解される。さらに、一般性を失うことなく、これらの操作の配置をモジュール又は機能名で参照すると便利な場合もある。
【0065】
上記の説明から明らかなように特に明記しない限り、説明全体を通して、「処理する」又は「コンピューティングする」又は「計算する」又は「決定する」又は「表示する」などの用語を利用する説明は、コンピュータシステムのメモリ又はレジスタ、又はその他の情報ストレージ、伝送又は表示デバイス内の物理(電子)量として表されるデータを操作及び変換する、コンピュータシステム又は同様の電子コンピューティングデバイスのアクションとプロセスと関連する。
【0066】
本明細書で説明される特定の実施形態は、アルゴリズムの形式で説明されるプロセスステップ及び命令を含む。実施形態のプロセスステップ及び命令は、ソフトウェア、ファームウェア、又はハードウェアで実施でき、ソフトウェアで具体化する場合、ダウンロードしてリアルタイムネットワークオペレーティングシステムによって使用される異なるプラットフォームに常駐し、そこから操作できることに留意されたい。
【0067】
最後に、明細書で使用される文言は、主に読みやすさと説明目的のために選択されたものであり、本発明の主題を描写又は制限するために選択されたものではないことに留意されたい。したがって、実施形態の開示は、例示的であることを意図しているが、限定を意図するものでない。
図1
図2
図3
図4
図5
図6
【手続補正書】
【提出日】2023-11-24
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0028
【補正方法】変更
【補正の内容】
【0028】
図3は、一実施形態によるデータ分析アプリケーション300を示すブロック図である。データ分析アプリケーション300は、指定されたワークフローに従って、効率的なデータ処理及びメモリ管理を提供する。データ分析アプリケーション300は、図1のデータ分析アプリケーション150の実施形態である。図3の実施形態では、データ分析アプリケーション300は、データ受信モジュール310、ツールモジュール320、メモリ割り当てモジュール330、スケジューリングモジュール340、及びデータ出力モジュール350を含む。当業者は、他の実施形態がここで記述したものとは異なる及び/又は他のコンポーネントを有することができ、機能が異なる方法でコンポーネントの間に分散できることを認識するであろう。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0030
【補正方法】変更
【補正の内容】
【0030】
ツールモジュール320は、ワークフロー内の特定のデータ処理タスクを実行するデータ処理ツールのセット(ツールとも称される)を提供する。ツールは、データ受信モジュール310によってデータソースから受信されたデータレコード上で動作する。いくつかの実施形態では、ツールモジュール320は、図2と併せて説明されるワークフロー200に含まれるツールを提供する。ツールモジュール320の1つ又は複数のツールは、ワークフローのデータレコードを処理しながら並列に実行し得る。ツールは、複数の別個のスレッドとして実行され、各スレッドは、プロセッサ602の別個のコアで動作する。例えば、結合ツールの実施形態は、結合動作に関連付けられたタスクを複数のスレッドに分配して、プロセッサ602の並列処理能力を活用する。ツールは、その動作を実行するためのタスクを作成する。ツールの動作は、1つ又は複数のタスクを含む。各タスクは、スレッドによって実行されるためにツールのスレッドに割り当てられる。いくつかの実施形態では、ツールは、動作のタスクを作成する前に、動作に必要なメモリを要求する。要求されたメモリは、メモリ割り当てモジュール330によってツールに割り当てることができる。割り当てられたメモリは、タスクを実行するためにスレッドによって共有することができる。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0035
【補正方法】変更
【補正の内容】
【0035】
利用可能な十分なメモリがない状況では、スレッドは、タスクのためのファクトリオブジェクトを生成し、ファクトリオブジェクトをスケジューリングモジュール340に登録する。あるいは、スレッドは、スケジューリングモジュール340によって維持されるデータ処理タスクのキューにタスクを入れる。その後、スレッドは自由に他のタスクを実行できるようになる。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0048
【補正方法】変更
【補正の内容】
【0048】
さらに時間が経過した後、スケジューリングモジュール340は、タスクに対するフリースレッド(前回のフリースレッドと同じ又は異なるスレッドであってもよい)要求を再び識別する。前回と同様に、スケジューリングモジュール340は、タスクを(ファクトリオブジェクト又はキューのいずれかから)メモリ割り当てモジュール330と共にメモリを要求するフリースレッドに割り当てる。今回、ツールモジュール320は、メモリ割り当てモジュール330から、メモリがタスクを実行するために利用可能であるという応答を受信する。応答に基づいて、ツールモジュール320は、タスクのためのメモリのブロックをロックするようにメモリ割り当てモジュール330に要求し、タスクをスケジュールするようにスケジューリングモジュール340に要求する。ツールモジュールからの要求に応答して、メモリ割り当てモジュール330は、メモリブロックがロックされ、他のタスクを実行するために使用することができないように、タスクのためにメモリブロックを予約し、スケジューリングモジュール340は、タスクの実行をスケジュールし、キューからタスクを除去する。ツールモジュール320は、ロックされたメモリブロックでスケジュールされたようにタスクを実行し、タスクを完了した後にロックされたメモリブロックを解放する。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0056
【補正方法】変更
【補正の内容】
【0056】
いくつかの実施形態では、データ分析アプリケーション150は、第3の時間において、メモリがデータ処理タスクを実行するために利用可能であるかどうかを決定する。第3の時間は、第1の時間の後、第2の時間の前である。第3の時間において、メモリがデータ処理タスクを実行するために利用可能でないという決定に応答して、データ分析アプリケーション150は、スケジューリングモジュール340に、データ処理タスクをキューに戻すように要求する。
【国際調査報告】