我只想知道kernel_task负责什么。另外,可接受的最大RAM和CPU使用量是多少?
我只想知道kernel_task负责什么。另外,可接受的最大RAM和CPU使用量是多少?
Answers:
内核任务是特殊的,因为它是一个基于Mach 3.0的整个操作系统/微内核。它抽象了大多数核心硬件,时序,消息传递和内存处理。
大多数人在活动监视器中注意到的是,kernel_task
累积所有CPU时间用于输入/输出(i / o)处理延迟和计算,以及调度进程和线程的开销。同样,它会累积所有不在用户空间中的内存分配。在2014年及以后的Mac电脑上,存在执行此任务以限制CPU的速度-当处理器中的温度太高时,内核任务被分配为“无工作”,并且表明CPU繁忙,以使处理器空闲而不会使计算机过热。这在便携式产品线中最为明显-特别是没有任何风扇或鼓风机来冷却处理器的MacBook。苹果在“为什么要远离内核编程”中警告潜在的内核程序员。 禁用冷却会导致永久性的不可修复的硬件损坏。
总而言之,内核编程是一项巨大的责任。您必须格外小心,以确保您的代码不会导致系统崩溃,不提供任何未经授权的用户访问他人的文件或内存,不引入远程或本地root漏洞以及不会造成无意的数据丢失或损坏的信息。 。
如果您在重新启动后观看它,将会看到它以最低的RAM和CPU需求开始,并且仅在其他程序运行并且需要系统服务时才增长。
要减小它的体积,请关闭不需要的端口(WiFi,蓝牙等)以及空闲/未使用的程序。如果事情没有解决,请考虑重新启动以确保没有卡死任务或内存泄漏。如果您的程序在做真实的工作,它们将导致内核同时使用内存和处理器时间-刚开始时请观察一下其他哪些程序正在导致此行为。内核很少出现问题-即使程序执行不佳-退出并重新登录也无法解决。kernel_task清理得很好,并且通常只使用工作负载所需的资源。
Mac OS X内部:系统方法-Amit Singh-Google图书:
内核使用任务和线程抽象将其功能划分为各种执行流。内核使用单个任务(内核任务)和多个线程来执行内核操作,例如调度,线程收割,调出管理,分页和Unix异常处理。因此,xnu是一个整体内核,包含明显不同的组件(例如Mach,BSD和I / O Kit),它们在同一地址空间中的单个任务中作为线程组运行。
http://lists.apple.com/archives/darwin-kernel/2010/Sep/msg00014.html:
内核任务不是真正的任务。它代表内核,它是操作系统的核心。它所做的大部分操作都是在应用程序的直接请求下发生的。每当您分配大量内存,打开或关闭文件,读取或写入文件,通过网络提取数据,创建新的进程或线程等时,您的应用程序都会执行系统调用。这些调用使内核为您的应用程序工作。大部分工作都由内核任务承担,但这实际上是由应用程序完成的,尽管是间接的。
内核可能过度工作的一个实际原因是系统内存不足,并且运行异常。检查“ 活动监视器”的“ 内存”选项卡下的内存压力图,看它是黄色还是红色。
在这种情况下,您可以按内存对进程进行排序,并终止消耗大量进程的进程,以减轻压力。(例如,杀死一些Google Chrome Helper进程)