I have a 8.0.0c cluster in production and an 8.0.0e running for testing.

No one has noticed it, though I have seen it before
Oh, I just managed to hit another bug, on 8.0.0c


I am trying to simulate this.
I  have 2 users,  (names are changed to protect the innocent)

user1
echo sleep 10000 | qsub -q linux2 -t 1-100 -tc 1

user2
echo sleep 10000 | qsub -q linux2 -t 1-2000 -tc 1



qstat -ext -pri -u user1,user2

job-ID  prior   nurg    npprior ntckts   ppri name       user
project          department state submit/start at     cpu        mem     io
     tckts ovrts otckt ftckt stckt share queue
 slots ja-task-ID
 115460 2.50000 0.00000 0.00000 1.00000     0 STDIN      user2      NA
          defaultdep r     02/06/2013 18:21:21 0:00:00:00 0.00000 0.00007
-1780537303     0     0     0 -1780537303 0.59  linux2@     1 1
 115461 1.91619 0.00000 0.00000 0.70810     0 STDIN      user1     NA
        defaultdep r     02/06/2013 18:21:21 0:00:00:00 0.00000 0.00007
1780458312     0     0     0 1780458312 0.41  linux2@     1 1
 115460 0.00000 0.00000 0.00000 0.00000     0 STDIN      user2      NA
          defaultdep qw    02/06/2013 18:21:05
   0     0     0     0     0 0.00                                     1
2-2000:1
 115461 0.00000 0.00000 0.00000 0.00000     0 STDIN      user1     NA
        defaultdep qw    02/06/2013 18:21:13
 0     0     0     0     0 0.00                                     1
2-100:1


user2, gets more tickets, and have overflowed into the negative.





On Wed, Feb 6, 2013 at 2:05 PM, Orlando Richards
<[email protected]>wrote:

> Hi Ben,
>
>
> On 06/02/13 13:12, Ben De Luca wrote:
>
>> Im fairly sure we are affected by this bug too, I am happy to help in
>> the hunt and I have looked through the code more than once.
>>
>>
> Are you doing anything to work around it at all? At the moment, we're
> adjusting the shares to accommodate the over accounting - but that is a
> very blunt tool and skews our allocations massively. We're reluctant to go
> for purely functional shares, as our service definition is currently fixed
> on fair share.
>
>
>  Which version of grid are you trying to fix? I havn't been following
>> grid dev too closely do we still have multiple forks?
>>
>>
> We notice it most on our current 6.2u5 deployment, which we're moving away
> from to 8.0.0e from Son Of Grid Engine. That's not to say it isn't present
> in the 8.0.0e - we still have a lot of the troublesome workload on the
> 6.2u5 cluster, and I'm sure I've seen it happening on the 8.0.0e cluster
> (though I now don't have any evidence of that).
>
>
> --
> Orlando
>
>
>
>>
>> On Wed, Feb 6, 2013 at 12:07 PM, Mark Dixon <[email protected]
>> <mailto:[email protected]>**> wrote:
>>
>>     On Wed, 6 Feb 2013, Orlando Richards wrote:
>>     ...
>>
>>         I've had a go at digging through the code, but couldn't really
>>         make head
>>
>>         nor tail of it - no doubt in large part due to my not being much
>>         of a
>>         coder :( Any pointers to get me bootstrapped would be most
>> welcome.
>>
>>
>>     General comments about the source...
>>
>>     Don't be intimidated. It's a large code base, but spend a little
>>     time and it'll start to make sense. Pick a little bit of it to focus
>>     on initially.
>>
>>     Gridengine's source code is layered. The source distribution has a
>>     few HTML files describing them (some of which still need updating
>>     from the 6.0 days...). Functions near the very top and very bottom
>>     of the stack are relatively well commented, but the rest can be a
>>     little hit and miss.
>>
>>     Ignoring most of the layers, you've essentially got:
>>
>>     At the bottom you've got the wonderful CULL layer: it's very solid
>>     and provides gridengine with safe complicated data structures. I'd
>>     like to pat the person who wrote it on the back, although I admit
>>     I've yet to get my head round the advanced search functionality.
>>     State data for jobs and so on tend to use it. Use of it can be
>>     identified by the data types or functions prefixed with "l".
>>
>>     While I'm on data structures, there are also "dstrings" - which
>>     provide safe string handling.
>>
>>     In the middle you've got the GDI, which is the set of libraries used
>>     by the different components to communicate with each other over the
>>     network.
>>
>>     At the top you've got the qmaster, execd, etc., which can be thought
>>     of as loosely coupled applications that all use the same underlying
>>     libraries/layers to coordinate.
>>
>>     I've spent most of my time in the execd, which is pretty easy but
>>     messy [a very large number of special cases - not totally unexpected
>>     with the number of platforms supported over the years, but ripe for
>>     some refactoring]. I've had a brief play in the qmaster and my first
>>     impression is that it's more consistent and "solid" than the execd,
>>     but more complicated.
>>
>>
>>     General tips for debugging gridengine...
>>
>>     1) Play with the loglevel setting in "qconf -sconf" and read the
>>     messages files.
>>
>>
>>     2) Figure out how to stick gridengine into debug mode.
>>     https://blogs.oracle.com/__**templedf/entry/using___**
>> debugging_output<https://blogs.oracle.com/__templedf/entry/using___debugging_output>
>>
>>     
>> <https://blogs.oracle.com/**templedf/entry/using_**debugging_output<https://blogs.oracle.com/templedf/entry/using_debugging_output>
>> >
>>
>>     Essentially something like:
>>        * Setup sge environment (SGE_ROOT, SGE_QMASTER_PORT, etc.)
>>        * Execute: . $SGE_ROOT/util/dl.sh
>>        * Execute: dl 1
>>        * Execute: $SGE_ROOT/bin/lx-amd64/sge___**execd
>>
>>
>>     The program will not daemonise and will print lots of interesting
>>     stuff. Different 'dl' values will give you different output. I
>>     generally find that anything greater than 1 is "too much".
>>
>>     This technique will work for pretty much any gridengine component.
>>     Even qsub.
>>
>>
>>     3) Run gridengine under gdb.
>>
>>     I don't know if you've had much experience with gdb but, once you've
>>     got the hang of it, it's very useful in figuring out what some code
>>     generally does without actually understanding the details. Once
>>     you've followed your nose to something that doesn't look right, you
>>     can then spend time figuring things out.
>>
>>     I think some of the gridengine forks try to provide builds with
>>     enough debugging information for this to work, but I tend to build
>>     my own gridengine so that I can easily recompile after editing the
>>     source with potential fixes.
>>
>>     Make sure you build with the "-no-opt" and "-debug" flags to aimk
>>     (disables optimisation and enables debugging symbols) and keep the
>>     source tree kicking around for gdb to read. I run our production
>>     gridengine with those flags and haven't noticed any serious
>>     performance problems.
>>
>>     Once you have gridengine running under gdb and playing with
>>     breakpoints and the rest, you can easily examine interesting data
>>     structures with commands like "p lWriteList(ptr)", "p
>>     lWriteElem(ptr)" and
>>     "p sge_dstring_get_string(ptr)" (where ptr is a lList*, lListElem*
>>     or dstring*, respectively).
>>
>>
>>     ...
>>
>>         At the moment, I'm trying to get a reproducible test case
>>         together to
>>         allow for useful debugging - basic tests (sleep 60s) don't show an
>>         obvious triggering of the issue, so I'm moving onto more
>> complicated
>>         tasks. Certainly, the issue does seem to create
>> orders-of-magnitude
>>         differences in reported usage. Current offenders include BLAST
>>         jobs (run
>>         by our Biology users) - which are fairly memory heavy.
>>
>>     ...
>>
>>     Being able to reproduce the problem will obviously make things far,
>>     far easier! If you cannot, you're probably reduced to littering the
>>     relevant qmaster code with INFO(())/WARNING(())/ERROR(()) statements
>>     (and checking that loglevel in "qconf -sconf" is set to the
>>     appropriate value) and seeing what appears in the messages files in
>>     production.
>>
>>     If you're lucky, the problem might be evident in the usage
>>     information being sent from the execd to the qmaster. Running the
>>     execd in debug mode with "dl 1" will reveal what CPU/MEM/IO values
>>     the qmaster is being given to be used in the accounting file and the
>>     share tree.
>>
>>     If you're unlucky, the problem is in how the qmaster aggregates,
>>     records and decays the share tree values over time.
>>
>>     If you're really unlucky, the problem might only occur if the
>>     various gridengine components are under severe stress.
>>
>>     I find that having a non-production installation of gridengine
>>     kicking around, perhaps in virtual machines, is very handy :)
>>
>>     Hope this helps...
>>
>>
>>     Mark
>>     --
>>     ------------------------------**__----------------------------**
>> --__-----
>>     Mark Dixon                       Email    : [email protected]
>>     <mailto:[email protected]>
>>
>>     HPC/Grid Systems Support         Tel (int): 35429
>>     Information Systems Services     Tel (ext): +44(0)113 343 5429
>>     <tel:%2B44%280%29113%20343%**205429>
>>
>>     University of Leeds, LS2 9JT, UK
>>     ------------------------------**__----------------------------**
>> --__-----
>>     ______________________________**___________________
>>     users mailing list
>>     [email protected] <mailto:[email protected]>
>>     
>> https://gridengine.org/__**mailman/listinfo/users<https://gridengine.org/__mailman/listinfo/users>
>>     
>> <https://gridengine.org/**mailman/listinfo/users<https://gridengine.org/mailman/listinfo/users>
>> >
>>
>>
>>
>
> --
>             --
>    Dr Orlando Richards
>   Information Services
> IT Infrastructure Division
>        Unix Section
>     Tel: 0131 650 4994
>
> The University of Edinburgh is a charitable body, registered in Scotland,
> with registration number SC005336.
>
_______________________________________________
users mailing list
[email protected]
https://gridengine.org/mailman/listinfo/users

Reply via email to