이 문서의 저작권은 GPL을 따릅니다.(This document is released under the GPL license.)
[Linux:Kernel] Linux CPUFreq CPU Drivers
이 문서의 저작권은 GPL 라이센스를 따릅니다.(This document is released under the GPL license.)
* 역자 주: 주파수 테이블의 index 라는 이름이 혼동스러워서 driver_data 로
이름이 변경되었습니다. 그래서 이 줄은 문서에서 삭제되었습니다.
[Linux:Kernel] Linux CPUFreq Governor
이 문서의 저작권은 GPL 라이센스를 따릅니다(This document is released under the GPL license).
C P U F r e q G o v e r n o r s
– 사용자와 개발자들을 위한 정보 –
Dominik Brodowski <linux@brodo.de>
2. 리눅스 커널 안의 가버너들
3. CPUfreq 코어 안의 가버너 인터페이스
1. CPUFreq 가버너가 뭔가요?
대부분의 cpufreq 드라이버들(사실, longrun 하나를 빼고 모두다) 또는 대
CPUFreq 정책 안에서 무슨 주파수가 사용되어져야 하는 지는 어떻게 결정할
기본적으로, 다음 흐름도를 따릅니다:
CPU는 기정된 “제한사항”안에서 독립적으 | CPU는 지정 주파수로만
“CPUfreq 정책”
2. 리눅스 커널 안의 가버너들
2.1 성능(Performance)
CPUfreq 가버너 “performance”는 CPU를 정적으로 scaling_min_freq 와
CPUfreq 가버너 “powersave”는 CPU를 정적으로 scaling_min_freq 와
CPUfreq 가버너 “userspace”는 사용자에게, 또는 UID “root”로 실행되는
CPUfreq 가버너 “ondemand” 는 현재 사용량에 따라 CPU를 셋팅합니다.
sampling_rate: uS(10^-6 초)로 측정됨, 이것은 얼마나 자주 여러분이 커널이
sampling_rate_min:
up_threshold: 주파수를 증가시키는 게 좋을지에 대한 결정을 커널이 내리는데
ignore_nice_load: 이 파라미터는 ‘0’ 또는 ‘1’ 을 값으로 가집니다.
sampling_down_factor: 이 파라미터는 커널이 최고 속도에서 실행 중인 동안
“ondemand”와 매우 비슷한, CPUfreq 가버너 “conservation” 는 현재 사용량에
freq_step: 이것은 CPU 주파수가 그에 의해 부드럽게 중가되거나 감소되어야
down_threshold: “ondemand” 가버너에서 찾을 수 있는 ‘up_threshold’ 와 같지만,
2.6 상호적(Interactive)
CPUfreq 가버너 “interactive”는 지연 시간에 민감한 상호적 작업 부하에
이 가버너를 위해 맞출 수 있는 값들은 다음과 같습니다:
target_loads: CPU 부하 값은 현재 CPU 부하를 그 값으로 맞추기 위해서
85 1000000:90 1700000:99
hispeed_freq: gp_hispeed_load 로 지정된 값에 CPU 부하가 도달했을 때
go_hispeed_load: hispeed_freq 로 올라가는 CPU 부하. 기본은 99%.
above_hispeed_delay: 속도가 hispeed_freq 혹은 그 이상일 때, 계속되는
80000 1300000:200000 1500000:40000
CPU 속도 1.3 GHz 까지는 80000 uS 대기 시간이 사용되고, 1.5 GHz
timer_rate: CPU가 대기 상태가 아닐 때 CPU 부하를 재평가하기 위한
timer_slack: 최하 속도 이상의 속도로 실행 중일 때, timer_rate를 넘어
boost: 0이 아니면, 즉시 모든 CPU들의 속도를 이 속성에 0이 쓰여질 때까지
boostpulse: 쓰여질 때마다, 즉시 모든 CPU들의 속도를 적어도
boostpulse_duration: boostpulse에 쓰여질 때 보통의 부하에 따라 속도를
새로운 가버너는 그 자신을 CPUfreq 코어에 “cpufreq_register_governor”를
governor->name – 이 가버너의 유일한 이름
governor->governor 콜백은 그 CPU를 위한 현재의(또는 셋팅될)
CPUFREQ_GOV_START: 이 가버너가 그 CPU policy->cpu를 위해 그 의무를
여러분이 여러분의 드라이버의 다른 “이벤트들”을 외부적으로 필요로 한다면,
int cpufreq_driver_target(struct cpufreq_policy *policy,
int __cpufreq_driver_target(struct cpufreq_policy *policy,
target_freq 는 물론, policy->min과 policy->max 안에 있어야만 합니다.
[Linux:Kernel] Linux CPUFreq Core
이 문서의 저작권은 GPL License를 따릅니다(This document is released under the GPL license).
클럭 조정은 동작하고 있는 CPU의 클럭 속도를 바꿀 수 있게 합니다. 이 것은
배터리 파워를 절약할 수 있는 좋은 방법입니다. 왜냐하면 클럭 속도가
차례:
—–
1. CPUFreq 코어와 인터페이스
2. CPUFreq 노티파이어(notifires)
1. 일반적인 정보
================
CPUFreq 코어 코드는 drivers/cpufreq/cpufreq.c 안에 있습니다. 이 cpufreq
코드는 CPUFreq 구조 드라이버(실제 주파수 전이를 수행하는 코드 조각)를
위한 표준화된 인터페이스, “노티파이어(notifires)”를 제공합니다. 이들은 정책 변경
(예를 들면, ACPI 같은 온도 모듈), 모든 동작 속도 변화(예를 들면,
타이밍 코드)의 알림을 필요로 하거나, 혹은 일정 속도 제한을 강제할 필요가
있는(예를 들면, ARM 아키텍처의 LCD 드라이버 같은) 디바이스 드라이버거나
혹은 커널의 다른 부분 입니다. 추가적으로, 커널 “상수” loops_per_jiffy는
여기 주파수 변경 상에서 업데이트 됩니다.
레퍼런스 카운트는 cpufreq 프로세서 드라이버가 코어와 함께 정확히
등록되었고, cpufreq_put_cpu가 호출되기 전까지 로딩되지 않을 것임을
확실하게 해주는 cpufreq_get_cpu와 cpufreq_put_cpu에 의해서 수행됩니다.
2. CPUFreq 노티파이어(notifires)
================================
CPUFreq 노티파이어는 표준 커널 노티파이어 인터페이스를 따릅니다.
노티파이어에 대한 자세한 사항은 linux/include/linux/notifire.h 를
보세요.
두가지 CPUFreq 노티파이어-정책 노티파이어와 전이 노티파이어-가 있습니다.
2.1 CPUFreq 정책 노티파이어
—————————
새 정책이 셋팅되려고 할 때 이것들이 알려집니다. 각 CPUFreq 정책 노티파이어는
정책의 전이 동안 세 번 호출 됩니다:
1.) CPUFREQ_ADJUST 동안 모든 CPUFreq 노티파이어는 이를 봐야 할 필요가 있다면
그 제한 사항-온도에 대한 고려나 하드웨어 제한 사항-을 변경할 것입니다.
2.) CPUFREQ_INCOMPATIBLE 동안 하드웨어 실패를 피하기 위한 변경들만 수행될
것입니다.
3.) 그리고 CPUFREQ_NOFITY 동안 모든 노티파이어들은 새 정책-만약 두 하드웨어
드라이버가 이 단계 전에 새 정책에 대해 동의하는데 실패했다면, 그 호환될 수
없는 하드웨어는 꺼지고 사용자에게 이를 알릴 것입니다-을 알립니다.
이들 단계는 노티파이어의 두번째 인자로 지정됩니다.
세번째 인자, void * 포인터는 다섯 개의 값으로 구성된 cpufreq_policy 구조체를
가리킵니다: cpu, min, max, policy와 max_cpu_freq. min과 max는 새 정책의
주파수의 상한과 하한 값(kHz) 을, policy는 새 정책, cpu는 영향을 미칠 CPU의
번호, 그리고 max_cpu_freq 는 최고로 지원하는 CPU 주파수입니다. 이 값은
정보 제공 목적으로만 주어집니다.
2.2 CPUFreq 전이 노티파이어
—————————
이 것들은 CPUFreq 드라이버가 CPU 코어 주파수를 바꿀 때와 이 변경이 어떤 외부
영향을 가질 때, 두 번 알려집니다.
두번째 인자는 이들 단계-CPUFREQ_PRECHANGE나 CPUFREQ_POSTCHANGE-를 지정합니다.
세번째 인자는 다음 값들을 가지는 cpufreq_freq 구조체입니다:
cpu – 영향을 미치는 CPU 번호
old – 이전 주파수
new – 새 주파수
시스템이 suspend된 동안 cpufreq 코어가 주파수의 변경을 알아차리면,
이들 노티파이어는 두번째 인자로 CPUFREQ_RESUMECHANGE와 함께 호출됩니다.
국정원 대선 개입 의혹..
지난 대선 당시에도 국정원 여직원 사건의 경우, 말도 안되는 주장, 일들이 많았다고 생각한다.
지금도 하늘을 손바닥으로 가리려 하는가..
민주주의 국가의 근간을 흔드는 이 사건을, 그 세력을 도대체 어찌해야 하는가..
* 2013.06.28. 추가. 이걸 보고 뭐라고 해야 하는가.. 유형과 판단 이유에 주목해서 한번 보시라.
http://www.ohmynews.com/NWS_WEB/Event/nisre.aspx
[Ubuntu:12.04] Proxy exceptional list 추가
Proxy의 예외 리스트에 뭔가 추가하고 싶다면,
$ dconf-editor
“system” / “proxy” / “ignore-hosts” 에 기본값인 “[‘localhost’, ‘127.0.0.0/8’]” 의 대괄호 안에 추가하도록 한다.
참고 : http://askubuntu.com/questions/135089/proxy-exceptions-in-12-04-lts
[Android:Build] Macro 정리
http://blog.naver.com/hyunsung1026/80145257300 에 정리가 잘 되어 있네요~ ^^
[Ubuntu] fstab 의 UUID 얻기
fstab 설정을 위한 UUID 얻기
$ sudo blkid -o full -s UUID
[Ubuntu:12.04] /etc/resolv.conf 대신 resolvconf(8)
http://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/
# service resolvconf restart
[git] git status 의 Untracked files 지우기
이거도 가끔 하는데 할 때 마다 긁자!
rm -rf `git status | grep -P “^#\t” | awk ‘{ print $2 }’`