Вверх ↑
Этот топик читают: Гость
Ответов: 204
Рейтинг: 2
#1: 2017-02-05 23:34:14 ЛС | профиль | цитата
CPUUsage не правильно отображает загрузку ЦП



Пробовал менять номер процессора, все равно загрузка показывается не правильно. Может я что не так делаю??? Хотя, у меня все как в примере.
непонятно...

Add(MainForm,2953706,182,63)
{
Width=168
Height=110
}
Add(Timer,4582453,399,161)
{
link(onTimer,10025134:doCollectCPUData,[])
}
Add(Label,9322921,511,161)
{
Left=50
Top=25
}
Add(CPUUsage,10025134,455,161)
{
NumberCPU=0
link(onUsage,9322921:doText,[])
}


Редактировалось 1 раз(а), последний 2017-02-05 23:36:36
карма: 1

0
vip
#1.1контекстная реклама от партнеров
Ответов: 8888
Рейтинг: 823
#2: 2017-02-06 00:00:50 ЛС | профиль | цитата
ogrif, ваша схема с графиком:
CPUUsage_правильно_отображае.jpg
карма: 19

0
Ответов: 204
Рейтинг: 2
#3: 2017-02-06 00:10:39 ЛС | профиль | цитата
Леонид писал(а):
ogrif, ваша схема с графиком:


Как так-то???

В цифрах врет, в графике верно!!!
В чем ошибка???

Мне в цифрах надо. В смысле в процентах, как в диспетчере задач!

--- Добавлено в 2017-02-06 00:36:36

Хотя, нет. В графике, он тоже врет. показывает 98% при реальной загруженности в 50%.



Редактировалось 1 раз(а), последний 2017-02-06 00:36:36
карма: 1

0
Ответов: 497
Рейтинг: 16
#4: 2017-02-06 01:19:47 ЛС | профиль | цитата
а так?


Add(Timer,4582453,497,154)
{
link(onTimer,6157397:doEvent1,[])
}
Add(Label,9322921,819,322)
{
Left=50
Top=25
}
Add(CPUUsage,10025134,616,154)
{
NumberCPU=0
link(onUsage,966581:doValue,[])
}
Add(CPUUsage,12576592,616,189)
{
link(onUsage,13429068:doValue,[])
}
Add(CPUUsage,10718177,616,224)
{
NumberCPU=2
link(onUsage,11762882:doValue,[])
}
Add(CPUUsage,211068,616,259)
{
NumberCPU=3
link(onUsage,1261475:doValue,[])
}
Add(Hub,6157397,553,154)
{
OutCount=5
link(onEvent1,10025134:doCollectCPUData,[])
link(onEvent2,12576592:doCollectCPUData,[(591,167)(591,195)])
link(onEvent3,10718177:doCollectCPUData,[(591,174)(591,230)])
link(onEvent4,211068:doCollectCPUData,[(591,181)(591,265)])
link(onEvent5,3982827:doCalc,[(655,188)(655,328)])
}
Add(Memory,966581,714,154)
{
}
Add(Memory,13429068,721,189)
{
}
Add(Memory,11762882,728,224)
{
}
Add(Memory,1261475,735,259)
{
}
Add(MathParse,3982827,714,322)
{
DataCount=4
MathStr="(%1 + %2 + %3 + %4)/4"
ResultType=0
link(onResult,9322921:doText,[])
link(X1,966581:Value,[])
link(X2,13429068:Value,[])
link(X3,11762882:Value,[])
link(X4,1261475:Value,[])
}

карма: 1
        ]  
0
Ответов: 204
Рейтинг: 2
#5: 2017-02-06 07:05:25 ЛС | профиль | цитата
RAWY_EX писал(а):
а так?


Так тоже подвирает. Теперь занижает показания при нагрузке.
Но саму идею я понял. Нужен компонент на каждое ядро! Попробую поэкспериментировать с вычислениями! спасибо!
карма: 1

0
Ответов: 204
Рейтинг: 2
#6: 2017-02-06 21:33:08 ЛС | профиль | цитата
И все-таки что-то не так с этим компонентом!
выставил отдельно на каждое ядро, в простое по первому ядру врет не сильно примерно как и в диспетчере +,- 2%, по остальным пишет 0 либо 100%. Временами перескакивая то один 100%, то другой!
Под нагрузкой в 50% когда согласно диспетчеру задач два ядра на 100%, а ещё два в районе 8-10% нагрузки, он пишет что только первое загружено на 100% по остальным показывает - 0!

Add(MainForm,2953706,245,140)
{
Width=224
Height=128
}
Add(Timer,4582453,258,210)
{
link(onTimer,4170140:doEvent1,[])
}
Add(Label,9322921,426,210)
{
Left=70
Top=10
}
Add(CPUUsage,10025134,363,210)
{
NumberCPU=0
link(onUsage,9322921:doText,[])
}
Add(Label,116916,426,259)
{
Left=70
Top=25
}
Add(CPUUsage,2314308,363,259)
{
link(onUsage,116916:doText,[])
}
Add(Hub,4170140,315,210)
{
OutCount=4
link(onEvent1,10025134:doCollectCPUData,[])
link(onEvent2,2314308:doCollectCPUData,[(352,223)(352,265)])
link(onEvent3,14877505:doCollectCPUData,[(346,230)(346,314)])
link(onEvent4,7538128:doCollectCPUData,[(339,237)(339,363)])
}
Add(Label,10789351,426,308)
{
Left=70
Top=40
}
Add(CPUUsage,14877505,363,308)
{
NumberCPU=2
link(onUsage,10789351:doText,[])
}
Add(Label,481656,426,357)
{
Left=70
Top=55
}
Add(CPUUsage,7538128,363,357)
{
NumberCPU=3
link(onUsage,481656:doText,[])
}


Редактировалось 1 раз(а), последний 2017-02-06 21:33:48
карма: 1

0
Ответов: 497
Рейтинг: 16
#7: 2017-02-06 21:49:59 ЛС | профиль | цитата
моменты считывания программы и диспетчера разные!
карма: 1
        ]  
0
Ответов: 204
Рейтинг: 2
#8: 2017-02-06 21:54:41 ЛС | профиль | цитата
RAWY_EX писал(а):
моменты считывания программы и диспетчера разные!


Можно было бы так подумать, если бы не одно но! В простое при любых таймингах не может быть 100% загрузки ядра!
К тому же, под загрузкой второе ядро загружено на 100% иногда проседает до 80%, но не ниже. Компонент всегда показывает 0!
карма: 1

0
Ответов: 497
Рейтинг: 16
#9: 2017-02-06 22:13:24 ЛС | профиль | цитата
Author: Alexey A. Dynnikov
EMail: aldyn@chat.ru
WebSite: http://www.aldyn.ru/
Support: Use the e-mail aldyn@chat.ru
or support@aldyn.ru

Creation: Jul 8, 2000 <<Думаю проблема в этом
Version: 1.02
карма: 1
        ]  
0
Ответов: 497
Рейтинг: 16
#10: 2017-02-06 23:13:33 ЛС | профиль | цитата
А нет проблема в KOL так как оригинал работает безупречно
карма: 1
        ]  
0
Ответов: 165
Рейтинг: 6
#11: 2017-02-10 15:32:07 ЛС | профиль | цитата
Если всё ещё нужен вариант, который даёт 100% совпадение с Windows Task Manager без лишних заморочек, то вот:


Add(MainForm,2953706,413,182)
{
Width=518
Height=356
Color=16777215
Caption="CPU Load example"
Position=1
link(onCreate,2552280:doGetCPULoad,[])
}
Add(MultiElementEx,2552280,518,196)
{
@Hint=#8:CPU load|
Name="CPU"
link(onCPULoad,9444309:doEvent1,[])
}
BEGIN_SDK
Add(EditMultiEx,15675124,21,21)
{
WorkCount=#12:doGetCPULoad|
EventCount=#9:onCPULoad|
Width=272
Height=130
VOffset=70
HOffset=70
link(doGetCPULoad,1927317:doConsoleExec,[])
}
Add(WinExec,1927317,77,77)
{
Param=""\processor(_total)\% processor time""
FileName="typeperf.exe"
Point(onConsoleResult)
Point(doConsoleExec)
Point(doConsoleInput)
link(onConsoleResult,9823270:doSplit,[])
}
Add(MultiStrData,9823270,147,84)
{
Char=","
link(onPart2,3365561:doReplace,[])
}
Add(Replace,3365561,210,91)
{
SubStr="""
link(onReplace,15675124:onCPULoad,[])
}
END_SDK
Add(Hub,9444309,581,196)
{
link(onEvent1,2953706:doCaption,[(615,202)(615,175)(400,175)(400,188)])
link(onEvent2,8433474:doAdd,[])
}
Add(Grapher,8433474,630,203)
{
Left=5
Top=5
Width=495
Height=315
Step=0.5
MaxValues=60
}

карма: 4

0
Ответов: 204
Рейтинг: 2
#12: 2017-02-10 16:21:57 ЛС | профиль | цитата
Nickname писал(а):
Если всё ещё нужен вариант, который даёт 100% совпадение с Windows Task Manager без лишних заморочек, то вот:


Конечно нужен! Спасибо за участие!
Вот только не работает схемка. При выполнени консольной программы, пишет: "Выполняется выход, подождите... Ошибка: Счетчики не указаны."



Код:


Add(MainForm,13860630,413,126)
{
Width=880
Height=356
Color=16777215
Caption="CPU Load example"
Position=1
link(onCreate,2552280:doGetCPULoad,[])
}
Add(MultiElementEx,2552280,518,140)
{
@Hint=#8:CPU load|
link(onCPULoad,9444309:doEvent1,[])
link(onConsoleResult,15939257:doAdd,[(570,153)(570,279)])
}
BEGIN_SDK
Add(EditMultiEx,15675124,21,21)
{
WorkCount=#12:doGetCPULoad|
EventCount=#9:onCPULoad|15:onConsoleResult|
Width=510
VOffset=70
HOffset=70
link(doGetCPULoad,1927317:doConsoleExec,[])
}
Add(WinExec,1927317,77,77)
{
Param=""\processor(_total)\% processor time""
FileName="typeperf.exe"
Point(onConsoleResult)
Point(doConsoleExec)
Point(doConsoleInput)
link(onConsoleResult,7023306:doEvent1,[])
}
Add(MultiStrData,9823270,301,77)
{
Char=","
link(onPart2,3365561:doReplace,[])
}
Add(Replace,3365561,364,84)
{
SubStr="""
link(onReplace,15675124:onCPULoad,[(464,90)(464,97)])
}
Add(Charset,9965899,238,133)
{
link(onCharset,15675124:onConsoleResult,[(400,139)(400,104)])
}
Add(Hub,7023306,196,84)
{
link(onEvent1,9823270:doSplit,[(256,90)(256,83)])
link(onEvent2,9965899:doCharset,[(224,97)(224,139)])
}
END_SDK
Add(Hub,9444309,581,140)
{
link(onEvent1,13860630:doCaption,[(615,146)(615,119)(400,119)(400,132)])
link(onEvent2,8433474:doAdd,[])
}
Add(Grapher,8433474,630,147)
{
Left=5
Top=5
Width=495
Height=315
Step=0.5
MaxValues=60
}
Add(Memo,15939257,665,273)
{
Left=505
Top=10
Width=340
Height=295
ScrollBars=3
}

карма: 1

0
Ответов: 165
Рейтинг: 6
#13: 2017-02-10 19:15:36 ЛС | профиль | цитата
ogrif, копирую ваш код в среду и у меня всё замечательно работает:


На вашем скриншоте видно, что у вас проблемы с кодировкой. Может вам вручную набрать следующий текст в поля WinExec?

"\processor(_total)\% processor time"
typeperf.exe
карма: 4

0
Ответов: 165
Рейтинг: 6
#14: 2017-02-10 23:41:07 ЛС | профиль | цитата
Выше бред.

Для русской системы надо указывать "\238(_total)\6" вместо "\processor(_total)\% processor time".

Редактировалось 1 раз(а), последний 2017-02-10 23:48:29
карма: 4

0
Ответов: 204
Рейтинг: 2
#15: 2017-02-11 10:15:39 ЛС | профиль | цитата
Подозреваю что проблема у меня не в параметре, а в вызываемой службе. Попробовал вне HiAsm напрямую через консоль windows вызвать typeperf.exe и вот что получилось:



Может проблеме в windows? У меня семёрка 64, максимальная (сборка).

Пробовал иные команды вызывать через консоль, они работают.

Редактировалось 1 раз(а), последний 2017-02-11 13:19:46
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)