Am 10.03.2011 um 13:35 schrieb Arne Brutschy:

>> yes, the default way to go is to define a PE with "allocation_rule
>> $pe_slots" and instruct the users to set:
>>  export OMP_NUM_THREADS=$NSLOTS 
>> while submitting with a request for this PE, often such a PE is named
>> "smp" (supposed they use OpenMP). 
> 
> Hm, would something like this also work with posix-threads?

This depends on the application. If there is something forseen to be set on 
start, you could also use $NSLOTS on the command line, e.g. as argument to the 
application. If the application is greedy without any possibility to limit it 
to a certain thread count, then only exclusive scheduling would help.


>> Of course, without core binding your users could be cheating and
>> use more than granted. But a local check could be implemented (either
>> as cron-job or in a load-sensor): as all jobs have an additional
>> group ID attached, one could count the active (i.e. not state S)
>> forks/threads of each job, and if it doesn't match the requested and
>> granted slot count to kill it.
> 
> And running this for all queues, thus effectively disallowing
> multi-threaded applications on the other queues? This could work... Did
> someone implement something like this already?

Not me. Usually I negotiate with my users when I see something strange.

NB: As also a serial jobs will have some forks in the way to the application in 
the process tree, I emphasized on looking for the state of all these associated 
processes in the process tree; sleeping/waiting ones won't hurt.

-- Reuti
_______________________________________________
users mailing list
[email protected]
https://gridengine.org/mailman/listinfo/users

Reply via email to