← Documents Documentation/admin-guide/pm/sleep-states.rst GitHub 원문 ↗

Linux 6.18.37 · Administration / Power Management

System Sleep States

Linux의 suspend-to-idle, standby, suspend-to-RAM, hibernation과 /sys/power 제어 interface를 설명합니다.

Source pathDocumentation/admin-guide/pm/sleep-states.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

sleep-states.rst:1-291

Linux의 system sleep은 resume latency와 power 절감 정도가 다른 네 상태로 나뉩니다. Suspend-to-Idle은 software 중심의 가벼운 상태이고, Standby와 Suspend-to-RAM은 platform 지원을 더 많이 사용하며, Hibernation은 memory image를 persistent storage에 저장합니다.

운영 시에는 `/sys/power/state`의 명령과 `/sys/power/mem_sleep`의 선택을 구분해야 합니다. Hibernation은 `/sys/power/disk` mode, image size, `pm_trace`까지 별도로 관리합니다.

항목핵심
Suspend-to-Idle`s2idle` 또는 `freeze`; software 중심의 가장 가벼운 suspend
Standby`shallow` 또는 `standby`; nonboot CPU와 저수준 기능까지 suspend, ACPI S1
Suspend-to-RAM`deep`과 `mem`; memory만 self-refresh로 유지, ACPI S3
Hibernation`disk`; memory image를 persistent storage에 저장, ACPI S4 또는 power-off
상태 선택`/sys/power/state`와 `/sys/power/mem_sleep`
Hibernation mode`/sys/power/disk`: platform, shutdown, reboot, suspend, test_resume
Image 제한`/sys/power/image_size`; 기본값은 available RAM의 약 2/5
장애 추적`/sys/power/pm_trace`; RTC memory에 suspend/resume event fingerprint 저장

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0
2 .. include:: <isonum.txt>
3
4 ===================
5 System Sleep States
6 ===================
7
8 :Copyright: |copy| 2017 Intel Corporation
9
10 :Author: Rafael J. Wysocki <[email protected]>
11
12
13 Sleep states are global low-power states of the entire system in which user
14 space code cannot be executed and the overall system activity is significantly
15 reduced.
16
17
18 Sleep States That Can Be Supported
19 ==================================
20
21 Depending on its configuration and the capabilities of the platform it runs on,
22 the Linux kernel can support up to four system sleep states, including
23 hibernation and up to three variants of system suspend. The sleep states that
24 can be supported by the kernel are listed below.
25
26 .. _s2idle:
27
28 Suspend-to-Idle
29 ---------------
30
31 This is a generic, pure software, light-weight variant of system suspend (also
32 referred to as S2I or S2Idle). It allows more energy to be saved relative to
33 runtime idle by freezing user space, suspending the timekeeping and putting all
34 I/O devices into low-power states (possibly lower-power than available in the
35 working state), such that the processors can spend time in their deepest idle
36 states while the system is suspended.
37
38 The system is woken up from this state by in-band interrupts, so theoretically
39 any devices that can cause interrupts to be generated in the working state can
40 also be set up as wakeup devices for S2Idle.
41
42 This state can be used on platforms without support for :ref:`standby <standby>`
43 or :ref:`suspend-to-RAM <s2ram>`, or it can be used in addition to any of the
44 deeper system suspend variants to provide reduced resume latency. It is always
45 supported if the :c:macro:`CONFIG_SUSPEND` kernel configuration option is set.
46
47 .. _standby:
48
49 Standby
50 -------
51
52 This state, if supported, offers moderate, but real, energy savings, while
53 providing a relatively straightforward transition back to the working state. No
54 operating state is lost (the system core logic retains power), so the system can
55 go back to where it left off easily enough.
56
57 In addition to freezing user space, suspending the timekeeping and putting all
58 I/O devices into low-power states, which is done for :ref:`suspend-to-idle
59 <s2idle>` too, nonboot CPUs are taken offline and all low-level system functions
60 are suspended during transitions into this state. For this reason, it should
61 allow more energy to be saved relative to :ref:`suspend-to-idle <s2idle>`, but
62 the resume latency will generally be greater than for that state.
63
64 The set of devices that can wake up the system from this state usually is
65 reduced relative to :ref:`suspend-to-idle <s2idle>` and it may be necessary to
66 rely on the platform for setting up the wakeup functionality as appropriate.
67
68 This state is supported if the :c:macro:`CONFIG_SUSPEND` kernel configuration
69 option is set and the support for it is registered by the platform with the
70 core system suspend subsystem. On ACPI-based systems this state is mapped to
71 the S1 system state defined by ACPI.
72
73 .. _s2ram:
74
75 Suspend-to-RAM
76 --------------
77
78 This state (also referred to as STR or S2RAM), if supported, offers significant
79 energy savings as everything in the system is put into a low-power state, except
80 for memory, which should be placed into the self-refresh mode to retain its
81 contents. All of the steps carried out when entering :ref:`standby <standby>`
82 are also carried out during transitions to S2RAM. Additional operations may
83 take place depending on the platform capabilities. In particular, on ACPI-based
84 systems the kernel passes control to the platform firmware (BIOS) as the last
85 step during S2RAM transitions and that usually results in powering down some
86 more low-level components that are not directly controlled by the kernel.
87
88 The state of devices and CPUs is saved and held in memory. All devices are
89 suspended and put into low-power states. In many cases, all peripheral buses
90 lose power when entering S2RAM, so devices must be able to handle the transition
91 back to the "on" state.
92
93 On ACPI-based systems S2RAM requires some minimal boot-strapping code in the
94 platform firmware to resume the system from it. This may be the case on other
95 platforms too.
96
97 The set of devices that can wake up the system from S2RAM usually is reduced
98 relative to :ref:`suspend-to-idle <s2idle>` and :ref:`standby <standby>` and it
99 may be necessary to rely on the platform for setting up the wakeup functionality
100 as appropriate.
101
102 S2RAM is supported if the :c:macro:`CONFIG_SUSPEND` kernel configuration option
103 is set and the support for it is registered by the platform with the core system
104 suspend subsystem. On ACPI-based systems it is mapped to the S3 system state
105 defined by ACPI.
106
107 .. _hibernation:
108
109 Hibernation
110 -----------
111
112 This state (also referred to as Suspend-to-Disk or STD) offers the greatest
113 energy savings and can be used even in the absence of low-level platform support
114 for system suspend. However, it requires some low-level code for resuming the
115 system to be present for the underlying CPU architecture.
116
117 Hibernation is significantly different from any of the system suspend variants.
118 It takes three system state changes to put it into hibernation and two system
119 state changes to resume it.
120
121 First, when hibernation is triggered, the kernel stops all system activity and
122 creates a snapshot image of memory to be written into persistent storage. Next,
123 the system goes into a state in which the snapshot image can be saved, the image
124 is written out and finally the system goes into the target low-power state in
125 which power is cut from almost all of its hardware components, including memory,
126 except for a limited set of wakeup devices.
127
128 Once the snapshot image has been written out, the system may either enter a
129 special low-power state (like ACPI S4), or it may simply power down itself.
130 Powering down means minimum power draw and it allows this mechanism to work on
131 any system. However, entering a special low-power state may allow additional
132 means of system wakeup to be used (e.g. pressing a key on the keyboard or
133 opening a laptop lid).
134
135 After wakeup, control goes to the platform firmware that runs a boot loader
136 which boots a fresh instance of the kernel (control may also go directly to
137 the boot loader, depending on the system configuration, but anyway it causes
138 a fresh instance of the kernel to be booted). That new instance of the kernel
139 (referred to as the ``restore kernel``) looks for a hibernation image in
140 persistent storage and if one is found, it is loaded into memory. Next, all
141 activity in the system is stopped and the restore kernel overwrites itself with
142 the image contents and jumps into a special trampoline area in the original
143 kernel stored in the image (referred to as the ``image kernel``), which is where
144 the special architecture-specific low-level code is needed. Finally, the
145 image kernel restores the system to the pre-hibernation state and allows user
146 space to run again.
147
148 Hibernation is supported if the :c:macro:`CONFIG_HIBERNATION` kernel
149 configuration option is set. However, this option can only be set if support
150 for the given CPU architecture includes the low-level code for system resume.
151
152
153 Basic ``sysfs`` Interfaces for System Suspend and Hibernation
154 =============================================================
155
156 The power management subsystem provides userspace with a unified ``sysfs``
157 interface for system sleep regardless of the underlying system architecture or
158 platform. That interface is located in the :file:`/sys/power/` directory
159 (assuming that ``sysfs`` is mounted at :file:`/sys`) and it consists of the
160 following attributes (files):
161
162 ``state``
163 This file contains a list of strings representing sleep states supported
164 by the kernel. Writing one of these strings into it causes the kernel
165 to start a transition of the system into the sleep state represented by
166 that string.
167
168 In particular, the "disk", "freeze" and "standby" strings represent the
169 :ref:`hibernation <hibernation>`, :ref:`suspend-to-idle <s2idle>` and
170 :ref:`standby <standby>` sleep states, respectively. The "mem" string
171 is interpreted in accordance with the contents of the ``mem_sleep`` file
172 described below.
173
174 If the kernel does not support any system sleep states, this file is
175 not present.
176
177 ``mem_sleep``
178 This file contains a list of strings representing supported system
179 suspend variants and allows user space to select the variant to be
180 associated with the "mem" string in the ``state`` file described above.
181
182 The strings that may be present in this file are "s2idle", "shallow"
183 and "deep". The "s2idle" string always represents :ref:`suspend-to-idle
184 <s2idle>` and, by convention, "shallow" and "deep" represent
185 :ref:`standby <standby>` and :ref:`suspend-to-RAM <s2ram>`,
186 respectively.
187
188 Writing one of the listed strings into this file causes the system
189 suspend variant represented by it to be associated with the "mem" string
190 in the ``state`` file. The string representing the suspend variant
191 currently associated with the "mem" string in the ``state`` file is
192 shown in square brackets.
193
194 If the kernel does not support system suspend, this file is not present.
195
196 ``disk``
197 This file controls the operating mode of hibernation (Suspend-to-Disk).
198 Specifically, it tells the kernel what to do after creating a
199 hibernation image.
200
201 Reading from it returns a list of supported options encoded as:
202
203 ``platform``
204 Put the system into a special low-power state (e.g. ACPI S4) to
205 make additional wakeup options available and possibly allow the
206 platform firmware to take a simplified initialization path after
207 wakeup.
208
209 It is only available if the platform provides a special
210 mechanism to put the system to sleep after creating a
211 hibernation image (platforms with ACPI do that as a rule, for
212 example).
213
214 ``shutdown``
215 Power off the system.
216
217 ``reboot``
218 Reboot the system (useful for diagnostics mostly).
219
220 ``suspend``
221 Hybrid system suspend. Put the system into the suspend sleep
222 state selected through the ``mem_sleep`` file described above.
223 If the system is successfully woken up from that state, discard
224 the hibernation image and continue. Otherwise, use the image
225 to restore the previous state of the system.
226
227 It is available if system suspend is supported.
228
229 ``test_resume``
230 Diagnostic operation. Load the image as though the system had
231 just woken up from hibernation and the currently running kernel
232 instance was a restore kernel and follow up with full system
233 resume.
234
235 Writing one of the strings listed above into this file causes the option
236 represented by it to be selected.
237
238 The currently selected option is shown in square brackets, which means
239 that the operation represented by it will be carried out after creating
240 and saving the image when hibernation is triggered by writing ``disk``
241 to :file:`/sys/power/state`.
242
243 If the kernel does not support hibernation, this file is not present.
244
245 ``image_size``
246 This file controls the size of hibernation images.
247
248 It can be written a string representing a non-negative integer that will
249 be used as a best-effort upper limit of the image size, in bytes. The
250 hibernation core will do its best to ensure that the image size will not
251 exceed that number, but if that turns out to be impossible to achieve, a
252 hibernation image will still be created and its size will be as small as
253 possible. In particular, writing '0' to this file causes the size of
254 hibernation images to be minimum.
255
256 Reading from it returns the current image size limit, which is set to
257 around 2/5 of the available RAM size by default.
258
259 ``pm_trace``
260 This file controls the "PM trace" mechanism saving the last suspend
261 or resume event point in the RTC memory across reboots. It helps to
262 debug hard lockups or reboots due to device driver failures that occur
263 during system suspend or resume (which is more common) more effectively.
264
265 If it contains "1", the fingerprint of each suspend/resume event point
266 in turn will be stored in the RTC memory (overwriting the actual RTC
267 information), so it will survive a system crash if one occurs right
268 after storing it and it can be used later to identify the driver that
269 caused the crash to happen.
270
271 It contains "0" by default, which may be changed to "1" by writing a
272 string representing a nonzero integer into it.
273
274 According to the above, there are two ways to make the system go into the
275 :ref:`suspend-to-idle <s2idle>` state. The first one is to write "freeze"
276 directly to :file:`/sys/power/state`. The second one is to write "s2idle" to
277 :file:`/sys/power/mem_sleep` and then to write "mem" to
278 :file:`/sys/power/state`. Likewise, there are two ways to make the system go
279 into the :ref:`standby <standby>` state (the strings to write to the control
280 files in that case are "standby" or "shallow" and "mem", respectively) if that
281 state is supported by the platform. However, there is only one way to make the
282 system go into the :ref:`suspend-to-RAM <s2ram>` state (write "deep" into
283 :file:`/sys/power/mem_sleep` and "mem" into :file:`/sys/power/state`).
284
285 The default suspend variant (ie. the one to be used without writing anything
286 into :file:`/sys/power/mem_sleep`) is either "deep" (on the majority of systems
287 supporting :ref:`suspend-to-RAM <s2ram>`) or "s2idle", but it can be overridden
288 by the value of the ``mem_sleep_default`` parameter in the kernel command line.
289 On some systems with ACPI, depending on the information in the ACPI tables, the
290 default may be "s2idle" even if :ref:`suspend-to-RAM <s2ram>` is supported in
291 principle.
292

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

System sleep state 개요

1-24

이 문서는 `SPDX-License-Identifier: GPL-2.0`을 따르고 `<isonum.txt>`를 포함합니다. 저작권은 2017 Intel Corporation에 있으며, 작성자는 Rafael J. Wysocki `<[email protected]>`입니다.

Sleep state는 user space code를 실행할 수 없고 system 전체 활동이 크게 줄어드는 전역 low-power state입니다.

Linux kernel은 구성과 실행 중인 platform의 capability에 따라 hibernation과 최대 세 종류의 system suspend를 합쳐 최대 네 가지 system sleep state를 지원할 수 있습니다. 다음 절에서 kernel이 지원할 수 있는 상태를 설명합니다.

Suspend-to-Idle

25-46

Suspend-to-Idle은 S2I 또는 S2Idle이라고도 부르는 범용 pure-software 방식의 가벼운 system suspend입니다. User space를 freeze하고 timekeeping을 suspend하며 모든 I/O device를 low-power state로 전환합니다. 이 상태는 working state에서 가능한 수준보다 더 낮을 수도 있습니다. 그 결과 system이 suspend된 동안 processor는 가장 깊은 idle state에서 시간을 보낼 수 있어 runtime idle보다 더 많은 energy를 절약합니다.

이 상태에서는 in-band interrupt로 system을 깨웁니다. 따라서 이론적으로 working state에서 interrupt를 발생시킬 수 있는 모든 device를 S2Idle wakeup device로 설정할 수 있습니다.

Suspend-to-Idle은 `Standby`나 `Suspend-to-RAM`을 지원하지 않는 platform에서 사용할 수 있습니다. 더 깊은 system suspend 방식과 함께 제공해 resume latency를 줄이는 선택지로 쓸 수도 있습니다. Kernel configuration option `CONFIG_SUSPEND`가 설정되어 있으면 항상 지원됩니다.

Standby

47-72

Standby가 지원되면 비교적 간단하게 working state로 돌아오면서도 중간 정도의 실질적인 energy 절감 효과를 제공합니다. System core logic에는 power가 유지되어 operating state가 사라지지 않으므로 중단 지점으로 쉽게 돌아갈 수 있습니다.

Suspend-to-Idle과 마찬가지로 user space를 freeze하고 timekeeping을 suspend하며 모든 I/O device를 low-power state로 둡니다. 여기에 더해 nonboot CPU를 offline으로 만들고 이 상태로 전환하는 동안 모든 low-level system function을 suspend합니다. 따라서 Suspend-to-Idle보다 더 많은 energy를 절약하지만 일반적으로 resume latency는 더 큽니다.

Standby에서 system을 깨울 수 있는 device 집합은 대개 Suspend-to-Idle보다 작습니다. 적절한 wakeup 기능 설정을 platform에 맡겨야 할 수도 있습니다.

Kernel configuration option `CONFIG_SUSPEND`가 설정되어 있고 platform이 core system suspend subsystem에 지원을 등록하면 Standby를 지원합니다. ACPI 기반 system에서는 ACPI가 정의한 system state `S1`에 대응합니다.

Suspend-to-RAM

73-106

Suspend-to-RAM은 STR 또는 S2RAM이라고도 합니다. 지원되는 경우 memory를 제외한 system의 모든 요소를 low-power state로 전환하므로 상당한 energy를 절약합니다. Memory는 내용을 유지하도록 self-refresh mode에 두어야 합니다. Standby에 들어갈 때 수행하는 모든 단계가 S2RAM 전환에서도 실행되며, platform capability에 따라 추가 작업이 있을 수 있습니다.

특히 ACPI 기반 system에서는 S2RAM 전환의 마지막 단계에서 kernel이 platform firmware인 BIOS에 control을 넘깁니다. 이 과정은 보통 kernel이 직접 제어하지 않는 더 많은 low-level component의 power를 끕니다.

Device와 CPU의 state는 저장되어 memory에 유지됩니다. 모든 device는 suspend되어 low-power state로 들어갑니다. 많은 경우 S2RAM 진입 시 모든 peripheral bus가 power를 잃으므로 device가 다시 `on` state로 전환되는 과정을 처리할 수 있어야 합니다.

ACPI 기반 system에서 S2RAM으로부터 resume하려면 platform firmware에 최소한의 boot-strapping code가 필요합니다. 다른 platform에서도 그럴 수 있습니다.

S2RAM에서 system을 깨울 수 있는 device 집합은 보통 Suspend-to-Idle과 Standby보다 작고, 적절한 wakeup 기능 설정을 platform에 의존해야 할 수 있습니다. `CONFIG_SUSPEND`가 설정되고 platform이 core system suspend subsystem에 지원을 등록하면 S2RAM을 지원합니다. ACPI 기반 system에서는 ACPI system state `S3`에 대응합니다.

Hibernation

107-151

Hibernation은 Suspend-to-Disk 또는 STD라고도 하며 가장 큰 energy 절감 효과를 제공합니다. System suspend에 대한 low-level platform 지원이 없어도 사용할 수 있지만, 기반 CPU architecture에는 system resume를 위한 low-level code가 있어야 합니다.

Hibernation은 system suspend의 어떤 방식과도 크게 다릅니다. Hibernation에 들어가는 데 system state 변경 세 번이 필요하고 resume에는 두 번이 필요합니다.

Hibernation이 시작되면 먼저 kernel이 모든 system 활동을 멈추고 persistent storage에 기록할 memory snapshot image를 만듭니다. 이어서 snapshot image를 저장할 수 있는 state로 전환하고 image를 기록합니다. 마지막으로 제한된 wakeup device를 제외한 memory를 포함한 거의 모든 hardware component의 power를 끄는 목표 low-power state로 들어갑니다.

Snapshot image를 기록한 뒤 system은 ACPI S4 같은 특별한 low-power state에 들어가거나 단순히 스스로 power down할 수 있습니다. Power down은 power draw를 최소화하고 어떤 system에서도 이 mechanism을 사용할 수 있게 합니다. 특별한 low-power state를 사용하면 keyboard key 누르기나 laptop lid 열기 같은 추가 wakeup 방법을 제공할 수 있습니다.

Wakeup 후 control은 boot loader를 실행하는 platform firmware로 넘어갑니다. System 구성에 따라 boot loader로 직접 넘어갈 수도 있지만, 어느 경우든 새 kernel instance가 boot됩니다. `restore kernel`이라 부르는 이 새 kernel은 persistent storage에서 hibernation image를 찾고, 발견하면 memory에 load합니다.

그다음 모든 system 활동을 멈추고 restore kernel이 image 내용으로 자신을 덮어쓴 뒤, image에 저장된 원래 kernel인 `image kernel`의 특별한 trampoline 영역으로 jump합니다. 이 지점에 architecture-specific low-level code가 필요합니다. 마지막으로 image kernel이 system을 hibernation 이전 상태로 복구하고 user space를 다시 실행합니다.

Kernel configuration option `CONFIG_HIBERNATION`이 설정되어 있으면 Hibernation을 지원합니다. 다만 해당 CPU architecture의 지원 코드에 system resume용 low-level code가 포함되어 있어야 이 option을 설정할 수 있습니다.

기본 `sysfs` interface와 `state`

152-176

Power management subsystem은 기반 system architecture나 platform과 관계없이 system sleep을 제어하는 통합 `sysfs` interface를 userspace에 제공합니다. `sysfs`가 `/sys`에 mount되어 있다고 가정하면 interface는 `/sys/power/` directory의 다음 attribute file로 구성됩니다.

`state` file에는 kernel이 지원하는 sleep state를 나타내는 string 목록이 있습니다. 이 string 중 하나를 쓰면 kernel은 해당 string이 나타내는 sleep state로 system을 전환하기 시작합니다.

특히 `disk`, `freeze`, `standby` string은 각각 Hibernation, Suspend-to-Idle, Standby를 나타냅니다. `mem` string은 아래에서 설명하는 `mem_sleep` file 내용에 따라 해석됩니다.

Kernel이 어떤 system sleep state도 지원하지 않으면 `state` file은 존재하지 않습니다.

`mem_sleep` suspend 방식 선택

177-195

`mem_sleep` file에는 지원되는 system suspend 방식의 string 목록이 있으며, userspace가 위의 `state` file에서 `mem` string과 연결할 방식을 선택할 수 있게 합니다.

이 file에 나타날 수 있는 string은 `s2idle`, `shallow`, `deep`입니다. `s2idle`은 항상 Suspend-to-Idle을 뜻하고, 관례상 `shallow`와 `deep`은 각각 Standby와 Suspend-to-RAM을 뜻합니다.

목록의 string 하나를 이 file에 쓰면 해당 suspend 방식이 `state` file의 `mem` string과 연결됩니다. 현재 `mem`과 연결된 suspend 방식을 나타내는 string은 square bracket 안에 표시됩니다.

Kernel이 system suspend를 지원하지 않으면 `mem_sleep` file은 존재하지 않습니다.

`disk` hibernation mode

196-244

`disk` file은 Hibernation, 즉 Suspend-to-Disk의 operating mode를 제어합니다. 구체적으로 hibernation image를 만든 뒤 kernel이 무엇을 할지 지정합니다. 이 file을 읽으면 다음과 같이 encode된 지원 option 목록을 반환합니다.

`platform`은 system을 ACPI S4 같은 특별한 low-power state로 전환합니다. 추가 wakeup option을 제공하고, wakeup 뒤 platform firmware가 단순화된 initialization path를 사용하도록 할 수 있습니다. Hibernation image를 만든 뒤 system을 sleep 상태로 전환하는 특별한 mechanism을 platform이 제공할 때만 사용할 수 있으며, ACPI platform은 일반적으로 이를 제공합니다.

`shutdown`은 system의 power를 끕니다.

`reboot`는 system을 reboot하며 주로 진단에 유용합니다.

`suspend`는 hybrid system suspend입니다. 위에서 설명한 `mem_sleep` file을 통해 선택한 suspend sleep state로 system을 전환합니다. 그 상태에서 system이 성공적으로 wakeup되면 hibernation image를 버리고 계속 실행합니다. 그렇지 않으면 image를 사용해 이전 system state를 복구합니다. System suspend가 지원될 때 사용할 수 있습니다.

`test_resume`은 진단 작업입니다. System이 방금 hibernation에서 wakeup했고 현재 실행 중인 kernel instance가 restore kernel인 것처럼 image를 load한 뒤 전체 system resume를 수행합니다.

위 string 중 하나를 `disk` file에 쓰면 그 string이 나타내는 option을 선택합니다. 현재 선택된 option은 square bracket 안에 표시됩니다.

Square bracket으로 표시된 작업은 `/sys/power/state`에 `disk`를 써서 hibernation을 시작했을 때 image를 만들고 저장한 다음 수행됩니다. Kernel이 Hibernation을 지원하지 않으면 `disk` file은 존재하지 않습니다.

`image_size`와 `pm_trace`

245-273

`image_size` file은 hibernation image의 크기를 제어합니다. Byte 단위 image 크기의 best-effort upper limit로 사용할 non-negative integer string을 쓸 수 있습니다.

Hibernation core는 image 크기가 그 수를 넘지 않도록 최선을 다합니다. 달성할 수 없더라도 hibernation image는 계속 만들어지며 가능한 한 작게 생성됩니다. 특히 이 file에 `0`을 쓰면 hibernation image 크기를 최소화합니다.

`image_size`를 읽으면 현재 image size limit을 반환합니다. 기본값은 available RAM 크기의 약 2/5입니다.

`pm_trace` file은 reboot를 거쳐 마지막 suspend 또는 resume event point를 RTC memory에 보존하는 `PM trace` mechanism을 제어합니다. System suspend나 resume 중 device driver failure로 발생하는 hard lockup 또는 reboot를 더 효과적으로 debug하는 데 도움이 됩니다.

`pm_trace`에 `1`이 들어 있으면 각 suspend/resume event point의 fingerprint를 차례로 RTC memory에 저장합니다. 실제 RTC 정보를 덮어쓰므로 저장 직후 system crash가 발생해도 fingerprint가 남고, 나중에 crash를 일으킨 driver를 식별하는 데 사용할 수 있습니다.

기본값은 `0`입니다. Nonzero integer를 나타내는 string을 쓰면 `1`로 바꿀 수 있습니다.

절전 상태 진입 방법과 기본값

274-291

Suspend-to-Idle에는 두 가지 진입 방법이 있습니다. 첫째, `/sys/power/state`에 `freeze`를 직접 씁니다. 둘째, `/sys/power/mem_sleep`에 `s2idle`을 쓴 뒤 `/sys/power/state`에 `mem`을 씁니다. Platform이 Standby를 지원한다면 Standby에도 두 방법이 있습니다. `/sys/power/state`에 `standby`를 쓰거나, `/sys/power/mem_sleep`에 `shallow`를 쓰고 `/sys/power/state`에 `mem`을 씁니다. Suspend-to-RAM에는 한 가지 방법만 있으며 `/sys/power/mem_sleep`에 `deep`을 쓰고 `/sys/power/state`에 `mem`을 씁니다.

`/sys/power/mem_sleep`에 아무것도 쓰지 않았을 때 사용하는 기본 suspend 방식은 대다수 Suspend-to-RAM 지원 system에서 `deep`이고, 그렇지 않으면 `s2idle`입니다. Kernel command line의 `mem_sleep_default` parameter로 이를 override할 수 있습니다. 일부 ACPI system에서는 ACPI table 정보에 따라 Suspend-to-RAM을 원칙적으로 지원해도 기본값이 `s2idle`일 수 있습니다.