2012-12-02 20 views
6

पर वास्तविक समय प्रक्रिया में मामूली पृष्ठ दोषों को रोकना मुझे यथासंभव वास्तविक समय में प्रक्रिया को चलाने की आवश्यकता है।लिनक्स

सभी संचार साझा स्मृति के माध्यम से किया जाता है - मेमोरी मैप की गई फाइलें - कोई सिस्टम कॉल बिल्कुल नहीं - यह साझा स्मृति पर व्यस्त प्रतीक्षा का उपयोग करता है।

प्रक्रिया वास्तविक समय प्राथमिकता के तहत चलाता है और सभी स्मृति mlockall(MCL_CURRENT|MCL_FUTURE) जो सफल होता है और इस प्रक्रिया को काफी ulimits सभी स्मृति बंद कर दिया है करने के लिए है के साथ बंद है।

जब मैं इसे चलाता हूं perf stat -p PID मुझे अभी भी मामूली पेज दोषों की संख्या मिलती है।

मैंने दोनों प्रक्रिया एफ़िनिटी और बिना दोनों के साथ इसका परीक्षण किया।

प्रश्न:

यह उन्हें समाप्त करने के लिए बिल्कुल भी संभव है - यहां तक ​​कि मामूली पेज दोष?

उत्तर

0

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

+0

मैं मामूली पेज गलती के बारे में बात कर रहा हूं जो टीएलबी के कारण होता है – Artyom

+0

टीएलबी मिस अधिकांश आधुनिक सीपीयू में हार्डवेयर-हैंडल होता है। यह ओएस के लिए अदृश्य होना चाहिए; केवल कुछ मेमोरी एक्सेस को धीमा कर देता है और हार्डवेयर प्रदर्शन निगरानी काउंटर (इंटेल में DTLB_LOAD_MISSES.ANY) में वृद्धि करता है। – osgx

+0

मैं मामूली पेज गलती को कैसे कम कर सकता हूं? मेरे पास बहुत सारी मेमोरी है लेकिन अभी भी मामूली पेज गलती की समस्या से प्रेतवाधित है जो सीपीयू उपयोग को अन्य नौकरियों को ले जाने के लिए बहुत अधिक बनाता है –

5

मैंने मेमोरी मैप की गई फ़ाइलों से POSIX साझा मेमोरी shm_open + मेमोरी लॉकिंग में स्विच करके इस समस्या को हल किया।