Forum: PC-Programmierung Win7 Thread und CPU Auslastung auf Kerne


von Christian (Gast)


Lesenswert?

Hallo.


Ich schreibe gerade eine Anwendung, in der ich Daten blockweise an ein
HID-Gerät sende und für jeden gesendeten Block Statusbytes empfange.

Das senden des Blockes und das Empfangen der Statusbytes werden auf
unterschiedliche Threads aufgeteilt.

Die Dauer der Übertragung ist dabei stark Betriebssystem abhängig:
  - Win 7 4 Kern Prozessor - 64 Bit :: 20 sec
  - Vista 2 Kern Prozessor - 32 Bit :: 40 sec
  - Win 7 2 Kern Prozessor - 32 Bit :: 4 min !!!!!

CPU- Auslastung im Task Manager zeigt für den langsamen Download
mit 4 min das die Threads nicht optimal auf 2 Kerne aufgeteilt werden.
Ein Kern ist ständig auf Volllast der andere wird gar nicht beansprucht.

Bei den Download mit 20 sec und 40 sec sind beide Kerne gleichmäßig
beansprucht und die CPU- Auslastung steigt nie besonders hoch.

Ich habe dafür keine Erklärung.
Warum werden die Threads nicht beim  Win7 32 Bit System auf alle Kerne
aufgeteilt?
Eine Parallelisierung findet hier offensichtlich gar nicht statt.

Gibt es Erfahrungsberichte für Threadanwendung beim Kommunizieren
mit HID Geräten unter Win 7?

Danke.

Christian

von Basti (Gast)


Lesenswert?

>Ich schreibe gerade eine Anwendung, in der ich Daten blockweise an ein
>HID-Gerät sende und für jeden gesendeten Block Statusbytes empfange.

Also das kann ja deinen Prozessor nicht wirklich auf 100% auslasten.. 
auch nicht ein Kern...

Als Win7 64 Bit mit i7 habe ich letztens mal ne kleine 
Primzahlenberechnung durchführen lassen, da hat Win7 die 7 Task 
ordentlich auf die 8 angezeigten Kerne Verteilt...(einer blieb frei) 
(mind. 2 Kerne sind davon aber virtuell)

von Peter II (Gast)


Lesenswert?

Ich glaube auch weniger daran das es am BS liegt. Viel wahrscheinlicher 
ist es das dein code nicht sauber arbeitet. z.b. Mutex statt critical 
section.

von Christian (Gast)


Lesenswert?

Kennt jemand ein gutes Tool um die Threads zu analysieren?
Wie kann ich eine evtl. Schwachstelle in der Threadabarbeitung meiner
Anwendung feststellen?

Christian

von Peter II (Gast)


Lesenswert?

Christian schrieb:
> Kennt jemand ein gutes Tool um die Threads zu analysieren?
> Wie kann ich eine evtl. Schwachstelle in der Threadabarbeitung meiner
> Anwendung feststellen?

wichtig währe erstmal zu ermitteln wo die zeit vergeht. Beim warten auf 
einen anderen Thread, oder bei eimem Systemaufruf.

Um welche Datenmenge geht es überhaupt? du schreibst nur etwas von byte 
und blöcken. Wegen ein paar byte würde ich nicht mal über multithread 
nachdenken.

Nicht das sich das Programm ständig selber im weg steht und ohne Threads 
sogar schneller laufen würde?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.