Linux 전원 관리 문서를 보고 있는데 C와 S 상태가 혼란스럽습니다.
- C 상태는 에 정의되어 있습니다
/sys/devices/system/cpux/cpuidle/
. 내가 이해한 바로는 유휴 수준에 따라 CPU를 다른 절전 상태로 전환하는 데 사용됩니다. - S 상태 인터페이스가 상태
/sys/power/state
이며 정지, 대기, 메모리 등과 같은 다양한 절전 상태를 볼 수 있습니다. 설명을 읽어보면 그들은 C 상태에서 하려는 것과 동일한 작업을 수행하려고 합니다.
이것은 내 질문을 간청합니다: 그들 사이의 차이점은 무엇입니까? 시스템이 유휴 상태가 되는 것을 방지하려면 어떤 매개변수를 설정해야 합니까? C 상태에 대한 비활성화 매개변수를 설정했지만 /sys/devices/system/cpux/cpuidle/
(관찰을 위해) 휴대폰이 유휴 상태로 들어가는 것을 계속 관찰할 수 있습니다 systrace
.
답변1
S 상태는글로벌 ACPI 상태: 전체 시스템의 전원 상태를 설명합니다. 이러한 유형의 상태 변경은 일반적으로 사용자가 요청하거나 최소한 사용자가 구성할 수 있습니다(예를 들어시간 초과, 배터리 부족 대기 등).
C 상태는프로세서 상태: 개별 CPU 패키지(또는 코어)의 전원 상태를 설명합니다. 이러한 유형의 상태 변경은 일반적으로 자동으로 이루어지며 시스템의 전체 상태에 영향을 주지 않습니다. CPU는 시스템의 나머지 부분을 개입시키지 않고 절전 모드로 들어갔다가 다시 깨어날 수 있습니다.
대부분의 경우(특히 휴대폰의 경우) C 상태 전환을 비활성화하는 것이 유용한지 잘 모르겠습니다. S 상태 전환을 비활성화할 수도 있습니다. "유휴" 상태는소프트웨어로 구현공식적인 ACPI 상태가 아니라 이에 대한 하드웨어 제어를 찾을 수 없습니다. S 상태 전환은 소프트웨어에 의해 제어됩니다. 예를 들어 시스템 제어 시스템에서는거기에서 수면을 비활성화합니다;휴대폰에서 절전 모드를 비활성화하는 방법을 모르겠습니다.
답변2
동결, 대기 등이 있는 경우 이는 거의 항상 수동 명령입니다. 노트북은 뚜껑을 닫는 방식으로 연결될 수 있으며 이는 궁극적으로 자발적인 행위입니다.
echo mem > /sys/power/state
이것이 바로 내 시스템(커버 없는 미니 PC)을 S3에 연결한 방법입니다. 와트가 3.5에서 1.2로 변경되었습니다. (전원을 끈 후에도 전력 소비는 여전히 0.7W입니다.) 기본 xorg 시간 제한 소프트 슬립을 사용할 때 전력 소비는 2.5W입니다. S1 또는 S2여야 합니다.
]# cat /sys/power/mem_sleep
s2idle [deep]
이것은 당신이 원하는 수면의 종류를 조절하는 것입니다.
하지만 배포판/커널은 하드웨어를 지원해야 하는데 그게 쉽지 않습니다. 내 배포판에 "echo mem"이 있으면 빨리 재생을 중단했습니다. (휴대폰에 대해서는 잘 모르겠습니다.) 나는 이와 같은 것이 너무 잘 작동하기 때문에 그 배포판을 선택했습니다.
지원되는 경우 S 상태는 시간이 지남에 따라 또는 낮은 에너지에서 발생하는 일뿐만 아니라 사용자 명령처럼 작동합니다.
C 상태는 주로 G0 "작업" 상태의 CPU 내부 문제입니다. 멀티코어 CPU가 조심스럽게 배치되어 있습니다.일부 핵심즉시 재활성화할 수 있도록 일부 C 상태로 전환합니다. 위키 링크의 정의는 다소 잠정적입니다. "C10" 프롬프트를 보면 이는 Haswell의 전문 분야가 아닙니다. 이것이 바로 "현대적인" CPU가 낮은 에너지 소비와 높은 성능을 결합하는 방식입니다.
"ram 일시 중지"가 좋은 예입니다. 특별한 최소 RAM 연결 유지 상태를 제외하고 CPU는 깊은 절전 모드에 들어가고 시스템은 완전히 종료됩니다. CPU가 복구하는 데 잠시 시간이 걸리더라도 괜찮습니다.
그러나 낮은 시스템 부하(유휴 상태이지만 실행 중인 시스템)로 인해 하나 이상의 코어가 자동으로 절전 상태로 전환되는 경우 매우 빠르게 다시 활성화해야 합니다.