लिनक्स लोकलहोस्ट मैक की तुलना में धीमी गति से धीमा होता है


5

यह प्रश्न OpenOffice पर इस थ्रेड पर आधारित है ।

मैं दस्तावेजों का विश्लेषण करने के लिए पायथन और कार्यालय यूएनओ पुल का उपयोग कर रहा हूं । अधिकांश भाग के लिए मैं अपने मैक पर चलता हूं और स्थानीयहोस्ट पर सुनने के लिए कार्यालय उदाहरण देता हूं:

soffice --accept=socket,host=localhost,port=2002;urp;StarOffice.ServiceManager"

इसका उपयोग करते हुए, एक परीक्षण दस्तावेज़ के माध्यम से चलने पर मेरे मैक पर लगभग 2 सेकंड लगते हैं। लिनक्स पर, हालांकि, लगभग 45 सेकंड के लिए एक ही परिदृश्य चलता है, एक गंभीर प्रदर्शन अंतर। और वह मिंट, जेंटू और उबंटू पर है।

दिलचस्प है, कार्यालय का उपयोग करना और इसे एक नामित पाइप के माध्यम से कनेक्ट करना:

soffice --accept="pipe,name=abraxas;urp;StarOffice.ServiceManager"

सभी परीक्षण किए गए प्लेटफार्मों पर बहुत समान गति से चलता है: लगभग 1.5 सेकंड।

प्रश्न : मैक और लिनक्स सॉकेट कनेक्शन के बीच क्या अंतर है, और लिनक्स सॉकेट इतना धीमा क्यों है?


लिबर ऑफिस में फिक्स्ड: gerrit.libreoffice.org/#/c/13856
Jens

जवाबों:


5

TCP_NODELAY चालू करने का प्रयास करें ।

डिफ़ॉल्ट रूप से टीसीपी एक बड़े पैकेट के रूप में सभी को भेजने के लिए छोटे आउटगोइंग पैकेट को इकट्ठा करने के लिए नागल के एल्गोरिथ्म का उपयोग करता है , जिसका विलंबता पर हानिकारक प्रभाव पड़ सकता है।


1
यह बहुत अच्छा काम किया, और मैंने tcpNoDelay=1कनेक्शन के दोनों किनारों पर जोड़ा है। धन्यवाद! मूल धागे को अद्यतन और हल किया गया ।
जेन्स

2

मैं अपने उबंटू डेस्कटॉप मशीन पर एक समान व्यवहार देख रहा हूं (इसलिए इसका एक्स से संबंधित नहीं है) जहां इसके पूर्ण होने के लिए ~ 45sec है। यहाँ एक के आधार पर सबसे बड़ी अपराधियों रहे हैं straceकी sofficeप्रक्रिया:

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 68.50   23.948922         323     74067      1611 futex
 23.90    8.356000      151927        55           poll
  7.31    2.555215          95     26915           recv
  0.10    0.036301       18151         2           waitpid
  0.06    0.019407           2      9586           send
  0.05    0.016330          30       539        15 read
  0.03    0.009430           1     16675           gettimeofday

यह मुझे ऐसा लगता है जैसे लिनक्स में उन्होंने अपने थ्रेड सिंक्रोनाइज़ेशन को कैसे लागू किया, इसमें कुछ मुद्दे हो सकते हैं। मेरी तुलना करने के लिए मैक तक पहुँच नहीं है, लेकिन यह कमांड लाइन है जिसे मैंने चलाया था:

strace -cf soffice --accept="socket,host=localhost,port=2002;urp;StarOffice.ServiceManager" --headless

1
उपरोक्त उत्तर देखें: tcpNoDelay=1कनेक्शन के दोनों किनारों को जोड़ें और प्रदर्शन में जबरदस्त गति आएगी।
जेन्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.