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.