thread id の件

とりあえずここまでできた (ちょっと飽きてきた) メモ。

THD->thread_id は書いたら書きっぱなしだし、 pthread_self() が一緒に呼ばれるタイミングがうまく見つかれば行けそうだけど、 mysqld_list_processes() でもダメなんだよね。

#!/usr/sbin/dtrace -s

pid$target:*:*mysql_execute_command*:entry
{
    printf("pid=%d, tid=%d, arg0=%d, arg1=%d", pid, tid, arg0, arg1);
}

これで arg1 に入るぽい。

% sudo dtrace -s ./hoge.d -p `pgrep -nx mysqld` | uniq
dtrace: script './hoge.d' matched 1 probes
CPU     ID                    FUNCTION:NAME
  8  56978 __1cVmysql_execute_command6FpnDTHD__i_:entry pid=1006, tid=17620, arg0=11920071504, arg1=2424494
  8  56978 __1cVmysql_execute_command6FpnDTHD__i_:entry pid=1006, tid=17620, arg0=11920071504, arg1=2424494
  9  56978 __1cVmysql_execute_command6FpnDTHD__i_:entry pid=1006, tid=17620, arg0=11920071504, arg1=2424494
 10  56978 __1cVmysql_execute_command6FpnDTHD__i_:entry pid=1006, tid=17620, arg0=11920071504, arg1=2424494

長いこと動きっぱのスレッドならやってる作業のめどを付けて truss から探す、サクサクやることが変わるものならこのリストにいつか出てくる、てな感じでしょうか。