How to limit and change CPU and memory of a thread?

U

Ulrich Scholz

Dear all,

is it possible to create a thread with limited memory and limited
clock cycles? I guess this is highly dependent on the operating
system and the virtual machine.

For example, it seems to be possible to pose a memory limit if a Java
program is started from the console under Linux (options -Xmx and -
Xss). What other possibilities are there?

Thank you,

Ulrich
 
K

Kenneth P. Turvey

Dear all,

is it possible to create a thread with limited memory and limited
clock cycles? I guess this is highly dependent on the operating
system and the virtual machine.

For example, it seems to be possible to pose a memory limit if a Java
program is started from the console under Linux (options -Xmx and -
Xss). What other possibilities are there?

Thank you,

Ulrich

You can limit the heap size when you start the JVM, but not memory used by
an individual thread. Memory isn't really owned by a thread. Once
allocated any thread can access it. As far as CPU goes.. there really
isn't any way to limit it. You could have a second thread that watches
how much CPU has been used and does some action if it gets past a certain
limit, but I don't think you are looking for this.

What you probably want is for a thread to use no more than 10% of the CPU
over some time interval. I don't think there is a way to do this in Java.

I've been looking at some of these same issues myself and Java just
doesn't have a lot of capability when it comes to severely limiting a
process.

I did figure out a way to limit a Java process to only one thread. You
create a custom class loader for it and check for the class
"java.lang.Thread". If it tries to instantiate one then throw an
exception. I haven't actually tried it, but I think it would work.

You are probably writing the code you are trying to limit, so this doesn't
really apply to you.

Good luck.
 
U

Ulrich Scholz

What you probably want is for a thread to use no more than 10% of the CPU
over some time interval. I don't think there is a way to do this in Java.

that's bad
You are probably writing the code you are trying to limit, so this doesn't
really apply to you.

Actually, I don't write the programs I'd like to limit. As part of
the EU project MUSIC (www.music-ist.eu), I'm developing a method,
called divide and conquer (D&C), to distribute (parts of) applications
onto an ensemble of devices. As a result, otherwise unrelated, third-
party applications can end up on the same device, thus competing for
memory and CPU. (Check out Publications > Publications related to
MUSIC > Divide and Conquer on the MUSIC portal).

D&C will assign resources to applications. Because control is better
than confidence, it is desirable that D&C can limit the resources and
is able to change these limits later on. Of course, for the purpose
of research it is OK to simply assign the limits and assume that the
applications will follow them. But I'd prefer to have at least one
demonstrator with actual control over the resources, even if this
would work only for one specific hardware/software combination.

Any suggestions welcome.

Ulrich
 
I

Ingo Menger

Any suggestions welcome.

Since you write "any": I remember having read about research concerned
with the fitness of Java for real time applications. Perhaps the
search engine of your choice finds something for +java +real +time.
(Mine does).
 
R

Roedy Green

is it possible to create a thread with limited memory and limited
clock cycles? I guess this is highly dependent on the operating
system and the virtual machine.

Objects don't belong to threads. There is a common pool of objects.

To get the effect you want you would have to put a quota system into
your various constructors.
 
U

Ulrich Scholz

Since you write "any": I remember having read about research concerned
with the fitness of Java for real time applications. Perhaps the
search engine of your choice finds something for +java +real +time.
(Mine does).

Thanks for pointing me to Java SE Real Time. That seems to be what I
need. I started a new thread with questions about Java SE Real Time
but feel free to point me to other information within this thread.

Thank you,

Ulrich
 
I

Ingo Menger

Thanks for pointing me to Java SE Real Time. That seems to be what I
need. I started a new thread with questions about Java SE Real Time
but feel free to point me to other information within this thread.

Unfortunately I can't. The only thing I know is that something like
"Java SE Real Time" exists (though I forgot the exact name) and that
"real time" somehow implies management of CPU ressources. So I thought
I could suggest you research in that direction. Hope you find
something useful.
 
L

Lew

Ingo said:
Unfortunately I can't. The only thing I know is that something like
"Java SE Real Time" exists (though I forgot the exact name) and that
"real time" somehow implies management of CPU ressources. So I thought
I could suggest you research in that direction. Hope you find
something useful.

Just to add to the store of knowledge, strictly speaking a "real-time" system
is one that makes guarantees about service time. Thus you know that a context
switch can take no more than some time epsilon, for example. That epsilon
could be large as long as it's guaranteed. Naturally the shorter the epsilon,
the more responsive and generally useful is the real-time system.

The key feature of real-time systems is determinism. For non-real-time
systems, no matter how long the wait, something can take longer. You just
cannot be sure. With real-time systems you are sure.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top