Time बिल्ली ’का यह अजीब समय व्यवहार क्यों है?


8

मैं catविभिन्न फ़ाइलों को एक बड़ी फ़ाइल में पाइप करने के लिए उपयोग कर रहा हूं । अलग-अलग फ़ाइलों की संख्या दो फ़ाइलों से लेकर दस तक भिन्न होती है, लेकिन सभी फ़ाइलों का कुल आकार हमेशा एक ही होता है (एक जोड़ी GB)।

मेरी समस्या: जब भी मुझे उस मामले में मिलता है, जहां मेरे पास कुल छह फाइलें हैं, तो समय लगता है कि उन्हें चोटियों (यानी पांच या सात से ज्यादा) को समतल करना है , और मुझे पता नहीं क्यों।

किसी को एक विचार है?

फ़ाइलें (सभी समान आकार)

output
outputTEMP1
outputTEMP2
outputTEMP3
outputTEMP4
outputTEMP5

आदेश

cat outputTEMP* >> output && rm -f outputTEMP*

वर्तमान में, मशीन को कुछ गणनाएं करनी हैं, लेकिन मैं बाद में अपडेट करूंगा जब नए माप उपलब्ध होंगे।


आपके द्वारा उपयोग की जा रही सटीक कमांड लाइन क्या है?
इन्नाएम 15

मैंने कमांड लाइन जोड़ी।
ब्रांडस्टैटर

यह निश्चित रूप से अजीब है। मैं आपको यह नहीं बता सकता कि यह इस तरह से क्यों काम करता है, लेकिन शायद आपको बग-coreutils@gnu.org को एक सादा पाठ बग रिपोर्ट दर्ज करनी चाहिए।
रेनॉल्ड्स

इसे मापो! और सुनिश्चित करें कि जब आप मापते हैं तो आप कैशिंग नहीं कर रहे हैं!
डेविड

जवाबों:


4

इस समस्या को डीबग करने का एक तरीका स्ट्रेस का उपयोग करना है।

strace -tt -e trace=open,close -o /tmp/strace.cat.log cat apt.list authors.txt >/tmp/t.test
cat /tmp/strace.cat.log 

23:12:08.022588 open("apt.list", O_RDONLY|O_LARGEFILE) = 3
23:12:08.023451 close(3)                = 0
23:12:08.023717 open("authors.txt", O_RDONLY|O_LARGEFILE) = 3
23:12:08.025403 close(3)                = 0

-tt विकल्प मिलि-सेकंड रिज़ॉल्यूशन के लिए सिस्टम कॉल के समय स्टैम्प को लॉग करता है। -ई ट्रेस = ओपन, क्लोज लॉग केवल ओपन, क्लोज एपीआई। उन्हें निकालने का प्रयास करें और आप एक बहुत शोर लॉग फ़ाइल देखेंगे।


2

तो डेविस टिप्पणी पर हाजिर है। हमें एक सटीक आकलन करने के लिए यहां दो चीजों की आवश्यकता है:

  1. आश्वासन कैशिंग परिदृश्य का हिस्सा नहीं है
  2. उस समय का वास्तविक माप।

मान लें कि आपके पास डिस्क स्थान है, तो मैं एक परीक्षण परिदृश्य का वर्णन करूंगा जो यह निर्धारित करेगा कि क्या यह वास्तविक मुद्दा है। यदि ऐसा है, तो इस दृष्टिकोण से सहायक सबूत डेवलपर्स को यह जानने में मदद करेंगे कि यह वास्तविक है और इसे पुन: पेश करने में सक्षम है।

समस्या अलगाव में मदद करने के लिए, यहाँ rm भाग को बिल्कुल न करें। TEMP फाइलों को बाद में बैठने दें। आप चाहें तो बाद में 'rm' भाग कर रहे परीक्षणों को दोहरा सकते हैं।

यहाँ परीक्षण परिदृश्य है:

  • 9 निर्देशिकाएं बनाएं - प्रत्येक मात्रा की फ़ाइलों के लिए (2 3 4 5 6 7 8 9 और 10) - यदि आपके पास जगह नहीं है, तो शायद 2, 5, 6, 7, और 10 करें।
  • सुनिश्चित करें कि आप इनमें से प्रत्येक निर्देशिका में अलग-अलग फाइलें डाल रहे हैं; कहीं भी नकल नहीं होती
  • इस तरह समय कमांड का उपयोग करें:

    समय (बिल्ली outputTEMP * >> आउटपुट)

आपके द्वारा चलाए जाने वाले प्रत्येक परीक्षण के लिए रिपोर्ट की गई वास्तविक, उपयोगकर्ता और sys संख्याओं को कैप्चर करें।

मैं रेनॉल्ड्स से सहमत हूं; यदि यह वास्तविक है, तो आपको निश्चित रूप से Bug-coreutils@gnu.org पर ईमेल विवरण देना चाहिए।


एक और विचार: यह सुनिश्चित करने के लिए कि आप आउटपुट फ़ाइल में समान कुल डेटा की प्रतिलिपि बना रहे हैं। इसलिए, यदि यह 1GB कुल है, तो '2' डायरेक्टरी में आपके पास ऐसी फाइलें होंगी जो 1/2 GB बड़ी थीं, और '10' डायरेक्टरी में आपके पास ऐसी फाइलें होंगी जो GB / 1 GB की बड़ी हो, आदि
pbr
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.