কীভাবে অবিচ্ছিন্নভাবে ম্যাকের উপর সর্বোচ্চ সিস্টেমের রিসোর্স খরচ নিয়ন্ত্রণ করতে পারি?


85

ম্যাভেরিক্সের আগে, আমি /etc/launchd.confসর্বাধিক সিস্টেম রিসোর্স খরচ পরিবর্তন করতে ফাইল ব্যবহার করতে পারি , উদাহরণস্বরূপ:

limit maxfiles 16384 unlimited
limit maxproc 16384 unlimited

এটি আর ম্যাভেরিক্সে কাজ করে না।

ওএস এক্স এর সাম্প্রতিক সংস্করণে এটি করার সঠিক উপায় কী?


আপনার সীমাগুলি ওএস এক্সের সর্বোচ্চের উপরে। ১০০৪০ এ ম্যাক্সফিলস শীর্ষে রয়েছে এবং ম্যাক্সপ্রোকের সীমাটি 1064। অনুমোদিত উত্তর যদি সীমাটি স্থির করে তবে আমি এটিকে থাম্বস আপ দেব but তবে এটি সেখানে বসে ভুল হয়েছে এবং ভাল বছরের জন্য অপ্রস্তুত হয়েছে + এখন ..
জো টি টি

@atmosx: এটি হওয়া উচিত /etc/sysctl.conf, না হওয়া উচিত /etc/sysctrl.conf
সিউ চিং পং-আসুকা কেনজি-

1
@ জোয়েটি: আসলে আপনি এটি একটি উচ্চতর সীমাতে সেট করতে পারেন! তবে আপনি যদি ম্যাক ওএস এক্স 10.8 (মাউন্টেন সিংহ) বা 10.9 (ম্যাভারিকস) এ থাকেন তবে আপনাকে প্রথমে "অ্যাপ স্টোর" থেকে "ওএস এক্স সার্ভার" কিনতে হবে। (হ্যাঁ, একটি সেটিংস পরিবর্তন করতে আপনাকে $ 19.99 ডলার দিতে হবে!) সংক্ষেপে, আপনার sudo serverinfo --setperfmode trueসার্ভারটি "সার্ভার পারফরম্যান্স মোড" এ রাখার জন্য আপনাকে একবার চালাতে হবে । তারপরে, আপনার মেশিনের কনফিগারেশনের উপর নির্ভর করে আপনার একটি "উচ্চতর সর্বোচ্চ" থাকবে। দয়া করে আমার পোস্ট দেখতে discussions.apple.com/thread/5166397 বিস্তারিত জানার জন্য। 10.10 (ইয়োসেমাইট) এর জন্য, মোডটি ডিফল্টরূপে চালু থাকে (কমপক্ষে আমার মেশিনে!)। আমার উত্তর নীচে দেখুন।
সিউ চিং পং-আসুকা কেনজি-

উত্তর:


87

শেল সেশন সীমা

এর মাধ্যমে নির্ধারিত সীমাগুলি কেবল ulimitবর্তমান শেল সেশন দ্বারা নির্মিত প্রক্রিয়াগুলিকে প্রভাবিত করে।

  • "নরম সীমা" হ'ল আসল সীমা যা ব্যবহৃত হয়। এটি সেট করা যেতে পারে, যতক্ষণ না এটি "হার্ড সীমা" এর চেয়ে বেশি নয়।
  • "হার্ড সীমা" এছাড়াও সেট করা যেতে পারে তবে কেবল বর্তমানের চেয়ে কম মান এবং কেবল "নরম সীমা" এর চেয়ে কম নয় এমন মান to
  • rootসিস্টেম কনফিগারেশন কমান্ড প্রয়োগ করে বা সিস্টেম কনফিগারেশন ফাইলগুলিতে সংশোধন করে "হার্ড সীমা", পাশাপাশি সিস্টেম-প্রশস্ত সীমা (প্রশাসক) দ্বারা উত্থাপন করা যেতে পারে ।

আপনি শেল অধিবেশন সমাপ্ত পরে (দ্বারা Ctrl+ + D, exitবা বন্ধ Terminal.appজানালা, ইত্যাদি), সেটিংস চলে গেছে। আপনি যদি পরবর্তী শেল সেশনে একই সেটিংসটি চান তবে শেল স্টার্টআপ স্ক্রিপ্টে সেটিংসটি যুক্ত করুন।

উল্লেখ্য: আপনি ব্যবহার করে থাকেন bash, তাহলে এটা করা উচিত ~/.bash_proileবা ~/.bash_login। আপনি যদি অন্যান্য শাঁস ব্যবহার করে থাকেন তবে এটি সম্ভবত হওয়া উচিত ~/.profile

সিস্টেম সীমা (কার্যকর করতে পুনরায় বুট করা প্রয়োজন)

10.9 (ম্যাভেরিক্স), 10.10 (ইয়োসেমাইট), 10.11 (এল ক্যাপিটান) এবং 10.12 (সিয়েরা) এর জন্য:

আপনাকে এখানে একটি ফাইল তৈরি করতে হবে /Library/LaunchDaemons/limit.maxfiles.plist(মালিক root:wheel:, মোড 0644:):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
        "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>limit.maxfiles</string>
    <key>ProgramArguments</key>
    <array>
      <string>launchctl</string>
      <string>limit</string>
      <string>maxfiles</string>
      <string>262144</string>
      <string>524288</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>ServiceIPC</key>
    <false/>
  </dict>
</plist>

আপনার নিজের প্রয়োজন অনুযায়ী নম্বরগুলি পরিবর্তন করা উচিত। এগুলি 262144হ'ল "নরম সীমা" ( ) এবং 524288যথাক্রমে এটি "হার্ড সীমা" ( )। আরও তথ্যের জন্য, ম্যানুয়াল পৃষ্ঠাটি চালিয়ে পরামর্শ করুন man launchd.plist

10.8 এর জন্য (পর্বত সিংহ):

আপনি নিম্নলিখিত লাইনগুলি যুক্ত করতে পারেন /etc/sysctl.conf(মালিক root:wheel:, মোড 0644:):

kern.maxfiles=524288
kern.maxfilesperproc=262144

আপনার নিজের প্রয়োজন অনুযায়ী নম্বরগুলি পরিবর্তন করা উচিত। এগুলি যথাক্রমে "সিস্টেম-প্রশস্ত সীমা" ( kern.maxfiles) এবং "প্রতি-প্রক্রিয়া সীমা" ( kern.maxfilesperproc)। আরও সেটিংসের জন্য, চলমান দ্বারা ম্যানুয়াল পৃষ্ঠাটি পরামর্শ করুন man sysctlবা এখানে উত্স কোডটি পড়ুন /usr/include/sys/sysctl.h

পুরানো ম্যাক ওএস এক্সের জন্য (আমার ধারণা এটি 10.7 (সিংহ) বা তার আগে কাজ করে):

আপনি নিম্নলিখিত লাইনটি /etc/launchd.conf(মালিক root:wheel:, মোড 0644:) এ যুক্ত করতে পারেন:

limit maxfiles 262144 524288

আপনার নিজের প্রয়োজন অনুযায়ী নম্বরগুলি পরিবর্তন করা উচিত। এগুলি 262144হ'ল "নরম সীমা" ( ) এবং 524288যথাক্রমে এটি "হার্ড সীমা" ( )।

যদি সিস্টেম আপনাকে নির্দিষ্ট মানের উপরে সীমা নির্ধারণ না করে ...

সিস্টেম আপনাকে "হার্ড সর্বাধিক" (অ্যাপল দ্বারা প্রস্তাবিত) এর চেয়ে বেশি মান সেট করতে দেয় না। এই "হার্ড সর্বাধিক" বাড়ানোর জন্য আপনাকে "অ্যাপ স্টোর" থেকে "ওএস এক্স সার্ভার" কিনতে হবে, তারপরে আপনাকে নিম্নলিখিত কমান্ডটি একবার প্রয়োগ করতে হবে:

sudo serverinfo --setperfmode true

এটি আপনার মেশিনে "সার্ভার পারফরম্যান্স মোড" সক্রিয় করে। তারপরে আপনি আপনার মেশিনের কনফিগারেশন অনুযায়ী সর্বাধিক সেট করতে পারেন (এটি দেখুন) । আমি এটি আগে চেষ্টা করেছি (মাউন্টেন এবং ম্যাভেরিক্সে) এবং এটি কার্যকর! আরও তথ্যের জন্য দয়া করে আমার পোস্টটি ( এখানে ) দেখুন।

তথ্যসূত্র


1
ধন্যবাদ; আমি ইয়োসেমাইট ব্যবহার করছি এবং লঞ্চডেমন প্লাস্টিক কৌশলটি আমার পক্ষে কাজ করেছে। আমি বিশ্বাস করি এটি কেবল একটাই করে। যার যার প্রয়োজন এটি দয়া করে মনে রাখবেন যে এটি কার্যকর হওয়ার জন্য একটি রিবুট প্রয়োজন
এনসি।

1
@nc। : আমার উত্তরে "পুনরায় বুট করার দরকার পড়ার দরকার" যুক্ত হয়েছে। আমি মাঠে দীর্ঘ সময় ধরে কাজ করে যাচ্ছি, তাই কিছু লোক এটি জানেন না তা আমি জানতাম না। মনে রাখার জন্য ধন্যবাদ!
সিউ চিং পং-আসুকা কেনজি-

2
আমি ১০.৯.৫ ব্যবহার করছি তবে /etc/launchd.confআমি চালানোর সময় কেবলমাত্র দৃষ্টিভঙ্গিই কোনও প্রভাব দেখায় ulimit -n। এটি উল্লেখযোগ্য হলে কেউ নির্দেশাবলী আপডেট করতে পারে?
শ্রীধর সারনোবাত

1
10.10 ইয়োসেমাইট পদ্ধতি 10.11 এল ক্যাপিটনেও কাজ করে। যদিও আমি এটিকে "সীমাহীন" তে সেট করতে পারি নি তাই আমাকে কেবলমাত্র একটি উচ্চতর সংখ্যার ব্যবহার করতে হয়েছিল
অ্যান্ট্রাইভার

1
@aolszowka: কিভাবে মাধ্যমে যে সীমা বৃদ্ধি জন্য এই দেখুন /etc/sysctl.conf: superuser.com/questions/827984/...
রব Johansen

11

দেখে মনে হচ্ছে ফাইলটি তৈরি করা /etc/launchd.confএবং এটির ভিতরে আপনার কমান্ড স্থাপন করা কৌশলটি করা উচিত।


যদি এটি কাজ না করে, আপনি সম্ভবত /etc/rc.localফাইলটি সম্পাদনা করতে বা তৈরি করতে এবং এর মধ্যে আপনার কমান্ড যুক্ত করতে পারবেন কারণ অ্যাপল কমান্ড লাইনের সীমাবদ্ধতার জন্য সমর্থনটি মুছে ফেলবে এমন খুব কম সম্ভাবনা রয়েছে।


সম্পাদনা 1 :
আমার সাথে এটি শুরু করা উচিত ছিল, launchd ম্যান পৃষ্ঠাটি নীচের ফাইলগুলিকে রেফার করে:

  ~/Library/LaunchAgents         Per-user agents provided by the user.
  /Library/LaunchAgents          Per-user agents provided by the administrator.
  /Library/LaunchDaemons         System-wide daemons provided by the administrator.
  /System/Library/LaunchAgents   Per-user agents provided by Mac OS X.
  /System/Library/LaunchDaemons  System-wide daemons provided by Mac OS X.

আমার বাজি যে এখন আপনি পারেন আপনার কমান্ড করা প্রয়োজন ~/Library/LaunchAgentsবা /Library/LaunchDaemons
আপনার উভয় চেষ্টা করা উচিত।

সম্পাদনা 2 :
এছাড়াও সচেতন থাকুন যে লঞ্চ হওয়াতে কেবল স্ক্রিপ্ট নয়, এক্সএমএল ফাইলের প্রয়োজন। একটি GUI deisgn একটি যেমন টাস্ক সাহায্য হয়েছে মুক্ত নয় এক Lingon । হতে পারে অন্যান্য নিখরচায় পণ্য রয়েছে।


আমার পোস্টে প্রচুর তথ্য আছে বলে আপনি কি বলতে পারেন ভালটি কোনটি ছিল?
কিউই

নীচে আমার উত্তর দেখুন।
হাওয়ার্ড

উভয়ই /etc/launchd.confএবং /etc/rc.local১০.১০ এ অগ্রাহ্য করা হয় এবং পরবর্তীকালে, যেহেতু ১০.১০-তে লঞ্চটি নতুনভাবে ডিজাইন করা হয়েছিল এবং সিস্টেমস্টার্টার সরানো হয়েছিল।
নিসেটামা

@ মাইস ওএস
কিউই

10

আমি এই .bash_profile
কবিতাটির মতো আমার কাজগুলিতে এই দুটি লাইন যুক্ত করেছি

ulimit -n 1024
ulimit -u 1024

2
সিস্টেম সীমা প্রভাবিত করে না।
not2savvy

1
তবে আপনার সিস্টেমে সীমা যথেষ্ট পরিমাণে বাড়লে তা ঠিক আছে okay এগুলি কী তা যাচাই করার জন্য আপনি কেবল চালাতে পারেন ulimit -n -H। MacOS উচ্চ সিয়েরা এটা ছিল unlimitedতাই ব্যবহারকারীর "নরম" সীমা পরিবর্তন .bash_profileকৌতুক আছে।
জোশুয়া পিন্টার

9

সিস্টেম সীমা

সীমাবদ্ধতা পরিবর্তন করা /etc/launchd.confবা /etc/rc.localসাম্প্রতিক ম্যাকোস-এর জন্য আর সমর্থিত নয়। দেখুন: ওল্ড সিস্টেমস এবং টেকনোলজি

পরিবর্তে, আপনার একটি নতুন লঞ্চ এজেন্ট তৈরি করা উচিত ।

কমান্ড ব্যবহার করে কমান্ডের উদাহরণ এখানে দেওয়া হয়েছে PlistBuddy(দেখুন man PlistBuddy:)

sudo /usr/libexec/PlistBuddy /Library/LaunchAgents/com.launchd.maxfiles.plist \
-c "add Label string com.launchd.maxfiles" \
-c "add ProgramArguments array" \
-c "add ProgramArguments: string launchctl" \
-c "add ProgramArguments: string limit" \
-c "add ProgramArguments: string maxfiles" \
-c "add ProgramArguments: string 10240" \
-c "add ProgramArguments: string unlimited" \
-c "add RunAtLoad bool true"

এবং maxprocসীমা জন্য অনুরূপ :

sudo /usr/libexec/PlistBuddy /Library/LaunchAgents/com.launchd.maxproc.plist \
-c "add Label string com.launchd.maxproc" \
-c "add ProgramArguments array" \
-c "add ProgramArguments: string launchctl" \
-c "add ProgramArguments: string limit" \
-c "add ProgramArguments: string maxproc" \
-c "add ProgramArguments: string 2000" \
-c "add ProgramArguments: string unlimited" \
-c "add RunAtLoad bool true"

উপরে ফাইল লোড করতে, সঞ্চালন করুন: sudo launchctl load /Library/LaunchAgents/com.launchd.*.plist

নোট:

  • ফাইলটি মুদ্রণের জন্য, চালান: catবা PlistBuddy -x -c Print /Library/LaunchAgents/com.launchd.maxfiles.plist
  • লোড করার সময় কোন প্রকার ত্রুটির জন্য লগ পরীক্ষা করার জন্য, সঞ্চালন করুন: tail -f /var/log/system.log
  • বর্তমান দেখার জন্য launchdসীমা, সঞ্চালন করুন: launchctl limit
  • .plistফাইল ব্যবহারকারী অনুসারে বা সিস্টেম-ব্যাপী এজেন্ট ফোল্ডারে (মধ্যে স্থাপন করা যেতে পারে LaunchAgents)। আরও তথ্যের জন্য দেখুন: man launchdএবং man launchd.plist, বা এটি বা এই উত্তর।

কার্নেল সীমা

দয়া করে নোট করুন যে উপরে চালু হওয়া সিস্টেম সীমাটি এখনও কার্নেল দ্বারা সীমাবদ্ধ রয়েছে, সুতরাং আপনি এগুলি কার্নেল রাষ্ট্রের ভেরিয়েবলগুলিতে নির্ধারিত আসল সীমাগুলির চেয়ে বেশি স্থাপন করতে পারবেন না (দেখুন: man sysctlসহায়তার জন্য)।

বর্তমান কার্নেল সীমা দেখার জন্য, সঞ্চালন করুন: sysctl -a | grep ^kern.max

বৃদ্ধি maxfilesসীমা, সঞ্চালন করুন: sudo sysctl -w kern.maxfiles=20480

এগুলি অবিরত রাখতে, একটি স্টার্টআপ .plistফাইলগুলি তৈরি করতে অনুরূপ পদ্ধতিটি ব্যবহার করুন , যেমন

sudo /usr/libexec/PlistBuddy /Library/LaunchAgents/com.kern.maxfiles.plist \
-c "add Label string com.kern.maxfiles" \
-c "add ProgramArguments array" \
-c "add ProgramArguments: string sysctl" \
-c "add ProgramArguments: string -w" \
-c "add ProgramArguments: string kern.maxfiles=20480" \
-c "add RunAtLoad bool true"

শেল সীমাবদ্ধতা

শেল সীমাবদ্ধতার জন্য, পৃথক ব্যবহারকারীর জন্য বা সমস্ত ব্যবহারকারীর জন্য প্রাসঙ্গিক ulimitকমান্ড ~/.bashrcবা ~/.bash_profileস্টার্টআপ ফাইল যুক্ত /etc/bashrcকরুন। দেখুন: ম্যাকে কীভাবে স্থায়ী শেল ওলিমিট সেটিংস যুক্ত করবেন?

যোগ করার জন্য প্রস্তাবিত লাইনগুলি:

# Changes the ulimit limits.
ulimit -Sn 4096      # Increase open files.
ulimit -Sl unlimited # Increase max locked memory.

বিশেষত সতর্কতা অবলম্বন করুন maxprocকারণ ডিফল্টরূপে সেই পরামিতিটির হার্ড কার্নেলের সীমা 1064, যার অর্থ এটি 2000 এ সেট করা বা "সীমাহীন" আসলে এটি কেবল 1064 এ সেট করে Unfortunately দুর্ভাগ্যক্রমে, কার্নেল এটি প্রয়োগ করে না maxprocperuid < maxprocএবং আপনার প্রস্তাবিত সেটিংসটি ছাড়বে সিস্টেম maxprocperuid=2000এবং maxproc=1064যা বিপজ্জনক। এটি সম্পর্কে এখানে আরও পড়ুন ।
ওল্ড প্রো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.