議論とは何ですか? [閉鎖]

議論とは何ですか? [閉鎖]

書き込みプロセスによって発生したロック競合を測定するように求められました。その書き込みプロセスのロック状態データを表示しています。

私の質問は次のとおりです。

  1. 競合は、スレッドが特定のロックを待つ回数(他のスレッドがそのロックを保持しているため)、またはそのロックが解放されるまでスレッドが待たなければならない時間に関連していますか?

  2. 競合を両方のスケールで計算するのは正しいですか?

    • ナノ秒(スレッドがイベントの発生/ロック解除を待たなければならない平均時間)と
    • cnt(イベントが発生した回数)

    特定のロックに対してlockstatから収集されたデータをプロファイリングしますか?つまり、競合〜nsec * cnt

答え1

Linuxカーネルドキュメントを見ると、ロックが解除されるのを待っているようです。

- HOW

Lockdep already has hooks in the lock functions and maps lock instances to
lock classes. We build on that (see Documentation/locking/lockdep-design.txt).
The graph below shows the relation between the lock functions and the various
hooks therein.

        __acquire
            |
           lock _____
            |        \
            |    __contended
            |         |
            |       <wait>
            | _______/
            |/
            |
       __acquired
            |
            .
          <hold>
            .
            |
       __release
            |
         unlock

lock, unlock    - the regular lock functions
__*     - the hooks
<>      - states

メモ:そのリンクを見ると、使い方も示されています。

競争測定

mutraceちなみに、与えられた実行可能ファイルの競合を計算するために使用することもできます。これについては、次のタイトルの記事で説明します。ロック競合測定

例えば

$ LD_PRELOAD=/home/lennart/projects/mutrace/libmutrace.so gedit
mutrace: 0.1 sucessfully initialized.

mutrace: 10 most contended mutexes:

 Mutex #   Locked  Changed    Cont. tot.Time[ms] avg.Time[ms] max.Time[ms]       Type
      35   368268      407      275      120,822        0,000        0,894     normal
       5   234645      100       21       86,855        0,000        0,494     normal
      26   177324       47        4       98,610        0,001        0,150     normal
      19    55758       53        2       23,931        0,000        0,092     normal
      53      106       73        1        0,769        0,007        0,160     normal
      25    15156       70        1        6,633        0,000        0,019     normal
       4      973       10        1        4,376        0,004        0,174     normal
      75       68       62        0        0,038        0,001        0,004     normal
       9     1663       52        0        1,068        0,001        0,412     normal
       3   136553       41        0       61,408        0,000        0,281     normal
     ...      ...      ...      ...          ...          ...          ...        ...

mutrace: Total runtime 9678,142 ms.

引用する

関連情報