[Ultramonkey-l7-develop 527] Re: MQとRPSへのユーザー空間からのアプローチについて

Back to archive index

Hajime Okada h.oka****@sdy*****
2009年 8月 25日 (火) 13:42:21 JST


岡田です。

>   ところで,カーネルの話とユーザ空間の実装の話がごっちゃになって
> きていますので,いったんスレッドを分けましょうか.

このメールはユーザ空間の話がメインですね。

>> あと、上記リンクの中の下の図で、受信スレッドと送信スレッドが別のCPUで動いていま
> すが、
>> コア間のデータのやり取りを減らすため、送信スレッドが動くCPUと送信スレッドが動く
> CPUを同じにできれば、速度を追求できるのではないでしょうか?
>   これは,ひとつの FD に対して,送信キューと受信キューが別の CPU のものに
> 割り当てられるという可能性がある,ということでしょうか.

すいません、間違った事を書いてました。
送信スレッド・受信スレッドでなく、CL側スレッド・RS側スレッドです。

>   竹林の認識では,IP アドレスやポート番号,MAC アドレスなどで
> セッションごとにキュー(CPU)が変わることはあったとしても,
> ひとつのセッションのなかの送受信で別の CPU を使うようなことはないと
> 理解しています.

1つのセッションの中でキューが変わることはないですね。

>   図の中では,スレッドの関係は
>   
>     ・Listner
>     ・Clients-side
>     ・Realservers-side
> 
> の 3 つから成り立つと仮定しているので,リアルサーバが scheduler で
> 決まった後,リアルサーバに接続しにいくにあたって一番コストが小さい
> キューを選んでそのスレッドプールのスレッドを使うだけで良いと思います.
> 
>   従って・・・
>
>>>       - ハッシュ関数のインタフェイス
>>>         → リアルサーバに一番近い
>>>         どんな情報が必要かも含む.
>> ???
>> すいません、ここがちょっとわからないです。
> 
>   失礼しました.文が途中で切れてしまいました.
>   
>   言いたいことは,リアルサーバへ繋ぎに行くに当たって使うべき
> キューを知るためのインタフェイスを用意する必要がある,ということです.

なるほど納得です。
RS側のスレッドも、キューが割当たるCPUの情報を取得してそれを使う方法ですね。


「送信時のキューをユーザから設定できる」は、CL側スレッドとRS側スレッドでデータを共有するケースなどで、NUMAノードをまたいだメモリアクセスだとhopが発生するケースを押さえる目的で言っています。
正しくは「RS側スレッドが使用するキューをユーザ空間から設定できる」ですが・・・。

※ただし、データサイズ的にAtomicには成らないでしょうから、hopよりもロックのコストが大きいでしょうね・・・。
 意味なしですね・・・。


よろしくお願いします。
-- 
/*========================
    H.Okada / 岡田 創
   h.oka****@sdy*****
             株式会社SDY
========================*/




Ultramonkey-l7-develop メーリングリストの案内
Back to archive index