![几秒钟使用高 CPU 和内存会产生负面影响吗?](https://linux22.com/image/1362107/%E5%87%A0%E7%A7%92%E9%92%9F%E4%BD%BF%E7%94%A8%E9%AB%98%20CPU%20%E5%92%8C%E5%86%85%E5%AD%98%E4%BC%9A%E4%BA%A7%E7%94%9F%E8%B4%9F%E9%9D%A2%E5%BD%B1%E5%93%8D%E5%90%97%EF%BC%9F.png)
我为个人用途构建了一个爬虫,它使用 查询许多页面curl_multi_exec
。它在我的笔记本电脑上使用了 98% 的 CPU 和内存,持续了 10 秒。我只爬取了大约 1000 个页面,但我想爬取更多页面。我的笔记本电脑是否有一个限制来防止它崩溃?我可以爬取更多页面吗?
主要问题是,我每次这样做是否会损坏我的笔记本电脑?
答案1
良好设计的操作系统应该可以处理任何 CPU 和内存负载。
你没有提到你使用的是什么操作系统,但 Linux 和 Windows应该处理较长时间的负载。在极端情况下,您的进程可能会被操作系统杀死,尤其是在 Linux 机器上。Windows 宁愿尝试限制其 CPU/内存使用量,而不是立即杀死它。
对于你的第二个问题:有些人说硅片确实会磨损。但有很多 CPU 会 24/7 地以 100% 的负载运行多年(例如服务器)。只要你的冷却系统正常,你就不必担心这一点。
不过,也许你应该重新考虑这个问题——将工作分成几个较小的工作通常是一个好主意。
答案2
我的笔记本电脑是否存在一个边界来防止其崩溃?
如果现代处理器开始过热,它们会降低计算机速度或关闭计算机,以防止损坏。
http://www.intel.com/support/processors/sb/CS-029426.htm
这并不是说所有消费级低成本笔记本电脑都能够处理这个问题。
我构建了一个供个人使用的爬虫,它使用 curl_multi_exec 查询许多页面。它在我的笔记本电脑上占用了 98% 的 CPU 和内存,持续了 10 秒。
“一个为了完成某件事而消耗 100% CPU 的程序并不值得鄙视;事实上,它应该因其效率而受到赞扬!” -http://blogs.msdn.com/b/oldnewthing/archive/2010/12/03/10097861.aspx
(作者 Raymond Chen 是一位知识渊博的微软员工)。
我只抓取了大约 1000 个页面,但我想抓取更多页面。我的笔记本电脑是否有一个限制以防止其崩溃?我可以抓取更多页面吗?
理想情况是所有文件都放在内存中。如果超出内存,Windows 将开始使用磁盘空间作为内存的扩展。但是,这会慢得多。如果磁盘空间不足,或者页面文件大小固定,则进程将无法使用更多内存。如果编写得当,它将处理这个问题,否则它将崩溃。
主要问题是,我每次这样做是否会损坏我的笔记本电脑?
不会比正常使用更严重。理想情况下,额定速度为 X 的处理器可以持续以该速度运行。它不像电机,其工作周期为预期使用 2 小时开启 4 小时关闭等。
当然,您的特定笔记本电脑可能存在设计缺陷、公差、冷却系统无法应对 100% 满功率、存在组件缺陷,您的软件可能有错误,您安装的所有特定补丁和版本和程序的相互作用可能会导致奇怪的行为......
答案3
CPU使用率
当处理器执行指令时,它会逐渐散发热量(“散热”)。在给定时间内执行的指令越多,散发的热量就越多。CPU 的设计方式是,在给定时间内可以执行的指令数量是有限的;如果不受限制,CPU 会变得非常热,以至于开始达到制造它所用化合物的熔点,并最终可能着火。
散热采用三种方式处理:冷却,固件控制, 和硬件/软件限制。
冷却主动尝试将热量从处理器中带走,从而冷却处理器。大多数计算机的冷却是通过安装一块高导电性的金属来实现的,称为散热器,位于 CPU 顶部。散热器之所以有效,是因为所使用的金属会通过物理接触热处理器,将热量“虹吸”出处理器,并以快速的速度将热量转移到散热器材料中。然后,风扇将冷空气吹过散热器,通过加热空气来冷却散热器。然后,空气从机箱中排出并进入环境。更先进的设置可以使用水或液氮作为比空气更极端的冷却方式,但散热器几乎被普遍使用。
固件控制是 CPU 和/或操作系统中实现的软件,当热监控(基本上是温度计)检测到 CPU 过热时,它会尝试降低 CPU 的速度。通过降低 CPU 的速度,您可能会注意到应用程序性能下降,但通过将散热量降低到冷却硬件可以可靠散热的水平,CPU 的硬件将保持稳定的功能状态。现代 CPU(过去 5 年内生产)上的固件控制软件非常先进,可以微调 CPU 的执行速度,以便它充分利用所有可用的处理器能力,而不会将 CPU 加热到不安全的水平 - 即使您的冷却解决方案不是最理想的;例如,如果您的通风管道充满灰尘,用于冷却散热器的空气将相对较热,并且散热效果不佳。在这种情况下,由于固件正在发挥作用,CPU 会减速以避免过热。
硬件/软件限制是设备或操作系统的物理限制,根据设计,它们会限制 CPU 可以使用的电流/电压以及每秒可以执行的指令数。例如,CPU 或主板上的电压调节器模块 (VRM) 将决定允许进入 CPU 的电压。其他因素(例如强制同步(如等待管道清空或缓存行刷新))将在执行某些软件功能(例如系统调用或线程同步原语)时降低 CPU 的速度。这些限制是不可避免的,并且通常被视为负面因素,因为它们限制了 CPU 可以实现的性能,但这些限制也会阻止 CPU 过热。
一般来说,知名制造商设计的系统都是这样设计的:在用户修改硬件或极端恶劣的环境条件(非常热的房间、通风口被灰尘堵塞等)下,硬件应该能够始终全速运行而不会人为地减慢速度。这是因为制造商将在“满负荷”下测试冷却解决方案,并确保风扇产生足够的气流以在 CPU 非常繁忙时保持冷却,并确保散热器以足够快的速度将热量从 CPU 中转移出去以跟上散热速度。
简而言之,当您在设计良好且冷却系统充足的系统上使用 100% CPU 时,您不会遇到任何不利影响,并且 CPU 实际上是设计为在此级别运行的;您无法强制它“超过”100%,因为 0 - 100% 的范围是由 CPU 的时钟速度和微架构的其他因素决定的,您的应用程序无法修改这些因素。请注意,您可以超过 100%加载但负载并不等于实际吞吐量:负载是指要求程序正在占用 CPU,但尽管需求可能超过吞吐量,但这不会使吞吐量以某种方式增加到超过其最大值 100%。
内存使用情况
RAM 使用情况完全是另一回事,与冷却无关(一般来说)。程序耗尽了所有 RAM能对系统有不利影响,但这主要会降低性能。如今,使用所有 RAM 来彻底使系统崩溃并出现 BSOD 非常困难,因为在操作系统崩溃之前,程序会遇到内存不足错误并崩溃。可能的不过,在极端条件下,RAM 的使用不会对硬件产生不良影响。
答案4
假设您的 CPU 具有足够的冷却能力,您可以永远以 100% 的利用率运行它,并且它不会以任何方式损坏计算机。您的内存芯片也是如此。