JP2020077416A - 平均オブジェクト参照に基づいた、コピー・ガベージ・コレクションのためのワーク・スティーリングにおけるスピン・カウントの削減 - Google Patents

平均オブジェクト参照に基づいた、コピー・ガベージ・コレクションのためのワーク・スティーリングにおけるスピン・カウントの削減 Download PDF

Info

Publication number
JP2020077416A
JP2020077416A JP2019201186A JP2019201186A JP2020077416A JP 2020077416 A JP2020077416 A JP 2020077416A JP 2019201186 A JP2019201186 A JP 2019201186A JP 2019201186 A JP2019201186 A JP 2019201186A JP 2020077416 A JP2020077416 A JP 2020077416A
Authority
JP
Japan
Prior art keywords
computer
tasks
threads
object references
copy
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2019201186A
Other languages
English (en)
Other versions
JP7306966B2 (ja
Inventor
倫大 堀江
Michihiro Horie
倫大 堀江
洋 堀井
Hiroshi Horii
洋 堀井
一則 緒方
Kazunori Ogata
一則 緒方
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2020077416A publication Critical patent/JP2020077416A/ja
Application granted granted Critical
Publication of JP7306966B2 publication Critical patent/JP7306966B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5019Workload prediction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】生きているオブジェクトをコピーし、スピン状態、イールド状態およびスリープ状態を含む状態を伴うコピー・ガベージ・コレクション(GC)のプロセスを実施するコンピュータ・システムにおいてGCスレッドの数を制御するための方法を提供する。【解決手段】方法は、現在盗むことができるタスクの数がしきい値より小さいことに応答し、オブジェクト参照の予測数に基づいて状態のうちの所与の1つからワーク・スティーリングでコピーするために戻ってくるGCスレッドの数を決定することを含む。オブジェクト参照の予測数は、オブジェクト参照の過去の平均数を使用して計算される。方法は、現在盗むことができるタスクの数がしきい値以上であることに応答し、現在盗むことができるタスクの数に基づいて状態のうちの所与の1つからコピー作業のために戻ってくるGCスレッドの数を決定することをさらに含む。【選択図】図3

Description

本発明は一般に、データ処理に関し、より詳細には平均オブジェクト参照に基づいた、コピー・ガベージ・コレクションのためのワーク・スティーリング(work-stealing)におけるスピン・カウントの削減に関する。
Open Java(R) Development Kit (OpenJDK)におけるコピー・ガベージ・コレクション(GC)(copying Garbage Collection)の際、負荷分散のためにワーク・スティーリングが使用される。ここで、ワーク・スティーリングにおけるタスクはオブジェクトである。
所有者スレッド(owner thread)はデック(両端キュー)にあるすべてのタスクを終えると、他のスレッドのデックから他のタスクを盗もうとし始める。
GCスレッドは、複数回連続してタスクを盗むことに失敗すると、別のモードに移行する。他のモードは、盗みをもう1度試行する次のステップ:(1)スピン・ループ(spin loop)して次にタスクを盗もうとする、(2)イールド(yield)して次にタスクを盗もうとする、(3)スリープして次にタスクを盗もうとする、を繰り返すものである。すべてのGCスレッドのデックが空になったとき、GCが終わる。
盗むことができるタスクがほとんどないとき、盗みが成功する見込みは小さくなる。オブジェクトが平均して参照をほとんど持たない場合、より少数のタスクしか持たないという状況が生じ得る。
しかしながら、スピン・ループはCPUのリソースを消費する。したがって、コピー・ガベージ・コレクションのためのワーク・スティーリングにおいて、スピン・カウントを削減する必要がある。
本発明の態様によれば、生きているオブジェクト(live object)をコピーし、スピン状態(spin state)、イールド状態(yield state)およびスリープ状態(sleep state)を含む状態を伴うコピー・ガベージ・コレクション(GC)のプロセスを実施するコンピュータ・システムにおいてGCスレッドの数を制御するための、コンピュータによって実施される方法が提供される。方法は、プロセッサ・デバイスによって、現在盗むことができる(stealable)タスクの数がしきい値より小さいことに応答し、オブジェクト参照の予測数に基づいて状態のうちの所与の1つからワーク・スティーリングでコピーするために戻ってくるGCスレッドの数を決定することを含む。オブジェクト参照の予測数はオブジェクト参照の過去の平均数を使用して計算される。方法は、プロセッサ・デバイスによって、現在盗むことができるタスクの数がしきい値以上であることに応答し、現在盗むことができるタスクの数に基づいて状態のうちの所与の1つからコピー作業のために戻ってくるGCスレッドの数を決定することをさらに含む。
本発明の別の態様によると、コンピュータ・プログラム製品は、生きているオブジェクトをコピーし、スピン状態、イールド状態およびスリープ状態を含む状態を伴うコピー・ガベージ・コレクション(GC)のプロセスを実施するコンピュータ・システムにおいて、GCスレッドの数を制御するために提供される。コンピュータ・プログラム製品は、プログラム命令が組み込まれた非一過性コンピュータ可読記憶媒体を含む。プログラム命令は、コンピュータに方法を実行させるためにコンピュータによって実行可能である。方法は、コンピュータのプロセッサ・デバイスによって、現在盗むことができるタスクの数がしきい値より小さいことに応答し、オブジェクト参照の予測数に基づいて状態のうちの所与の1つからワーク・スティーリングでコピーするために戻ってくるGCスレッドの数を決定することを含む。オブジェクト参照の予測数はオブジェクト参照の過去の平均数を使用して計算される。方法は、プロセッサ・デバイスによって、現在盗むことができるタスクの数がしきい値以上であることに応答し、現在盗むことができるタスクの数に基づいて状態のうちの所与の1つからコピー作業のために戻ってくるGCスレッドの数を決定することをさらに含む。
本発明のさらに別の態様によると、コンピュータ処理システムは、生きているオブジェクトをコピーし、スピン状態、イールド状態およびスリープ状態を含む状態を伴うコピー・ガベージ・コレクション(GC)のプロセスにおいて、GCスレッドの数を制御するために提供される。コンピュータ処理システムは、プログラム・コードを記憶するためのメモリを含む。コンピュータ処理システムは、現在盗むことができるタスクの数がしきい値より小さいことに応答し、オブジェクト参照の予測数に基づいて状態のうちの所与の1つからワーク・スティーリングでコピーするために戻ってくるGCスレッドの数を決定するためのプログラム・コードを実行するためのプロセッサ・デバイスをさらに含む。オブジェクト参照の予測数は、オブジェクト参照の過去の平均数を使用して計算される。プロセッサは、現在盗むことができるタスクの数がしきい値以上であることに応答し、現在盗むことができるタスクの数に基づいて状態のうちの所与の1つからコピー作業のために戻ってくるGCスレッドの数を決定するプログラム・コードをさらに実行する。
これらおよび他の特徴と利点とは、添付の図面と関連づけて読まれるべき次の例示的実施形態の詳細な説明から明らかとなろう。
次の説明では、次の図を参照して好ましい実施形態の詳細が提供される。
本発明の一実施形態による、本発明が適用され得る例示的処理システムを示すブロック図である。 本発明の一実施形態による、本発明が適用され得る例示的シナリオ/プロセスを示すハイレベル・ブロック図である。 本発明の一実施形態による、生きているオブジェクトをコピーするコピー・ガベージ・コレクション(GC)のプロセスを実施するコンピュータ・システムにおいて、コピー作業を処理するGCスレッドの数を制御するための例示的方法を示すフロー図である。
本発明は、パラレル・コピー・ガベージ・コレクション(GC)(parallel copying garbage collection)に関するスピン数の少ない(spin-less)ワーク・スティーリングを対象とする。
一実施形態において、本発明は、通常、かなりの量のコンピュータのリソースがスピン・ループの実行に従事していると、可能な際にはスピン・ループの実行を回避するよう構成されている。このようにして、より効率的なコピー・ガベージ・コレクションを実行することができる。
ブロック(A)およびブロック(B)を含み、ブロック(A)がワーク・スティーリングでコピーすることを含み、ブロック(B)がスピン、イールド、スリープを伴って終了することを含む一実施形態において、本発明は、多くの不必要な移行を回避することによって、ブロック(B)からブロック(A)への移行からのGCスレッドの数を制御する。一実施形態において、いくつのGCスレッドがブロック(B)からブロック(A)へ移行すべきかを案出する1つの評価基準として平均オブジェクト参照を使用することによって、制御が達成される。このようにして、いくつのGCスレッドが(B)から(A)へ移行すべきかを推定するという非常に困難なタスクが回避される。さらに、本発明は、十分なGCスレッドがブロック(A)へとすでに移行したという保証によってブロック(B)におけるスピン・カウントを有利に削減し、残りのブロック(B)のGCスレッドはタスクの存在を頻繁にチェックする必要がない。
図1は、本発明の一実施形態による、本発明が適用され得る例示的処理システム100を示すブロック図である。処理システム100は、システム・バス102を介して他の構成品と動作可能に結合された少なくとも1つのプロセッサ(CPU)104を含む。キャッシュ106、読み出し専用メモリ(ROM)108、ランダム・アクセス・メモリ(RAM)110、入出力(I/O)アダプタ120、サウンド・アダプタ130、ネットワーク・アダプタ140、ユーザ・インターフェース・アダプタ150およびディスプレイ・アダプタ160は、システム・バス102に動作可能に結合されている。少なくとも1つのグラフィックス処理ユニット(GPU)194は、システム・バス102を介して少なくともCPU104に結合されている。CPU104またはGPU194あるいはその両方は、1つまたは複数のコアを含んでよい。一実施形態において、少なくとも1つのCPU104またはGPU194あるいはその両方は、マルチスレッド処理を実行するよう構成されている。一実施形態において、RAM110の一部分は、デックのセット110Aを実施するために使用される。一実施形態において、デックのセット110Aは、ヒープを実施するために使用され得る。例えば、一実施形態において、デックのセット110Aは、各デックがヒープの半分に相当する2つのデックを含み得る。もちろん、本明細書に提供される本発明の教示があれば、本発明の思想を維持しつつ、他のデック数および他の構成が使用され得る。
第1の記憶デバイス122および第2の記憶デバイス124は、I/Oアダプタ120によってシステム・バス102と動作可能に結合されている。記憶デバイス122および記憶デバイス124は、ディスク記憶デバイス(例えば、磁気ディスク記憶デバイスまたは光学ディスク記憶デバイス)、ソリッド・ステート磁気デバイスなどのいずれであってもよい。記憶デバイス122および記憶デバイス124は、同じ型の記憶デバイスでもよく、異なる型の記憶デバイスであってもよい。
スピーカ132は、サウンド・アダプタ130によってシステム・バス102に動作可能に結合されている。トランシーバ142は、ネットワーク・アダプタ140によってシステム・バス102に動作可能に結合されている。ディスプレイ・デバイス162は、ディスプレイ・アダプタ160によってシステム・バス102に動作可能に結合されている。
第1のユーザ入力デバイス152、第2のユーザ入力デバイス154および第3のユーザ入力デバイス156は、ユーザ・インターフェース・アダプタ150によってシステム・バス102に動作可能に結合されている。ユーザ・インターフェース152、154および156は、キーボード、マウス、キーパッド、画像取込デバイス、モーション・センシング・デバイス、マイク、少なくとも2つの前述のデバイスの機能性を組み込んだデバイスなどのいずれであってよい。もちろん、本発明の思想を維持しつつ、他の型の入力デバイスを使用することもできる。ユーザ入力デバイス152、154および156は、同じ型のユーザ入力デバイスでもよく、異なる型のユーザ入力デバイスでもよい。ユーザ入力デバイス152、154、および156は、情報のシステム100への入力およびシステム100からの出力に使用される。
もちろん、当業者であれば容易に企図されるように、処理システム100は他の要素(図示せず)を含んでもよく、同様に一定の要素を省いてもよい。例えば、当業者であれば容易に理解されるように、様々な他の入力デバイスまたは出力デバイスあるいはその両方が、それらの特定の実施内容によって、処理システム100に含まれてよい。例えば、様々な型のワイヤレスまたは有線あるいはその両方の、入力デバイスまたは出力デバイスあるいはその両方が使用され得る。そのうえ、当業者であれば容易に理解されるように、追加のプロセッサ、コントローラ、メモリなどが、様々な構成において利用されてもよい。処理システム100のこれらおよび他の変形形態は、本明細書に提供される本発明の教示があれば、当業者であれば容易に企図される。
さらに、処理システム100は、本明細書で説明される方法の少なくとも一部、例えば、図2の方法200の少なくとも一部を実行し得ることが理解される。
図2〜図3は、本発明の様々な実施形態による、様々な例示的方法を示す図である。方法は、コピー・ガベージ・コレクション(GC)の様々な態様を対象とする。一実施形態において、コピーGCは、デック(両端キュー)のセット、もしくは「ソース(source)」または「from」領域および「行先(destination)」または「to」領域が実施され得る、他のタイプのメモリ構造の使用を含んでよい。ソース領域は、現在の作業領域であり、行先領域は、ガベージ・コレクション専用の領域に相当し得る。コピーGCの一実施形態において、オブジェクトは、ソース空間(例えば、ソースのデック用空間(source deque space))から行先空間(例えば、行先のデック用空間(destination deque space))へコピーされる。ガベージ・コレクションの際に、ガベージ・コレクタは、メモリに(ソース領域と同じ大きさの)空の行先領域を作成し、(ポインタが必ず行先領域を参照するようにして)生きているオブジェクトをソース領域から行先領域へコピーし、ソース領域を処分して、最後に行先領域を新しいソース領域として使用する。一実施形態において、デックのセットまたは他の構造は、ヒープを実施するために使用され得る。
これらの方法の説明において、用語「元のオブジェクト」は、コピーGCの際に行先場所へとコピーされる、ソース空間のオブジェクトを意味する。さらに、通常「元のオブジェクトが」に続く、用語「コピーされたもの」は、ソース場所からそこにすでにコピーされた、行先場所に存在するオブジェクトを意味する。
図2は、本発明の実施例による、本発明が適用され得る例示的シナリオ/プロセス200を示すハイレベル・ブロック図である。
シナリオ/プロセス200は、ワーク・スティーリングでコピーGCする際の状態移行を含む。
次のタスク、
(ブロックA−201)ワーク・スティーリングでコピーする、および、
(ブロックB−202)スピン、イールドまたはスリープを伴って終了する、
が実行される。
前述のタスクに関して、N回連続して盗むことに失敗する221、および、少なくとも1つのタスクが存在する222。
すべてのスレッドが終了する223に応答して、GCが終了する203。
一実施形態において、本発明は、ブロックB(すなわち、「スピン、イールドまたはスリープを伴って終了する」)におけるスピン・カウントを減らすために使用され得る。
図3は、本発明の一実施例による、生きているオブジェクトをコピーするコピー・ガベージ・コレクション(GC)のプロセスを実施するコンピュータ・システムにおいてGCスレッドの数を制御するための例示的方法300を示すフロー図である。方法300は、スピン状態、イールド状態およびスリープ状態を含む状態を含む。
ブロック310では、現在盗むことができるタスクの数が、しきい値より小さいかどうかを決定する。そうであれば、ブロック320に進む。そうでなければ、ブロック330に進む。
しきい値は、ユーザにより選択可能であり、例えば、非限定的に、GCスレッドの総数に基づいてもよい。
ブロック320では、オブジェクト参照の予測数に基づいて状態のうちの所与の1つからワーク・スティーリングでコピーするために戻ってくるGCスレッドの数を決定する。オブジェクト参照の予測数は、オブジェクト参照の過去の平均数を使用して計算される。オブジェクト参照の過去の平均数は、ワーク・スティーリングのプロセスの間、あるタスクから新しいタスクを作成する際にいくつのオブジェクト参照が解消したのかを記録して計算することによって決定される。
ブロック330では、現在盗むことができるタスクの数に基づいて状態のうちの所与の1つからワーク・スティーリングでコピーするために戻ってくるGCスレッドの数を決定する。
ブロック340では、状態のうちの所与の1つからワーク・スティーリングでコピーするために戻ってくるGCスレッドについて決定された数を使用してコピーGCのプロセスを実行する。このようにして、古くなった参照が回収され、相応するメモリが他の用途のために開放される。
本発明は、たとえ現在盗むことができるタスクの数が少なくても、平均オブジェクト参照という評価基準を使用することで、いくつのGCスレッドが作業に戻るのかの判断を誤ることはないということが理解される。この評価基準は、子タスクがいくつ作成されたのかについての過去の記録であり、子タスクが次にいくつ作成されるのかを判断するのに使用される。
本発明は、いかなる可能な技術詳細レベルで統合されたシステム、方法またはコンピュータ・プログラム製品あるいはそれらの組合せであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を遂行させるため、コンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含んでもよい。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持し、記憶することができる有形のデバイスであってよい。コンピュータ可読記憶媒体は、例えば、非限定的に、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイスまたは前述のものの任意の適切な組合せであってよい。より具体的なコンピュータ可読記憶媒体の非網羅的一覧には、次のもの、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラマブル読み出し専用メモリ(EPROMまたはフラッシュメモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)ディスク、パンチ・カードまたは命令が記録された溝中の隆起構造のような機械的に符号化されたデバイスおよび前述のものの任意の適切な組合せが含まれる。本明細書で使用されるコンピュータ可読記憶装置は、電波または他の自由に伝播する電磁波、導波管または他の伝送媒体を通じて伝播する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、またはケーブルを通じて送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれの計算/処理デバイスへと、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワークまたはワイヤレス・ネットワークあるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光学伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを含み得る。各計算/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を、それぞれの計算/処理デバイスの中のコンピュータ可読記憶媒体に記憶のために転送する。
本発明の動作を遂行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ(state-setting data)、またはSMALLTALK(R)、C++などのようなオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは同様の言語のような、従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってよい。コンピュータ可読プログラム命令は、スタンド・アロン型ソフトウェア・パッケージとして、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上でかつ部分的にリモート・コンピュータ上で、または全体的にリモート・コンピュータ上もしくはサーバ上で実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意の型のネットワークを通じてユーザのコンピュータと接続されてよく、あるいは接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)外部コンピュータとなされてもよい。いくつかの実施形態において、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して電子回路をカスタマイズし得る。
本発明の態様が、本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品についてのフローチャート図またはブロック図あるいはその両方を参照して、本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実施され得るということが理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体に記憶された命令により、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んだ製品を含むべく、コンピュータ可読媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに特定の方式で機能するように指示するものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータによって実施されるプロセスを作り出すべくコンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の演算ステップを実行させるものであってもよい。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態による、アーキテクチャ、機能性ならびにシステム、方法およびコンピュータ・プログラム製品の可能的な実施の動作を例示する。この点に関し、フローチャートまたはブロック図の各ブロックは、指定された論理関数を実施するための1つまたは複数の実行可能な命令を含むモジュール、セグメント、または命令の一部分に相当し得る。いくつかの代替的実施では、ブロックに記された機能は、図に記された順とは異なって生じ得る。例えば、連続して示された2つのブロックは、実際、含まれる機能性によって、実質的に同時に実行されてよく、または、ブロックは、ときには逆順で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロックおよびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行する、または、専用ハードウェアおよびコンピュータ命令の組合せを遂行する専用ハードウェア・ベースのシステムによって実施され得るということにも注意されたい。
本発明の「一実施形態(one embodiment)」または「実施形態(an embodiment)」、ならびにこれらの他の変形形態に対する本明細書中の参照は、実施形態に関連して説明された特定の特色、構造、特徴などが、本発明の少なくとも1つの実施形態に含まれるということを意味する。したがって、本明細書全体にわたって様々な場所に出現する「一実施形態において(in one embodiment)」または「実施形態において(in an embodiment)」という句、ならびにいかなる他の変形形態の出現は、すべて必ずしも同一の実施形態を示しているとは限らない。
例えば、「A/B」、「AまたはBあるいはその両方(A and/or B)」および「AおよびBのうちの少なくとも1つ(at least one of A and B)」という場合の、次の「/」、「〜または〜あるいはその両方(and/or)」、および「少なくとも1つの(at least one of)」のいずれの使用も、第1に記載の選択肢(A)のみの選択、または第2に記載の選択肢(B)のみの選択、または両方の選択肢(AおよびB)の選択を包含することが意図されているということが理解されるべきである。さらなる例として、「A、BまたはCあるいはその組合せ(A, B, and/or C)」および「A、BおよびCのうちの少なくとも1つ(at least one of A, B, and C)」という場合、このような言い回しには、第1に記載の選択肢(A)のみの選択、または第2に記載の選択肢(B)のみの選択、または第3に記載の選択肢(C)のみの選択、または第1および第2に記載の選択肢(AおよびB)のみの選択、または第1および第3に記載の選択肢(AおよびC)のみの選択、または第2および第3に記載の選択肢(BおよびC)のみの選択、または3つすべての選択肢(AおよびBおよびC)の選択を包含することが意図されている。これは、記載された項目の数だけ拡張されてよいことが、当業者であれば容易に明白となろう。
システムおよび方法の好ましい実施形態(例示的かつ非限定的であることが意図されている)を説明したが、上記の教示に照らして当業者であれば変更や変形がなされ得るということに注意されたい。したがって、開示された特定の実施形態において、添付の特許請求の範囲によって概説されるように、発明の範囲内である改変がなされてもよいということが理解されよう。こうして、特許法が要求する詳細および細目とともに本発明の態様を説明したが、特許証によって保護される、請求され望まれている内容が、添付の特許請求の範囲で述べられる。
100 処理システム
102 システム・バス
104 プロセッサ(CPU)
106 キャッシュ
108 読み出し専用メモリ(ROM)
110 ランダム・アクセス・メモリ(RAM)
110A デックのセット
120 入出力(I/O)アダプタ
122 第1の記憶デバイス
124 第2の記憶デバイス
130 サウンド・アダプタ
132 スピーカ
140 ネットワーク・アダプタ
142 トランシーバ
150 ユーザ・インターフェース・アダプタ
152 第1のユーザ入力デバイス
154 第2のユーザ入力デバイス
156 第3のユーザ入力デバイス
160 ディスプレイ・アダプタ
162 ディスプレイ・デバイス
194 グラフィックス処理ユニット(GPU)
200 方法、シナリオ/プロセス
300 方法

Claims (14)

  1. 生きているオブジェクト(live object)をコピーし、スピン状態、イールド状態およびスリープ状態を含む状態を伴うコピー・ガベージ・コレクション(GC)のプロセスを実施するコンピュータ・システムにおいてGCスレッドの数を制御するための、コンピュータによって実施される方法であって、
    プロセッサ・デバイスによって、現在盗むことができるタスクの数がしきい値より小さいことに応答し、オブジェクト参照の予測数に基づいて前記状態のうちの所与の1つからワーク・スティーリングでコピーするために戻ってくるGCスレッドの前記数を決定するステップであって、オブジェクト参照の前記予測数はオブジェクト参照の過去の平均数を使用して計算される、前記決定するステップと、
    前記プロセッサ・デバイスによって、現在盗むことができるタスクの前記数が前記しきい値以上であることに応答し、現在盗むことができるタスクの前記数に基づいて前記状態のうちの前記所与の1つからコピー作業のために戻ってくるGCスレッドの前記数を決定するステップと、を含む、コンピュータによって実施される方法。
  2. オブジェクト参照の前記過去の平均数は、過去に作成された子タスクの数を示す、請求項1に記載のコンピュータによって実施される方法。
  3. オブジェクト参照の前記過去の平均数は、作成する子タスクの現在の数を決定するために使用される、請求項2に記載のコンピュータによって実施される方法。
  4. 前記状態のうちの前記所与の1つからワーク・スティーリングでコピーするために戻ってくるGCスレッドについて前記決定された数を使用して前記コピーGCのプロセスを実行することをさらに含む、請求項1に記載のコンピュータによって実施される方法。
  5. 複数の前記決定するステップは、前記状態のうちの1つから前記所与の状態への状態移行に応答して実行される、請求項1に記載のコンピュータによって実施される方法。
  6. 前記スピン状態は、スピン・ループを実行することおよびタスクを盗もうとすることを含む、請求項1に記載のコンピュータによって実施される方法。
  7. 前記イールド状態は、前記GCスレッドのうちの別の1つにイールドすることおよびタスクを盗もうとすることを含む、請求項1に記載のコンピュータによって実施される方法。
  8. 前記スリープ状態は、ある期間スリープすることおよびタスクを盗もうとすることを含む、請求項1に記載のコンピュータによって実施される方法。
  9. 生きているオブジェクト(live object)をコピーし、スピン状態、イールド状態およびスリープ状態を含む状態を伴うコピー・ガベージ・コレクション(GC)のプロセスにおいてGCスレッドの数を制御するためのコンピュータ処理システムであって、
    プログラム・コードを記憶するためのメモリと、
    現在盗むことができるタスクの数がしきい値より小さいことに応答し、オブジェクト参照の過去の平均数を使用して計算される、オブジェクト参照の予測数に基づいて前記状態のうちの所与の1つからワーク・スティーリングでコピーするために戻ってくるGCスレッドの前記数を決定するため、
    および、
    現在盗むことができるタスクの前記数が前記しきい値以上であることに応答し、現在盗むことができるタスクの前記数に基づいて前記状態のうちの前記所与の1つからコピー作業のために戻ってくるGCスレッドの前記数を決定するための、
    前記プログラム・コードを実行するためのプロセッサ・デバイスと、を含む、コンピュータ処理システム。
  10. 前記コピーGCのプロセスの一部分を実施するためのデックのセットをさらに含む、請求項9に記載のコンピュータ処理システム。
  11. オブジェクト参照の前記過去の平均数は、過去に作成された子タスクの数を示す、請求項9に記載のコンピュータ処理システム。
  12. オブジェクト参照の前記過去の平均数は、作成する子タスクの現在の数を決定するために使用される、請求項11に記載のコンピュータ処理システム。
  13. コンピュータ・プログラムであって、請求項1ないし8のいずれか1項に記載の方法の各ステップをコンピュータに実行させるための、コンピュータ・プログラム。
  14. 請求項13に記載のコンピュータ・プログラムを記録した、コンピュータ可読媒体。
JP2019201186A 2018-11-09 2019-11-06 平均オブジェクト参照に基づいた、コピー・ガベージ・コレクションのためのワーク・スティーリングにおけるスピン・カウントの削減 Active JP7306966B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/185,880 2018-11-09
US16/185,880 US10725817B2 (en) 2018-11-09 2018-11-09 Reducing spin count in work-stealing for copying garbage collection based on average object references

Publications (2)

Publication Number Publication Date
JP2020077416A true JP2020077416A (ja) 2020-05-21
JP7306966B2 JP7306966B2 (ja) 2023-07-11

Family

ID=70550511

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019201186A Active JP7306966B2 (ja) 2018-11-09 2019-11-06 平均オブジェクト参照に基づいた、コピー・ガベージ・コレクションのためのワーク・スティーリングにおけるスピン・カウントの削減

Country Status (2)

Country Link
US (1) US10725817B2 (ja)
JP (1) JP7306966B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10719350B2 (en) * 2017-10-10 2020-07-21 Sap Se Worker thread manager
US10929054B2 (en) * 2019-06-06 2021-02-23 International Business Machines Corporation Scalable garbage collection
US11645200B2 (en) 2020-11-24 2023-05-09 International Business Machines Corporation Reducing load balancing work stealing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007122527A (ja) * 2005-10-31 2007-05-17 Hitachi Ltd 流量制御方法
JP2017142670A (ja) * 2016-02-10 2017-08-17 株式会社日立製作所 メモリ管理装置およびメモリ管理方法
US20180307417A1 (en) * 2015-10-19 2018-10-25 Huawei Technologies Co., Ltd. Method and device for determination of garbage collector thread number and activity management in log-structured file systems
US20180314631A1 (en) * 2017-04-28 2018-11-01 International Business Machines Corporation Balanced double deques for eliminating memory fences in garbage collection

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9038087B2 (en) 2008-06-18 2015-05-19 Microsoft Technology Licensing, Llc Fence elision for work stealing
US9317339B2 (en) * 2013-03-13 2016-04-19 Oracle International Corporation Systems and methods for implementing work stealing using a configurable separation of stealable and non-stealable work items
US9804888B2 (en) * 2013-03-15 2017-10-31 Oracle International Corporation System and method for implementing constrained data-driven parallelism
US9262233B1 (en) 2014-10-01 2016-02-16 Software Ag Second-order tuning of spin loops
US9348658B1 (en) * 2014-12-12 2016-05-24 Intel Corporation Technologies for efficient synchronization barriers with work stealing support
US9760410B2 (en) * 2014-12-12 2017-09-12 Intel Corporation Technologies for fast synchronization barriers for many-core processing
US9886317B2 (en) 2015-02-02 2018-02-06 Oracle International Corporation Fine-grained scheduling of work in runtime systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007122527A (ja) * 2005-10-31 2007-05-17 Hitachi Ltd 流量制御方法
US20180307417A1 (en) * 2015-10-19 2018-10-25 Huawei Technologies Co., Ltd. Method and device for determination of garbage collector thread number and activity management in log-structured file systems
JP2017142670A (ja) * 2016-02-10 2017-08-17 株式会社日立製作所 メモリ管理装置およびメモリ管理方法
US20180314631A1 (en) * 2017-04-28 2018-11-01 International Business Machines Corporation Balanced double deques for eliminating memory fences in garbage collection

Also Published As

Publication number Publication date
JP7306966B2 (ja) 2023-07-11
US10725817B2 (en) 2020-07-28
US20200151003A1 (en) 2020-05-14

Similar Documents

Publication Publication Date Title
US9262160B2 (en) Load latency speculation in an out-of-order computer processor
US10324836B2 (en) Balanced double deques for eliminating memory fences in garbage collection
JP7306966B2 (ja) 平均オブジェクト参照に基づいた、コピー・ガベージ・コレクションのためのワーク・スティーリングにおけるスピン・カウントの削減
US20140143791A1 (en) System, method, and apparatus for improving application-launch latencies
US8775778B2 (en) Use of a helper thread to asynchronously compute incoming data
TWI421770B (zh) 將處理器置於漸慢作業模式中之系統與方法
US9928105B2 (en) Stack overflow prevention in parallel execution runtime
US9495224B2 (en) Switching a locking mode of an object in a multi-thread program
CN114816748A (zh) 线程调度方法、装置、电子设备和存储介质
US10929054B2 (en) Scalable garbage collection
US9870400B2 (en) Managed runtime cache analysis
US10769063B2 (en) Spin-less work-stealing for parallel copying garbage collection
US9542233B1 (en) Managing a free list of resources to decrease control complexity and reduce power consumption
US20230205700A1 (en) Selective speculative prefetch requests for a last-level cache
KR20210025677A (ko) 초기 리턴 예측을 갖는 분기 타겟 버퍼
US20170371732A1 (en) Method for debugging static memory corruption
US20150178089A1 (en) Load synchronization with streaming thread cohorts
US11068250B2 (en) Crowdsourced API resource consumption information for integrated development environments
CN111433738A (zh) 控制器事件队列
KR102161742B1 (ko) 피드백 경로를 포함하는 파이프 라인 시스템 및 그 동작방법
US10698716B2 (en) Virtual machine state recorder
US11775337B2 (en) Prioritization of threads in a simultaneous multithreading processor core
US11822471B2 (en) Reducing write barriers in snapshot-based garbage collection
KR102595895B1 (ko) 상황인식 리소스 핫플러그 관리 시스템 및 방법
US9519583B1 (en) Dedicated memory structure holding data for detecting available worker thread(s) and informing available worker thread(s) of task(s) to execute

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220418

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220512

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230525

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230613

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230629

R150 Certificate of patent or registration of utility model

Ref document number: 7306966

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150