LINUX-BG   Адрес : http://www.linux-bg.org
Динамична промяна на работната честота на АМД К7
От: Uvigii
Публикувана на: 28-09-2005
Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=ideas&key=375940607
Да си поиграем с огъня

Да си поиграем с огъня. Динамична промяна на работната честота на АМД К7

2005-09-27 За контакти: uvigii@linux-bg.org. Оригиналът на този документ се намира тук

Следвайки описанията в следващите няколко реда Вие подлагате хардуерът си на опасност! Вероятноста да повредите нещо е много голяма и както правилно предполагате авторът не носи никаква отговорност за последствията реални или не.

Съдържание:
1. Предистория
2. Необходим хардуер
3. Необходим софтуер
4. Инсталиране
5. Заключение
6. Бележки и пояснения
7. Връзки

1. Предистория.
След прочитането на една доста интересна статия в мен се зароди желанието да намаля работната честота на процесора си а от там и потрблението на електроенергия и отделянето на топлина. За целата се сдобих с един мобилен процесор на AMD* за сокет А. Монтирах го в дънната си платка и започнах да експериментирам. Истината е, че доста рядко ми се налага да ползвам пълния потенциал на процесора си – но понякога наистина се изисква максималната производителност. Затова търсенето ми бе насочено по-скоро в посока динамична промяна на честотата на процесора. Докато това е лесно и отдавна се ползва в мобилните компютри при стационарните нещата не стоят точно така – за подробности потърсете в интернет ;). И тъй като не намерих това което търсих – просто си го направих. Ако не беше огромния труд на безброй много хора на базата на който да стъпя - аз не бих успял! Така, че тук е мястото да благодаря ня всички хора подарили дори една своя идея на обществото!!!
На кого може да е полезена тази статия : на хора желаещи да променят динамично честотата на процесора си както и за такива желаещи динамичен „overclock“** (а защо не и underclock***) Представете си че четете нещо на компютъра... нужно ли е процесорът Ви да работи на максимална честота ?! А в следващия момен си пускате любимата игра ... и Ви трябва и последната капчица производителност ... е следващите редове може и да Ви помогнат.

2. Необходим хардуер.
AMD K7 базирана система.

3. Необходим софтуер.
- Ядро версия 2.6.12 или по-висока (тествано е с ядра 2.6.12 до 2.6.13.2)
- Драйвер (powernow-k7) със следната кръпка: powernow-k7-manual_and_overclock.diff. Тази кръпка е допълнен от мен вариянт на кръпките които може да намерите тук
-Програма следяща натоварването и управляваща честотата на процесора: Аз предпочитам powernowd.

4. Инсталиране:
4.1. Кърпеж на ядрото: Просто приложете следната кръпка: powernow-k7-manual_and_overclock.diff
# patch --dry-run --verbose -p0 < powernow-k7-manual_and_overclock.diff

4.2. Настройка на таблиците: За да работи правилно драйверът се нуждае от таблици на множителите и напреженията поддържани от процесора. Точно тук изниква проблем- повечето БИОС-и за настолни компютри не съдърват такива таблици. За да се реши проблема трябва да ги дефинираме ние. За целта редактираме powernow-k7.c
Трябва да разрешим форсирането на нашите таблици:
static int overwrite_table=1;

да дефинираме самата таблица за множителите, където 30 означава множител 3х, 35= 3.5х , 40=4х и т.н (множителя умножен по 10)
static int multiplier[MAX_PST]= { 30, 60, .................

може да промените максималния (както и минималния/то) множител и напрежение – което определено е ОПАСНО и не се препоръчва (за подробности прегледайте изходния код).

4.3.Настройка на ядрото
[*] CPU Frequency scaling
[*] Enable CPUfreq debugging
<*> CPU frequency translation statistics
[*] CPU frequency translation statistics details
Default CPUFreq governor (userspace) --->
<*> 'performance' governor
<*> 'powersave' governor
--- 'userspace' governor for userspace frequency scaling
'ondemand' cpufreq policy governor
< > 'conservative' cpufreq governor
--- CPUFreq processor drivers
<*> ACPI Processor P-States driver
< > AMD Mobile K6-2/K6-3 PowerNow!
AMD Mobile Athlon/Duron PowerNow!

4.4. Компилиране и инсталация на ядрото и модулите. Консултирайте се с FAQ/HowTo на Вашата дистрибуция.

4.5. Инсталиране на PowernowD. Консултирайте се с FAQ/HowTo на Вашата дистрибуция.

4.6. Зареждане на драйвера: Заредете драйвера:
#modprobe powernow-k7

и прегледайте изхода на dmesg. Ето как изглежда на моята машина:
powernow: PowerNOW! Technology present. Can scale: frequency and voltage.
Detected 1503.812 MHz processor.
powernow: Trying ACPI perflib
powernow: ACPI perflib can not be used in this platform
powernow: ACPI and legacy methods faile
powernow: See
http://www.codemonkey.org.uk/projects/cpufreq/powernow-k7.shtml
powernow: Overwriting PST table with manual settings
powernow: Settling Time: 200 microseconds.
powernow: Max multiplayer:150. Max voltage:1450
powernow: Max multiplayer overwrited to:220
powernow: number_scales:10
powernow: number_scales:10
powernow: multipliers:0 – 30
powernow: Voltage:0 – 1200
powernow: FID: 0x10 (3.0x [300MHz]) VID:0x13 (1.200V)
powernow: multipliers:1 – 60
powernow: Voltage:1 – 1300
powernow: FID: 0x6 (6.0x [601MHz]) VID:0xe (1.300V)
powernow: multipliers:2 – 80
powernow: Voltage:2 – 1350
powernow: FID: 0xa (8.0x [802MHz]) VID:0xd (1.350V)
powernow: multipliers:3 – 90
powernow: Voltage:3 – 1400
powernow: FID: 0xc (9.0x [902MHz]) VID:0xc (1.400V)
powernow: multipliers:4 – 100
powernow: Voltage:4 – 1450
powernow: FID: 0xe (10.0x [1002MHz]) VID:0xb (1.450V)
powernow: multipliers:5 – 120
powernow: Voltage:5 – 1450
powernow: FID: 0x2 (12.0x [1203MHz]) VID:0xb (1.450V)
powernow: multipliers:6 – 130
powernow: Voltage:6 – 1450
powernow: FID: 0x14 (13.0x [1303MHz]) VID:0xb (1.450V)
powernow: multipliers:7 – 140
powernow: Voltage:7 – 1450
powernow: FID: 0x16 (14.0x [1403MHz]) VID:0xb (1.450V)
powernow: multipliers:8 – 180
powernow: Voltage:8 – 1450
powernow: FID: 0x1d (18.0x [1804MHz]) VID:0xb (1.450V)
powernow: multipliers:9 – 200
powernow: Voltage:9 – 1450
powernow: FID: 0x13 (20.0x [2005MHz]) VID:0xb (1.450V)
powernow: Minimum speed 300 MHz. Maximum speed 2005Mhz.

Ако всичко е наред може да пристъпите към следващата стъпка:

4.6. Зареждане на PowernowD. Обърнете внимание на това, че имате възможност да използвате няколко режима на работа: „-m“ особенно полезни са PASSIVE и AGGRESSIVE в зависимост от целта.
#powernowd -m PASSIVE
powernowd: PowerNow Daemon v0.90hun6, (c) 2003-2004 John Clemens
powernowd: Found 1 physical cpu and 1 virtualcpu:
powernowd: cpu0: 300762 kHz - 2005080 kHz


5. Заключение. Надявам се тези няколко реда да са Ви били полезни. Ето как изглежда функцията на честотата в зависимост от времето(и други случайни процеси) при мен:


6. Бележки и пояснения.
* Advanced Micro Devices, Inc Мобилните процесори на фирмата(от K7 поколението) са със същия начин на захващане към дънната платка(Socket A, Socket 462) както и процесорите предназначени за стационарни компютри. Някой източници даже твърдят, че това са на практика еднакви процесори, просто мобилните са показали по-добри резултати при фабричните тестове и работят на по-ниски напрежения спрямо десктоп еквивалентите. С малко сръчност вие бихте могли да "преработите" своя процесор следвайки тези указания.
** overclock - Повишаване работната честота на процесора над фабрично указаната. Динамичен overclock- overclock по заявка т.е. само когато ни е необходимо
*** underclock - Понижаване работната честота на процесора под фабрично указаната. При намаляне на честотата ( а от там и на напрежението) на процесора се понижава количеството употребена енергия - следователно и отделената топлина.


7. Връзки.
http://www.codemonkey.org.uk/projects/cpufreq/powernow-k7.shtml - Powernow-K7 BIOS problems.
http://www.yggdrasl.demon.co.uk/code/ - Linux 2.6 K7 PowerNow! MSR Support


<< Корпоративно използване на свободния софтуер | Алгоритми за разпределяне на процесорното време >>

Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук, но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора, както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.

All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
Linux is copyright by Linus Torvalds.
© Линукс за българи ЕООД 2007
© Slavei Karadjov 1999 - 2006

All rights reserved.

Изпълнението отне: 0 wallclock secs ( 0.15 usr + 0.03 sys = 0.18 CPU)