मैं एक सॉफ्टवेयर पर काम कर रहा हूं जो रियल टाइम डेटा सर्वर (टीसीपी का उपयोग करके) से जुड़ता है और मेरे पास कुछ कनेक्शन हैं। मेरा अनुमान है कि क्लाइंट तेजी से सर्वर से आने वाले डेटा को नहीं पढ़ते हैं। इसलिए मैं अपने टीसीपी सॉकेट्स की निगरानी करना चाहूंगा। इसके लिए मुझे "ss" टूल मिला।
यह उपकरण प्रत्येक सॉकेट की स्थिति को देखने की अनुमति देता है - यहां कमांड के आउटपुट का एक उदाहरण लाइन है ss -inm 'src *:50000'
ESTAB 0 0 184.7.60.2:50000 184.92.35.104:1105
mem:(r0,w0,f0,t0) sack rto:204 rtt:1.875/0.75 ato:40
मेरा प्रश्न है: मेमोरी भाग का क्या अर्थ है? उपकरण के स्रोत कोड को देखकर मैंने पाया कि डेटा कर्नेल संरचना ( sock
से sock.h
) में आ रहा है । अधिक सटीक रूप से, यह खेतों से आता है:
r = sk->sk_rmem_alloc
w = sk->sk_wmem_queued;
f = sk->sk_forward_alloc;
t = sk->sk_wmem_alloc;
क्या किसी को पता है कि उनका क्या मतलब है? मेरे अनुमान हैं:
rmem_alloc
: इनबाउंड बफर का आकारwmem_alloc
: आउटबाउंड बफर का आकारsk_forward_alloc
: ???sk->sk_wmem_queued
: ???
यहाँ मेरे बफ़र्स आकार हैं:
net.ipv4.tcp_rmem = 4096 87380 174760
net.ipv4.tcp_wmem = 4096 16384 131072
net.ipv4.tcp_mem = 786432 1048576 1572864
net.core.rmem_default = 110592
net.core.wmem_default = 110592
net.core.rmem_max = 1048576
net.core.wmem_max = 131071