मुझे एक समस्या है। मेरे पास एक पुस्तकालय है जो अनुकूलित CDB निष्पादित करने के लिए sg का उपयोग करता है । कुछ सिस्टम हैं जो नियमित रूप से sg में मेमोरी आवंटन के साथ समस्याएँ हैं । आमतौर पर, sg ड्राइवर की सीमा लगभग 4mb होती है, लेकिन हम इसे ~ 2.3mb के अनुरोध के साथ इन कुछ सिस्टम पर देख रहे हैं। यही है, CDBs 2.3mb हस्तांतरण के लिए आवंटित करने की तैयारी कर रहे हैं। यहाँ कोई समस्या नहीं होनी चाहिए: 2.3 <4.0।
अब, मशीन का प्रोफाइल। यह एक 64 बिट सीपीयू है, लेकिन CentOS 6.0 32-बिट चलाता है (मैंने उन्हें नहीं बनाया और न ही मुझे इस फैसले से कोई लेना देना है)। इस CentOS डिस्ट्रो के लिए कर्नेल संस्करण 2.6.32 है। उनके पास 16 जीबी की रैम है।
सिस्टम पर मेमोरी का उपयोग कैसा दिखता है (हालांकि, क्योंकि यह त्रुटि स्वचालित परीक्षण के दौरान होती है, मैंने अभी तक यह सत्यापित नहीं किया है कि क्या यह स्थिति तब प्रदर्शित होती है जब यह त्रुटी sg से वापस आ जाती है )।
top - 00:54:46 up 5 days, 22:05, 1 user, load average: 0.00, 0.01, 0.21
Tasks: 297 total, 1 running, 296 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 15888480k total, 9460408k used, 6428072k free, 258280k buffers
Swap: 4194296k total, 0k used, 4194296k free, 8497424k cached
मुझे यह लेख लिनक्स जर्नल से मिला, जो कर्नेल में मेमोरी आवंटित करने के बारे में है। लेख दिनांकित है लेकिन 2.6 से संबंधित है (लेखक के बारे में कुछ टिप्पणियाँ सिर पर हैं)। लेख में उल्लेख किया गया है कि कर्नेल लगभग 1 जीबी मेमोरी तक सीमित है (हालांकि यह पाठ से पूरी तरह से स्पष्ट नहीं है अगर यह 1 जीबी प्रत्येक भौतिक और आभासी या कुल के लिए है)। मुझे आश्चर्य है कि अगर यह 2.6.32 के लिए एक सटीक बयान है। अंततः, मैं सोच रहा हूँ कि क्या ये सिस्टम इस सीमा को मार रहे हैं।
हालांकि यह वास्तव में मेरी समस्या का जवाब नहीं है, मैं 2.6.32 के लिए दावे की सत्यता के बारे में सोच रहा हूं। तो फिर, कर्नेल के लिए मेमोरी की वास्तविक सीमा क्या है? समस्या निवारण के लिए इस पर विचार करने की आवश्यकता हो सकती है। अन्य सुझावों का स्वागत है। यह इतना चकरा देने वाला है कि ये सिस्टम कई अन्य लोगों के समान हैं जो इस समस्या को नहीं दिखाते हैं।