10145


同じ内容を一本の接続に全て書き込むのと、10本に対して書き込むのは、どのくらいCPUサイクルやリソース消費が違いますか？  
速度や通信効率は置いておいて、マシン負荷のみを考えた場合に一本の方がコストが少ないのでしょうか？


CC BY-SA 3.0
2015-05-14T00:27:42.300
10138
2015-05-14T03:38:33.160
2015-05-14T03:38:33.160
799
3496
question
tcp network
TCPコネクションを1本保持するのと10本保持する場合のコストの違い


マシン負荷を考える場合、CPUよりも低速なデバイスとのやり取りにコストがかかります。受信パケットがあればCPUに割り込みが発生しますから、TCPコネクション数に応じて負荷が上がると考えていいでしょう。  
送信に関しても[ソケットの通信の効率化をネットワークカードレベルで考える](https://ja.stackoverflow.com/a/9473/4236)でコメントしましたが今はネットワークカードにオフロード処理させるためコネクション数が少ない方が処理をまとめることができます。


CC BY-SA 3.0
2015-05-14T01:42:00.157
10145
2015-05-14T01:42:00.157
2017-04-13T12:52:38.920
-1
4236
10138
answer


ネットワークカードのハードウエアレベルでできることはネットワークカードに任せれば CPU 負荷は減ります。  
その意味で、同時に複数の通信をしないほうが負荷は小さいです。

あえてマシン負荷以外の話をしてみると  
１クライアントが１サーバに対して同時に複数のコネクションを張ること自体が犯罪レベルの悪です。  
１クライアントが１サーバに対して１０本のコネクションを同時に張るということは、サーバ側の空きポートを１０個消費するということです。  
サーバ側空きポートが１００個しかない場合を想定します。クライアントが  
１コネクションを張る仕様だと１００人が同時に使用できるのに、  
１０コネクションを張る仕様だと１０人しか同時に使用することができません。  
(実際には TIME_WAIT 状態に陥るはずで、もっと少ない人数しか使えないでしょう)  
サーバーポート枯渇って奴です。


CC BY-SA 3.0
2015-05-14T02:10:49.443
10147
2015-05-14T02:10:49.443
8589
10138
answer