mones2/22.ネットワークサーバ/21.パケットが遅い


Top / mones2 / 22.ネットワークサーバ / 21.パケットが遅い

パケットが遅い

 Mona 上で uIP を動かす。
  
 5555ポートで listen して受信したら内容を鸚鵡返しという作りにしてある。
  
 外部から、Mona上の uIP に向けて送信しまくる。
  
 ↓な感じ。
  
 require "socket"
 print("start\n");
 s = TCPSocket.open("localhost", 5555)
  
 (1..10).each {|i|
   s.write("Hello I'm packet #{i}")
   print("sent packet #{i}")
   print(s.gets)
 }
 s.close
  
 こんなのを動かすと、期待する動作が得られるし、パケットも確実にやりとりれている。
  
 ただ、ひとつだけ問題があって i が大きくなるにつれて極端にパケットのやりとりが遅くなる。
  
 10秒とか待たされたりする。
  
 現在確実に分かっていること
  
     * Ethereal で見てみると Mona 側から送るべきパケットの送信が遅れている場合がほとんど
     * Monaのコンソールで観察していると、割り込みと割り込みの間隔が極端に長い場合がある
  
  
 登場人物は
  
     * NE2000ドライバ@Mona
     * uIP@Mona
     * カーネルの割り込みハンドラ@Mona
     * Qemuの中のNE2000
     * 上のrubyプログラム
  
 と多くデバッグに苦労してる。
  
 どこで誰がパケットを遅延させているのかを調べたいのだけど
  
 テストするたびにEthereal上で見える現象が違ったりと難しい。
  
 という状況。

割り込みを取りこぼしているのではないか?

ユーザーランドで、割り込み禁止区間が長いので取りこぼしているのではないか。
カーネルに割り込み処理を移動してみれば問題を切り分けられる。
Nicドライバをカーネル側に置いて直接割り込みを受け付けるというのをやった。

替えたポイントは

コメント

コメントはありません。 コメント/mones2/22.ネットワークサーバ/21.パケットが遅い?

お名前:

MENU

now: 5

リンク


最新の20件
2017-09-29 2017-04-25 2017-01-10 2016-12-11 2016-12-09 2016-10-04 2016-08-14 2016-06-05 2016-05-29 2016-04-15 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 2179, today: 1, yesterday: 0

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:48:01 (3680d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.029 sec.