これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド blkparse です。
プログラム:
NAME
blkparse - ブロックデバイスのイベントストリームのフォーマットされた出力を生成します
SYNOPSIS
ブロックパース [ オプション ]
DESCRIPTION
ブロックパース ユーティリティは、さまざまなデバイスのイベントのストリームを結合しようとします。
さまざまな CPU に対応し、イベント情報のフォーマットされた出力を生成します。 具体的には、
の(機械可読)出力を受け取ります。 ブロックトレース ユーティリティを使用して適切に変換します
フォーマット済みで人間が読める形式。
屈折計と同様に、この類の検証は官能評価と並行して行うべきです。一般的に、抽出が進むにつれて高温になる抽出方法は、抽出が成功する確率が低い傾向にあります。 ブロックトレース、いくつかの詳細に関して ブロックパース コマンドを理解するのに役立ちます
以下に示す行オプション。
-デフォルトでは、 ブロックパース 後処理モードで実行することを想定しています。 跡が残る場所
イベントは前回の blktrace の実行によって保存されており、blkparse はイベントを結合しています
ストリームとフォーマットされたデータのダンプ。
blkparse は、次のように指定することで blktrace と同時にライブ方式で実行できます。 -i - 〜へ
blkparse を使用し、それを blktrace のライブ オプションと組み合わせます。 例は次のとおりです。
% blktrace -d /dev/sda -o - | blkparse -i -
- blkparse バッチ イベントで読み込む数を設定できます。 -b オプションです。デフォルトは次のとおりです
イベントを 512 個のバッチで処理します。
- イベント トレースを異なる出力名で blktrace に保存した場合 ( -o
blktrace のオプション)、同じ入力名を指定する必要があります。 -i オプションを選択します。
- 出力データの形式は、 -f or -F オプション -- 出力を参照
詳細については、「説明と形式」を参照してください。
デフォルトでは、blkparse はフォーマットされたデータを標準出力に送信します。 これは次の方法で変更できます。
-o オプションを使用するか、テキスト出力を無効にすることもできます。 -O オプション。 マージされたバイナリ ストリームは次のようになります。
を使用して生産された -d オプションを選択します。
OPTIONS
-A 六角マスク
--セットマスク=六角マスク
フィルターマスクを次のように設定します 六角マスク、マスクについては blktrace (8) を参照してください。
-a mask
--act-マスク=mask
Add mask 現在のフィルターに適用します。マスクについては blktrace (8) を参照してください。
-D DIR
--入力ディレクトリ=DIR
プリペンド DIR ファイル名を入力するには
-b バッチ
--batch={バッチ}
標準入力読み取りのバッチ処理
-i file
--input =file
入力ファイルのベース名を指定します -- デフォルトは デバイス.blktrace。CPU.
上で述べたように、指定すると -i - blktrace を使用してライブ モードで実行します (データを読み取る
標準で)。
-F タイプ、FMT
--format =タイプ、FMT
-f FMT
--format-spec=FMT
出力形式を設定します (詳細については、「出力の説明と形式」を参照してください)。
-f 形式は、すべてのイベントの形式を指定します。
-F 形式を使用すると、特定のイベント タイプの形式を指定できます。 の
XNUMX文字 標準 フィールドは、「ACTION」で説明されているアクション指定子の XNUMX つです。
識別子。
-M
--メッセージなし
-d を指定すると、ファイルへのメッセージの出力が停止されます。 (できる
CFQ I/O スケジューラを使用すると、結果のファイルのサイズが大幅に削減されます。)
-h
--名前によるハッシュ
PID ではなく名前でプロセスをハッシュする
-o file
--output =file
出力ファイル
-O
--テキスト出力なし
Do バイナリ (-d)のみ
-d file
--ダンプバイナリ=file
バイナリ出力ファイル
-q
- 静かな
静かなモード
-s
--プログラムごとの統計
プログラムごとにデータを並べて表示します
-t
--track-ios
IOごとの時間差を表示
-w スパン
--ストップウォッチ=スパン
トレースを表示します。 スパン 指定 -- スパンは次のとおりです。
終了時間 -- 時刻 0 から時刻までのトレースを表示します。 終了時間 (ns単位)
or
開始時間:終了時間 -- 時間からのトレースを表示 start 終了時間まで (ns 単位)。
-v
-詳細
マージナルエラーに関するより詳細なマージナル
-V
- バージョン
表示バージョン
TRACE ACTIONS
次のトレース アクションが認識されます。
C -- コンプリート 以前に発行されたリクエストは完了しました。 出力には詳細が表示されます。
そのリクエストのセクターとサイズ、およびリクエストの成功または失敗。
D -- 発行 以前にブロック層キューまたは I/O に存在していたリクエスト
スケジューラがドライバーに送信されました。
I -- 挿入された 内部スケジュールに追加するために、リクエストが I/O スケジューラに送信されています。
キューに並び、その後ドライバーによるサービスを受けます。 この時点でリクエストは完全に形成されます。
Q -- 待ち行列に入れられた これは、指定された場所で I/O をキューに入れる意図を示しています。 実際のリクエストは存在しません
はまだありません。
B -- バウンス これに添付されているデータページ バイオ ハードウェアでは到達できず、
より低いメモリ位置にバウンスする必要があります。 これにより、I/O が大幅に遅くなります
データはカーネル バッファとの間でコピーする必要があるため、パフォーマンスが低下します。 通常、これは可能です
より良いハードウェア、より良い I/O コントローラ、またはプラットフォームを使用することで修正されました。
IOMMU。
M -- バック マージ where の境界で終了する、以前に挿入されたリクエストが存在します。
この I/O が開始されるため、I/O スケジューラはそれらをマージできます。
F -- フロント マージ バック マージと同じですが、この I/O は以前に挿入された場所で終了します。
リクエストが始まります。
M -- フロント or バック マージ 上記のいずれか
M -- フロント or バック マージ 上記のいずれか。
G -- 取得する 要求 あらゆる種類のリクエストをブロック デバイスに送信するには、 構造 要求 コンテナ
最初に割り当てる必要があります。
S -- 眠る 利用可能なリクエスト構造がなかったため、発行者は待機する必要があります。
解放されるべき人。
P -- プラグ I/O が以前は空だったブロック デバイス キューにキューイングされると、Linux はそのブロック デバイス キューをプラグインします。
このデータが必要になる前に、将来の iOS が追加されることを見越してキューに追加されます。
U -- 抜きます 一部のリクエスト データはすでにデバイス内でキューに入れられているため、デバイスへのリクエストの送信を開始します。
運転者。 これは、タイムアウト期間が経過すると自動的に発生する可能性があります (次のエントリを参照)
または、多数のリクエストがキューに追加された場合。
T -- 抜きます 原因 〜へ タイマー プラグイン後にキューに入れられた I/O を誰も要求しなかった場合、
キューにある場合、定義された期間が経過すると、Linux は自動的にキューを切断します。
X -- split RAID またはデバイス マッパーのセットアップでは、受信 I/O がデバイスまたはデバイスにまたがる可能性があります。
内部ゾーンにあるため、サービスのために小さな断片に切り刻む必要があります。 これはもしかしたら
これは、RAID/DM デバイスの不適切なセットアップによるパフォーマンスの問題を示していますが、次の可能性もあります。
通常の境界条件の一部であるだけです。 dm はこれが特に苦手で、クローンを作成します
たくさんの I/O。
A -- リマップ スタックされたデバイスの場合、受信 I/O は I/O 内のその下のデバイスに再マップされます。
スタック。 再マップ アクションでは、正確に何が何に再マップされるかを詳しく説明します。
出力 DESCRIPTION そして フォーマット
blkparse からの出力は、特定の用途に合わせて調整できます。特に、
出力の解析、および/または出力フィールドをユーザーが表示したいフィールドに制限します。 のデータ
出力できるフィールドは次のとおりです。
a アクション、(小さい) 文字列 (1 文字または 2 文字) -- 詳細については、以下の表を参照してください。
c CPUID
C Command
d RWBS フィールド、(小さい) 文字列 (1 ~ 3 文字) -- 詳細については、以下のセクションを参照してください。
D イベントのデバイスのメジャー番号とマイナー番号を含む 7 文字の文字列
(カンマで区切ります)。
e エラー値
m イベントのデバイスのマイナー番号。
M イベントのデバイスのメジャー番号。
n ブロック数
N バイト数
p プロセスID
P パケット データの表示 -- 一連の XNUMX 進値
s シーケンス番号
S セクター番号
t タイムスタンプ (ナノ秒)
T タイムスタンプ(秒)
u マイクロ秒単位の経過値 (-t コマンドラインオプション)
U ペイロードの符号なし整数
ユーザーはオプションでフィールドの表示幅を指定でき、オプションで左の幅を指定できることに注意してください。
整列指定子。 これらはフィールド指定子の前に「%」文字を付け、その後に
オプションの左揃え指定子 (-)、その後に幅 (XNUMX 進数)、そして
フィールド。
したがって、左揃えの 12 文字フィールドにコマンドを指定するには、次のようにします。
-f "%-12C"
ACTION 識別子
次の表は、出力される可能性のあるさまざまなアクションを示しています。
IO が別のデバイスに再マップされました
B IO がバウンスしました
C IO 完了
ドライバーに発行される D IO
F IO フロントがキュー上のリクエストとマージされました
G リクエストの取得
I IOがリクエストキューに挿入されました
M IO がキュー上のリクエストとマージされて戻されました
Pプラグリクエスト
Q IO はリクエストキューコードによって処理されます
S スリープ要求
T タイムアウトのため接続を解除する
U アンプラグ要求
X分割
RWBS DESCRIPTION
これは、少なくとも XNUMX つの文字 (読み取りの場合は「R」、書き込みの場合は「W」、または
「D」はブロック破棄操作の場合)、オプションで「B」(バリア操作の場合)または
「S」 (同期操作の場合)。
DEFAULT 出力
標準ヘッダー (または表示される最初のフィールド) には次のものが含まれます。
"%D %2c %8s %5T.%9t %5p %2a %3d"
これを分解する:
%D イベントのデバイスのメジャー/マイナーを %3d、%-3d として表示します。
%2c CPU ID (2 文字のフィールド)。
%8s シーケンス番号
%5T.%9t
タイムスタンプの秒部分の 5 文字のフィールドと 9 文字のフィールド
タイムスタンプのナノ秒。
%5p プロセス ID の 5 文字のフィールド。
%2a いずれかのアクションを表す 2 文字のフィールド。
%3d RWBS データの 3 文字のフィールド。
これを実際に見てみると、次のようになります。
8,0 3 1 0.000000000 697 GW 223490 + 8 [クジャーナル]
ヘッダーは、この行の 223490 (開始ブロック) までのデータです。 デフォルト
すべてのイベント タイプの出力には、このヘッダーが含まれます。
DEFAULT 出力 FOR ACTION
C -- コンプリート
ペイロードが存在する場合、これはヘッダーに続く括弧の間に表示されます。
その後にエラー値が続きます。
ペイロードが存在しない場合は、セクターとブロック数が表示されます (
介在するプラス (+) 文字)。 もし -t オプションを指定してからの経過時間
が提示されます。 どちらの場合も、その後に完了のエラー値が続きます。
B -- バウンス
D -- 発行
I -- 挿入された
Q -- 待ち行列に入れられた
ペイロードが存在する場合は、ペイロードのバイト数が出力され、その後に
括弧内のペイロードを XNUMX 進数で示します。
ペイロードが存在しない場合は、セクターとブロック数が表示されます (
介在するプラス (+) 文字)。 もし -t オプションを指定してからの経過時間
が表示されます(括弧内)。 どちらの場合も、コマンドの後に次のコマンドが続きます。
イベントに関連付けられたもの (角括弧で囲まれています)。
F -- フロント マージ
G -- 取得する 要求
M -- バック マージ
S -- 眠る
開始セクターとブロック数が出力されます (プラス (+) を挟んで)
文字)の後にイベントに関連付けられたコマンドが続きます(四角で囲まれています)
括弧)。
P -- プラグ
イベントに関連付けられたコマンド (角括弧で囲まれた) が出力されます。
U -- 抜きます
T -- 抜きます 原因 〜へ タイマー
イベントに関連付けられたコマンド (角かっこで囲まれた) が出力されます。
続いて未処理のリクエストの数が続きます。
X -- split
元の開始セクターの後に新しいセクターが続きます (スラッシュ (/) で区切られています)。
出力の後に、イベントに関連付けられたコマンドが続きます (四角で囲まれています)
括弧)。
A -- リマップ
セクタと長さが、元のデバイスとセクタのオフセットとともに出力されます。
例
デバイス上の I/O をトレースするには / dev / hda & パーズ 出力 〜へ 人間 読みやすいです 形、 つかいます
フォロー中 コマンド:
% ブロックトレース -d / dev / sdaに -o - | ブロックパース -i -
(参照してください ブロックトレース 詳細については (8) を参照してください)。 これと同じ動作は、
便利なスクリプト トレース。 コマンド
% btrace /dev/sda
前のコマンドとまったく同じ効果があります。 見る トレース (8)詳細については。
デバイス上の I/O をトレースし、後の処理のために出力を保存するには、 ブロックパースには
ブロックトレース このような:
% blktrace /dev/sda /dev/sdb
これにより、デバイス上の I/O がトレースされます / dev / sdaに & / dev / sdb 記録された情報を保存します
ファイル内 SDA & SDB 現在のディレクトリ内で、XNUMX つの異なるデバイスに対して、
それぞれ。 このトレース情報は、後で、 ブロックパース ユーティリティ:
% blkparse sda sdb
これは、以前に記録されたトレース情報を人間が読める形式で出力します。
stdout。
作者
ブロックパース ジェンス・アクスボー、アラン・D・ブルネル、ネイサン・スコットによって書かれました。 このマニュアルページは
から作成された ブロックトレース BasZoetekouwによるドキュメント。
報告 バグ
バグを報告する[メール保護]>
COPYRIGHT
Copyright©2006JensAxboe、Alan D. Brunelle、NathanScott。
これは自由ソフトウェアです。 GNUの条件の下でそれのコピーを再配布することができます
General Public Licensehttp://www.gnu.org/licenses/gpl.html>。 保証はありません。
法律で許可されている範囲。
このマニュアルページは、BasZoetekouwによってDebian用に作成されました。 それはから派生しました
著者によって提供された文書であり、以下の下で使用、配布、および変更される場合があります。
GNU General PublicLicenseバージョン2の条件。
Debianシステムでは、GNU General PublicLicenseのテキストは次の場所にあります。
/ usr / share / common-licenses / GPL-2。
onworks.net サービスを使用してオンラインで blkparse を使用する