パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

FreeBSD SMPngが完了、性能が劇的に改善」記事へのコメント

  • by Anonymous Coward
    マルチコアで、スレッド数がコア数を上まわるとパフォーマンスが落ちるというのは、例えば動画エンコーダなんかだとキャッシュ容量を圧迫するからというのが大きな理由でしょう。動画エンコーダだと広範囲のメモリを参照、大量のI/Oをしないといけないけど、マルチスレッド化するために、並列で複数の異なるフレームを処理したりとかしているので、どうしてもワーキングセットが肥大化しがちで、スラッシング状態になったりします。

    でも今回の実験だとFreeBSDでは殆ど性能が落ちないんですよね。もっと別のケースのデータなんかも見てみたい気はしますね。
    • by Anonymous Coward on 2007年02月25日 22時52分 (#1116815)
      >>マルチコアで、スレッド数がコア数を上まわるとパフォーマンスが落ちるというのは
      スレッド数がコア数を上回っている時点で
      素のスレッドと言うよりはユーザースレッドだよね。
      ならばユーザースレッドの数が多ければ多いほど、処理できる能力って相対的に減るよね
      (処理的にはマルチタスクっぽくなるから)
      親コメント
      • >ならばユーザースレッドの数が多ければ多いほど、処理できる能力って相対的に減るよね

        コアの数を上回ったスレッドを動かすと、個々のスレッドの処理能力は落ちるんですけど、FreeBSDはそれぞれのスレッド処理能力を合計すると、8スレッド動かした時の合計に近い値が出る。
        ところが、Linuxは8スレッド超えると、それぞれのスレッドの処理能力を合計しても、8スレッド時の合計に遠く及ばなくなる。

        グラフによると、8スレッド動かした時の能力は双方とも、およそ3000。
        スレッド毎に375くらいになる。
        スレッドの数を16にしても、FreeBSDは能力の合計が3000弱。
        合計が8スレッドの時とほぼいっしょなので、スレッド毎の能力は単純に半分になる。
        ところが、Linuxの場合、16スレッドになると、能力の合計が800くらいまで落ちる。
        スレッド毎には、50程度と激減する。
        親コメント
      • by Anonymous Coward on 2007年02月26日 1時58分 (#1116886)
        > スレッド数がコア数を上回っている時点で
        > 素のスレッドと言うよりはユーザースレッドだよね。

        カーネルスレッドで,I/O待ちに突入した時点で,プリエンプションが起こっているだけでしょう.

        DBの処理は,I/O処理と計算処理の粒度が大きいので,カーネルスレッドのベンチマークに最適な例です.
        つまりI/O処理待ちの間に,他のスレッドが計算処理を並行して実行できるので
        グラフのように実CPU以上のスレッドが起動しても,さほど性能低下が起きていないのだと思います.

        親コメント

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

処理中...