আমি এই বিষয়ে 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পরামিতিটি ভার্চুয়াল মেমরির আকার নির্ধারণ করে। সত্য কি?