NSD - Virtual Thread ID とPhysical Thread ID (TLS Mapping)

2009年04月20日 00:04

NSD で使用されるスレッド番号を見ていると、OS上で取得できるスレッドIDと一致しない事があって不思議におもうことがあるかもしれません。

これは色々な場面で誤解する元なのですが、NSDではほとんどの情報はOS上のスレッドIDでなく、仮想スレッドID(Virtual Thread ID または VirtualTID)で表記されている事を意識する必要があります。

なので、NSDではまず物理スレッドIDと仮想スレッドIDの関連付けを確認する必要があります。
その情報が確認できるのがTLS Mapping セクションです。以下のように表示されます。

------ TLS Mapping -----

NativeTID VirtualTID PrimalTID
[ nserver:02e8: 1184] [ nserver:02e8: 2] [ nserver:02e8: 2]
[ nserver:02e8: 2436] [ nserver:02e8: 4] [ nserver:02e8: 4]
[ nserver:02e8: 2280] [ nserver:02e8: 5] [ nserver:02e8: 5]
[ nserver:02e8: 2428] [ nserver:02e8: 6] [ nserver:02e8: 6]
[ nserver:02e8: 2176] [ nserver:02e8: 7] [ nserver:02e8: 7]
[ nserver:02e8: 2336] [ nserver:02e8: 8] [ nserver:02e8: 8]
[ nserver:02e8: 2332] [ nserver:02e8: 9] [ nserver:02e8: 9]
[ nserver:02e8: 2328] [ nserver:02e8: 10] [ nserver:02e8: 10]
[ nserver:02e8: 2324] [ nserver:02e8: 11] [ nserver:02e8: 11]
[ nserver:02e8: 2320] [ nserver:02e8: 12] [ nserver:02e8: 12]
[ nserver:02e8: 2316] [ nserver:02e8: 13] [ nserver:02e8: 13]
[ nserver:02e8: 2312] [ nserver:02e8: 14] [ nserver:02e8: 14]
(略)


実はR5当時のNSDではこのTLS Mappingに相当する情報がなかったため、この突合せは非常に難しい作業でした。

見方はほぼ自明だと思うのですが、ここからNative TIDとVirutal TID の関連付けを行います。
右端のPrimal Threadというのが気になる方が多いかと思いますが、これは通常仮想スレッドIDと同じ値になるのとNSDでは他のセクションで使用しないデータなのであまり気にする必要はありません。

これは、キーになっているNative TIDが一番最初に振られたVirtual ThreadIDの事なのですが通常ここは一致します。(理由は込み入っているので割愛させてください。。)

このセクションだけを見ると、大した意味がない情報に思えるかもしれないですが、NSDは仮想スレッドIDで様々な関連付けが行われている点とTLS MappingにNative<->Virtualの変換情報があることを知るだけでNSDを自分で見ることが出来る範囲が広がると思います。

この辺の話も少しずつ話していこうかと思います。


コメント

    コメントの投稿

    (コメント編集・削除に必要)
    (管理者にだけ表示を許可する)

    トラックバック

    この記事のトラックバックURL
    http://hnagasim.blog8.fc2.com/tb.php/132-f4f31cb8
    この記事へのトラックバック


    最新記事