Anzeige:
Ergebnis 1 bis 4 von 4

Thema: CPU-Geschwindigkeit über Timer berechnen?

  1. #1
    Registrierter Benutzer
    Registriert seit
    17.07.2007
    Beiträge
    38

    CPU-Geschwindigkeit über Timer berechnen?

    Hi,

    gibt es eine Möglichkeit, mit einem C-Programm unter Linux die Geschwindigkeit der CPU (in MHz) selber zu berechnen?
    Ich habe mir gedacht es müsste eigentlich möglich sein wenn man das Programm mittels nanosleep o.ä. anhält und dann die Zeit über TSC ausliest - allerdings ist TSC seit es im Linux-Kernel dynamische Ticks gibt ja nicht mehr für sowas zu gebrauchen, oder?

    Falls von euch da jemand was weiss wäre es echt super, die Lösung muss auch nicht 100% genau sein - mich würde nur brennend interessieren ob man das hinkriegt

    Danke schonmal,

    Peter

  2. #2
    Registrierter Benutzer
    Registriert seit
    27.04.2004
    Beiträge
    11
    Das wird sehr schwer bis nicht moeglich, da deine cpu u.a. auch ne menge intern parallelisiert. Bei nem 486er wuerde dieser ansatz noch funktionieren, danach is so ziemlich alles multi-issue

  3. #3
    Registrierter Benutzer
    Registriert seit
    17.07.2007
    Beiträge
    38
    Gibt es vielleicht eine andere Lösung die CPU-Geschwindigkeit zu ermitteln? (Ohne sie einfach irgendwo über das Betriebssystem auszulesen)

    Auf jeden Fall Danke für die Info!

  4. #4
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Lass ein Programm in einer Endlosschleife mit möglichst 100% CPU-Last für eine bestimmte Zeit laufen. Also nicht wirklich eine Endlosschleife dann. Ermittle wieviele Zyklen pro Schleifendurchlauf abgearbeitete werden: Entweder schreibs in Assembler und schau in ner Spec. nach wieviele Zyklen die einzelnen Befehle dauern oder schreibs gleich in Assembler. Würde zu letzten Raten da es auch Befehle gibt die u.U. keine konstante zahl an Zyklen benötigen. Diese kannst dann vermeiden. SChau dann nach wieviele Zyklen in der geg. Zeit geschafft wurden. Daraus kannst du dir einen ungefähren Wert für die Taktrate der CPU errechnen. Also einfach eine Zählschleife die per Signal irgendwann unterbrochen wird. Der Signalhandler gibt dann den Zähler aus oder so. Der Prozess sollte mit einer hohen Priorität gestartet werden und es sollten möglichst ansonsten keine Prozesse im Hintergrund laufen. (Single user shell mode würde ich vorschlagen.)

    kA ob das so funktioniert, ist aber ein Ansatz.
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •