kernel_task ทำอะไรกันแน่?


30

ฉันแค่อยากจะรู้ว่ามันคืออะไร kernel_task ที่รับผิดชอบ นอกจากนี้ RAM และ CPU สูงสุดที่ยอมรับได้ใช้สำหรับมันคืออะไร


ที่ดีที่สุดในการวัดการใช้ RAM และ CPU ของคุณหลังจากการบู๊ตอย่างปลอดภัยเพื่อตรวจสอบว่าระบบของคุณทำงานเมื่อไม่ได้ใช้งาน
bmike

1
ตามที่ไทเลอร์มันเป็น "ตัวแทนของ microkernel เอง" หากคุณต้องการคำตอบที่เจาะจงยิ่งขึ้นเขากล่าวต่อไปว่า "ดูเหมือนจะเป็นตัวจัดการหน่วยความจำพื้นฐาน (เสมือน /) สำหรับ Mac OS X ที่ด้านบนของ Mach" คุณจะกดยากที่จะหาคำตอบที่ชัดเจนเว้นแต่คุณจะพูดกับวิศวกรของ Apple ระดับสูง สาธารณะได้รวมกระบวนการนี้เข้าด้วยกันเท่านั้น ที่มา: bleepsoft.com/tyler/index.php?itemid=43

คำตอบ:


28

งานเคอร์เนลเป็นพิเศษเพราะมันเป็นระบบปฏิบัติการทั้ง kernel / ไมโครบนพื้นฐานของ Mach 3.0 มันเป็นนามธรรมของฮาร์ดแวร์หลักส่วนใหญ่เวลาการส่งข้อความและการจัดการหน่วยความจำ

สิ่งที่คนส่วนใหญ่สังเกตเห็นในการตรวจสอบกิจกรรมคือการkernel_taskสะสมเวลา CPU ทั้งหมดสำหรับความล่าช้าในการประมวลผลอินพุต / เอาต์พุต (i / o) และการคำนวณรวมถึงการจัดตารางเวลาค่าใช้จ่ายของกระบวนการและเธรด ในทำนองเดียวกัน - จะรวบรวมการจัดสรรหน่วยความจำทั้งหมดที่ไม่ได้อยู่ในพื้นที่ของผู้ใช้ ในปี 2014 และ Mac รุ่นใหม่กว่ามีงานนี้เพื่อเค้น CPU - เมื่ออุณหภูมิในโปรเซสเซอร์ร้อนเกินไปงานเคอร์เนลจะถูกกำหนดว่า "ไม่ทำงาน" และแสดง CPU สูงไม่ว่างเพื่อให้โปรเซสเซอร์ไม่ได้ทำงานและไม่ร้อนเกินไปคอมพิวเตอร์ นี่คือสิ่งที่เห็นได้ชัดเจนที่สุดในสายแบบพกพา - โดยเฉพาะ MacBook ที่ไม่มีพัดลมหรือตัวเป่าลมใด ๆ เพื่อทำให้โปรเซสเซอร์เย็น Apple เตือนเรื่องนี้กับโปรแกรมเมอร์เคอร์เนลใน"ทำไมคุณควรอยู่ห่างจากการเขียนโปรแกรมในเคอร์เนล" การปิดใช้งานการระบายความร้อนจะทำให้ฮาร์ดแวร์เสียหายอย่างถาวรซึ่งไม่สามารถแก้ไขได้

เพื่อสรุปการเขียนโปรแกรมเคอร์เนลเป็นความรับผิดชอบอันยิ่งใหญ่ คุณต้องระมัดระวังเป็นพิเศษเพื่อให้แน่ใจว่ารหัสของคุณไม่ทำให้ระบบล่มไม่ให้สิทธิ์ผู้ใช้ในการเข้าถึงไฟล์หรือหน่วยความจำของผู้อื่นโดยไม่ได้รับอนุญาตไม่แนะนำการบุกรุกจากระยะไกลหรือในเครื่องและไม่ทำให้ข้อมูลสูญหายหรือเสียหาย .

หากคุณดูหลังจากรีบูตเครื่องคุณจะเห็นว่าเริ่มต้นด้วยความต้องการ RAM และ CPU ที่น้อยที่สุดและจะเพิ่มขึ้นเมื่อโปรแกรมอื่นรันและต้องการบริการระบบแทน

หากต้องการลดขนาดให้ปิดพอร์ตที่ไม่ต้องการ (WiFi, บลูทู ธ ฯลฯ ... ) รวมถึงโปรแกรมที่ไม่ได้ใช้งาน / ไม่ได้ใช้งาน หากสิ่งต่าง ๆ ไม่สงบลงลองพิจารณาการรีบูตเพื่อให้แน่ใจว่าไม่มีงานใดที่ติดค้างอยู่หรือหน่วยความจำรั่ว หากคุณมีโปรแกรมที่ทำงานได้จริงพวกเขาจะทำให้เคอร์เนลใช้ทั้งหน่วยความจำและเวลาตัวประมวลผล - เพียงแค่เฝ้าดูเมื่อคุณเริ่มสิ่งต่าง ๆ เพื่อดูว่าโปรแกรมอื่นใดที่ทำให้เกิดลักษณะการทำงานนี้ มันไม่ค่อยมีปัญหากับเคอร์เนล - แม้จะมีโปรแกรมที่มีประสิทธิภาพไม่ดี - ซึ่งไม่สามารถแก้ไขได้โดยการออกจากระบบและกลับมาใหม่อีกครั้ง kernel_task ทำความสะอาดได้ดีและโดยทั่วไปจะใช้ทรัพยากรที่จำเป็นสำหรับภาระงานเท่านั้น


ขอบคุณ! คุณจะบอกว่า RAM ขนาด 700-750 MB เป็นที่ยอมรับหรือไม่? ฉันมีอิสระมากมาย แต่ฉันต้องการทราบว่ามีอะไรที่ฉันควรทำอย่างไร
Timothy Mueller-Harder

ไม่จำเป็น. ใน MacBook Pro หลักของฉันมันสามารถขยายได้ถึง 2 GB ในบางครั้งเมื่อฉันใช้งานโปรแกรมที่เกี่ยวข้องมากมาย ถึงอย่างนั้นฉันก็ไม่จำเป็นต้องรีบูต แต่เดือนละครั้ง (2.66 Core 2 Duo / RAM 8 GB)
bmike

14

Mac OS X Internals: A Systems Approach - Amit Singh - Google หนังสือ :

เคอร์เนลใช้งานและเธรด abstractions เพื่อแบ่งการทำงานเป็นโฟลว์การดำเนินการต่างๆ เคอร์เนลใช้ภารกิจเดียว - งานเคอร์เนล - ด้วยหลายเธรดที่ดำเนินการกับเคอร์เนลเช่นการตั้งเวลาการสร้างเธรดการจัดการคำบรรยายภาพหน้าและการจัดการข้อยกเว้น Unix ดังนั้น xnu เป็นเคอร์เนลเสาหินที่มีส่วนประกอบที่แตกต่างกันอย่างเห็นได้ชัดเช่น Mach, BSD และ I / O Kit ซึ่งทั้งหมดทำงานเป็นกลุ่มของเธรดในงานเดียวในพื้นที่ที่อยู่เดียวกัน

http://lists.apple.com/archives/darwin-kernel/2010/Sep/msg00014.html :

งานเคอร์เนลไม่ใช่งานจริง เพราะมันหมายถึงเคอร์เนลซึ่งเป็นแกนหลักของระบบปฏิบัติการ จำนวนมากของสิ่งที่จะเกิดขึ้นตามคำขอโดยตรงของแอปพลิเคชัน ทุกครั้งที่คุณจัดสรรบล็อกหน่วยความจำขนาดใหญ่เปิดหรือปิดไฟล์อ่านหรือเขียนไฟล์ดึงข้อมูลผ่านเครือข่ายสร้างกระบวนการหรือเธรดใหม่ ฯลฯ แอปพลิเคชันของคุณทำการเรียกใช้ระบบ การเรียกเหล่านี้ทำให้เคอร์เนลทำงานกับแอปพลิเคชันของคุณ งานส่วนใหญ่นั้นถูกเรียกเก็บเงินไปยังงานเคอร์เนล แต่งานของคุณกำลังทำอยู่จริงๆ


1

เหตุผลที่ใช้งานได้จริงสาเหตุที่เคอร์เนลอาจทำงานหนักเกินไปคือระบบของคุณมีหน่วยความจำไม่เพียงพอและเป็นสิ่งที่น่ายินดี ตรวจสอบกราฟแรงดันหน่วยความจำใต้แท็บMemoryของActivity Monitorเพื่อดูว่าเป็นสีเหลืองหรือแดง

ในกรณีนี้คุณสามารถเรียงลำดับกระบวนการตามหน่วยความจำและยุติกระบวนการบางอย่างที่ใช้มากในการลดความดัน (เช่นฆ่ากระบวนการ Google Chrome Helper)

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