Darren J Moffat wrote:
> Vladimir Kotal wrote:
> > Getting nightly.sh faster will not make the nightly *build* noticeably
> > faster.
> >
> >> Do any of these changes mean that nightly no longer works with ksh88 ?
> >
> > I'm afraid it is the case - e.g. the builtin stuff will prevent it from
> > working with ksh88.
> >
> > In general I think there needs to be a consensus whether to rewrite old
> > ksh scripts to ksh93 if there is no clear reason for it.
> 
> In that case I see no benefit from the changes being proposed and I
> don't think this should be integrated.   If there is more to come that
> will speed up nightly to a point where it is actually noticable (I
> really doubt it some how) I'd like to see a least an overview of that.

1. Please read
http://opensolaris.org/jive/thread.jspa?messageID=407842#407842
2. With the retirement of SXCE and the switch to Indiana we will get the
switch from ksh88 to ksh93 implicitly. However I would prefoer to do the
switch _now_ in a controlled and tested way instead of running into
problems like CR #6872747 ("nightly's total build time calculation is
b0rked") repeatedly.
3. bldenv.sh already uses ksh93 and it may be nice to use ksh93
constructs in opensolaris.org (for example the default calculation for
the DMAKE_MAX_JOBS value needs to be adjusted to include a limit for
available memory to avoid that the machine runs out of memory or starts
swapping because the value is too high (see [1]))

[1]=AFAIK it should similar like this:
-- snip --
function get_memory_size
{
    set -o errexit
        
    nameref result=$1
    float mem
    typeset s
        
    s="$(/usr/sbin/prtconf 2>&1)"
    # extract value in MB from "Memory size: 2048 Megabytes"
    s="${s/~(E).*(Memory size: )(.*)( Megabytes).*/\2}"

    # convert value
    (( mem=${s} ))

    # boundary checks
    (( (mem < 0.) && (mem < 2.**64) )) && return 1
        
    # write result back
    (( result=mem ))
        
    return 0
}


function calcutale_max_parallel_jobs
{
    integer num_online_cpus
    integer max_parallel_jobs
    float system_memory=-1.

    num_online_cpus="$(getconf NPROCESSORS_ONLN)" || \
            (( num_online_cpus=3 ))

    get_memory_size system_memory
    if (( system_memory > 0 )) ; then
        float memjobs
        
        # calculate the maximum number of jobs which fit
        # into memory before we start swapping/paging
        # we use 256MB for the base OS and 256 per compiler
        # instance
        (( memjobs=(system_memory-256.)/256. ))
        
        (( max_parallel_jobs=int(fmin(num_online_cpus, memjobs)) ))
    else
        (( max_parallel_jobs=num_online_cpus ))
    fi

    print "max_parallel_jobs=${max_parallel_jobs}"
}

calcutale_max_parallel_jobs
-- snip --

----

Bye,
Roland

-- 
  __ .  . __
 (o.\ \/ /.o) roland.ma...@nrubsig.org
  \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
  /O /==\ O\  TEL +49 641 3992797
 (;O/ \/ \O;)
_______________________________________________
opensolaris-code mailing list
opensolaris-code@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to