興味深いですね♪
でっ、テストのソースコードは<(。。 スレッドの負荷モデルがどうなっているのだろうと? いや深い意味はないすっ(汗) |
微妙にmixi内のコピったので^^;
負荷んとこだけ抜粋で♪ s->lock();<ースタートそろえるmutex s->unlock(); for(i=0; i<5000000; i++) { fsl->lock();←計測するmutex or スピンロック for(j=0;j<100;j++); fsl->unlock(); } return NULL; } 私のソースをmixiのC言語とC++言語の コミュニティに置いてるので入れたら見てね。 すんません^^; スピンロックはxchgアセンブラと 変数監視ループのみです。
【2012/01/03 19:50】| | nwpfh #29ef1c77e8 [ 編集 ]
|
変数監視ループではタイムスライス内に
変数監視が終わった時ようにsched_yieldを 呼んでいます。
【2012/01/03 19:56】| | nwpfh #29ef1c77e8 [ 編集 ]
|
負荷自体は別の何回もループしてたのを
実行してただけ~。 -Core0では使用せず -Core1では別のptyから1つ実行 -Core2では別のptyから2つ実行 ですな。
【2012/01/03 20:07】| | nwpfh #29ef1c77e8 [ 編集 ]
|
ソースコードと解説ありがとうございます♪
なにぶん、mixには入れませんので(汗) Linuxて標準APIでスピンロックがありませんでしたっけ? MySQLでは何度も高負荷時にスピンロックで悲鳴をあげますが、大量のクエリーのスレッドを振り分けるのに使っていたような チョーうろ覚え的ですが、 うーん、うそついてるかもしれないと いって立ち去りますヾ( ̄ ̄ 何を言いたかったのだろう(ぼぞっ) |
あはは、にわかスピン調べのため・・
ぶっちゃけ、APIは知らなかったり。。 ソースコードがあったから、測定してみたかったのさ。と言って去ります(笑) カーネルの本を少し読んで見たくらい。って あれは低レベルかな。
【2012/01/03 21:37】| | nwpfh #29ef1c77e8 [ 編集 ]
|
|
トラックバックURL
|
忍者ブログ [PR] |