Wykrywanie użycia rdzeni

Odpowiedz Nowy wątek
2010-05-20 23:57

Rejestracja: 12 lat temu

Ostatnio: 5 lat temu

0

Witam, potrzebuję w swojej aplikacji wykrywać i wyświetlać na bieżąco użycie poszczególnych rdzeni, powiedzmy co 1s. Chodzi o wyświetlenie wartości w %, czyli nic nadzwyczajnego, problem w tym, że nie wiem jak to odczytać.
Nie zależy mi na jakiejś tam ogromnej dokładności - wystarczy dokładność taka, jaką zapewnia Menedżer Zadań.
Próbowałem to wykonać w D7 za pomocą biblioteki pdh.dll (na podstawie pewnego tutoriala znalezionego w sieci), ale niestety u mnie to nie działa, sprawdziłem i funkcja PdhExpandWildCardPath() zwraca mi "Nie znaleziono obiektu w systemie". Próbowałem zmian header-ów, pdh.dll itp. Innym działa ten sam kod (wg komentarzy na blogu), a u mnie nie.
Są jeszcze jakieś sposoby? A może da się to odczytać poprzez HKEY_PERFORMANCE_DATA ?
Interesuje mnie rozwiązanie w WinAPI. Fajnie by było, gdyby ktoś mógł zarzucić jakimś kodem źródłowym.

Pozostało 580 znaków

2010-05-21 13:25

Rejestracja: 15 lat temu

Ostatnio: 9 lat temu

0

WMI

i np. wmi code createor to bedzie cos w stylu win32_processor i loadpercentage


Pozostało 580 znaków

2010-05-21 16:53

Rejestracja: 12 lat temu

Ostatnio: 5 lat temu

0

Sprawdziłem - tamto mi podaje użycie "całego" procesora.

Za to ta klasa:
Win32_PerfFormattedData_PerfOS_Processor
i ta właściwość:
PercentProcessorTime

wydają się podawać użycie rdzeni w %. Tylko jedno mnie dziwi - u mnie w tej chwili działają tylko 3 rdzenie, a WMI zwraca mi:

PercentProcessorTime: 0
PercentProcessorTime: 3
PercentProcessorTime: 3
PercentProcessorTime: 2

tak jakbym miał 4 rdzenie. W sumie mam 4, ale jeden jest wyłączony w BIOS-ie (bo to Athlon II X3 425) więc działają tylko trzy. Nie wiem, którą wartość pomijać, i których rdzeni dotyczą.

Pozostało 580 znaków

2010-05-21 21:55
Moderator

Rejestracja: 12 lat temu

Ostatnio: 11 godzin temu

Lokalizacja: Wrocław

0

U mnie np. jak wyłączę komputer to wszystkie cztery rdzenie mają 0% użycia. Może u Ciebie też tak jest?


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2010-05-22 14:38

Rejestracja: 12 lat temu

Ostatnio: 5 lat temu

0

Przecież jak wyłączę komputer to nic nie działa :D
A może Tobie chodzi o to, czy przy wyłączaniu użycie wynosi 0% ?
Nawet jeśli to jaki to ma związek?

Pozostało 580 znaków

2010-05-22 22:50
Moderator

Rejestracja: 12 lat temu

Ostatnio: 11 godzin temu

Lokalizacja: Wrocław

0

Czy wg informacji z WMI zawsze jeden rdzeń ma 0% użycia?


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2010-05-22 23:56

Rejestracja: 12 lat temu

Ostatnio: 5 lat temu

0

No właśnie cały bajer polega na tym, że nie...
Często są to wyniki typu:
PercentProcessorTime: 3
PercentProcessorTime: 9
PercentProcessorTime: 3
PercentProcessorTime: 5

Pozostało 580 znaków

2010-05-23 01:46
Moderator

Rejestracja: 12 lat temu

Ostatnio: 11 godzin temu

Lokalizacja: Wrocław

0

Widzisz, a z Twojego posta, z którego nic nie wynikało można było wysnuć taki wniosek. ;)

To chyba musisz szukać lepszego sposobu.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2010-05-24 22:55

Rejestracja: 12 lat temu

Ostatnio: 5 lat temu

0

No :/
Ma ktoś jeszcze jakiś pomysł?

Pozostało 580 znaków

2010-05-25 11:53

Rejestracja: 15 lat temu

Ostatnio: 9 lat temu

0

1) PDH - http://msdn.microsoft.com/en-us/library/aa373214(v=VS.85).aspx
2) NtQuerySystemInformation


Pozostało 580 znaków

2010-05-25 18:47

Rejestracja: 12 lat temu

Ostatnio: 5 lat temu

0

1) PDH - http://msdn.microsoft.com/en-us/library/aa373214(v=VS.85).aspx

Próbowałem to wykonać w D7 za pomocą biblioteki pdh.dll (na podstawie pewnego tutoriala znalezionego w sieci), ale niestety u mnie to nie działa

A jak za pomocą NtQuerySystemInformation() obliczyć procentowe użycie każdego rdzenia? W necie znalazłem jedynie algorytm obliczania użycia "całego" procesora.

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0