আমি কীভাবে ম্যাক ওএস এক্সে সর্বাধিক অদলবদল বাড়াতে পারি?


14

ম্যাক ওএস এক্স ইয়োসেমাইট 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 জিবি ছিল এবং প্রক্রিয়াটি এখনও কার্নেল দ্বারা নিহত হয়েছিল।


আমি এই প্রশ্নটি আপেল.স্ট্যাকেক্সচেঞ্জ.কম এ পোস্ট করেছিলাম, কিন্তু সেখানে কোনও প্রতিক্রিয়া পাওয়া যায়নি।
মার্ক অ্যাডলার

1
কারণ আপনি করতে পারে mallocকারণ commit_limit খুব বেশী (সম্ভবত অসীম) আরো আপনি চেয়ে। অতএব ওএস মেমরির বরাদ্দ করবে না যা এটি নেই (এটি বাজি দিচ্ছে যে প্রক্রিয়া এটি ব্যবহার করবে না, ওএস সাধারণত এই বাজিটি জিতবে)। আপনি প্রতিশ্রুতি সীমাটি মেমরি সীমা হতে সমন্বিত করতে চাইতে পারেন, এভাবে প্রক্রিয়াটি ব্যর্থ হবে।
ctrl-alt-delor

আপনি কেন অনুচ্ছেদে 5 অনুচ্ছেদটি সত্য তা দেখতে পাচ্ছি না, এটি অনুচ্ছেদ 4 থেকে অনুসরণ করে না (যদিও আপনি "তাই" দিয়ে এটি শুরু করেছেন)। এছাড়াও আপনি প্রচুর অদলবদল করার চেষ্টা করেছেন? (এই সম্পর্কে প্রশ্নটি পরিষ্কার নয়, যদিও আমি উত্তরটি হ্যাঁ সন্দেহ করি)।
ctrl-alt-delor

@রিচার্ড হ্যাঁ, আমি জানি কেন malloc()এটি হয়। আমি কারও সম্পর্কে সম্ভাব্য মন্তব্যগুলি বোধ করে ভেবেছিলাম যে আমি এর ফেরতের মান যাচাই করছি না malloc()। যাইহোক, আমার উদ্দেশ্যটি আগে ব্যর্থ হওয়া নয়। আমার উদ্দেশ্য সফল।
মার্ক অ্যাডলার

@richard কারণ কার্নেল বার্তাটি "লো স্বাপ" বলে " "প্রচুর অদলবদল যোগ করার জন্য", না আমি এটি করিনি কারণ আমি জানি না। এটাই ঠিক এই প্রশ্ন। আমি কীভাবে অদলবদল যুক্ত করব? অবশ্যই, কার্নেল স্বয়ংক্রিয়ভাবে অদলবদল সংযোজন করে, তবে কেবল একটি সীমা পর্যন্ত। সুতরাং প্রশ্নের মূল: আমি কীভাবে কার্নেলের অদলবদলের সীমা বাড়িয়ে দেব?
মার্ক অ্যাডলার

উত্তর:


4

আপনি যে উত্তরটি চেয়েছিলেন তা নয়, তবে আপনি যদি উপযুক্ত আকারের নিজস্ব ফাইল তৈরি করেন তবে এটি আপনার প্রক্রিয়াতে এমএম্যাপ করুন এবং তারপরে এই ঠিকানার জায়গাতে আপনার গণনাটি চালানো উচিত এটি একটি অদলবদলের মতই প্রভাব ফেলবে এবং আপনার গ্যারান্টিযুক্ত উপলভ্য র‌্যাম / অদলবদলের জন্য অন্যান্য প্রক্রিয়াগুলির সাথে প্রতিযোগিতার বিপরীতে স্থান রয়েছে।

আপনি কতবার ডেটা ওভাররাইট করে তার উপর নির্ভর করে এটি ধীর হতে পারে তবে আরও বহনযোগ্য।


2
ভালো বুদ্ধি! আমি উচ্চ আশা ছিল। হায় আফসোস, তারা বাস্তবের কঠোর তীরের বিরুদ্ধে ছিটকে পড়েছিল। প্রক্রিয়া এখনও সোয়াপিং বিশাল পরিমাণ, যেমনটা আগে ( "কম swap 'র" কনসোল বার্তা) জন্য কার্নেল হত্যা, যদিও এটা আমি ভার্চুয়াল মেমরি হিসেবে ব্যবহার করতে তৈরি করেছে একটি ফাইল ব্যবহার করছিলেন mmap()
মার্ক অ্যাডলার

দুঃখিত, আমার বেশিরভাগ অভিজ্ঞতা লিনাক্স নিয়ে। তবে, সম্ভবত সমস্যাটি হ'ল কার্নেলটি ফাইলটিতে ফিরে ফ্লাশ করছে না এবং এর পরিবর্তে এটি র‍্যামে ধারণ করছে। আপনি যদি পর্যায়ক্রমে msync()এটি করার জন্য বলার জন্য কল করেন?
ডেটালেস

0

আমার ম্যাক তথ্যটি বেশ তারিখযুক্ত আছে এটির জন্য আর কার্নেলের যাদু থাকতে পারে না। এই হিসাবে আমি এই প্রোগ্রামটির জন্য লিনাক্স ব্যবহার করার পরামর্শ দিচ্ছি, যেখানে আপনি খুব সহজেই কোনও ফোল্ডার বা পার্টিশনকে সোয়াপ হিসাবে মাউন্ট করতে পারেন।

ডায়নামিক অদলবদল ফোল্ডার ব্যবহারের অনিশ্চয়তা দূর করুন। একটি শারীরিক অদলবদল তৈরি করুন (লিনাক্সে এটি হেক্স কোড হ'ল অদলবদলের জন্য ডিস্ক টেবিল টাইপ কোড সহ একটি খালি অবিন্যস্ত পার্টিশন, খালি 0x82) Then

  1. / Etc / rc ফাইলটি সম্পাদনা করুন অদলবদল বিভাগের সমস্ত মন্তব্য খুঁজে বের করুন। লাইন যোগ করুনmount -vat swap
    • মানে / etc / fstab- এ সমস্ত অদলবদল মাউন্ট করা mount
  2. চালান pdisk /dev/disk? -dump
    • "?" আপনার এইচডি এর ডিস্ক নম্বর হ'ল সোয়াপ পার্টিশনের পাশের নম্বরটি
  3. সম্পাদনা করুন বা তৈরি করুন / ইত্যাদি / fstab (এটি সম্ভবত বিদ্যমান নেই) এর মতো একটি লাইন যুক্ত করুন /dev/disk?s?? none swap sw 0 0
    • ? আপনার ডিস্ক
    • ?? অদলবদলের পার্টিশনের সংখ্যা।
  4. পুনরায় বুট করার।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.