[torqueusers] accounting
Gus Correa
gus at ldeo.columbia.edu
Fri Jun 26 16:54:49 MDT 2009
Thank you very much, David, Jon, all.
I piggy-backed Jon's questions,
and learned a lot from all the answers!
Actually, I have to setup here pretty much the same
3 features that Jon asked about.
David: Of course I will trust your code.
And will be wary of Aussie users ... :)
Gus Correa
---------------------------------------------------------------------
Gustavo Correa
Lamont-Doherty Earth Observatory - Columbia University
Palisades, NY, 10964-8000 - USA
---------------------------------------------------------------------
David Singleton wrote:
> Gus Correa wrote:
>> Hi David, list
>>
>> David Singleton wrote:
>>> Gus Correa wrote:
>>>> Hi Jon, Troy, list
>>>>
>>>> Besides Troy's suggestions:
>>>>
>>>> Ole Holm Nielsen wrote a suite of scripts to do Torque/PBS accounting
>>>> reports:
>>>>
>>>> ftp://ftp.fysik.dtu.dk/pub/Torque/pbsacct-1.4.6.tar.gz
>>>>
>>>> I never tried it,
>>>> but would guess a prologue script may be able to do #2 also,
>>>> say, by checking if the project number is on a list of projects,
>>>> and returning an abort exit code (1),
>>>> if the project is not valid:
>>>>
>>>> http://www.clusterresources.com/torquedocs21/a.gprologueepilogue.shtml
>>>>
>>>> However, this may reject the job only when it starts,
>>>> not right after qsub, like Troy's "qsub filter" would do.
>>>> In other words, the prologue solution defers the job deletion to run time.
>>>>
>>>> My doubt is how to enforce the use of the "qsub filter",
>>>> instead of the actual qsub command.
>>>> I suppose the user could always write the full path to qsub, instead of
>>>> the filter alias.
>>>>
>>> Or they could build/install their own qsub ... or they could call pbs_submit()
>>> directly ... Not many users would but if you have enough users ...
>>> In the end, we decided the "right" solution was to put hooks in the server's
>>> req_quejob().
>>>
>>> David
>> Short from Teddy Roosvelt's
>> "Speak softly, and carry a big stick",
>> your and Naveed's suggestions are the best I heard of
>> to handle rogue behavior on the Torque queue system.
>>
>> I am amazed by the Aussie user creativity!
>> Our rogue's gallery is small, if any,
>> but we are a small community, the focus is not computer science.
>>
>> Any hints on how to patch-n-hook the server's req_quejob.c?
>>
>
> Actually, for what Jon wanted, there is already a hook. In
> src/lib/Libsite/site_check_u.c, there is the following stub
> which is called from the right place in the server (actually
> in svr_jobfunc.c:svr_chkque()). You could implement an
> account charging check similar to that indicated. You need
> to supply int valid_acct_request(char *user, char *acct)
> that does whatever check you want. You might want something
> more complicated like dependence on queue etc.
>
> Users can have default accounts on our system so our equivalent
> of this routine sets the account value if not provided as well
> as checking the value if it is provided.
>
> David
>
> PS: dont trust my code!
>
>
> /*
> * site_check_u - site_acl_check()
> *
> * This routine is a place holder for sites that wish to implement
> * access controls that differ from the standard PBS user, group, host
> * access controls. It does NOT replace their functionality.
> *
> * Return PBSE_PERM for access denied or some other PBS error code,
> * otherwise 0 for ok.
> *
> * Account verification version: checks that the user has specified
> * an account and then verifies she can use that account. qsub
> * will return an "Invalid Account" message in case of failure.
> */
>
> int site_acl_check(job *pjob, pbs_queue *pque)
> {
> attribute *pjattr = pjob->ji_wattr;
> char *user, *acct;
>
> if ( !(pjattr[(int)JOB_ATR_euser].at_flags & ATR_VFLAG_SET) )
> return PBSE_BADUSER; /* ? How? */
>
> user = pjob->ji_wattr[(int)JOB_ATR_euser].at_val.at_str;
>
> if ( !(pjattr[(int)JOB_ATR_account].at_flags&ATR_VFLAG_SET) )
> return PBSE_BADACCT; /* No account specified */
>
> acct = pjattr[(int)JOB_ATR_account].at_val.at_str
>
> if ( !valid_acct_request(user, acct) )
> return PBSE_BADACCT; /* Not a valid acct or user
> cannot use the acct */
>
> return PBSE_NONE;
> }
>
> _______________________________________________
> torqueusers mailing list
> torqueusers at supercluster.org
> http://www.supercluster.org/mailman/listinfo/torqueusers
More information about the torqueusers
mailing list