ম্যাক ওএস এক্স ইয়োসেমাইট 10.10.5-এ, যখন আমি 128 গিগাবাইট মেমরির বরাদ্দ করতে এবং ব্যবহার করতে হবে এমন একটি গণনা চালানোর চেষ্টা করি (এটি সি-তে লিখিত একটি কমান্ড লাইন প্রোগ্রাম), কর্নেলটি চূড়ান্ত কুসংস্কারের সাথে আমার প্রক্রিয়াটিকে মেরে ফেলে। এই কনসোল লগ এন্ট্রি একটি উদাহরণের উদাহরণ:
9/25/15 7: 08: 40.000 PM কর্নেল [0]: লো স্বাপ: কিলিং পিড 6202 (হাফগ্রিপি)
গণনাটি সূক্ষ্মভাবে কাজ করে এবং একটি যুক্তিসঙ্গত সময়ে যখন এটি 64 গিগাবাইট মেমরি বরাদ্দ করে এবং ব্যবহার করে। হার্ডড্রাইভে আমার ম্যাকের 32 গিগাবাইট র্যাম এবং বিউকাপ স্পেস রয়েছে। আমি 8 গিগাবাইট র্যামের সাহায্যে অন্য ম্যাকের জন্যও এটি চেষ্টা করেছিলাম, যার উপরে GB৪ জিবি গণনাটি ভালভাবে চালিত হয়, অবশ্যই বেশি সময় নেয়, তবে 128 জিবি গণনা একইভাবে কার্নেলের দ্বারা মারা যায় killed
যাইহোক malloc()
, আমি যতই জায়গা চাই না কেন কখনও ত্রুটি ফেরায় না। কার্নেলটি কেবলমাত্র প্রক্রিয়াটি একবারেই মেরে ফেলবে যে মেমরিটি আসলে প্রক্রিয়া দ্বারা ব্যবহৃত হয়, ফলে হার্ড ড্রাইভে প্রচুর অদলবদল হয়।
সুতরাং কোথাও GB৪ জিবি এবং ১২৮ গিগাবাইটের মধ্যে কোনও গোপন স্ব্যুপের স্থান সীমা রয়েছে বলে মনে হয়।
আমার প্রশ্নটি: আমি আরও অদলবদলের অনুমতি দেওয়ার জন্য কীভাবে কার্নেলটি পুনরায় কনফিগার করব? আমি একটি প্রতিশ্রুতিবদ্ধ চেহারা ফাইল পেয়েছি /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
, কিন্তু আমি সেখানে গোপন নম্বর দেখতে পাচ্ছি না। ম্যান পেজটি dynamic_pager
বলে যে এটি যা করে তা হ'ল সোয়াপ ফাইলগুলির নাম এবং অবস্থান নির্ধারণ করে। একই ম্যান পৃষ্ঠার একটি পুরানো সংস্করণ রয়েছে যা -S
তৈরি হওয়া সোয়াফ ফাইলগুলির আকার নির্ধারণের জন্য একটি বিকল্প নথি করে। আমি চেষ্টা করেছি, 160 গিগাবাইট সোয়াফিলগুলি অনুরোধ করেছিলাম, তবে এর কোনও ফল হয়নি had সোয়াফিলগুলি এখনও প্রতিটি 1 জিবি ছিল এবং প্রক্রিয়াটি এখনও কার্নেল দ্বারা নিহত হয়েছিল।
malloc
কারণ commit_limit খুব বেশী (সম্ভবত অসীম) আরো আপনি চেয়ে। অতএব ওএস মেমরির বরাদ্দ করবে না যা এটি নেই (এটি বাজি দিচ্ছে যে প্রক্রিয়া এটি ব্যবহার করবে না, ওএস সাধারণত এই বাজিটি জিতবে)। আপনি প্রতিশ্রুতি সীমাটি মেমরি সীমা হতে সমন্বিত করতে চাইতে পারেন, এভাবে প্রক্রিয়াটি ব্যর্থ হবে।
malloc()
এটি হয়। আমি কারও সম্পর্কে সম্ভাব্য মন্তব্যগুলি বোধ করে ভেবেছিলাম যে আমি এর ফেরতের মান যাচাই করছি না malloc()
। যাইহোক, আমার উদ্দেশ্যটি আগে ব্যর্থ হওয়া নয়। আমার উদ্দেশ্য সফল।