Win7 Thread und CPU Auslastung auf Kerne

Gast #3013472
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
Gast #3013481
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)
Gast #3013515
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren