JP6529586B2 - 複数の同時実行中スレッド間における共有可能リソースの排他的制御を管理するための方法、システム、およびコンピュータ・プログラム - Google Patents
複数の同時実行中スレッド間における共有可能リソースの排他的制御を管理するための方法、システム、およびコンピュータ・プログラム Download PDFInfo
- Publication number
- JP6529586B2 JP6529586B2 JP2017524412A JP2017524412A JP6529586B2 JP 6529586 B2 JP6529586 B2 JP 6529586B2 JP 2017524412 A JP2017524412 A JP 2017524412A JP 2017524412 A JP2017524412 A JP 2017524412A JP 6529586 B2 JP6529586 B2 JP 6529586B2
- Authority
- JP
- Japan
- Prior art keywords
- lock
- thread
- ticket
- preempted
- threads
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 57
- 238000004590 computer program Methods 0.000 title claims description 9
- 238000003860 storage Methods 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 13
- 238000012360 testing method Methods 0.000 description 95
- 238000004422 calculation algorithm Methods 0.000 description 92
- 238000012545 processing Methods 0.000 description 28
- 230000004888 barrier function Effects 0.000 description 25
- 238000012544 monitoring process Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 21
- 230000000694 effects Effects 0.000 description 13
- 230000006399 behavior Effects 0.000 description 12
- 230000001364 causal effect Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 230000008901 benefit Effects 0.000 description 9
- 238000009987 spinning Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 230000004913 activation Effects 0.000 description 6
- 230000000903 blocking effect Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 235000003642 hunger Nutrition 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000001902 propagating effect Effects 0.000 description 3
- 230000037351 starvation Effects 0.000 description 3
- 241001315286 Damon Species 0.000 description 2
- 230000002567 autonomic effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000006866 deterioration Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000036963 noncompetitive effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000009850 completed effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 244000144980 herd Species 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002040 relaxant effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Description
load(void *args)
{
int seed = time(NULL);
int c, t;
for (c = 0; c < target; c++)
{
<ロック・ミューテックス>;
for (t = delay_l; t; t--)
<アセンブラ・ノーオペレーション>;
counter++;
<アンロック・ミューテックス>;
for (t = delay_u; t; t--)
<アセンブラ・ノーオペレーション>;
if ((rand_r(&seed) % yield_rate) ==0)
<譲る>;
}
}
(i)新しいチケットを取得するための、バスのロック、キャッシュ無効化書き込み(x86上で100サイクル)、
(ii)不公平ロックを獲得するための、バスのロック、キャッシュ無効化書き込み(別の100サイクル)、
(iii)displayを増加させるための、キャッシュ無効化書き込み、および
(iv)不公平ロックを解放するための、キャッシュ無効化書き込み
を必要とすることである。
(i)メモリへのパイプラインの完全なフラッシング、すなわち、実行のために待ち行列に入れられたすべての書き込みがメモリにコミットされるのを待機しなければならないこと、
(ii)バスのロッキング、
(iii)異なるロック要求者が以前にメモリ内容を変更したので、おそらくはキャッシュ・ミスを暗示する、メモリ読み取り、
(iv)メモリ書き込み、
(v)メモリへの書き込みパイプラインのフラッシング、および
(vi)バスのアンロッキング
を実行することを必要とするためである。
(i)かなりより安価な非アトミック操作を使用することによって、それがロック810を請求している旨のフラグを立てること、
(ii)それがプリエンプトされていないことをチェックすること、および
(iii)プリエンプトされている場合は、lock.ticket構造814の獲得を再び試みること
を行わせることによって、ロックを獲得するのを待機して依然としてループしている後のスレッド(次のロック・オーナ804、以降のロック・オーナ808)に、LRP検出の負担を移す。
(i)後のスレッド(次のロック・オーナ804、以降のロック・オーナ808)は、ループしてビジーであり、したがって、何も有益なことはしていないので、それらは、全体的な性能に影響せずに、コンボイをチェックし、それを防止することができる。
(ii)チケット・アルゴリズムについての先の「ロング・スピン」グラフである、図4の特定の例を参照すると、より悪いケースでは、9000万のロック要求に対して18万回のロング・スピン(すなわち、ロック要求者プリエンプション)が存在する。アルゴリズム・コストの全体が、プリエンプションだけに移される場合、先に説明されたコストが掛かる活動は、1億8000万当たり18万回、すなわち、すべてのロック要求の0.1%だけ行われ、したがって、追加のコストのほぼ全部を省く。図4の特定の例の変形は、異なる数値をもたらすが、同じ原理が適用される。
1.ロックの解放に着手している、現在のロック・オーナ802、
2.使用中としてロックを印付けようと試みている、次のロック・オーナ804、
3.プリエンプトされており、自らが他のスレッドによって追い越されるのを今見出している、スレッド、
4.使用中としてロックを印付けることができる前にプリエンプトされた、動作を今再開しようとしており、潜在的に誤って使用中であるとロックを印付けることがあり得る(衝突をもたらす)、古い次のロック・オーナ、
5.次のロック・オーナがプリエンプトされているかどうかをチェックしている、順番が次のスレッド、
6.待ち行列を飛び越して、自らが使用中であるとロックを印付けることができる前にプリエンプトされた、動作を今再開しようとしており、潜在的に待ち行列を飛び越し、誤って使用中であるとロックを印付けることがあり得る(これも衝突をもたらすことがあり得る)、順番が次の古いスレッド
が、すべて同時にロックを変更しようと試みていることがあり得る、はるかに複雑な環境をもたらす。
struct detail
{
short turn;
short taken;
};
int block;
LOAD_DISPLAY(source, dest) ::= dest.block = source.block
bb_lock_t ::=
volatile short ticket;
volatile display_t display;
bb_lock(bb_lock_t lock) ::=
begin 1
display_t display
1002 監視タイムアウトを初期化する
1004 ターゲット・チケットを取得して、lock.ticketをアトミックにインクリメントする
repeat forever
begin 2
1006 LOAD_DISPLAY(lock.display,display)
1008 display.detail.turnとターゲット・チケットとの間の距離を計算する
1010/12 if 距離が0よりも小さい, or 距離が古い距離値よりも大きい, スレッドはプリエンプトされている
<1002>から再び開始する
1014/16 else if 距離が0である, スレッドは次のロック・オーナである
begin 3
1018 lock.display.detail.takenをターゲット・チケットになるように設定し、さらに、ロックが請求されていることを伝えるために、高位ビットを設定する
1022 現在のチケットをメモリからロードする
if 現在のチケットがターゲット・チケットと一致する, then 他のロック要求者は存在しない:
ロックが安全に獲得された, exit
// メモリ・モデルが因果的である場合に、このステップを実行する
1032 LOAD_DISPLAY(lock.display,display)
// メモリ・モデルが因果的でない場合に、次の2つのステップを実行する
1034 ストア−ロード・バリア(store-load barrier)を通して、lock.display.detail.takenに書き込みが行われるのを待機する
1036 lock.display.detail.turnを再び読み取る
1038/40 if display.detail.turnがターゲットと一致する, ロックが安全に獲得されている
1042 exit
else
スレッドはプリエンプトされている, <1002>から再び開始する
end 3 // 距離が0の場合
1044/46 else if 距離が1である and タイムアウト・チェッキングがオンにされている
begin 4
1048/50 if display.detail.takenが次のロックと一致し、さらに、高位ビットが設定されている, 次のオーナがロックを請求している
1052 タイムアウト・チェッキングをオフにする
1054 else ifdisplay.detail.takenが予想外の値を有する, プリエンプトされたスレッドがdisplayに走り書きした
1056 タイムアウト・チェッキングをオフにする
1058/62 else if display.detail.takenが(ターゲット・チケット−1)と一致し、さらに、高位ビットがクリアされている, 次のロック・オーナがロックをまだ請求していない
begin 5
1064 監視タイムアウトをデクリメントする
1066 if監視タイムアウトが0である
begin 6
1068 監視を使用不可にする
1070 新しいdisplay.block値を、1)ターゲット・チケットになるように設定されたturn、2)ターゲット・チケットになるように設定されたtaken、さらに、設定された高位ビットとして組み立てる
1072 新しいdisplay.block値をlock.display.blockとアトミックに比較し、スワップする
1076 if比較およびスワップの結果が古いdisplayと一致する, ロックが取得される
1078 exit
end 6 // 監視タイムアウトが満了した場合
end 5 // displayが先行ロック・オーナと一致し、ロックが取得されない
end 4// 距離が1であり、タイムアウト・チェッキングがオンにされている場合
end 2 // repeat forever
end 1// bb_lock
bb_unlock(bb_lock_t lock) ::=
begin
display_t display
1102 LOAD_DISPLAY(lock.display,display)
1104 ロックが取得されていないことを伝えるために、display.detail.takenを高位ビットがクリアされたdisplay.detail.turnになるように設定する
1106 display.detail.turnをインクリメントする
1108 LOAD_DISPLAY(display,lock.display)
1110 end
(i)最初から再スタートすること、すなわち、処理がステップ1002に戻ること、または
(ii)ロックを獲得することをまったく断念すること
を必要とする。
(i)最初から再スタートすること、すなわち、処理がステップ1002に戻ること、または
(ii)ロックを獲得することをまったく断念すること
を必要とする。
(i)最初から再スタートすること、すなわち、処理が、接続子「D」を通って、図10のステップ1002に戻ること、または
(ii)ロックを獲得することをまったく断念すること
を必要とする。
(i)それが書き込もうと意図するメモリ・ロケーション、
(ii)それが書き込もうと意図する値、および
(iii)メモリ・ロケーションにおいて見出されることが予想される値
という3つの引数を取る。アトミック比較およびスワップ命令は、その後、
(i)バスをロックし、それによって、他のCPUからのメモリ操作を防止すること、
(ii)第1の引数で識別されるメモリ・ロケーションから値を読み取ること、および
(iii)それを第3の引数の値と比較すること
に着手する。第1の引数で識別されるメモリ・ロケーションから読み取られた値が、第3の引数の値と一致する場合、第2の引数の値が、第1の引数で識別されるメモリ・ロケーションに書き込まれる。第1の引数で識別されるメモリ・ロケーションから読み取られた値が、第3の引数の値と一致しない場合、第1の引数で識別されるメモリ・ロケーション内の値は、変更されずに残される。最後に、バスが、解放される。命令によって返される結果は、第1の引数で識別されるメモリ・ロケーションから読み取られた古い値である。第1の引数で識別されるメモリ・ロケーションから読み取られた値が第3の引数の値と一致する場合に限って、第2の引数の値が第1の引数で識別されるメモリ・ロケーションに書き込まれるという、本発明の実施形態の意味は、lock.displayユニオン816への書き込みは、ロック810の状態が未請求の場合にだけ生じるということである。
(i)最初から再スタートすること、すなわち、処理が、接続子「D」を通して、図10のステップ1002に戻ること
(ii)ロックを獲得することをまったく断念することまたは
(iii)ロック810の獲得を待機しながら、スレッドのセット内におけるそれの位置を監視することを続けること、すなわち、処理が、接続子「E」を通して、図10のステップ1006に戻ること距離は負であるか、もしくは先の距離よりも大きいので、ステップ1010もしくはステップ1012において、処理は、その後、図10のステップ1002に戻る。
Claims (12)
- 複数の同時実行中スレッド間における共有可能リソースの排他的制御を管理するための方法であって、前記共有可能リソースへのアクセスは、ロックによって制御され、前記ロックは、前記ロックの所有権を要求するスレッドの順序付けられたセットを維持し、前記方法は、
スレッドの前記セット内の前記ロックを次に所有するスレッドが、前記ロックの請求を非アトミックに公表するステップであって、前記請求が、単一メモリ・アクセスでのみ読み取りおよび書き込みが行われることが可能な構造を備える、前記ステップと、
請求を公表する前記ステップの後、前記ロックを次に所有する前記スレッドが、それがプリエンプトされているかどうかを判定するステップと、
前記判定に応答して、前記ロックを次に所有する前記スレッドが、それがプリエンプトされていない場合は、前記ロックを獲得し、それがプリエンプトされている場合は、前記ロックの獲得を再び試みるステップと、
前記次に所有するスレッドがプリエンプトされていることに応答して、それ以降に所有するスレッドが、前記ロックを不公平に獲得し、前記ロックをアトミックに一貫性をもって変更して、次のロック・オーナが、それがプリエンプトされていると判定することができるようにするステップと、
を含む、方法。 - 前記順序付けられたセットは、チケットを含み、前記ロックの所有権を要求する各スレッドは、チケットを獲得し、
前記請求は、前記次に所有するスレッドによって獲得された前記チケットの識別子と、前記次に所有するスレッドが前記ロックを請求している旨の表示とを含む、
請求項1に記載の方法。 - 前記次に所有するスレッドのチケットを現在のチケットと比較し、前記次に所有するスレッドのチケットと現在のチケットとの間の一致に応答して、前記ロックを非アトミックに獲得するステップをさらに含む、請求項2に記載の方法。
- 前記請求の構造が、ユニオンである、請求項1に記載の方法。
- 前記次に所有するスレッドがプリエンプトされているとの判定に応答して、前記次に所有するスレッドが、前記ロックの所有権の要求をキャンセルする、請求項1に記載の方法。
- 複数の同時実行中スレッド間における共有可能リソースの排他的制御を管理するためのシステムであって、
前記共有可能リソースへのアクセスを制御するためのロックであって、前記ロックが、前記ロックの所有権を要求するスレッドの順序付けられたセットを維持する、前記ロックと、
単一メモリ・アクセスでのみ読み取りおよび書き込みが行われ、スレッドの前記セット内の次に所有するスレッドによって非アトミックに公表され、前記ロックの請求を行うことが可能な請求構造と、
前記請求を公表した後、前記ロックを次に所有する前記スレッドが、それがプリエンプトされているかどうかを判定するための手段と、
前記次に所有するスレッドがプリエンプトされているかどうかを判定するための前記手段に応答して、前記ロックを次に所有する前記スレッドが、それがプリエンプトされていない場合は、前記ロックを獲得し、それがプリエンプトされている場合は、前記ロックの獲得を再び試みるための手段と、
前記次に所有するスレッドがプリエンプトされていることに応答して、それ以降に所有するスレッドが、前記ロックを不公平に獲得し、前記ロックをアトミックに一貫性をもって変更して、次のロック・オーナが、それがプリエンプトされていると判定することができるようにするための手段と、
を備える、システム。 - 前記順序付けられたセットは、チケットを含み、前記ロックの所有権を要求する各スレッドは、チケットを獲得し、
前記請求は、前記次に所有するスレッドによって獲得された前記チケットの識別子と、前記次に所有するスレッドが前記ロックを請求している旨の表示とを含む、
請求項6に記載のシステム。 - 前記次に所有するスレッドのチケットを現在のチケットと比較し、前記次に所有するスレッドのチケットと現在のチケットとの間の一致に応答して、前記次に所有するスレッドが、前記ロックを非アトミックに獲得するための手段をさらに備える、請求項7に記載のシステム。
- 前記次に所有するスレッドがプリエンプトされていることに応答して、前記次に所有するスレッドが、前記ロックの所有権の要求をキャンセルする、請求項6に記載のシステム。
- 前記請求構造が、ユニオンである、請求項6に記載のシステム。
- 請求項1〜5に記載の何れか1項に記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
- 請求項11に記載の前記コンピュータ・プログラムをコンピュータ可読記憶媒体に記録した、コンピュータ可読記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1420412.7 | 2014-11-18 | ||
GB1420412.7A GB2532424B (en) | 2014-11-18 | 2014-11-18 | An almost fair busy lock |
PCT/IB2015/058358 WO2016079622A1 (en) | 2014-11-18 | 2015-10-29 | Almost fair busy lock |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017534994A JP2017534994A (ja) | 2017-11-24 |
JP6529586B2 true JP6529586B2 (ja) | 2019-06-12 |
Family
ID=52248477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017524412A Active JP6529586B2 (ja) | 2014-11-18 | 2015-10-29 | 複数の同時実行中スレッド間における共有可能リソースの排他的制御を管理するための方法、システム、およびコンピュータ・プログラム |
Country Status (5)
Country | Link |
---|---|
US (2) | US9697055B2 (ja) |
JP (1) | JP6529586B2 (ja) |
DE (1) | DE112015004750T5 (ja) |
GB (1) | GB2532424B (ja) |
WO (1) | WO2016079622A1 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2532424B (en) | 2014-11-18 | 2016-10-26 | Ibm | An almost fair busy lock |
US9959055B2 (en) * | 2016-06-30 | 2018-05-01 | Hewlett Packard Enterprise Development Lp | Placement of a processing unit in unfair lock mode in response to a queue in a fair lock mode |
US10423464B2 (en) * | 2016-09-30 | 2019-09-24 | Hewlett Packard Enterprise Patent Development LP | Persistent ticket operation |
US11126474B1 (en) * | 2017-06-14 | 2021-09-21 | Amazon Technologies, Inc. | Reducing resource lock time for a virtual processing unit |
US10592281B1 (en) | 2017-09-28 | 2020-03-17 | Amazon Technologies, Inc. | Wait optimizer for recording an order of first entry into a wait mode by a virtual central processing unit |
WO2019061407A1 (zh) | 2017-09-30 | 2019-04-04 | 华为技术有限公司 | 一种系统服务超时的处理方法及装置 |
US11442730B2 (en) | 2018-09-21 | 2022-09-13 | Oracle International Corporation | Ticket locks with enhanced waiting |
US11636152B2 (en) * | 2019-02-15 | 2023-04-25 | Oracle International Corporation | Scalable range locks |
CN110377405A (zh) * | 2019-06-17 | 2019-10-25 | 平安科技(深圳)有限公司 | 轻量级请求的并发处理方法及相关设备 |
US11294737B2 (en) | 2019-06-24 | 2022-04-05 | International Business Machines Corporation | Self-managed lock access |
US11150945B2 (en) | 2019-09-04 | 2021-10-19 | Red Hat, Inc. | Reverse restartable sequences for lock polling scalability |
US11449339B2 (en) * | 2019-09-27 | 2022-09-20 | Red Hat, Inc. | Memory barrier elision for multi-threaded workloads |
US11119831B2 (en) * | 2020-01-10 | 2021-09-14 | Wind River Systems, Inc. | Systems and methods for interrupting latency optimized two-phase spinlock |
CN113535412B (zh) | 2020-04-13 | 2024-05-10 | 伊姆西Ip控股有限责任公司 | 用于跟踪锁的方法、设备和计算机程序产品 |
CN113590641A (zh) * | 2021-08-06 | 2021-11-02 | 上海金仕达软件科技有限公司 | 一种银行债券自动报价系统的分布式处理方法及装置 |
CN114721726B (zh) * | 2022-06-10 | 2022-08-12 | 成都登临科技有限公司 | 一种多线程组并行获取指令的方法、处理器及电子设备 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09251413A (ja) * | 1996-03-18 | 1997-09-22 | Hitachi Ltd | ロック制御装置及び方法 |
JPH09330240A (ja) * | 1996-06-10 | 1997-12-22 | Nec Corp | 資源排他制御方式 |
US6480918B1 (en) * | 1998-12-22 | 2002-11-12 | International Business Machines Corporation | Lingering locks with fairness control for multi-node computer systems |
US7313557B1 (en) * | 2002-03-15 | 2007-12-25 | Network Appliance, Inc. | Multi-protocol lock manager |
US7328438B2 (en) | 2003-03-27 | 2008-02-05 | International Business Machines Corporation | Deallocation of computer data in a multithreaded computer |
US7278141B2 (en) * | 2003-04-23 | 2007-10-02 | International Business Machines Corporation | System and method for adding priority change value corresponding with a lock to a thread during lock processing |
US7334102B1 (en) | 2003-05-09 | 2008-02-19 | Advanced Micro Devices, Inc. | Apparatus and method for balanced spinlock support in NUMA systems |
US7380247B2 (en) * | 2003-07-24 | 2008-05-27 | International Business Machines Corporation | System for delaying priority boost in a priority offset amount only after detecting of preemption event during access to critical section |
US7676809B2 (en) | 2003-10-09 | 2010-03-09 | International Business Machines Corporation | System, apparatus and method of enhancing priority boosting of scheduled threads |
US7594234B1 (en) * | 2004-06-04 | 2009-09-22 | Sun Microsystems, Inc. | Adaptive spin-then-block mutual exclusion in multi-threaded processing |
US20060090168A1 (en) * | 2004-09-28 | 2006-04-27 | Takeshi Ogasawara | Method and system for speeding up mutual exclusion |
US7735089B2 (en) * | 2005-03-08 | 2010-06-08 | Oracle International Corporation | Method and system for deadlock detection in a distributed environment |
US8245230B2 (en) | 2005-03-14 | 2012-08-14 | Qnx Software Systems Limited | Adaptive partitioning scheduler for multiprocessing system |
US20070136725A1 (en) * | 2005-12-12 | 2007-06-14 | International Business Machines Corporation | System and method for optimized preemption and reservation of software locks |
US8434082B2 (en) * | 2006-06-22 | 2013-04-30 | Intel Corporation | Efficient ticket lock synchronization implementation using early wakeup in the presence of oversubscription |
US7509448B2 (en) * | 2007-01-05 | 2009-03-24 | Isilon Systems, Inc. | Systems and methods for managing semantic locks |
US7487279B2 (en) | 2007-01-23 | 2009-02-03 | International Business Machines Corporation | Achieving both locking fairness and locking performance with spin locks |
US7783806B2 (en) * | 2008-03-17 | 2010-08-24 | International Business Machines Corporation | Deadlock prevention in a computing environment |
US20090307707A1 (en) * | 2008-06-09 | 2009-12-10 | International Business Machines Corporation | System and method for dynamically adaptive mutual exclusion in multi-threaded computing environment |
US8595469B2 (en) * | 2010-06-24 | 2013-11-26 | International Business Machines Corporation | Diagnose instruction for serializing processing |
US8621464B2 (en) * | 2011-01-31 | 2013-12-31 | International Business Machines Corporation | Adaptive spinning of computer program threads acquiring locks on resource objects by selective sampling of the locks |
US9158596B2 (en) * | 2011-03-18 | 2015-10-13 | Oracle International Corporation | Partitioned ticket locks with semi-local spinning |
JP5725162B2 (ja) * | 2011-03-31 | 2015-05-27 | 富士通株式会社 | 排他制御方法、および排他制御プログラム |
US8458721B2 (en) * | 2011-06-02 | 2013-06-04 | Oracle International Corporation | System and method for implementing hierarchical queue-based locks using flat combining |
US9158597B2 (en) * | 2011-07-08 | 2015-10-13 | Microsoft Technology Licensing, Llc | Controlling access to shared resource by issuing tickets to plurality of execution units |
KR20130063825A (ko) * | 2011-12-07 | 2013-06-17 | 삼성전자주식회사 | 운영체제에서 동적으로 선점 구간을 조정하는 장치 및 방법 |
US8694706B2 (en) | 2012-04-27 | 2014-04-08 | Oracle International Corporation | System and method for NUMA-aware locking using lock cohorts |
US8966491B2 (en) | 2012-04-27 | 2015-02-24 | Oracle International Corporation | System and method for implementing NUMA-aware reader-writer locks |
US10579413B2 (en) * | 2013-08-14 | 2020-03-03 | International Business Machines Corporation | Efficient task scheduling using a locking mechanism |
GB2532424B (en) | 2014-11-18 | 2016-10-26 | Ibm | An almost fair busy lock |
-
2014
- 2014-11-18 GB GB1420412.7A patent/GB2532424B/en active Active
-
2015
- 2015-09-22 US US14/860,965 patent/US9697055B2/en not_active Expired - Fee Related
- 2015-10-29 JP JP2017524412A patent/JP6529586B2/ja active Active
- 2015-10-29 DE DE112015004750.6T patent/DE112015004750T5/de active Granted
- 2015-10-29 WO PCT/IB2015/058358 patent/WO2016079622A1/en active Application Filing
-
2017
- 2017-06-05 US US15/613,673 patent/US10169107B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20170269973A1 (en) | 2017-09-21 |
GB201420412D0 (en) | 2014-12-31 |
GB2532424A (en) | 2016-05-25 |
JP2017534994A (ja) | 2017-11-24 |
GB2532424B (en) | 2016-10-26 |
DE112015004750T5 (de) | 2017-09-28 |
US10169107B2 (en) | 2019-01-01 |
WO2016079622A1 (en) | 2016-05-26 |
US9697055B2 (en) | 2017-07-04 |
US20160139966A1 (en) | 2016-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6529586B2 (ja) | 複数の同時実行中スレッド間における共有可能リソースの排他的制御を管理するための方法、システム、およびコンピュータ・プログラム | |
Calciu et al. | NUMA-aware reader-writer locks | |
US8839253B2 (en) | System and method for load-adaptive mutual exclusion with waiting process counts | |
Dice et al. | Lock cohorting: a general technique for designing NUMA locks | |
Ouyang et al. | Preemptable ticket spinlocks: Improving consolidated performance in the cloud | |
US9830200B2 (en) | Busy lock and a passive lock for embedded load management | |
JP5624480B2 (ja) | 効率的な決定論的マルチプロセッシング(deterministicmultiprocessing) | |
US9658900B2 (en) | Reentrant read-write lock algorithm | |
Kashyap et al. | Scalable {NUMA-aware} Blocking Synchronization Primitives | |
US20080082532A1 (en) | Using Counter-Flip Acknowledge And Memory-Barrier Shoot-Down To Simplify Implementation of Read-Copy Update In Realtime Systems | |
US9223701B2 (en) | Data processing apparatus and method for performing load-exclusive and store-exclusive operations | |
US11594252B2 (en) | Reader bias based locking technique enabling high read concurrency for read-mostly workloads | |
Wamhoff et al. | FastLane: improving performance of software transactional memory for low thread counts | |
US11036528B2 (en) | Efficient profiling-based lock management in just-in-time compilers | |
US10241700B2 (en) | Execution of program region with transactional memory | |
US10346196B2 (en) | Techniques for enhancing progress for hardware transactional memory | |
Cleary et al. | Fast asymmetric thread synchronization | |
France-Pillois et al. | Implementation and evaluation of a hardware decentralized synchronization lock for MPSoCs | |
Patel | Fair and Secure Synchronization for Non-Cooperative Concurrent Systems | |
EP4300292A1 (en) | Synchronizing concurrent tasks using interrupt deferral instructions | |
Shan et al. | APLE: Addressing lock holder preemption problem with high efficiency | |
Adams | Answers to Quick Quizzes | |
Al Bahra | Nonblocking Algorithms and Scalable Multicore Programming Exploring an alternative to lock-based synchronization. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170710 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180627 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190328 |
|
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: 20190423 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190514 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6529586 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |