Pergunta : Permitir tcp_nodelay

Olá! indivíduos,

Can que você ajuda a verter mais luz no tcp_nodelay acima, como é que nós o permitimos de reduzir o atraso a 0 em uma máquina do linux. Deixar-me saber seus pensamentos neste. TY

Mike
class= do

Resposta : Permitir tcp_nodelay

Há uma descrição aqui: http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.0/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-Application_Tuning_and_Deployment-TCP_NODELAY_and_Small_Buffer_Writes.html

Igualmente páginas de homem do tcp (das 5):

       TCP_NODELAY
              Se ajustado, incapacitar o algoritmo de Nagle.  Isto significa que os segmentos estão emitidos sempre como
              logo como possível, mesmo se há somente uma pequena quantidade de dados.  Quando não ajustado, dados
              é protegido até que haja uma suficiente quantidade a mandar, desse modo evitação
              emissão freqüente de pacotes pequenos, que conduz à utilização pobre da rede
              trabalho.  Esta opção é cancelada por TCP_CORK; entretanto, ajustando forças desta opção
              um resplendor explícito da saída pendente, mesmo se TCP_CORK é ajustado atualmente.

Eu escrevi um usuário do TCP da amostra que ajustasse TCP_NODELAY no soquete. Manda então dados em vários tamanhos de 1 a 8192 bytes. Você pode compilar e para funcioná-lo gostar disto:

GCC de $ - o o nodelay_test.c o mais nodelay_test
$ ./nodelay_test

Então de um outro escudo você pode conetar-lhe gosta disto, using o netcat:

$ do localhost 5678 do nc

Você pode fazer várias experiências do sincronismo permitindo/incapacitando o ajuste de TCP_NODELAY, e usando o “tempo” com o nc como este:

do tempo $ do localhost 5678 do nc > /dev/null

0m0.003s real
usuário 0m0.000s
sistema 0m0.000s

Naturalmente você pode igualmente usá-lo sobre a rede para uns resultados mais interessantes. Apenas substituir o localhost com os adderss do IP da máquina que funciona o programa de teste. E você pode aumentar o tamanho do amortecedor.

Esperar que ajudas!
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
/*
 * Exemplo do usuário de TCP_NODELAY
 *

#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  

PORTO 5678    do #define

dprintf do #define de // (arg…)
dprintf do #define (arg…) printf (arg)

handle_connection do int (cliente do int)
{
    buf do carvão animal [16384];
    int SZ = 1;
    int i;

    para (i=0; eu emito (cliente, buf, SZ, 0)) {
	perror (“emitir failed”);
	saída (EXIT_FAILURE);
      }
    }
    dprintf (“soquete de fechamento do cliente \ n”);
    fim (cliente);
}

cano principal do int ()
{
    listensock do int, clientsock;
    nome do sockaddr_in do struct;
    clientname do sockaddr_in do struct;
    tamanho do int;
    int pid;
    o int opt;

    listensock = soquete (PF_INET, SOCK_STREAM, 0);
    se (listensock  < 0="">
           
Outras soluções  
 
programming4us programming4us