Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];

Вниз

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

 
влад   (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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.048 c
14-1102613591
Ломброзо
2004-12-09 20:33
2005.01.02
Быстро отключить/включить картинки в IE


14-1102681639
Dmitriy O.
2004-12-10 15:27
2005.01.02
Сколько кому удавалось написать сразу правильно коду ?


1-1103190524
Priest
2004-12-16 12:48
2005.01.02
Word в модальном режиме


14-1102878774
asdqwer
2004-12-12 22:12
2005.01.02
Excel-про


14-1102882399
Чеширский_Кот
2004-12-12 23:13
2005.01.02
Есть ли у вас свой ангел-хранитель?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский