Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.02;
Скачать: CL | DM;

Вниз

как узнать частоту и загрузку(%) процессора   Найти похожие ветки 

 
влад   (2004-11-15 22:59) [0]

как узнать частоту и загрузку в% процессора, если можно подробно


 
Игорь Шевченко ©   (2004-11-15 23:05) [1]

Частоту из реестра
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0\~MHz

Загрузку - искать готовый код в интернете, их много


 
Jeer ©   (2004-11-16 10:56) [2]

Частоту через QueryPerformanceFrequency. (tick per sec)


 
clickmaker ©   (2004-11-16 10:59) [3]


> влад   (15.11.04 22:59)
> как узнать частоту

HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0\~MHz
этот ключик есть только в NT-системах, а в общем случае см. код (на паскаль сам переводи)

_inline unsigned __int64 GetCycleCount(void)
{
   _asm    _emit 0x0F
   _asm    _emit 0x31
}

int getCPUSpeed(void)
{
unsigned __int64  m_startcycle;
unsigned __int64  m_res;
unsigned __int64  m_overhead;
unsigned cpuspeed10;
       m_overhead = 0;

m_startcycle = GetCycleCount();

Sleep(1000);
m_res = GetCycleCount()-m_startcycle-m_overhead;

cpuspeed10 = (unsigned)(m_res/100000);
cpuspeed10 = cpuspeed10/10;

return cpuspeed10;
}


 
Игорь Шевченко ©   (2004-11-16 11:58) [4]

clickmaker ©   (16.11.04 10:59) [3]

А в заголовке написано - WinXP.
Ты проверял свой код при разной степени загрузки процессора ?


 
clickmaker ©   (2004-11-16 12:02) [5]


> [4] Игорь Шевченко ©   (16.11.04 11:58)
> Ты проверял свой код при разной степени загрузки процессора
> ?

Да. Разброс +-20 Мгц


 
Jeer ©   (2004-11-16 18:05) [6]

clickmaker ©   (16.11.04 12:02) [5]

Это много:))
При правильном измерении частоты на интервале 200 ms разброс не превышает долей MHz


 
grigory ©   (2004-11-16 18:36) [7]

unit UCPUSpd;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 ComCtrls, StdCtrls, Buttons;

type
 TFormCPUSpeed = class(TForm)
   PageControl: TPageControl;
   BitBtnStart: TBitBtn;
   BitBtnStop: TBitBtn;
   TabSheet: TTabSheet;
   LabelCPUSpeed: TLabel;
   LabelInfo: TLabel;
   LabelWeb: TLabel;
   procedure BitBtnStartClick(Sender: TObject);
   procedure BitBtnStopClick(Sender: TObject);
 private
   { Private declarations }
   Stop: Boolean;
 public
   { Public declarations }
 end;

var
 FormCPUSpeed: TFormCPUSpeed;

implementation

{$R *.DFM}

function GetCPUSpeed: Double;
const
 DelayTime = 500; // measure time in ms
var
 TimerHi, TimerLo: DWORD;
 PriorityClass, Priority: Integer;
begin
 PriorityClass := GetPriorityClass(GetCurrentProcess);
 Priority := GetThreadPriority(GetCurrentThread);

 SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
 SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);

 Sleep(10);
 asm
   dw 310Fh // rdtsc
   mov TimerLo, eax
   mov TimerHi, edx
 end;
 Sleep(DelayTime);
 asm
   dw 310Fh // rdtsc
   sub eax, TimerLo
   sbb edx, TimerHi
   mov TimerLo, eax
   mov TimerHi, edx
 end;

 SetThreadPriority(GetCurrentThread, Priority);
 SetPriorityClass(GetCurrentProcess, PriorityClass);

 Result := TimerLo / (1000.0 * DelayTime);
end;

procedure TFormCPUSpeed.BitBtnStartClick(Sender: TObject);
begin
 BitBtnStart.Enabled := False;
 BitBtnStop.Enabled := True;

 Stop := False;
 while not Stop do
 begin
   LabelCPUSpeed.Caption := Format("CPU speed: %f MHz", [GetCPUSpeed]);
   Application.ProcessMessages;
 end;

 BitBtnStart.Enabled := True;
 BitBtnStop.Enabled := False;
end;


 
Jeer ©   (2004-11-16 18:51) [8]

Действительно, давно известно:))
Но здесь вылезает небольшая систематическая погрешность.
Скажем на 2020 MHz показывает 2023 MHz.
Лучшие результаты получаются с использованием rdtsc, QueryPerfomanceCounter и QueryPerfomanceFrequency.
А переключать приоритет нити конечно же надо.


 
grom   (2004-11-16 20:15) [9]

CPU Usage выводит загрузку процессора в %.
http://micsoft.narod.ru/bonus.html


 
VMcL ©   (2004-11-16 21:25) [10]

>>Jeer ©  (16.11.04 18:51) [8]

Как я недавно узнал, есть такая злостная веЗЧь: DOT, которая кладет на лопатки QueryPerfomanceCounter и QueryPerfomanceFrequency.

http://delphimaster.net/view/15-1099843607/


 
Jeer ©   (2004-11-17 10:11) [11]

Это известно, но если нужен ПК как управляющая система, то надо и походить к нему соответственно.
Кроме того не все материнки нормально выдерживают все заложенные в них уровни DOT.
А лично я отношусь к любому overcloking скептически.
Надежность важнее:))


 
Jeer ©   (2004-11-17 10:43) [12]

http://www.digitlife.ru/cpu/msi-dot-gbt-cia-review.shtml

А вот здесь для интересующихся "где собака порылась".
На мой взгляд, увеличение частоты FSB при увеличении температуры процессора вообще-то некорректно, т.к. это положительная обратная связь в терминах системы управления.
Поэтому никаких DOT и CIA даже не буду включать и другим не советую:))



Страницы: 1 вся ветка

Текущий архив: 2005.01.02;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.024 c
14-1103178561
Ego
2004-12-16 09:29
2005.01.02
Тем, кто отвечает на вопросы


1-1103116807
kolos_rus
2004-12-15 16:20
2005.01.02
Как узнать первую и последнюю дату месяца


14-1102445670
sof_
2004-12-07 21:54
2005.01.02
иностранные чаты


1-1103286366
Cosinus
2004-12-17 15:26
2005.01.02
Хм... Никак не разберусь с TreeView


1-1103302022
DarkLord
2004-12-17 19:47
2005.01.02
Конвертация HTML в TXT