9.4. glock debugfs インターフェイス


glock debugfs インターフェイスを使用すると、glock とホルダーの内部の状態を視覚化でき、場合によってはロックされたオブジェクトの概要情報も含まれます。ファイルの行がインデントなしで G: で始まる場合は、glock 自体を表します。1 つのスペースでインデントされた別の文字で始まる場合は、ファイル内のすぐ上にある glock に関連する構造 (H: はホルダー、I: は inode、R: リソースグループ) を表します。このファイルの内容の例は、以下のようになります。

G:  s:SH n:5/75320 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
G:  s:EX n:3/258028 f:yI t:EX d:EX/0 a:3 r:4
 H: s:EX f:tH e:0 p:4466 [postmark] gfs2_inplace_reserve_i+0x177/0x780 [gfs2]
 R: n:258028 f:05 b:22256/22256 i:16800
G:  s:EX n:2/219916 f:yfI t:EX d:EX/0 a:0 r:3
 I: n:75661/219916 t:8 f:0x10 d:0x00000000 s:7522/7522
G:  s:SH n:5/127205 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
G:  s:EX n:2/50382 f:yfI t:EX d:EX/0 a:0 r:2
G:  s:SH n:5/302519 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
G:  s:SH n:5/313874 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
G:  s:SH n:5/271916 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
G:  s:SH n:5/312732 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]

上記の例は、1 つのノードの GFS2 ファイルシステムでポストマークのベンチマークの実行時に、cat /sys/kernel/debug/gfs2/unity:myfs/glocks >my.lock コマンドにより生成された (約 18MB ファイルからの) 一連の抜粋です。この図の glock は、glock ダンプのより興味深い機能のいくつかを示すために選択されています。

glock の状態は、EX (排他的)、DF (据え置き)、SH (共有)、または UN (ロック解除) になります。この状態は、DLM null ロック状態を表す可能性がある UN を除いて、または GFS2 が DLM ロックを保持しないことを除いて、DLM ロックモードに直接対応します (上記の I フラグにより異なります)。glock の s: フィールドはロックの現在の状態を示し、ホルダーの同じフィールドは要求されたモードを示します。ロックが許可されると、ホルダーのフラグに H ビットが設定されます (f: フィールド)。設定されていない場合は、W wait ビットが設定されます。

N: フィールド (数値) は、各項目に関連付けられた番号を示します。glock の場合、タイプ番号の後に glock 番号が続くため、上記の例では最初の glock は n:5/75320 となり、inode 75320 に関連する iopen glock を示します。inode と iopen glock の場合、glock 番号は常に inode のディスクブロック番号と同じになります。

注記

debugfs glock ファイルの glock 番号 (n: フィールド) は 16 進法ですが、トレースポイントの出力には 16 進法で表示されます。これには、これまでの経緯が原因です。glock 番号は常に 16 進法で書かれていますが、トレースポイントに 10 進数が選択されたため、この数字はその他のトレースポイント出力 (blktrace など) や stat(1) の出力と簡単に比較できます。

ホルダーと glock の両方に対するフラグの完全一覧は、Glock Flags の表と、Glock ホルダー の Glock Holder Flags の表に記載されています。ロック値のブロックの内容は、現在 debugfs インターフェイスからは利用できません。以下の表は、さまざまな glock タイプの意味を示しています。

表9.3 glock の種類
タイプ番号ロックタイプ使用方法

1

trans

トランザクションのロック

2

inode

inode のメタデータとデータ

3

rgrp

リソースグループのメタデータ

4

meta

スーパーブロック

5

iopen

最後に閉じた inode の検出

6

flock

flock(2) syscall

8

quota

クォータ操作

9

journal

ジャーナルミューテックス

重要な glock フラグの 1 つは、l (locked) フラグです。これは、状態変更が行われるときに glock 状態へのアクセスを調整するのに使用されるビットロックです。これは、ステートマシンが DLM を介してリモートロック要求を送信するときに設定され、完全な操作が実行された場合にのみ消去されます。これは、複数のロック要求が送信され、その間にさまざまな無効化が発生することを意味します。

以下の表は、さまざまな glock フラグの意味を示しています。

表9.4 glock フラグ
フラグ名前意味

d

Pending demote

遅延している (リモートの) 降格要求

D

Demote

降格要求 (ローカルまたはリモート)

f

Log flush

この glock を解放する前にログをコミットする必要があります。

F

Frozen

リモートのノードからの返信が無視されます (復旧が進行中です)。

i

Invalidate in progress

この glock の下でページを無効にする過程です。

I

Initial

DLM ロックがこの glock と関連付けられる場合に指定します。

l

Locked

glock は、状態を変更中です。

L

LRU

glock が LRU リストにあるときに設定します。

o

Object

glock がオブジェクトに関連付けられている (つまり、タイプ 2 の glock の場合は inode、タイプ 3 の glock の場合はリソースグループ) ときに設定されます。

p

Demote in progress

glock は、降格要求に応答中です。

q

Queued

ホルダーが glock にキューイングされると設定され、glock が保持されるとクリアされますが、残りのホルダーはありません。アルゴリズムの一部として使用され、glock の最小保持時間を計算します。

r

Reply pending

リモートノードから受信した返信の処理を待機中です。

y

Dirty

この glock を解放する前にデータをディスクにフラッシュする必要があります。

ローカルノードで保持されているノードと競合するモードでロックを取得する必要のあるノードからリモートコールバックを受け取ると、D (降格) または d (降格保留) のフラグのいずれかが設定されます。特定のロックの競合が発生した場合の枯渇状態を防ぐために、各ロックには最小保持時間が割り当てられます。最小保持時間の間にロックされていないノードは、その期間が経過するまでロックを保持できます。

期間が過ぎると、D (降格) フラグが設定され、必要な状態が記録されます。この場合、次にホルダーキューに許可されたロックがなくなると、ロックが降格になります。期間が過ぎていない場合は、代わりに d (降格保留) フラグが設定されます。また、これによりステートマシンが d (降格保留) を消去し、最小保持期間が過ぎた場合に D (降格) を設定します。

glock に DLM ロックが割り当てられている場合は、I (初期) フラグが設定されます。これは、glock が最初に使用され、最終的に glock が解放されるまで (DLM ロックが解除されるまで)I フラグが設定された状態が続く場合に発生します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.