[java] resource beperking thread

Pagina: 1
Acties:

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Is het mogelijk om resourcebeperkingen op te leggen aan java threads? Ik heb straks een aantal threads waarbij het mogelijk is dat ze veel cpu tikken en geheugen verbruiken en ik wil dit tot een bepaalde hoeveelheid beperken.

De threads sturen een Prolog engine aan en ik heb in de engine bv wel een beperking op het maximum aantal stackframes dat op de framestack kan liggen. Verder kan ik nog wel meer beperkingen in bouwen, maar het zou ook fijn zijn als ik op hoger nivo alles in 1 keer kan kortsluiten. Ik heb geen zin aan threads die in principe goed werken maar wel een server op zijn knieeen kan brengen.

  • momania
  • Registratie: Mei 2000
  • Laatst online: 21-05 06:42

momania

iPhone 30! Bam!

Dit is wel een interessante discussie dan, al hoewel ik denk dat je die al wel gezien zal hebben :)
http://java.sun.com/devel...JavaLive/2004/jl0520.html

Neem je whisky mee, is het te weinig... *zucht*


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
momania schreef op 09 augustus 2004 @ 10:16:
Dit is wel een interessante discussie dan, al hoewel ik denk dat je die al wel gezien zal hebben :)
http://java.sun.com/devel...JavaLive/2004/jl0520.html
Ik had het nog niet gelezen, maar zal het meteen even gaan doen.

Wat me trouwens net te binnenschiet is dat je mbv prioriteiten wel aan kunt geven dat een engine thread(s) niet de mainserver thread op zijn knieen kan krijgen. Je geeft de engine threads gewoon een veel lagere prioriteit.

Ik zit dan nog wel met het geheugenverbruik.

[ Voor 29% gewijzigd door Alarmnummer op 09-08-2004 10:53 ]


  • Baron
  • Registratie: Juli 2000
  • Laatst online: 06-05 14:07
Kun je niet uitrekenen hoeveel geheugen je gebruikt?

Of kan je geen gebruik maken van de -Xmx(size) optie van de JVM.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Baron schreef op 09 augustus 2004 @ 11:27:
Kun je niet uitrekenen hoeveel geheugen je gebruikt?
Of kan je geen gebruik maken van de -Xmx(size) optie van de JVM.
Als je mijn post goed had gelezen had je kunnen zien dat dit niet gaat werken. Ik wil een enkele thread een beperking opleggen, niet de hele vm.

En ik kan ook niet uitrekenen hoeveel geheugen iets van te voren gaat kosten omdat ik domweg niet weet wat voor Prolog programma`s gedraaid gaan worden + hoe zo`n prolog programma gaat draaien.

Ik heb dus een server waar een hele verzameling met Prolog engines op kunnen draaien en ik wil dus per engine (die op zijn eigen thread loopt) kunnen opgeven hoeveel geheugen die maximaal mag verbruiken (bv 20 mb).

Verwijderd

Het is toch mogelijk om per Thread de gewenste (maximale) stacksize aan te geven? Ik was van mening dat je op die manier enigzins, zij het te beperkt, invloed kunt uitoefenen op de grootte van een Thread in het geheugen.
Constructor Thread:
Java:
1
Thread(ThreadGroup group, Runnable target, String name, long stackSize) 


Ik las laatst ergens dat een universiteit in amerika een voorstel had ingediend om in de jvm een soort memory management module in te bouwen, waarmee men meer invloed op het memory-gebruik kan uitoefenen. Echter zou Sun hier niet echt open vor staan omdat het de "portabiliteit" van je Java code zou tegengaan. Hoe dan ook hoop ik dat in 1.5 meer mogelijkheden op dit gebied worden ingebouwd omdat het een gemis is op dit moment imo.

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
Je prolog engine in een apart proces later draaien is zeker geen optie? Dan kan je dat regelen via je OS/VM.

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


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Infinitive schreef op 09 augustus 2004 @ 15:48:
Je prolog engine in een apart proces later draaien is zeker geen optie? Dan kan je dat regelen via je OS/VM.
Helaas.

Hoe zit het trouwens met allerlei J2EE componenten zoals EJB`s of Servlets. Kan een servlet een hele server op zijn gat krijgen?

while(true){}

  • momania
  • Registratie: Mei 2000
  • Laatst online: 21-05 06:42

momania

iPhone 30! Bam!

Alarmnummer schreef op 09 augustus 2004 @ 16:37:
[...]

Helaas.

Hoe zit het trouwens met allerlei J2EE componenten zoals EJB`s of Servlets. Kan een servlet een hele server op zijn gat krijgen?

while(true){}
Als het goed is zit daar bij de meeste Application Servers wel een soort van loadbalancing op.
Iedere web-app krijgt z'n eigen VM en een stuk geheugen en cpu tijd.
Als je dus je VM al onderuit krijgt, haal je alleen jezelf onderuit en niet eventueel andere draaiende applicaties op dezelfde server.

Neem je whisky mee, is het te weinig... *zucht*


  • pblom
  • Registratie: Oktober 2000
  • Laatst online: 09-10-2024
Met JVMPI (Profiler Interface) kun je in ieder geval de threads monitoren, of je ze ook kunt beperken weet ik niet. Misschien de moeite waard om even naar te kijken.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 23-05 18:13
Waarom wil je dit eigenlijk? Dat je de prioriteit wil aanpassen kan ik me voorstellen, maar als je het geheugen of de (totale) hoeveelheid CPU-tijd beperkt dan kan je thread zijn taak niet afronden. Dat lijkt me alleen maar ontzettend vervelend.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Soultaker schreef op 09 augustus 2004 @ 16:47:
Waarom wil je dit eigenlijk? Dat je de prioriteit wil aanpassen kan ik me voorstellen, maar als je het geheugen of de (totale) hoeveelheid CPU-tijd beperkt dan kan je thread zijn taak niet afronden. Dat lijkt me alleen maar ontzettend vervelend.
Het is idd vervelend als 1 thread zijn taak niet kan afronden. Maar ik heb liever 1 thread die zijn taak niet af kan ronden dan ze allemaal. Zie het meer als een soortement van vangnet.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
pblom schreef op 09 augustus 2004 @ 16:46:
Met JVMPI (Profiler Interface) kun je in ieder geval de threads monitoren, of je ze ook kunt beperken weet ik niet. Misschien de moeite waard om even naar te kijken.
Ik zal daar even naar kijken.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
momania schreef op 09 augustus 2004 @ 16:39:
[...]
Iedere web-app krijgt z'n eigen VM en een stuk geheugen en cpu tijd.
Als je dus je VM al onderuit krijgt, haal je alleen jezelf onderuit en niet eventueel andere draaiende applicaties op dezelfde server.
Zoiets zoek ik idd.
Pagina: 1