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

Zurück zum Archiv-Index

Shinya TAKEBAYASHI takeb****@oss*****
2009年 8月 21日 (金) 17:15:43 JST


竹林です.

> Montrealで行われたLinuxSimposiumでフェルナンド様と話をしていたMonkey側か
> らkernel側へのリクエスト用件をまとめました。

  ありがとうございます.
  
  
> まず、MQやRPSに最大限対応すべくMultiThreadの設計をすると
> http://sourceforge.jp/projects/ultramonkey-l7/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%83%A2%E3%83%87%E3%83%AB
> このリンク先の説明になります。
> 方式的には「CPUに結びついたThreadPoolを持つ」のが特色でしょうか。

  論理 CPU の数だけスレッドプールを作って,各々のスレッドプールに
各ソケットを処理するスレッドをプーリングする,という思想で良いでしょうか.

  sched_setaffinity に tid と mask を渡して,擬似的に
スレッドプールを作るような・・・.


> そして、タイトルにあるようにこの方式を実現するためにはkernelから情報を取
> 得出来なければなりません。
> その案を示しました。
> http://sourceforge.jp/projects/ultramonkey-l7/wiki/KernelRequestL7vsd

  wiki にまとめて頂いている情報を整理すると・・・
  
    ・UM-L7 起動時に必要な情報
    
      - MultiQueuing の使用可否(使うか否かではなく,使えるか否か)
        → スレッドプールを分散させるか否かの判断をするために必要.
        
      - Queue の総数
        → どれだけスレッドプールを作れるかを判断するために必要.
           NIC の queue の数が CPU 数を下回る可能性があるため.
           
           e.g.: i82575 だと RX も TX も 4 本しかないので,8cores 以上だと
                 一杯一杯に使えない.
        
      - CPU 数
        → いくつスレッドプールを作るかを決めるために必要.
        
      - ハッシュ関数のインタフェイス
        → リアルサーバに一番近い
        どんな情報が必要かも含む.
    
    
    ・コネクションの処理にあたって必要な情報
    
      - FD に紐付いた CPU
        → FD を握っている CPU が持つスレッドプールを特定するために必要.
        
      - Queue 割り付けのハッシュ
        → リアルサーバ通信用スレッドを起こすためにスレッドプールを
           特定するために必要.


  といったところでしょうか.
  
  方式の面では,先日話したように,起動時にのみ必要な情報は sysfs などで,
コネクション処理で必要な情報については ioctl などで取ってくるように
した方が良いかもしれません.
# sockaddr_storage を内包する構造を新しく定義するとか必要?


  必要な情報についてもう少し精査しましょう.
  
-----------------------------------------------------------
Shinya TAKEBAYASHI

E-mail: takeb****@oss*****
GPG ID: 395EFCE8
GPG FP: 58B2 B5D0 A692 1BD8 328B  E31E E027 AC35 395E FCE8
-----------------------------------------------------------




Ultramonkey-l7-develop メーリングリストの案内
Zurück zum Archiv-Index