पृष्ठभूमि:प्रदर्शन स्मृति की विशेषताओं फ़ाइल
मैं एक जावा अनुप्रयोग जो काफी बड़ी स्मृति पर गहन आईओ करता है मैप की फ़ाइलें (> 500 एमबी)। कार्यक्रम डेटा पढ़ता है, डेटा लिखता है, और कभी-कभी दोनों करता है।
सभी पढ़ने/लिखने के कार्यों में समान गणना जटिलता है।
मैं कार्यक्रम के आईओ परत बेंचमार्क और पाया स्मृति मैप की गई फ़ाइलों के अजीब प्रदर्शन विशेषताओं:
- यह करता है (यादृच्छिक स्थिति में 1KB हर यात्रा पढ़ें)
- यह 38k करता है प्रति सेकंड 90k पढ़ता प्रति सेकंड लिखते हैं (अनुक्रमिक रूप से प्रत्येक पुनरावृत्ति 1KB लिखें)
- यह प्रति सेकेंड 43k लिखता है (यादृच्छिक स्थिति पर प्रत्येक पुनरावृत्ति 4 बाइट लिखें)
- यह केवल 9 के पढ़ने/लिखने के संयुक्त ऑपरेशन करता है दूसरा
कार्यक्रमों (12 बाइट्स तो, 1KB हर यात्रा लिखने यादृच्छिक स्थिति में पढ़ें) 64-बिट पर JDK 1.7, लिनक्स 3.4।
मशीन 8 थ्रेड सीपीयू और 4 जीबी भौतिक मेमोरी वाला एक साधारण इंटेल पीसी है। बेंचमार्क आयोजित करते समय केवल 1 जीबी को JVM ढेर को असाइन किया गया था। https://github.com/HouzuoGuo/Aurinko2/blob/master/src/test/scala/storage/Benchmark.scala
यहाँ,/लिखने कार्यों और उपरोक्त पढ़ें के कार्यान्वयन है लिखते हैं, पढ़ते हैं::
तो अधिक जानकारी के लिए आवश्यक हैं, यहाँ बेंचमार्क कोड है https://github.com/HouzuoGuo/Aurinko2/blob/master/src/main/scala/aurinko2/storage/Collection.scala
तो मेरी सवाल कर रहे हैं:
- निश्चित फ़ाइल आकार और मेमोरी आकार को देखते हुए, कौन से कारक स्मृति मैप किए गए फ़ाइल को यादृच्छिक पढ़ने के प्रदर्शन को प्रभावित करते हैं?
- निश्चित फ़ाइल आकार और मेमोरी आकार को देखते हुए, कौन से कारक स्मृति मैप किए गए फ़ाइल को यादृच्छिक लेखन प्रदर्शन को प्रभावित करते हैं?
- मैं संयुक्त ऑपरेशन पढ़ने/लिखने के बेंचमार्क परिणाम को कैसे समझाऊं? (मैं प्रति सेकंड 20K पुनरावृत्तियों को करने की उम्मीद कर रहा था)।
धन्यवाद।
1. कोड दिखाएं कि आप फ़ाइल को कैसे मैप करते हैं। 2. क्या आपने सिस्टम लोड की जांच की है, Iostat, सभी सामान्य? – bmargulies
धन्यवाद bmargulies। नवीनतम संपादन देखें। –