2016-09-19 9 views
0

전체 CPU 전력이 필요 없다는 것을 커널에 알리는 방법이 있습니까?CPU 주파수 스케일 다운

기본적으로 다른 프로세스를 기다리는 동안 계산을 수행하고 싶습니다. 그러나 나는 그것을 위해 전체 CPU 전력이 필요하지 않습니다. 계산 중 CPU로드가 여전히 100 %이므로 주파수가 높습니다. 에너지를 절약하기 위해 CPU 빈도가 낮다는 사실을 커널에 알리고 싶습니다.

전체 주파수를 사용하여 계산 한 다음 다른 프로세스를 대기하기 위해 일시 ​​중단하는 대신 다른 프로세스가 완료되고 빈도가 낮을 ​​때 CPU가 더 낮은 C 상태가 아니도록 더 낮은 주파수로 계산하려고 시도하고 싶습니다. 다시 축소하십시오.

답변

1

다중 코어의 경우 - 인터럽트에 대해 특정 CPU 코어를 지정하는 방법이 있습니다. 이러한 방법으로 특정 프로세스에 특정 CPU를 저장할 수 있습니다 작업 사용의 IRQ 번호를 찾을 : 당신의 IRQ 번호에 대한

cat /proc/interrupts 

모습을.

echo 2 > /proc/irq/99/smp_affinity 

당신은 당신의 특별한 과정을 처리 할 수있는 특정 코어를 저장할 수있는이 방법 : 는 IRP 번호는 IRQ를 처리하는 핵심 # 2를 설정하려면, 그래서 할, 99라고 말할 수 있습니다.

+0

xx하지만 내가 찾고있는 것이 아닙니다. 예약 된 CPU를 일시 중단하지 않고 크기를 줄이는 솔루션을 찾습니다. – ttm02

3

이것은 다중 프로세스 시스템에서, 특히 Linux에서는 의미가 없습니다. CPU 빈도는 매우 기본적인 매개 변수로, 다른 프로세스 및 OS 자체를 포함하여 컴퓨터에서 실행되는 모든 것에 영향을줍니다.

프로그램이 CPU 빈도를 처리하면 OS 자체를 포함하여 컴퓨터의 우선 순위가 인 자체의 우선 순위를 지정합니다. 단일 응용 프로그램 프로세스에서 운영 체제조차도 간섭 할 수없는 것을 지시하는 것은 의미가 없기 때문에 데스크톱 시스템에서는 수행 할 수 없습니다.

절전 전원이 우선 순위 인 경우 일부 데스크톱 Linux 솔루션보다 완전히 다른 대안을 찾아야합니다. PC 컴퓨터는 1) 속도, 2) 속도 및 3) 속도에만 신경을 씁니다.

실시간 임베디드 시스템에서는 CPU가 "절전 모드"를 사용하여 깨어나서 뭔가를 실행 한 다음 다시 잠자기 모드로 전환하는 경우가 많습니다. 일반적으로 이러한 시스템은 내부 PLL을 사용하여 자체 주파수를 조정할 수도 있지만 이러한 솔루션은 거의 없습니다. 일을하는 업계 표준 방법은 모든 계산을 최대 속도로 수행 한 다음 절전 절전 모드로 되돌리는 것입니다.

+0

thx, 나는 왜 OS를 말하지 않을지 궁금해했다. "이봐, 당신이 아래로 축소하기를 원한다면 전 능력이 필요 없다. – ttm02

+0

@ ttm02 글쎄, 까다로운 시스템에서 프로그램에 대한 CPU 시간이 줄어들 수있는 프로그램의 스케줄링 우선 순위를 변경할 수 있습니다. https://linux.die.net/man/2/setpriority – yeyo

+0

@lundin 마지막 단락에서 드문 메커니즘은 "Intel SpeedStep"및 "AMD Power now"라고하며 실제로 모든 최신 x86에 내장되어 있습니다 데스크톱 기반 시스템에 관해서 당신이 말한 것은 랩탑 컴퓨터에서 반드시 필요한 것은 아니며, 전력이 부족한 데스크톱 시스템에서도 CPU 주파수를 단계적으로 (그리고 최대로) 실행할 수 있다는 이점이 있습니다. – tofro

0

실제로는 nice()을 사용하여 프로세스가 보통보다 낮은 스케줄링 우선 순위로 살 수 있음을 커널에 알릴 수 있습니다. 이는 프로세스가 CPU를 사용하게되는 시간 슬라이스의 양을 효과적으로 줄입니다 (일반적으로 동시에 실행되는 다른 프로세스를 선호 함).

일부 최신 시스템에서는 전체 CPU로드가 크게 줄어들면 일 수도 있고 결국은 더 낮은 빈도로 실행하기로 결정할 수도 있습니다. 그러나 일반적으로 그러한 결정에 직접적인 영향을 미치지는 않습니다.

참고 : 시스템에 따라 적절한 권한으로 실행하지 않고 원래 nice 값을 복원 (즉, 우선 순위를 다시 조정)하는 데 문제가있을 수 있습니다.

응용 프로그램이 I/O 바인딩이고 바쁜 대기와 같은 CPU 사이클을 낭비하는 바보 같은 작업을 수행하지 않는 경우 좋은 값을 줄이면 되돌릴 필요가 없습니다. 최신 CPU 및 운영 체제는 다음을 수행 할 수 있어야합니다. 시스템이 주로 공회전하고 자율적으로 내릴 때 자신을 감지합니다.

+0

리눅스를 실행하는 어떤 종류의 CPU가이를 수행합니까? 당신은이 물건을 의미합니다 : https://en.wikipedia.org/wiki/Dynamic_frequency_scaling – Lundin

+0

@ Lundin 나는 Centrino에서 이것과 비슷한 트릭을 언급하고있었습니다 : https://en.wikipedia.org/wiki/Intel_Turbo_Boost, 또는 AMD PowerNow! 및 Intel의 * SpeedStep * – tofro

+0

질문에 대한 자세한 답변 : Centrino를 지나는 모든 최신 Intel CPU는 EIST와 같은 일종의 EIST를 지원하므로 "즉시"CPU 주파수를 낮출 수 있으며 EIST 지원은 Linux ker에 내장되어 있습니다 2.6에서 nels – tofro