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
