Author: challngr Date: Tue Oct 15 14:45:05 2013 New Revision: 1532365 URL: http://svn.apache.org/r1532365 Log: UIMA-3349 Insure already-fulfilled fixed/reserve allocation is not a candidate for defrag.
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/JobManagerConverter.java uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/NodePool.java uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/NodepoolScheduler.java uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/RmJob.java Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/JobManagerConverter.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/JobManagerConverter.java?rev=1532365&r1=1532364&r2=1532365&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/JobManagerConverter.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/JobManagerConverter.java Tue Oct 15 14:45:05 2013 @@ -817,8 +817,18 @@ public class JobManagerConverter // otherwise, if the shares it has allocated is < the number it wants, it is in fact // pending but not complete. - logger.trace(methodName, j.getId(), "countNShares", j.countNShares(), "countInstances", j.countInstances()); - return ( j.countNShares() < j.countInstances()); + logger.info(methodName, j.getId(), "countNShares", j.countNShares(), "countInstances", j.countInstances(), "isComplete", j.isCompleted()); + + if ( j.isCompleted() ) { + return false; + } + + if ( j.countNShares() == j.countInstances() ) { + j.markComplete(); // non-preemptable, remember it finally got it's max + return false; + } + + return (j.countNShares() < j.countInstances()); } /** Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/NodePool.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/NodePool.java?rev=1532365&r1=1532364&r2=1532365&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/NodePool.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/NodePool.java Tue Oct 15 14:45:05 2013 @@ -1220,7 +1220,7 @@ class NodePool int order = j.getShareOrder(); int given = 0; - logger.debug(methodName, j.getId(), "counted", counted, "current", current, "needed", needed, "order", order, "given", given); + logger.info(methodName, j.getId(), "counted", counted, "current", current, "needed", needed, "order", order, "given", given); if ( needed > 0 ) { whatof: { Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/NodepoolScheduler.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/NodepoolScheduler.java?rev=1532365&r1=1532364&r2=1532365&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/NodepoolScheduler.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/NodepoolScheduler.java Tue Oct 15 14:45:05 2013 @@ -1954,6 +1954,8 @@ public class NodepoolScheduler must_defrag = true; } } else { // if not fair-share, must always try to defrag if needed + if ( j.isCompleted() ) continue; // non-preemptable, this means it has at least once received + // its full allocation, and therefore cannot be needy if ( needed > 0 ) { jobmap.put(j, needed); must_defrag = true; Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/RmJob.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/RmJob.java?rev=1532365&r1=1532364&r2=1532365&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/RmJob.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/RmJob.java Tue Oct 15 14:45:05 2013 @@ -173,6 +173,13 @@ public class RmJob return is_reservation; } + /** + * For non-preemptable, remember max alloc has been reached, so we don't try to expand if + * used for a job-job. + * + * For preemptable, must remember the job completed for defrag, because it could stick + * around a while after completion. + */ public void markComplete() { completed = true; @@ -1253,9 +1260,9 @@ public class RmJob public String toString() { int shares = assignedShares.size() + pendingShares.size(); - if ( getSchedulingPolicy() != Policy.FAIR_SHARE ) { - shares = countInstances(); - } + //if ( getSchedulingPolicy() != Policy.FAIR_SHARE ) { + // shares = countInstances(); + //} // 1 2 3 4 5 6 7 8 9 10 11 12 13 String format = "%11s %30.30s %10s %10s %6d %5d %7d %3d %6d %6d %8d %8s %9d";