在Linux (Debian)机器上睡眠是如何工作的?我通常不使用带键盘和鼠标的盒子。我通常都会沉溺其中。它睡觉了,但是当我连接到它的时候,它会“醒来”吗?
如果我在运行一个网络服务器呢?它是在到达GET请求之前睡觉,然后醒来,还是在睡觉时忽略传入的数据包?
我有一个背景程序,我不希望暂停。如何从命令行检查睡眠设置是什么?
“电力管理”能力如何决定什么时候睡觉,什么时候不睡觉?它是否查看正在运行的进程,并以某种方式决定根据这些进程是什么而睡眠?
发布于 2016-07-02 12:26:16
这是个大话题。从ACPI (高级配置和电源接口)开始。自2000年代初以来,它就已经提供了Linux。
简单地说,它是通过BIOS进行管理的,BIOS可以配置为检查连接到计算机的设备上的活动,并使用BIOS触发CPU唤醒。
唤醒网络活动是可能的(尽管典型的Debian系统可能没有为此配置)。有关此相关主题,请参见
发布于 2018-04-18 05:33:32
正如托马斯·迪基( Thomas )所说,电力管理是一件相当多层次的事情。他主要负责低层次/硬件接口方面的工作,但我认为你对更高层次的安排更感兴趣。
在用户透视图的最底层,有一个powermgmt-base包,它只包含一些脚本,如/sbin/acpi_available、/sbin/apm_available和/usr/bin/on_ac_power,这些脚本可以用来确定当前的电源状态和其他脚本中的一般ACPI/APM功能。
最上面的通常是upower,它是用户会话和电源管理框架之间的现代接口。它通过D总线进行通讯。它使用pm-utils包中的工具和脚本来实际触发诸如挂起到内存或睡眠之类的电源管理操作,并使用PolicyKit (包policykit-1)来决定谁和/或什么允许为这些操作下达命令。
在upower之上,有gnome-power-manager (Gnome)、powerdevil (KDE)或sleepd (没有上述/可选的),它们实际上会在必要时触发电源管理操作。
pm-utils包可以使用来自各种包的许多工具,如hibernate、uswsusp、ethtool、hdparm和cpufrequtils等来执行其操作。它还有很多可定制的钩子:这些钩子可用于在睡眠/唤醒时执行操作,或停止不需要的睡眠操作。
通常情况下,web服务器在等待客户端时不会处于电源管理的状态:它肯定会在CPU欠时钟时空闲,而没有什么可做的。从睡眠模式中醒来需要一些时间,这可能会导致web服务中的额外延迟。但是,如果您特别需要,可能会在检测到流量时让网卡从睡眠模式(甚至从完全关闭状态)唤醒您的系统:请参见ethtool <network interface> | grep Wake-on,其中包含NIC支持的唤醒功能。
upower --dump将列出电源管理人员知道的任何电池、显示器和其他相关信息:在我的桌面上,它甚至知道我的无线鼠标的电池状态。
如果您的系统不包括gnome-power-manager、powerdevil或sleepd,那么我不认为它在任何情况下都会自动进入睡眠状态(除了笔记本/UPS电池非常低外)。根据它们配置的电源策略,这些组件可以决定让系统自行休眠。您应该查看这些组件的文档,无论哪种组件可能适用于您的系统。
https://unix.stackexchange.com/questions/293454
复制相似问题