[gold-users] listing jobs charged to a specific allocation
Kevin Van Workum
vanw at sabalcore.com
Wed Mar 10 09:42:28 MST 2010
On Tue, Mar 9, 2010 at 8:00 PM, Scott Jackson
<scottmo at adaptivecomputing.com> wrote:
> Kevin Van Workum wrote:
>>
>> On Mon, Mar 8, 2010 at 7:18 PM, Scott Jackson
>> <scottmo at adaptivecomputing.com> wrote:
>>
>>>
>>> Kevin,
>>>
>>> Kevin Van Workum wrote:
>>>
>>>>
>>>> I'm trying to create a command that will list jobs that have been
>>>> charged to a specific allocation. I realize I can use "glstxn -i Id -O
>>>> Job", but that lists the transactions.
>>>>
>>>
>>> Well, it is not that simple because a job can have any number of charges
>>> against it and each charge can be to one or more allocations. So, it is
>>> not
>>> possible to directly relate a one-to-one answer to this question. You
>>> basically are going to have to look at this in terms of the transactions,
>>> though this can certainly be narrowed down to just Charges.
>>>
>>> Ohh, I see -- you know that, you just want any job listed that has ever
>>> had
>>> a charge against a particular allocation...
>>>
>>> goldsh Transaction Query Show:=JobId,Amount Action==Charge Allocation==26
>>>
>>> or
>>>
>>> glstxn -A Charge -i 26 --show=JobId
>>>
>>> If you want the job info for these guys, you'll have to use goldsh to do
>>> a
>>> join:
>>>
>>> goldsh Job,Transaction Query
>>>
>>> Show:=Job.Id,Job.JobId,Job.User,Job.Project,Job.Machine,Job.Processors,Job.WallDuration,Job.Charge
>>> Transaction.Action==Charge Transaction.Allocation==26
>>> Transaction.JobId==Job.JobId
>>>
>>> Id JobId User Project Machine Processors WallDuration Charge
>>> --- ------------ ------- --------- ------- ---------- ------------ ------
>>> 32 2 root catchall colony 1 123
>>> 36 root.8 root catchall keko 1 465 1
>>> 37 root.9 root catchall keko 1 523 1
>>> 40 root.12 root catchall keko 1 362 1
>>> 43 RHEL3ASVM.15 root catchall keko 1 58 111
>>> 45 RHEL3ASVM.17 root catchall keko 1 17 111
>>> 51 80 scottmo catchall keko 1 277 277
>>>
>>
>> Cool. I didn't know you could do that. Unfortunately, gold seems to
>> choke on this. The same command as above just hangs. Then I have to
>> restart postgresql to get things back to normal.
>>
>>
>
> Hmmmm..... maybe your Transaction table (and Job table) are ginormous. I
> can't think of any other reason for the hang. Just for curiosity's sake, how
> long have you waited for it to return?
About 1 minute. My /var/lib/pgsql/data dir is about 466M.
> I'm sorry if I've asked before, but
> do you have the indexes in place?
I never added them explicitly, but I'm using 2.1.9.0 which I believe
has them in place.
> How many rows are in your Transaction
> table? Job table.
Not sure. How do I figure that out? I'm nearly clueless with postgres.
How about this:
gold=> select count(*) from g_transaction;
count
--------
867776
(1 row)
> We are doing a join on it, so this may not be practical.
> If they are too large and postgres does not have memory for the join, we may
> need to take the iterative approach.
I've already implemented this in a way. Basically, I first do a
Transaction Query to get the list of JobId's, then do a Job Query.
Finally I grep for common JobId's.
> It would be interesting to try to do a
> direct join in Postgres to do the similar join query in the psql prompt. You
> can get the sql that gold is trying to enact in the goldd.log if you want a
> good starting point.
>
> Scott
>
>
>
>>>> I want to get the list of jobs.
>>>> I could first use glstxn, then use glsjob for each job found, but is
>>>> there a more efficient way. Maybe something like:
>>>>
>>>> my $request = new Gold::Request(object => "Job", action => "Query");
>>>> Gold::Client::buildSupplements($request);
>>>> $request->setCondition("AllocationId", "123");
>>>>
>>>>
>>>
>>> To do this in the perl api, something like (I'm winging it here, you will
>>> have to tweak this a tad):
>>>
>>> my $request = new Gold::Request(
>>> objects => [
>>> new Gold::Object(name => "Job"),
>>> new Gold::Object(name => "Transaction")
>>> ], action => "Query");
>>>
>>> $request->setSelection("Id", "", "Job");
>>> $request->setSelection("JobId", "", "Job");
>>> $request->setSelection("User", "", "Job");
>>> ...
>>> $request->setCondition("Action", "Charge", "", "", "", "Transaction");
>>> $request->setCondition("Allocation", "26", "", "", "", "Transaction");
>>> $request->setCondition("JobId", "JobId", "", "", "", "Transaction",
>>> "Job");
>>>
>>>
>>>
>>> See perldoc for Request, Condition, Selection, Object, etc.
>>>
>>>
>>>
>>>
>>>>
>>>> --
>>>> Kevin Van Workum, PhD
>>>> Sabalcore Computing Inc.
>>>> Run your code on 500 processors.
>>>> Sign up for a free trial account.
>>>> www.sabalcore.com
>>>> 877-492-8027 ext. 11
>>>> _______________________________________________
>>>> gold-users mailing list
>>>> gold-users at supercluster.org
>>>> http://www.supercluster.org/mailman/listinfo/gold-users
>>>>
>>>>
>>>
>>>
>>
>>
>>
>>
>
>
--
Kevin Van Workum, PhD
Sabalcore Computing Inc.
Run your code on 500 processors.
Sign up for a free trial account.
www.sabalcore.com
877-492-8027 ext. 11
More information about the gold-users
mailing list