मैंने इस मामले के बारे में प्रश्न पढ़ने में 2 घंटे बिताए हैं, और अभी भी कुछ गलतफहमी है।
मेरे पास यह प्रक्रिया है:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1452 0.4 1.8 1397012 19308 ? Sl 04:23 3:48 ./transaction_server
यह पूरे सिस्टम मेमोरी के 19.3Mb
आसपास सिस्टम रेजिडेंट मेमोरी (मेरे पास कोई स्वैप फाइल नहीं है) का उपयोग करता है । आभासी आकार है ?!?! मैंने पढ़ा है कि काम नहीं करता है। लोग इस प्रक्रिया के लिए वर्चुअल मेमोरी सेट करने की तरह उपयोग करते हैं। क्या यह वर्चुअल मेमोरी एक वीएसजेड के साथ सूचीबद्ध है ? यदि मैं सिस्टम मेमोरी का उपयोग करने के लिए इस प्रक्रिया को प्रतिबंधित करना चाहता हूं तो मुझे क्या मूल्य निर्धारित करना चाहिए । मैंने इसके लिए प्रलेखन पढ़ा है और यह कानूनी लगता है:1.8%
1GB
1.39GB
ulimit -m
ulimit -v
ps
100MB
setrlimit
RLIMIT_AS
This is the maximum size of a process' total available memory,
in bytes. If this limit is exceeded, the malloc() and mmap()
functions shall fail with errno set to [ENOMEM]. In addition,
the automatic stack growth fails with the effects outlined above.
लेकिन प्रलेखन के अन्य संस्करणों पर यह RLIMIT_AS
पैरामीटर वर्चुअल मेमोरी आकार सेट करता है। सच क्या है?