มีวิธีใดที่จะกำหนดลำดับความสำคัญของกระบวนการใน Mac OS X หรือไม่?


48

ฉันมีกระบวนการพื้นหลังทำงานที่ 100% CPU บน Mac OS X แอปพลิเคชันอื่น ๆ ทั้งหมดนั้นช้ามากเพราะมัน

ฉันต้องการตั้งค่ากระบวนการนี้ให้ไม่เกิน 50% เพื่อให้แอปพลิเคชันของฉันทำงานได้ดีขึ้น ฉันจะทำสิ่งนี้ได้อย่างไร

คำตอบ:


48

จากบรรทัดคำสั่ง ( Terminal.appหรืออะไรก็ตาม) ใช้niceและreniceเหมือนกับยูนิกซ์อื่น ๆ

ใช้niceเมื่อเรียกใช้กระบวนการ:

nice -n <priority> <command> <arguments to command>

ลำดับความสำคัญเริ่มต้นคือศูนย์ค่าบวกคือ "nicer" (นั่นคือลำดับความสำคัญต่ำกว่า) และค่าลบเป็น "น้อยดี" (ลำดับความสำคัญสูงกว่า) ดูเหมือนว่า Mac OS จะทำงานตั้งแต่ +10 ถึง -10

ใช้reniceเพื่อเปลี่ยนลำดับความสำคัญของกระบวนการที่กำลังทำงานอยู่ (จากreniceman page ใน 10.5):

renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]  
renice -n increment [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]

ส่วนที่คุณสนใจคือpidบิต นั่นคือรหัสกระบวนการสำหรับงานและคุณสามารถค้นหาได้โดยใช้ps -u <your username>และค้นหาชื่อกระบวนการ แต่ฉันชอบtop -oในกรณีนี้เพราะกระบวนการที่คุณสนใจจะอยู่ด้านบนสุด

หมายเหตุ:หากไม่มีสิทธิ์ superuser คุณจะไม่สามารถเพิ่มลำดับความสำคัญของกระบวนการได้ สำหรับผู้ใช้ทั่วไปniceและreniceเป็นถนนเดินรถทางเดียว และการเปลี่ยนแปลงเล็ก ๆ น้อย ๆ ในลำดับความสำคัญสามารถมีผลกระทบขนาดใหญ่ในเวลาทำงาน ดังนั้นจงทำสิ่งนี้ให้ง่ายจนกว่าคุณจะเข้าใจ


และฉันจะทำอย่างไรกับกระบวนการที่รันอยู่แล้ว? มันทำงานเป็นเวลา 2 ชั่วโมงและฉันไม่ต้องการที่จะเริ่มต้นอีกครั้งและหลวม 2 ชั่วโมงของการประมวลผลของฉัน
แดเนียล Cukier

15

คุณสามารถใช้คำสั่ง:

renice -n # PID

ที่ไหน:

  • #คือตัวเลขที่ควรมากกว่า 0 (มิฉะนั้นคุณจะย้ายกระบวนการของคุณไปยังลำดับความสำคัญสูงกว่า)
  • PIDเป็น ID กระบวนการที่คุณสามารถดูได้โดยพิมพ์topบนแอพเทอร์มินัล (ยูทิลิตี้ / เทอร์มินัลแอป)

หากเป็นกระบวนการระบบหรือกระบวนการผู้ใช้อื่นคุณควรพิมพ์:

sudo renice -n 10 PID

มันจะถามรหัสผ่านของคุณ (ถ้าคุณเป็น sudoer) สำหรับหมายเลขฉันจะแนะนำ 10 หรือ 19 (ลำดับความสำคัญต่ำกว่า)

โปรดทราบว่าสิ่งนี้จะเปลี่ยนลำดับความสำคัญไม่ใช่การใช้งาน CPU หากคุณไม่ได้ใช้กระบวนการอื่นที่ต้องใช้ CPU หรือคุณมี CPU มากกว่าหนึ่งตัวใน Mac (Core 2 Quad Core) กระบวนการอาจยังคงใช้ CPU 100%


6
renice 20 $(pgrep ImageOptim)

หรือใช้ชื่อโปรแกรมของคุณแทน ImageOptim


1
นอกจากนี้การใช้ยังrenice -20ช่วยให้กระบวนการมีความสำคัญสูงสุดเท่าที่เป็นไปได้เช่นเมื่อรวบรวมโปรแกรมขนาดใหญ่เช่นระดับแปดเสียง renice 20ให้กระบวนการมีลำดับความสำคัญต่ำสุด
nyxee

5

นอกจากนี้ยังมียูทิลิตี้ GUI จำนวนหนึ่งเช่น BeNicer และตัวช่วยสร้างกระบวนการฟรี(รายการโปรดก่อนหน้านี้) และFreezerเวอร์ชัน $ 1.99 ซึ่งเป็นรายการโปรดใหม่ของฉัน สิ่งเหล่านี้ทำงานกับแอปพลิเคชันที่ทำงานอยู่


3
BeNicer และ Process Wizard เป็นทั้งแอป PowerPC และจะไม่ทำงานใน OSX รุ่นล่าสุด
arolson101

ตู้แช่แข็งยังทำงานกับระบบปฏิบัติการรุ่นใหม่กว่าอยู่หรือไม่?
ylluminate

โปรดตรวจสอบคำตอบของฉันสำหรับทางเลือกอื่น AppPolice
JacopKane

2
  • ถ้ากระบวนการของคุณเป็น app หรือผู้ช่วยแอปพลิเคยูทิลิตี้มากกว่ากระบวนการระบบและคุณไม่ต้องการที่จะทำniceหรือreniceในการบูตระบบทุกครั้งที่คุณสามารถให้มันยิงไปAppPolice มันเป็นโอเพนซอร์สและฟรี คุณสามารถดาวน์โหลดได้ที่นี่

  • อีกหนึ่งทางเลือกที่จะเป็นบรรทัดคำสั่ง GUI htopการจัดการงานที่ดีมากเรียกว่า คุณสามารถดูกระบวนการทั้งหมดและปรับniceค่าโดยF7และและF8ทางลัด (โปรดทราบว่าniceค่าลบจะถูกจัดลำดับความสำคัญมากกว่าและตรงข้ามกับค่าบวก)

วิธีติดตั้ง:

  • ติดตั้งhomebrewหากคุณยังไม่มี
  • เรียกใช้คำสั่งนี้brew install htopในเทอร์มินัล
  • ตอนนี้คุณสามารถทำได้htopเพื่อดูและจัดการกระบวนการใน Terminal หรือsudo htopครอบคลุมระบบทั้งหมด

0

คุณสามารถตั้งค่า nice (priority) สำหรับ daemon อย่างถาวรโดยใช้ตัวแปรในไฟล์ PLIST สำหรับแอป เพื่อหาวิธีพิมพ์ MAN plist ในหน้าต่างเทอร์มินัล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.