ইউনিক্স রিসোর্স ব্যবহার পরিমাপ করতে, আমাদের প্রোগ্রামগুলিতে রিসোর্স মডিউল ব্যবহার করতে হবে। এই মডিউলটি সম্পদের ব্যবহার নিয়ন্ত্রণ করতে পারে।
এই মডিউলটি ব্যবহার করতে, আমাদের এটি −
ব্যবহার করে আমদানি করা উচিতসম্পদ আমদানি করুন
সম্পদ সীমা
এই মডিউলে আমরা সম্পদের ব্যবহার সীমিত করতে setrlimit() ব্যবহার করতে পারি। সম্পদ সীমিত করার জন্য দুটি পরামিতি আছে। এই পরামিতিগুলি নরম সীমা এবং হার্ড সীমা। নরম সীমাটি মূলত বর্তমান সীমা, এটি প্রক্রিয়ার মাধ্যমে পরিবর্তন করা যেতে পারে, তবে এটি হার্ড সীমা অতিক্রম করতে পারে না। হার্ড লিমিট নরম সীমার উপরে যেকোন মান কমিয়ে আনা যায়, কিন্তু বাড়ানো যায় না।
সম্পদ সীমিত করার সাথে সম্পর্কিত কিছু পদ্ধতি এবং ধ্রুবক রয়েছে। এগুলো হল।
পদ্ধতি resource.getrlimit(রিসোর্স)
এই পদ্ধতিটি টিপল হিসাবে নরম এবং শক্ত সীমা ফেরাতে ব্যবহৃত হয়। যদি নির্দিষ্ট সংস্থানটি অবৈধ হয়, তাহলে এটি ValueError বাড়াবে৷
পদ্ধতি resource.setrlimit(সম্পদ, সীমা)
এই পদ্ধতিটি সম্পদের সীমা নির্ধারণ করতে ব্যবহৃত হয়। সীমাগুলি নরম এবং শক্ত সীমার একটি টিপল হিসাবে বরাদ্দ করা যেতে পারে। সীমাহীন সম্পদ তৈরি করতে আমরা RLIM_INFINITY ব্যবহার করতে পারি।
পদ্ধতি resource.prlimit(pid, resource[, limits])
এই পদ্ধতিটি setrlimit() এবং getrlimit() পদ্ধতির সংমিশ্রণ। এটি একটি নির্বিচারে প্রক্রিয়ার জন্য একই সময়ে সম্পদ সীমা পেতে এবং সেট করতে পারে। যখন পিড 0 হয়, তখন এটি বর্তমান প্রক্রিয়ায় কাজ করে।
রিসোর্স লিমিট-
সম্পর্কিত কিছু ধ্রুবকSr.No. | ধ্রুবক এবং বর্ণনা |
---|---|
1 | RLIM_INFINITY একটি সীমাহীন সম্পদের জন্য সীমা |
2 | RLIMIT_CORE বর্তমান প্রক্রিয়া দ্বারা তৈরি একটি মূল ফাইলের সর্বাধিক আকার৷ |
3 | RLIMIT_CPU একটি প্রসেসরের সর্বোচ্চ প্রসেসর সময়। যখন সীমা অতিক্রম করে, একটি SIGXCCPU সংকেত প্রক্রিয়াটিতে পাঠানো হয়৷ |
4 | RLIMIT_DATA প্রসেসরের স্তূপের সর্বাধিক আকার |
5 | RLIMIT_STACK কল স্ট্যাকের সর্বোচ্চ আকার। এটি একটি মাল্টিথ্রেড প্রক্রিয়ার জন্য প্রধান থ্রেডের স্ট্যাক ব্যবহার করে। |
6 | RLIMIT_NOFILE বর্তমান প্রক্রিয়ার জন্য ওপেন ফাইল বর্ণনাকারীর সর্বাধিক সংখ্যা৷ ৷ |
7 | RLIMIT_MEMLOCK লক করা মেমরির জন্য সর্বাধিক ঠিকানা স্থান |
8 | RLIMIT_NICE একটি প্রক্রিয়ার চমৎকার স্তরের সিলিং |
9 | RLIMIT_SWAP অদলবদল স্থানের সর্বাধিক আকার |
10 | RLIMIT_NTPS সিস্টেমে সিউডো টার্মিনালের সর্বাধিক সংখ্যা |
সম্পদ ব্যবহার
সম্পদ ব্যবহার সম্পর্কিত পদ্ধতি এবং ধ্রুবক আছে।
পদ্ধতি resource.getrusage(who)
এই পদ্ধতিটি বর্তমান প্রক্রিয়া বা তার শিশুদের দ্বারা ব্যবহৃত একটি বস্তু ফেরত দিতে ব্যবহৃত হয়। এটি বিভিন্ন ক্ষেত্র ফেরত দেয়। রিটার্ন মানের ক্ষেত্রগুলি থেকে, আমরা কীভাবে সংস্থান ব্যবহার করা হয়েছে সে সম্পর্কে তথ্য পেতে পারি।
পদ্ধতি resource.getpagesize()
এই পদ্ধতিটি একটি সিস্টেম পৃষ্ঠায় বাইট সংখ্যা ফেরত দিতে ব্যবহৃত হয়। এটি প্রকৃত পৃষ্ঠার আকারের মতো নাও হতে পারে৷
৷সম্পদ ব্যবহারের সাথে সম্পর্কিত কিছু ধ্রুবক।
Sr.No. | ধ্রুবক এবং বর্ণনা |
---|---|
1 | RUSAGE_SELF এটি কলিং প্রক্রিয়ার মাধ্যমে খরচ করা সম্পদের অনুরোধ করতে সাহায্য করে। এটি বিভিন্ন থ্রেডের সমস্ত সম্পদের যোগফল। |
2 | RUSAGE_CHILDREN এটি শিশু প্রক্রিয়ার দ্বারা ব্যবহৃত সংস্থানগুলির অনুরোধ করতে সহায়তা করে৷ |
3 | RUSAGE_BOTH এটি কলিং প্রক্রিয়ার পাশাপাশি চাইল্ড প্রক্রিয়ার মাধ্যমে খরচ করা সম্পদের অনুরোধ করতে সাহায্য করে। এটি সমস্ত সিস্টেমের জন্য উপলব্ধ নয় |
4 | RUSAGE_THREAD বর্তমান থ্রেড দ্বারা সম্পদ ব্যবহার. এটি সমস্ত সিস্টেমের জন্য উপলব্ধ নয় |
উদাহরণ কোড
resourceres_limits =resource.getrusage(resource.RUSAGE_SELF)print(res_limits)print('পৃষ্ঠার আকার:' + str(resource.getpagesize()))resource.setrlimit(resource.RLIMIT_CPU, (1, 2))মুদ্রণ ('রিসোস লিমিটস:' + str(resource.getrlimit(resource.RLIMIT_CPU))) একটি ইন রেঞ্জের জন্য(1000):রেঞ্জে b এর জন্য(1000): এর জন্য সি ইন রেঞ্জ(1000): পাস
আউটপুট
$ python3 example.pyresource.struct_rusage(ru_utime=0.035801, ru_stime=0.01074, ru_maxrss=9356, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt, , ru_minflt=ru_j=11, ru_jb=04, 07, ru_minflt=ru , ru_oublock=0, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=0, ru_nivcsw=17) পৃষ্ঠার আকার:4096 রিসোস সীমা:(1, 2) CPU সময়সীমা অতিক্রম করেছে (কোর dump)