Gå til innhold

[Løst] Overklokking i ubuntu 14.04 fungerer ikke?


Anbefalte innlegg

Hei,

 

Forsøker å overklokke en Pentium G3258 i Ubuntu 14.04 på et Gigabyte Z97N Gaming 5 på siste BIOS versjon.

 

Uansett hva jeg setter frekvensen til i BIOS, får jeg:

 

sudo dmidecode -t processor | grep Speed
Max Speed: 3800 MHz
Current Speed: 3200 MHz

 

Dette skjer også under full load.

Det kan virke som om Ubuntu reduserer frekvensen.. Er det noe jeg må gjøre i OS for å fikse dette?

 

Takk!

Endret av Xvani
Lenke til kommentar
Videoannonse
Annonse

Debian distribusjoner benytter ondemand (kanskje også userspace) klokkefrekvens-styring, du kan endre dette slik for en enkelt cpu.

 

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
ondemand performance
$ sudo sh -c "echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
performance
Du kan se endringene øyeblikkelig med følgende kommando.

$ watch grep MHz /proc/cpuinfo
Mer informasjon her. http://www.thinkwiki.org/wiki/How_to_make_use_of_Dynamic_Frequency_Scaling

 

Det skal ikke påvirke ytelsen nevneverdig for vanlig bruk å benytte automatisk nedklokking med ondemand profil, men det har endel å si for å redusere strømforbruk og varmeutvikling.

 

Intel CPU'er har så vidt jeg vet også automatisk nedklokking dersom CPU blir veldig varm. Dårlig ventilerte bærbare er veldig utsatt for tvungen nedklokking under last.

Endret av rockPaperScissors()
Lenke til kommentar

Hmm, kjapp testing her nå. Det ser ut som om /proc/cpuinfo kan gi deg svaret:

(dette er på en maskin med en i3)

 

tingo@kg-u35jc:~$ cat /proc/cpuinfo | grep MHz
cpu MHz        : 2399.000
cpu MHz        : 933.000
cpu MHz        : 933.000
cpu MHz        : 933.000
tingo@kg-u35jc:~$ cat /proc/cpuinfo | grep MHz
cpu MHz        : 933.000
cpu MHz        : 2399.000
cpu MHz        : 933.000
cpu MHz        : 933.000
tingo@kg-u35jc:~$ cat /proc/cpuinfo | grep MHz
cpu MHz        : 933.000
cpu MHz        : 933.000
cpu MHz        : 2399.000
cpu MHz        : 933.000
tingo@kg-u35jc:~$ cat /proc/cpuinfo | grep MHz
cpu MHz        : 2399.000
cpu MHz        : 933.000
cpu MHz        : 1866.000
cpu MHz        : 933.000
tingo@kg-u35jc:~$ cat /proc/cpuinfo | grep MHz
cpu MHz        : 933.000
cpu MHz        : 933.000
cpu MHz        : 933.000
cpu MHz        : 933.000
 
Lenke til kommentar

Wow! Takk for gode svar!

 

Ser ut som om det er noe med cpufreq-info ja!

 

Kan det være at du har cpufrequtils installert, dvs. cpu scaling?

 

Noen relevante linjer:

$ cpufreq-info 
 hardware limits: 800 MHz - 3.20 GHz
  available frequency steps: 3.20 GHz, 3.20 GHz, 3.00 GHz, 2.90 GHz, 2.70 GHz, 2.50 GHz, 2.30 GHz, 2.20 GHz, 2.00 GHz, 1.80 GHz, 1.70 GHz, 1.50 GHz, 1.30 GHz, 1.10 GHz, 1000 MHz, 800 MHz

 current CPU frequency is 3.20 GHz.

Debian distribusjoner benytter ondemand (kanskje også userspace) klokkefrekvens-styring, du kan endre dette slik for en enkelt cpu.

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
ondemand performance
$ sudo sh -c "echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
performance
Du kan se endringene øyeblikkelig med følgende kommando.
$ watch grep MHz /proc/cpuinfo
Intel CPU'er har så vidt jeg vet også automatisk nedklokking dersom CPU blir veldig varm. Dårlig ventilerte bærbare er veldig utsatt for tvungen nedklokking under last.

 

Hei,

 

jeg har tvunget cpufreq til Performance, uten at det hjelper.

 

 

Hmm, kjapp testing her nå. Det ser ut som om /proc/cpuinfo kan gi deg svaret:

(dette er på en maskin med en i3)

 

Jeg har skrudd av skalering av prosessoren, og tester under 100% load på begge kjerner. /proc/cpuinfo gir samme verdi uansett.

Lenke til kommentar

Takk så langt, dere er strålende!

 


Ser ut som om det er noe med cpufreq-info ja!

 

Noen relevante linjer:

$ cpufreq-info 
 hardware limits: 800 MHz - 3.20 GHz
  available frequency steps: 3.20 GHz, 3.20 GHz, 3.00 GHz, 2.90 GHz, 2.70 GHz, 2.50 GHz, 2.30 GHz, 2.20 GHz, 2.00 GHz, 1.80 GHz, 1.70 GHz, 1.50 GHz, 1.30 GHz, 1.10 GHz, 1000 MHz, 800 MHz

 current CPU frequency is 3.20 GHz.

 

 

Noen flere relevante linjer (etter tips fra denne bloggen):

$ cat /sys/devices/system/cpu/cpu0/cpufreq/bios_limit
3201000

Om jeg skriver:

$ echo 1 > sudo /sys/module/processor/parameters/ignore_ppc
$ echo 3901000 > sudo /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
3901000
Får jeg forsatt:
$ cat /sys/module/processor/parameters/ignore_ppc
0
$ cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
3201000

Noen som kan forklare hva som skjer her?

Endret av Xvani
Lenke til kommentar

Nå er jeg på tynn is her, men det er mulig at driveren ikke tillater det du forsøker å gjøre. Mulig du kan slå av cpufrequtils tjenesten og CPU vil kjøre i den frekvensen du har ved oppstart?

 

 

$ sudo update-rc.d cpufrequtils disable

 

Deretter omstart.

 

For å aktivere cpufrequtils igjen.

 

 

$ sudo update-rc.d cpufrequtils enable
$ sudo service cpufrequtils start

 

https://wiki.debian.org/Daemon#Enable.2Fdisable_daemons

  • Liker 1
Lenke til kommentar

Takk så langt, dere er strålende!

 

Om jeg skriver:

$ echo 1 > sudo /sys/module/processor/parameters/ignore_ppc
$ echo 3901000 > sudo /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
3901000
Får jeg forsatt:
$ cat /sys/module/processor/parameters/ignore_ppc
0
$ cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
3201000

Noen som kan forklare hva som skjer her?

 

Du bruker echo '3901000' til å lage en fil som heter sudo med det innholdet.

 

Prøv 'sudo echo 3901000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq'

Endret av process
  • Liker 1
Lenke til kommentar

 

Takk så langt, dere er strålende!

 

Om jeg skriver:

$ echo 1 > sudo /sys/module/processor/parameters/ignore_ppc
$ echo 3901000 > sudo /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
3901000
Får jeg forsatt:
$ cat /sys/module/processor/parameters/ignore_ppc
0
$ cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
3201000

Noen som kan forklare hva som skjer her?

 

Du bruker echo '3901000' til å lage en fil som heter sudo med det innholdet.

 

Prøv 'sudo echo 3901000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq'

 

 

sudo sh -c "echo 3901000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq" blir det vel?

  • Liker 1
Lenke til kommentar

 

 

Takk så langt, dere er strålende!

 

Om jeg skriver:

$ echo 1 > sudo /sys/module/processor/parameters/ignore_ppc
$ echo 3901000 > sudo /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
3901000
Får jeg forsatt:
$ cat /sys/module/processor/parameters/ignore_ppc
0
$ cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
3201000

Noen som kan forklare hva som skjer her?

 

Du bruker echo '3901000' til å lage en fil som heter sudo med det innholdet.

 

Prøv 'sudo echo 3901000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq'

 

 

sudo sh -c "echo 3901000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq" blir det vel?

 

 

Fungerer det også, men det er ikke nødvendig i dette tilfellet. En annen måte er å benytte cpufreq-set og cpufreq-info fra direkte fra pakken.

Lenke til kommentar

Du bruker echo '3901000' til å lage en fil som heter sudo med det innholdet.

 

Prøv 'sudo echo 3901000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq'

 

 

Huff. Takk.. Men:

$ sudo echo 1 > /sys/module/processor/parameters/ignore_ppc
bash: /sys/module/processor/parameters/ignore_ppc: Permission denied
sudo sh -c "echo 3901000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq" blir det vel?

$ sudo sh -c echo 1 > /sys/module/processor/parameters/ignore_ppc
bash: /sys/module/processor/parameters/ignore_ppc: Permission denied

Samme skjer med sudo sh -c "echo 3901000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq

Lenke til kommentar

$ sudo sh -c "echo 1 > /sys/module/processor/parameters/ignore_ppc"
$ cat /sys/module/processor/parameters/ignore_ppc1
1

:w00t:

 

$ sudo sh -c "echo 3901000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq"
$ cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
3201000

:hmm:

 

Dette var ikke lett!

Endret av Xvani
Lenke til kommentar

Nå er jeg på tynn is her, men det er mulig at driveren ikke tillater det du forsøker å gjøre. Mulig du kan slå av cpufrequtils tjenesten og CPU vil kjøre i den frekvensen du har ved oppstart?

$ sudo update-rc.d cpufrequtils disable

Deretter omstart.

 

Godt forslag.

 

CPU-frekvensene vises fortsatt likt (uten at det betyr at CPU faktisk kjører på den frekvensen)

$ sudo dmidecode -t processor | grep Speed
Max Speed: 3800 MHz
Current Speed: 3200 MHz
$ cat /proc/cpuinfo |grep MHz
cpu MHz        : 3201.000
cpu MHz        : 3201.000

Hvordan sjekker jeg FAKTISK frekvens?

Endret av Xvani
Lenke til kommentar

Det er ikke sikkert at /proc/cpuinfo eller andre metoder viser faktisk CPU frequency.

Many Intel i5 and i7 chips, even when overclocked properly through the BIOS or UEFI interface, will not report the correct clock frequency to acpi_cpufreq and most other utilities.


- http://ArchWiki - Maximizing performance - CPU

Jeg vet ikke om dette stemmer, eller i det hele tatt er relevant for alle kommandoene som er prøvd her. Har ikke selv prøvd å overklokke på mens jeg har brukt Linux. Uansett et hint du kanskje kan titte på, det kan hende at det allerede fungerer som det skal gitt at du har skrudd av cpu scaling/bruker 'performance' governor.

Edit:
Ser at du ikke har en vanlig i-serie prosessor, men det kan hende at samme ting gjelder for din.

Endret av Occi
Lenke til kommentar

For ca. 100 år siden lagde jeg et program som finner frekvens ved å telle antall ticks på et sekund.

 

CPU-instruksjonen 'rdtsc' (read time stamp counter) gir mulighet for dette.

 

Den er ikke helt 100%, men gir en veldig god pekepinn.

 

Kildekode:

#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>

#include <sys/time.h>

uint64_t rdtsc() {
  uint64_t x;
  __asm__ volatile ("rdtsc\n\t" : "=A" (x));
  return x;
}

uint64_t get_time() 
{
        struct timeval tv;
        gettimeofday(&tv, 0);
        return tv.tv_sec * 1000 + tv.tv_usec / 1000;
}

void *infinite_loop()
{
        while(1) {
                __asm__ ("nop;");
        }
}

uint64_t get_clockspeed()
{
        uint64_t time_start, time_stop, start_tick, end_tick, overhead;

        overhead = rdtsc() - rdtsc();

        time_start = get_time();
        while(get_time() == time_start) {
                time_start = get_time();
        }

        for(; {
                time_stop = get_time();
                if((time_stop - time_start) > 1) {
                        start_tick = rdtsc();
                        break;
                }
        }

        time_start = time_stop;

        for(; {
                time_stop = get_time();
                if((time_stop - time_start) > 1000) {
                        end_tick = rdtsc();
                        break;
                }
        }
        return (uint64_t)((end_tick - start_tick) + (overhead));
}

int main(int argc, char *argv[])
{
    printf("speed : %u\n", get_clockspeed());
    return 0;
}

Kompileres med "gcc -o clockspeed clockspeed.c"

  • Liker 1
Lenke til kommentar

 

$ sudo sh -c "echo 1 > /sys/module/processor/parameters/ignore_ppc"
$ cat /sys/module/processor/parameters/ignore_ppc1
1
:w00t:

 

 

$ sudo sh -c "echo 3901000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq"
$ cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
3201000
:hmm:

 

Dette var ikke lett!

 

Er 3901000 tilgjengelig? Sjekk med denne:

 

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
PS: Husk at cpu0 kan være fra 0 til N, etter antall kjerner du har tilgjengelig. Jeg ser at du skriver cpu1 noen ganger, og andre ganger cpu0. cpu0 er kjerne 1, cpu1 er kjerne 2 osv. Endret av rockPaperScissors()
Lenke til kommentar

Dette løste seg - det var en BIOS bug som forårsaket at klokkefrekvensen ble styrt av "Turbo boost" og ikke av normal frekvens.

 

Jeg har resatt til default config og overklokket igjen. Jeg klarer nå ikke å reprodusere feilen.

Det var tipsene og rådene i denne tråden som hjalp meg finne ut av problemet. TUSEN TAKK!

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...