avail = data_cache2 - dws;
avail = (data_cache2 - dws) * 2 / 3;
    public static int bestMult(int data_cache1, int data_cache2) {	int threadCount = NodeEnumerator.getNumberOfNodes();	int min_mult;// = cache_size;	int histogram[] = new int[threadCount];	for (int t = 0; t < threadCount; t++) {	    	    SIROperator oper = NodeEnumerator.getOperator(t);	    int dws = DataEstimate.estimateDWS(oper);	    int io = DataEstimate.estimateIOSize(oper);	    int avail = 0;	    // if dws < .8 * data_cahce1	    if (dws / 8 * 10 < data_cache1) {		avail = data_cache1 - dws;	    } else {		avail = data_cache2 - dws;	    }	    if (io == 0) io = 1;	    int mult = avail / io;	    //System.out.println("DWS: "+dws+" Avail: "+avail+" IO: "+io+" Mult: "+mult);	    histogram[t] = mult;	    //if (mult < min_mult) { min_mult = mult; }	}	    		Arrays.sort(histogram);	System.out.println("[bestMult] min: "+histogram[0]+" max: "+histogram[threadCount-1]+" 10th-precentile: "+histogram[threadCount/10]);	min_mult = histogram[threadCount/10];	if (min_mult > 100) min_mult = 100;		if (min_mult < 0) min_mult = 1;		System.out.println("[bestMult] returning multiplicity : "+min_mult);	return min_mult;    }