タグ

2010年9月13日のブックマーク (2件)

  • 送受信 - Linuxカーネルメモ

    1. 受信処理 1.1 従来の受信処理 ネットワークインタフェースで受信したパケットは、デバイスドライバのH/W割り込み処理処理で刈り取られる。デバイスドライバは受信したパケットをカーネルの受信キューに積み、ソフトウェア割り込みを発生させる。 受信ソフトウェア割り込みのハンドラは、受信キューに積まれているパケットを取りだし該当プロトコルの受信ハンドラを呼び出す。 デバイスドライバの受信処理が受信キューにパケットを積むだけで、受信処理のメインはソフトウェア割り込み処理で実装しているのは、H/W割り込みの処理を極力短くしてシステムのレスポンスを向上させるため。 受信処理の流れを図1に示す。 1. 従来の受信処理ではデバイスドライバがネットワーク層にパケットを渡す際、netif_rx()を使用する。 2. ソフトウェア割込みを発生させる際、poll_listには仮想的なnet_device(ba

  • 2.6.35に実装されたRPSという機能について - フツーな日常

    2.6.35が出たので、Linux_2_6_35 - Linux Kernel Newbiesで変更点を眺めていたらRPS/RFSという機能が入ったことに気付く。 RPSとはReceive Packet Steeringの略称で、受信パケットの処理をマルチCPUで分散させることで、スループットの向上を図る機能であるらしい。パッチの提供主はGoogle。 昔kernelのを読んだときはキャッシュの有効活用の点からあまり分散させると良くないと聞いていたのだけど、8wayぐらいが普通にゴロゴロしている状況ではそうも言っていたれなのかもしれない。8コアの環境でのベンチマークでは2から3倍程度の性能は出たとのこと。 実装を見てみる。Linuxのネットワークスタックの動き自体の概観は送受信 - Linuxカーネルメモ が非常に参考になった。 機能の有効/無効はnet/Kconfigで制御しているのだ

    2.6.35に実装されたRPSという機能について - フツーな日常