Linux : 절전 상태 대신 CPU 코어 종료


10

Linux에서는 echo 0> / sys / devices / system / cpu / cpu1 / online을 사용하여 CPU 코어 (또는 물리적 CPU)를 종료 할 수 있습니다. 하드웨어가 CPU를 완전히 끄고 전원을 차단한다고 가정하면 비활성화하는 것이 좋지 않습니다 프로세서의 다양한 절전 상태에 의존하는 대신 코어가 완전히 사용됩니까?

원리 를 설명 하기 위해 CPU가 4 개인 시스템에 대해 이러한 라인 (의사 코드)을 따라 무언가를 생각하고있었습니다.

if(loadavg > 3.00) echo 1 > /sys/devices/system/cpu/cpu3/online
if(loadavg < 3.00) echo 0 > /sys/devices/system/cpu/cpu3/online

if(loadavg > 2.00) echo 1 > /sys/devices/system/cpu/cpu2/online
if(loadavg < 2.00) echo 0 > /sys/devices/system/cpu/cpu2/online

if(loadavg > 1.00) echo 1 > /sys/devices/system/cpu/cpu1/online
if(loadavg < 1.00) echo 0 > /sys/devices/system/cpu/cpu1/online

답변:


6

CPU 코어의 온라인 상태를 설정하면 프로세스 스케줄러에게 프로세스에 해당 코어사용하지 않도록 지시합니다 . 하드웨어 수준에서 코어는 단순히 유휴 상태 ( NOPs) 상태 이지만 여전히 전원이 공급됩니다. 이렇게하면 전력이 절약되지만 컴퓨터를 절전 모드로 설정하는 것만 큼 전력을 절약 할 수는 없습니다. 왜?

글쎄, 당신의 마더 보드, CPU 및 GPU는 여전히 실행 중입니다 ! 컴퓨터를 절전 모드로 전환하면 이러한 모든 구성 요소의 전원이 완전히 꺼지고 RAM을 유지하기에 충분한 전력 만 사용됩니다 (2 와트 정도).

다시 말하지만, 그것은 전력 절약에 동의하지만 CPU 코어의 절반을 차단하더라도 프로세서의 전력 소비는 절반으로 줄어들 수 있지만 실제로는 유휴 상태로 앉아 있어야하기 때문에 30-40 % 만 절약 할 수 있습니다. 이것은 전력을 사용하는 시스템의 유일한 구성 요소와는 거리가 멀다. 이렇게하면 50W를 절약하더라도 전체 컴퓨터가 여전히 절전 모드에서 단순한 와트보다 훨씬 많은 전력을 소비하고 있습니다.


최종 생각 : 이것이 실제로 좋은 아이디어라는 데 동의하지만 많은 CPU 제조업체가 Linux 지원과 함께 동적 주파수 스케일링 (Intel의 "Speed ​​Step")을 포함하는 이유이기도합니다. 필요에 따라 이러한 주파수를 더 적절하게 설정하면 전력 효율뿐만 아니라 전반적인 성능을 향상시킬 수 있습니다. 이것은 하드웨어뿐만 아니라 하드웨어 (BIOS 설정)와 소프트웨어에서도 가능합니다 (리눅스 커널을 사용하면 일부 CPU 매개 변수를 수정할 수 있습니다 . 자세한 내용 은 위에 게시 한 링크 또는 이 웹 사이트 참조).

다음은 CMOS 회로의 전력 소비에 대한 일반적인 방정식이기 때문에 작동합니다.

P = CV 2 f, 여기서 C = 커패시턴스 (고정 가정), V = 전압 및 f = 주파수.

따라서 주파수를 2로 나누면 원래 전력 소비의 절반이됩니다. 전압을 2로 나누면 전력 소비가 원본의 1/4로 줄어 듭니다.


적어도 x86 / amd64 호환 프로세서에서는 가능한 경우 HLT 명령이 NOP보다 CPU에서 더 쉽다고 가정합니다. 또한 다양한 절전 상태 (또는 프로세서 상태 C0-C3 (ACPI))를 참조했습니다. 또한 전체 시스템을 잠자기 할 수없는 곳에서 항상 실행되는 시스템에 대해 더 많이 생각하고있었습니다. 이 경우 하드웨어가 실제로 CPU의 전원을 차단하고 일부 구성에서 전혀 구현되는지 궁금합니다. 답변 해 주셔서 감사하지만 질문을 조금 더 열어 두겠습니다.
Waxhead

@Waxhead 일단 CPU 전원을 차단하면 다른 하드웨어에 전원이 공급 되더라도 전체 컴퓨터가 논리적으로 "꺼져"있습니다 (외부 인터럽트를 통해서만 다시 켤 수 있음). 또한 HLT대신 에 사용하는 것이 좋을 수도 NOP있지만 인터럽트 사용으로 다시 연결됩니다 (프로세서를 정지 상태에서 해제하는 방법). 대부분의 프로세서는 전력을 차단하는 대신 클럭 속도와 전압을 동적으로 변경합니다 (내 답변에 방정식 추가).
획기적인

나는 이것에 대해 더 많은 연구를했다. 리눅스가 실제로 CPU의 핫 플러그를 지원한다는 것이 밝혀졌습니다. 이 경우 BIOS / 마더 보드가 지원하는 경우 실제로 CPU를 종료하고 교체 할 수 있습니다. 예를 들어 시스템이 실행중인 동안 CPU를 소켓에서 빼내어 교체하십시오. 참조 : cyberciti.biz/faq/debian-rhel-centos-redhat-suse-hotplug-cpu 내가 잘못 이해하지 않으면 BIOS / 마더 보드가 지원하는 경우 CPU의 전원을 차단합니다.
Waxhead

@Breakthrough 멋진 게시물 감사합니다. CPU를 저전력 상태 (재부팅 시스템없이)로 설정하고 필요할 때 다시 가져올 수있는 방법에 대한 자세한 내용은 참조 문서를 제공 할 수 있습니까?
iDebD_gh

@Breakthrough "핵심은 단순히 유휴 상태입니다 (NOP 수행)."특정 CPU 코어에서 오프라인 상태가되면 "/ proc / interrupts"에서 디스 패퍼됩니다. Core가 NOP 작업을 처리하고 있다고 어떻게 말할 수 있습니까?
iDebD_gh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.