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