Toon posts:

[.NET] CPU gebruik 100% probleem?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een webservice ontwikkeld die een grote DataSet (zeg maar recordset) ontvangt en de records in de DataSet exporteerd als een Ms Access database.
Deze DataSet bevat +/- 1.000 tot 25.000 rows.

Nu werkt dit allemaal prima alleen gebruikt de webservice gedurende een aantal minuten 100% van de CPU. Ik heb een eenvoudige methode toegepast om dit tegen te gaan, dat is door de thread die de database exporteerd, na iedere record die hij geexporteerd heeft een miliseconde te laten 'slapen'.
Nu is het CPU gebruik terug gebracht tot 30%.

Ik verwacht geen meerdere aanvragen tegelijkertijd op de webservice en de server waar de webservice op draait is vrijwel dedicated voor deze taak dus wat dat betreft is het geen probleem als de service 100% van de CPU gebruikt, zijn hiervoor nog bepaalde richtlijnen / tips wat betreft het CPU gebruik van een dergelijke applicatie?

  • Fairy
  • Registratie: Januari 2001
  • Niet online

Fairy

13kWp - Zendure 2400AC+ 16kWh

Kun je de prioriteit van de thread niet aanpassen? zo heb je toch de volle 100% performance maar raken andere processen niet in de problemen.

Verwijderd

Topicstarter
Dat kan, zijn hier verder geen 'downsides' aan?

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

Het gaat uiteraard wel trager als er andere processen draaien...

Trouwens, misschien is het handiger om zo'n vertaling van jouw DB naar een Jet DB (Access dus) te vermijden. Misschien kun je het gewoon realtime bijwerken ofzo?

日本!🎌


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

Erhm.. te laten slapen? :?
Je geeft de opdracht om de dataset op te halen. Een nieuwe thread wordt gestart, haalt de data op, werkt de data bij en als deze klaar is geeft deze via een callback aan de mainthread door dat hij klaar is.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
_Thanatos_ schreef op 14 maart 2004 @ 18:19:
Het gaat uiteraard wel trager als er andere processen draaien...

Trouwens, misschien is het handiger om zo'n vertaling van jouw DB naar een Jet DB (Access dus) te vermijden. Misschien kun je het gewoon realtime bijwerken ofzo?
Omzetten naar Access DB is nodig is koppeling aan een bepaald systeem.

Verwijderd

Om je Thread te laten slapen vind ik een beetje zonden. Zo laat je het dus gewoon even niets doen. Je kunt opzich makkelijk 100% CPU gebruiken, als je de Thread Priority lager zet zal het anderen processen niet blocken. En als deze server detecated gaat draaien voor dit process, dan moet je zeker 100% van je CPU pakken!

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Leuk als je even wat moet doen dan op die server, als de cpu 100% bezet is.
Leuk voor de responsivnes enzo.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 15 maart 2004 @ 08:29:
Leuk als je even wat moet doen dan op die server, als de cpu 100% bezet is.
Leuk voor de responsivnes enzo.
Moet je zeggen dat tests uitwijzen dat (ik verwacht omdat er weinig HD aktiviteit is) de server en ook de 450mhz laptop waarmee ik getest heb goed blijven werken/reageren als ik de Thread.Priority op BelowNormal zet.
Je merkt als gebruiker niets van het feit dat er een zwaar process gaande is.
Nu is de responsiveness van de server wat betreft de GUI e.d. niet echt erg relevant lijkt me. Services e.d. blijven ook goed werken.

  • Martin Sturm
  • Registratie: December 1999
  • Laatst online: 30-04 16:11
Leuk als je even wat moet doen dan op die server, als de cpu 100% bezet is.
Leuk voor de responsivnes enzo.
Bij de meeste besturingssystemen zorgt een goede scheduler ervoor dat, ondanks dat een proces veel cpu-kracht vergt, andere processen ook voldoende aandacht krijgen... Lijkt me dat dat in Windows toch ook wel het geval is :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Bij het verlagen van de ThreadPriority zal dat proces de CPU toch niet voor 100% in beslag gaan pakken?
Ik reageerde dan ook op het zinnetje waarin Cristal zei dat je beter 100% CPU kunt claimen op een dedicated server.

https://fgheysels.github.io/


Verwijderd

whoami schreef op 15 maart 2004 @ 10:23:
Bij het verlagen van de ThreadPriority zal dat proces de CPU toch niet voor 100% in beslag gaan pakken?
Ik reageerde dan ook op het zinnetje waarin Cristal zei dat je beter 100% CPU kunt claimen op een dedicated server.
Hmz, daar heb je wel gelijk in. Maar omdat -NW aangeeft dat de server vrij detecated voor deze taak gaat draaien lijkt het mij dat hij de CPU dus maximaal kan gebruiken voor deze taak.

  • Schmoove
  • Registratie: Juli 2001
  • Laatst online: 22:53
whoami schreef op 15 maart 2004 @ 10:23:
Bij het verlagen van de ThreadPriority zal dat proces de CPU toch niet voor 100% in beslag gaan pakken?
Ik reageerde dan ook op het zinnetje waarin Cristal zei dat je beter 100% CPU kunt claimen op een dedicated server.
Is het niet zo dat de ThreadPriority ervoor zorgt dat wanneer er een process komt met een hogere prioriteit dat hij (een deel van) de cpu kracht af zal staan?
M.a.w. je kunt het volgens mij zo programmeren dat de taak op 100% CPU kracht gebruikt wanneer er geen ander process is dat de CPU wil gebruiken.
Voordeel is dat je de volledige capaciteit kan gebruiken en wanneer er iets anders is dat de CPU nodig heeft, dat het dan ook beschikbaar komt.

Dat is de functionaliteit van ThreadPriority..... tenminste als ik het goed begrepen heb.

Verwijderd

Topicstarter
Volgens mij heb je dit goed begrepen.

Verwijderd

Verwijderd schreef op 15 maart 2004 @ 14:46:
Volgens mij heb je dit goed begrepen.
Hoe ga je het nou doen? Ga je toch werken met Thread Priority, lijkt mij een goede oplossing. Maar hoe detecated gaat deze server draaien voor dit process en hoevaak word de dataset ge-exporteeds als een Access db?

Verwijderd

Topicstarter
Ik ga de Thread Priority op BelowNormal zetten, dit werkt goed. Deze server wordt ook als fileserver gebruikt voor +/- 5 werkplekken, vooral office bestanden e.d. niet echt bijzonder. Verwacht dat er 'een aantal' keren per dag (1 tot 25) een dataset binnenkomt. Zelfs op een 450 celeron notebook met te weinig geheugen (gebruik ik altijd om te testen, op een dikke server goed werken betekend nog niet dat iets schaalbaar is :) ) werkt het erg goed.

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
offtopic:
detecated -> dedicated ;)

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]

Pagina: 1