なぜ錆プロジェクトは、東京を使用して非同期ネットワークIOをやってないファイルディスクリプタ5への書き込みの数千を持っていますか?

ガーウィンダー・シン:

私が使用したシステムコールのための私のコードをプロファイリングしていますstrace私はいくつかの驚くべき結果を発見しました。200MBのデータのネットワーク転送をしながらトレースショー47254単一バイトがファイルディスクリプタ5に書き込みます。

write(5, "\1", 1)

この書き込みは何を意味するのでしょうか?FD 5とは何ですか?それはどこから発信されるだろうか?見つける方法はありますか?

私は非常によく、Linuxの基礎に精通していないです。

の出力 ls -lrt /proc/24393/fd

lrwx------ 1 95th 95th 64 Mar  1 20:56 9 -> 'socket:[97676]'
lr-x------ 1 95th 95th 64 Mar  1 20:56 7 -> /dev/random
lr-x------ 1 95th 95th 64 Mar  1 20:56 6 -> /dev/urandom
l-wx------ 1 95th 95th 64 Mar  1 20:56 5 -> 'pipe:[98345]'
lr-x------ 1 95th 95th 64 Mar  1 20:56 4 -> 'pipe:[98345]'
lrwx------ 1 95th 95th 64 Mar  1 20:56 3 -> 'anon_inode:[eventpoll]'
lrwx------ 1 95th 95th 64 Mar  1 20:56 2 -> /dev/pts/0
lrwx------ 1 95th 95th 64 Mar  1 20:56 1 -> /dev/pts/0
lrwx------ 1 95th 95th 64 Mar  1 20:56 0 -> /dev/pts/0

(それはあまり助けにはならなかったが)私は、そのパイプが何であるかをチェックします。

/proc/24393/fd$ lsof | grep 98345
btrs      24393       95th    4r     FIFO               0,11       0t0            98345 pipe
btrs      24393       95th    5w     FIFO               0,11       0t0            98345 pipe
tokio-run 24393 24394 95th    4r     FIFO               0,11       0t0            98345 pipe
tokio-run 24393 24394 95th    5w     FIFO               0,11       0t0            98345 pipe
tokio-run 24393 24395 95th    4r     FIFO               0,11       0t0            98345 pipe
tokio-run 24393 24395 95th    5w     FIFO               0,11       0t0            98345 pipe
user1937198:

これらの書き込みは、それらがファイルディスクリプタ・トリガー以外の何かによって起こされたときに、イベントがepoll_waitのシステムコールであるワーカースレッドをウェイクアップする(トキオ実装の一部として)MIOで使用されています。スレッドがシステムコールのOSでブロックされているので、これはそれらのブロックを解除するためにOSを伝えるために、ある種のシステムコールを必要とします。これは、チャネルで発生することができます。あなたはこれを見ている場合、それはあなたがアイドル状態にある労働者を持ってお勧めします。このシステムコールを使用する代替案は、ポーリングbusywait(はるかに高価なシステムコールとCPU時間の)で、またはそれらは、外部I / O(あなたの同時実行を制限する)によって起こされるまで、ちょうどすべての労働者を使用しないようにそれらのスレッドを維持することです。私は、あなたが、これらは実際にパフォーマンスへの影響や他の場所で、アプリケーションのボトルネックに起因しているかどうかを見てお勧めします。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=33658&siteId=1