আপনি কি /proc/sys/vm/overcommit_memory
সেট করেছেন? কার্নেল ডকুমেন্টেশন থেকে:
0 - Heuristic overcommit handling. Obvious overcommits of
address space are refused. Used for a typical system. It
ensures a seriously wild allocation fails while allowing
overcommit to reduce swap usage. root is allowed to
allocate slightly more memory in this mode. This is the
default.
1 - Always overcommit. Appropriate for some scientific
applications.
2 - Don't overcommit. The total address space commit
for the system is not permitted to exceed swap + a
configurable percentage (default is 50) of physical RAM.
Depending on the percentage you use, in most situations
this means a process will not be killed while accessing
pages but will receive errors on memory allocation as
appropriate.
সুতরাং আপনি যদি 1 টি ব্যবহার করেন তবে কোনও পার্থক্য নেই। আপনি যদি 2 টি এবং কোনও লিনাক্স অদলবদল ফাইল ব্যবহার করেন তবে কোনও প্রক্রিয়া 512 এম মেমরির (ভার্চুয়াল) বরাদ্দ করতে সক্ষম হবে না। ফলাফল 0 এর জন্য পরিষ্কার নয়।
সম্পাদনা করুন: http://utcc.utoronto.ca/~cks/space/blog/linux/LinuxVMOvercommit থেকে 0 কাজ করে:
হিউরিস্টিক ওভার কমিট চেষ্টা করে যে এটি আপনাকে যে সমস্ত মেমোরি দিতে পারে এবং যদি এটির চেয়ে আর কোনও র্যাম ব্যবহার করে না তবে এটি আর আপনাকে আরও কত র্যাম ব্যবহার করতে পারে যদি সিস্টেম আপনাকে কতটা স্মৃতি দিতে পারে; আপনি যদি এর চেয়ে বেশি চেয়ে থাকেন তবে আপনার বরাদ্দ প্রত্যাখ্যান করা হয়েছে। সুনির্দিষ্টভাবে, তাত্ত্বিক 'ফ্রি মেমরি' নাম্বারটি ফ্রি অদলবদল, বিনামূল্যে র্যাম (আপনি যদি রুট না হন তবে 1/32 তম কম) এবং ইউনিফাইড বাফার ক্যাশে এবং কার্নেল ডেটা যা পুনরুদ্ধারযোগ্য হিসাবে লেবেলযুক্ত তার দ্বারা ব্যবহৃত সমস্ত স্থান যোগ করে গণনা করা হয় (কিছু সংরক্ষিত পৃষ্ঠা কম)।
সুতরাং এটি গণনার মধ্যেও অদলবদল ব্যবহার করে। সাধারণভাবে আমি আরএইচইএলের প্রস্তাবটি অনুসরণ করি:
M = Amount of RAM in GB, and S = Amount of swap in GB, then
If M < 2
S = M *2
Else
S = M + 2