Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam.
Otóż w ubiegły weekend zająłem się konfiguracją skalowalności procesora na laptopie mojego brata, aby rozwiązać problem większej responsywności win7 niż ubuntu (przecież tak nie może być). Przy okazji ostanowiłem zobaczyć jak to wygląda u mnie i właśnie tu pojawia się problem, bo na laptopie zegar procesora schodzi do 800MHz a u mnie nic a nic poniżej 2GHz. Tam jest jakiś core i5 a ja mam w stacjonarnym core 2 duo e8400.
Wynik polecenia cpufreq-info daje:
~ $ cpufreq-info cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009 Report errors and bugs to cpufreq@vger.kernel.org, please. analyzing CPU 0: driver: acpi-cpufreq CPUs which run at the same hardware frequency: 0 1 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: 10.0 us. hardware limits: 2.00 GHz - 3.00 GHz available frequency steps: 3.00 GHz, 2.67 GHz, 2.34 GHz, 2.00 GHz available cpufreq governors: userspace, conservative, powersave, ondemand, performance current policy: frequency should be within 2.00 GHz and 3.00 GHz. The governor "ondemand" may decide which speed to use within this range. current CPU frequency is 3.00 GHz. cpufreq stats: 3.00 GHz:4,14%, 2.67 GHz:0,16%, 2.34 GHz:0,19%, 2.00 GHz:95,51% (50424) analyzing CPU 1: driver: acpi-cpufreq CPUs which run at the same hardware frequency: 0 1 CPUs which need to have their frequency coordinated by software: 1 maximum transition latency: 10.0 us. hardware limits: 2.00 GHz - 3.00 GHz available frequency steps: 3.00 GHz, 2.67 GHz, 2.34 GHz, 2.00 GHz available cpufreq governors: userspace, conservative, powersave, ondemand, performance current policy: frequency should be within 2.00 GHz and 3.00 GHz. The governor "ondemand" may decide which speed to use within this range. current CPU frequency is 2.00 GHz. cpufreq stats: 3.00 GHz:3,99%, 2.67 GHz:0,17%, 2.34 GHz:0,21%, 2.00 GHz:95,63% (55258)
Jak widać wartości pomiędzy 2 a 3GHz system widzi jako ograniczenie sprzętowe. Stąd moje nietypowe pytanie, czy jest to na stałe jakoś zaszyte w procesor czy może zależy od jego konfiguracji w BIOSie? Nie mam kompletnie doświadczenia z przetaktowywaniem procesorów (no może poza penitium 2 dawno temu) więc zdaję się na rady i doświadczenie mądrzejszych. Czy można to jakoś zbić w dół? Bo to i prąd i temperatura i hałas mniejszy...
Offline
Częstotliwości taktowania zależą w pierwszej kolejności od procesora, a w drugiej od płyty, która może nakładać na procesor dodatkowe ograniczenia (bios). Jeżeli chodzi o laptopy to są one tak projektowane, aby czas pracy na baterii był jak najdłuższy i dlatego w procesorach stosowane są różne techniki obniżające zużycie energii. Wspomniana częstotliwość 800MHz to zapewne tryb SLFM (super low frequency mode). Jeżeli chcesz obniżyć zużycie energii to zainteresuj się projektem linux-phc. Jest to moduł kernela pozwalający na zmianę napięcia na rdzeniach procesora. Ja za jego pomocą rozwiązałem problem przegrzewającego się laptopa po zmianie procesora.
Offline
@pribina
nie wczytałem się jeszcze w głab tego projektu, wygląda fajnie ale mam pare pytań
1 jak sie to ma co cpufreq?
2 czy jest automagiczne zarządzanie (ondemand, performance itp) tym, czy muszę wszystko sam ustawiać z palca?
3 rozumiem, że to obsługuje też normalne desktopy?
Offline
http://www.gentoo.org/doc/en/power-management-guide.xml
Masz configi pod skalowanie CPU ;)
Offline
@urbinek
cpufreq zarządza tylko częstotliwością taktowania procesora podczas gdy linux-phc pozwala dodatkowo na zmianę napięcia na procesorze dla każdej z tych częstotliwości. linux-phc wykorzystuje fakt, że każdy procesor ma inną charakterystykę napięciową, a producent z góry zakłada pewną tolerancję aby wszystkie procki danego typu działały stabilnie. Metodą prób i błędów jesteś w stanie znaleźć minimalne napięcia dla każdej częstotliwości przy których procesor działa stabilnie i się nie wiesza. Obniżenie napięcia powoduje zmniejszenie ilości mocy wydzielanej na procesorze (a co za tym idzie ciepła). Nie ma znaczenia czy są to procki na komputer stacjonarny, czy laptopa. Istotne jest to czy procek pozwala na skalowanie częstotliwości.
Offline
No ale mnie interesuje tylko, czy da się zbić częstotliwość tego procesora niżej czy nie, bo z 3GHz na 2GHz to nawet 50% nie jest. Płyta główna udostępnia jakiś pseudo O/C więc może tam coś można by...
Co do linux-phc, troszkę z tym roboty. Można jeszcze kernel z liquorixa. Ale zanim sobie namieszam w moim głównym systemie, to mógłbyś mi pribina opisać jak to działa?? Nie chodzi mi bynajmniej o stronę techniczną. Raczej wrażenia, czy jest tak samo niezauważalne i bezproblemowe jak cpufreq?
Ostatnio edytowany przez skullman (2012-06-24 20:25:17)
Offline
@skullman:
Procki w stacjonarkach - przynajmniej starsze modele, nie wiem jak z i3,i5 i i7 - mają znacznie bardziej ograniczone możliwości skalowania. Mój C2D E7200 skaluje się pomiędzy 1600 a 2500 Mhz, u Ciebie dolną granicą jest pewnie te 2000 Mhz. Pewnie da się zejść niżej, ale raczej tylko za pomocą ręcznego underclockingu, a nie wiem ile płyt taki coś obsługuje - IMHO nie warto sobie głowy tym zawracać, no chyba że lubisz grzebać i chcesz po testować :)
Offline
No i to jest odpowiedź, nie da się i koniec, starsze proce tak mają i tyle. Dzięki Huk. Generalnie jeszcze przetestuję ten moduł. Podobno działa z niektórymi core 2. Jakie będą efekty i czy w ogóle będę napiszę wkrótce, może się przydać, choć ludzie na desktopach raczej szukają rozwiązań w przeciwną stronę. A ja lubię grzebać oczywiście ale nie w sprzęcie bo to teraz nietrwałe i drogie ;)
Offline
Nie trzeba do tego specjalnego kernela. Mozna pobrac wersję która korzysta z dkms i przy kompilacji generuje paczkę deb. Znajdziesz ją tutaj: http://www.linux-phc.org/forum/viewtopic.php?f=7&t=267&hilit=phc+intel+pack+rev6.tar.bz2. Po instalacji pliku deb i załadowaniu modułu (ładuje się automatycznie przy starcie systemu) w lokalizacji /sys/devices/system/cpu/cpu0/cpufreq tworzą ci się nowe pliki. Najbardziej interesuje nas plik phc_vids, który przechowuje informacje o napięciach dla procka. Ja mam dostępne 4 częstotliwości taktowania więc w pliku phc_vids znajdują się cztery wartości. Obniżając te wartości obniżasz napięcie na procku. W momencie gdy obniżysz napięcie zbyt dużo komputer się zawiesi, więc musisz je tak dobrac aby nawet przy pełnym obciążeniu procek działał stabilnie.
Offline
@skullman:
Nie tyle na starszych co na desktopach, generalnie panuje taka zasada że procki laptopowe mają znacznie lepsze możliwości skalowania co wyniki oczywiście z konieczności oszczędności prądu na baterii. Na desktopach aż tak bardzo się to po prostu nie przydaje, stąd znacznie mniejsze możliwości skalowania.
Nie wiem jak jest na nowych procach, ale stawiam że o ile taki i7 w lapku brata potrafi się zeskalować w trybie idle do 800 Mhz (a może 400 Mhz?, pewności nie mam), to jego odpowiednik w stacjonarce będzie miał minimalne taklowanie 1600 Mhz (przy maksymalnym takim samym).
Offline
Time (s) | Query |
---|---|
0.00008 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00077 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.145.44.22' WHERE u.id=1 |
0.00081 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.145.44.22', 1732276727) |
0.00042 | SELECT * FROM punbb_online WHERE logged<1732276427 |
0.00061 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=21485 AND t.moved_to IS NULL |
0.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00155 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=21485 ORDER BY p.id LIMIT 0,25 |
0.00106 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=21485 |
Total query time: 0.00539 s |