ベースコート

6ac9fd93.jpgダイソーでネイル・ハードナーを買ってきた。さらっとしていて塗りやすい。薄くぬれるので光沢も軽い感じ(ギラギラしない)でよい。

第40回 品川区水泳記録会

c1437465.JPG天気は曇。気温は低い。家で御飯を少々、会社でちょっとコーヒーとパンをたべてからプールへ。

100m IMは一人だけで泳いだ。(twitterでのアドバイスはBrをとばせ。)
感覚としては

  • Bu 16s 呼吸は2回。
  • Ba 21s キックを強くしたので腰が沈んだかも。(ダウンキックが弱いので)
  • Br 21s あまりグライド時間を長くとらないようにした。腕がつかれた。
  • Fr 18s。

くらいかなぁと。記録はベスト-0.16s。とりあえず良かった。

1時間後に50m Fr。腕がだるいままで立ち眩みもする。

  • 前半25mでは腕に力がはいってないのを自覚した。
  • 後半25mは泳いでいるうちにだんだんと右にそれてしまった。

しかしタイムが30sを越えてしまっていたとは。ベストの2秒遅れ。キャッチがどうなっていたかとかまったく覚えていない。

テーパーなしで挑んだのは今回が初めてだが、1本目の100IMでタイムが悪くないところをみると一発勝負なら実はテーパーなんていらないんのかもしれない。まぁ普段の練習がそれだけユルユルってことの裏返しかもしれないが。

そういえば記録証を受け取るまで時間があったので体育館でやっていたバレーボールをみていたらほとんどのサーブでボールが無回転なのに気づいた。もう10年くらいバレーボールは見てないので実はかなり前からそうだったのかもしれない。だいたいボールを上に投げ上げるときに無回転なら無回転サーブドライブをかけていればドライブサーブというふうに、見ていれば事前に分かるのはいかがなものか。それでは相手が心構えできてしまわないか。

DtraceDay 2010.03

a1e07f4f.jpgDTraceの話が聞けるというとで用賀のSun Microsystemsへいってきた(初めて)。

3810a734.jpg

= DTrace概要

  • 7年まえからあまり変化はない。
  • 致命的: core,crashdump=フライトレコーダ
  • 一時的: debuggerは実環境ではつかいにくい
  • 稼働中でも動的計測したい!
  • trace offならオーバーヘッドなし。
  • 観測点を絞ることでオーバーヘッドを抑制。全部onにすると動かなくなるほど重い。
  • D script (D言語とはいわない)
  • 実施には特権が必要
  • scriptは中間言語になってカーネルで検証される
    • javaとちがってD scriptではpointerがつかえる; null pointer deref/zero divはチェックされる
  • 破壊的アクションはdefault off
    • break pointのようなものも含む
  • 利点
    • 多角的に検証できる
    • リソースの見積り精度があがる
  • consumers (1M)
    • dtrace
    • intrstat
    • plockstat
    • lockstat
  • probe
    • privider:module:function:name
  • provider
    • dtrace
      • initialize, finalize, error handling
    • profile
      • 単位時間ごとに状態の標本収集
    • syscall
    • sysinfo
      • カーネル統計情報の取得
    • vminfo
    • proc
    • sched
    • io
  • consumer
    • DTrace機構とやりとりするプロセス
    • 複数コンシューマの同時実行ok
  • D Script
    • C like
    • 組み込み関数/変数が便利
      • eg timestamp
    • thread local storage
    • 節固有変数
    • kernel C データヘの完全なアクセス
    • buffer
      • trace actionがデータを記録; trace(expr) //printfのようなもの
    • 集積関数
      • 集計
      • awk/perlで後処理しなくてすむ
      • @name[keys]=func(args)
    • syntax

プローブ ←provider:{module}opt:{function}opt:Name  '*'もつかえる

/述語/

{

アクション文 ←ここでifがつかえないので述語が必要になっている

}

  • - サンプルツール
    • - /usr/demo/dtrace (solaris10)
      • /opt/DTT (opensolaris)
  • まとめ
    • まずどのプロバイダをつかったらいいかがわからない。
    • いろんな視点から調べて問題個所をしぼりこむ。
    • いきなりあれこれしないのが吉
  • デモは省略...
  • (疑問点)
    • ILP32,LPl64

56a00e3b.jpg

= ユーザープログラムでのDTrace 導入編

  • 公式ドキュメントにすべて書いてある (必携)
    • ちょっと堅苦しい...
    • gihyoのは全8回予定
  • probe-description [,..] { action-statements }
  • probe-desc ::= probeprov:probemod:probefunc:probename
  • probeprov ::= 機能の種類
  • probemod ::= バイナリファイルを指定 省略すると全部になるので注意
  • probefunc ::= 関数限定
  • probename ::= entry,returnとか
  • デバッガでattachしているとdtrace -pはできない
    • 対策: dtrace引数でpidを指定することにしてscript内で pid$2 とかして参照する
  • stringof(copyin(addr))
    • 固定長で\0ないやつもある。
    • copyinはデフォルト長でcopyしてくる。オプションをつければ変えれる。1MBとかも。
  • clause local variableはCの局所変数相当だがmultithreadのときは要注意。
  • pidプロバイダのreturnプローブは arg0 が戻りアドレス arg1 は戻り値だがvoidだと不定値に。
  • ustack()アクションでスタックトレースがとれる。
  • probeのためのTRAPはdtraceコマンドがやる。カーネルではない。
  • forkするとpidがかわってしまうのでトレースできなくなる。
  • execするとTRAPが上書きされてしまうのでダメ。
  • inetdから起動されるデーモンだと仕掛が必要。
    • あえて予想不能は挙動にならないようなガードだと考えてみる。

= ユーザープログラムでのDTrace 応用編

  • プログラムを改変して関数境界以外で情報をとる
  • dtrace -GでプローブをNOPでおきかえてcheckpoint.oに位置情報を保存する。
    • 副作用があってもそこは評価されて捨てられるだけ。
  • pfexec:sudoみたいなものか
  • 可変長のメモリを採取するには
    • inline int xxx = nnn; ←マクロ相当
    • なんでこんなことになっているのか
    • self->bufとallocaの寿命 checkはなし 範囲checkだけ
    • loopがないのは 有限時間で止まるのを保証するのはたいへんなため
      • 実はバイトコードを書けばループはつくれるかも
    • /../と?:しか条件分岐がかけない。
  • isainfo -v
    • intかlongとかは注意するしかない。
  • *_ENABLED()は関数単位でon/offできる
  • sparcはlittle overheadだけどx86はそれほどでもない。
    • sparc 2clockくらい
    • amd64 2clockぐらい?
    • 32bitはためしていない
    • kernelのprobeならオーバーヘッドはよりすくなくなる。
  • PROV_PROBE(*x.p)とするよりは、PROV_PROBE(x)としておいてスクリプトで*pをcopyinしたほうがいい。
  • 32/64は指定しないとだめ。

= デモ

  • chime: dtraceとおなじ引数でGUI
    • 度数分布とか
    • 時間経過とかで
  • sshkeysnoop.d

= 合同セッション

  • solaris bsd mac
  • 開発 運用
  • driver
    • FBTベース (function boundary trace)
    • 時間制約があるので..
  • kernel moduleはロードするときにNOPにおきかえている
  • system tap
    • TRAPなしでユーザ空間だけでなんとかしているらしい
    • 定期的にバッファをカーネルに渡している?
  • pidプロバイダだとlibcでプローブをいれると全プロセスで共有されてしまうのでpidで外せるけど激遅に。
    • デバッガもトレースをうめこむとききにprivate mappingするので相性がわるい
  • /opt/DTT
    • DTrace Toolkit
    • 他でも動くが、probepointの名前が違うので動かないかも。
    • ワンライナーだけでなく、こういうのは便利。
    • 勉強にもなる
    • shellscriptの方が大きかったりして
    • minfbypi マイナーフォールト調査
    • iotop
  • 不安定なインタフェイスをつかうと、いきなり構造体がかわって動かなくなったり..
  • ユーザランド: 構造体も#includeすればいけるが、だめなケースもある。
  • コンパイラオプションも合わせないといけない。
  • parserは自前でもっている。
  • セクション .SUNW_dof があるとプロバイダがうまっていることがわかる。
  • pythonももってる、firefoxとかも、
  • /opt/DTT/perl/Readme: ビルド方法が
  • /opt/DTT/php/Readme でもl php.ini にオプション指定が必要。どの関数が重いかもすぐわかる。
  • java hotsport provider
  • ときどきbuiltinが増えているのでチェックしよう。

daa649ef.jpg

  • 頂き物
    • Tシャツじょうぶだそう。日本でももうすぐSUNのマークが使えなくなるらしいのでゲット。
    • 途中で捨てたりしないでください。次の日にホームレスの人がみんな同じのを着てたりするので(笑)

今日の練習

人が少ない。年度末でみんな飲みにいってるのかな。

泳ぐ1時間前に菓子パンを食べたので、前半1時間はゲップのときにゲロが出ないように気をつかってしまった。やはり2時間あけるか量を減らしておかないとまずいと再認識した。

  • Cr swim 20分
  • Cr dash 25m → 15s
  • Ba swim
  • 休憩
  • Bu swim
  • Br kick
  • Cr swim 50s (time=45~48s) *15くらい
  • Cr swim 60s (time=40s) *2
  • Br swim 25m *4

今日もロングのスピードがのってこない。25mのタイムはいつもどおりなのだが。

日曜日の記録会に向けて新しいハーフスパッツの水着をはいてみた。30分くらい泳いだが終わりごろにはターンで壁を蹴ったときにふとももがつりそうになった。

平キックはいまいち水のひっかかりが悪いので蹴り出しだけのドリルをやってちょっとましになった。平swimはもっと調子が悪くてグライドで進んでない。

バタフライは呼吸のタイミングを少し早めに修正してバランスがよくなってきた。

今日の練習

  • Cr swim 20分
  • Bu easy 10分
  • 休憩
  • Cr pull 20分 50m=48sペース
  • Ba pull 10分
  • 伏し浮き
  • Cr swim 50m cycle=60s swim=43s *5?
    • キックを強くしたので腕よりも呼吸心拍数が先に限界に。
  • ゲンコツCr MAX 15m *2

泳ぎだしたら左もも表が痛くなったので平キックはなし。

プルは快調だったのにメインスイムのスピードが全然出ないのが納得いかないが、ドカドカキックは100m一本のときだけだな。インターバル練習だと体がついてこない。

記事検索
月別アーカイブ
アクセスカウンター

    タグ絞り込み検索
    ギャラリー
    • ブラシレスジンバルにPCMレコーダをくっつける
    • ブラシレスジンバルにPCMレコーダをくっつける
    • ブラシレスジンバルにPCMレコーダをくっつける
    • ブラシレスジンバルにPCMレコーダをくっつける
    • ブラシレスジンバルにPCMレコーダをくっつける
    • ブラシレスジンバルにPCMレコーダをくっつける
    Amazon
    楽天市場
    adby google
    LINE読者登録QRコード
    LINE読者登録QRコード
    • ライブドアブログ