2009-03-12 23 views
5

Wiem, że w perfmon można zobaczyć, ile każdego rdzenia jest wykorzystywany, i ile całkowitego procesora używa dany proces. Jednak nie mogę znaleźć sposobu, aby zobaczyć, jak dużo procesora używa proces z podziałem na rdzenie.Czy istnieje sposób sprawdzenia, ile procesora zużywa procesor na rdzeń?

Czy istnieje wbudowany sposób wyświetlania tych informacji? Czy istnieje programowy sposób, aby to zobaczyć? (Preferowane w C#) Czy wykazuję nieporozumienie dotyczące sposobu, w jaki system Windows (Vista) obsługuje podstawowe użycie i przełączanie kontekstów, zadając to pytanie?

Edytuj: Więcej wyjaśnień na temat tego, co chcę dowiedzieć się. Czy mój proces wykorzystuje tylko 30-40% całkowitego procesora (na czterordzeniowym rdzeniu), ponieważ nie ma dostatecznej wielowątkowości, aby wykorzystać więcej, czy też dlatego, że jest zbyt zajęty I/O, a dostęp do dysku jest wąskim gardłem?

Więc nie ma sposobu, aby to zrobić w ogóle? (poza upewnieniem się, że na komputerze nie działa żadna inna aktywność procesora)

Odpowiedz

1

Program Process Explorer przynajmniej może wyświetlać wątki danego procesu i liczbę wykorzystywanych procesorów. Może uda ci się zdobyć rdzeń/procesor, na którym wątki działają, a potem po prostu się sumują. Jednak nie mam zbyt wiele doświadczenia z WinAPI. Więc może powinowactwo procesora może być sprawdzane tylko w procesach.

2

nie można bezpośrednio uzyskać razy-processer cyklu dla danego procesu, ale można go oszacować w miarę upływu czasu z QueryIdleProcessorCycleTime (jak zwraca razy bezczynności dla wszystkich procesorów logicznych, czyli rdzenie) i QueryProcessCycleTime i przy założeniu, że jest to jedyny nieobciążający się proces.

+0

lol, trudno jest uzyskać mój proces jako jedyny non-idle proces podczas pracy w Vista, tyle hałasu w tle – Davy8