Iproute पैकेज में "ss" कमांड; क्यों टाइम स्लैब सॉकेट्स के लिए क्वेरी स्लैब टेबल?


15

मुझे माफ कर दो अगर यह इस सवाल के लिए सबसे अच्छा मंच नहीं है, लेकिन यह कर्नेल के लिए प्रोग्रामिंग की तुलना में अधिक प्रासंगिक लगता है।

मैं एक स्क्रिप्ट लिख रहा हूं जो खुले बंदरगाहों के लिए सिस्टम पर सवाल उठाता है ताकि हम आँकड़ों को ग्राफ और मॉनिटर कर सकें। इसके लिए, मैं iproute पैकेज से "ss" कमांड का उपयोग कर रहा हूं। यदि आप निष्पादित करते हैं ss -s|grep estabतो आपको इसके समान आउटपुट प्राप्त होगा:

TCP:   296 (estab 6, closed 238, orphaned 0, synrecv 0, timewait 238/0), ports 0

मेरे सवाल का टाइमवायट वैरिएबल के साथ क्या करना है, जो TIME_WAIT स्थिति में गणना की गई सॉकेट दिखाता है। जब मैंने यह पता लगाने की कोशिश की कि स्लैश के बाद किस नंबर को संदर्भित किया गया था, यह स्रोत कोड की खोज का एक बवंडर साहसिक कार्य बन गया, जिसने अंततः मुझे निम्नलिखित स्निपेट खोजने के लिए प्रेरित किया:

printf("TCP:   %d (estab %d, closed %d, orphaned %d, synrecv %d, timewait %d/%d), ports %d\n",
       s.tcp_total + slabstat.tcp_syns + s.tcp_tws,
       sn.tcp_estab,
       s.tcp_total - (s.tcp4_hashed+s.tcp6_hashed-s.tcp_tws),
       s.tcp_orphans,
       slabstat.tcp_syns,
       s.tcp_tws, slabstat.tcp_tws,
       slabstat.tcp_ports
       );

मुझे स्वीकार करना चाहिए, "स्लैबस्टैट" के बारे में मेरी खोज का मतलब यह था कि अंततः स्लैब कैश और उनके रिपोर्टिंग इंटरफ़ेस के बारे में मेरी जानकारी के लिए नेतृत्व किया गया / पर / slabinfo।

प्रश्न: TAB_WAIT सॉकेट गणना के साथ स्लैबटेबल का क्या करना है? मैं यह पता लगाने में विफल हो रहा हूं कि यह संख्या क्यों बताई गई है, क्योंकि जितनी बार मैंने हर सर्वर पर कमांड चलाया है, उस पर मैंने कोशिश की है, यह संख्या हमेशा शून्य रही है।


सभी ईमानदारी में, आप संभवतः संबंधित कर्नेल मेलिंग सूचियों में से किसी एक पर पोस्ट करके सबसे अच्छा उत्तर प्राप्त करेंगे, tux.org/lkml/#related-lists
jeremiahd

कोड सिर्फ दिखाता है कि स्लैब में कितने प्रतीक्षा कुर्सियां ​​आवंटित की गई हैं। IMO यह सिर्फ मेमोरी उपयोग को निर्धारित करने में मदद करता है
उलरिच डैंगल

जवाबों:


0

ऐसा लगता tcp_tw_bucketsहै कि आखिरकार ऐसा क्या है, जो लिनक्स 2.6.12 के रूप में हटा दिया गया है

तो अंतिम संख्या हमेशा 0 होगी जब तक कि यह 7 साल की गुठली पर न हो।

स्लैब की क्वेरी के लिए, जहाँ तक मैं बता सकता हूँ कि यह उपलब्ध अन्य विधियों की तुलना में हास्यास्पद रूप से तेज़ है।


यदि यह 2.6.12 से पहले कर्नेल पर है, तो मान slabstat.tcp_tws बराबर s.tcp_tws होगा ? क्या इन दोनों के मूल्य में कोई अंतर है? (एक / proc / net / sockstat से है और एक / proc / slabinfo से है)
ruanhao
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.