public int compare(BucketRegion buk1, BucketRegion buk2) { long buk1NumEntries = buk1.getSizeForEviction(); long buk2NumEntries = buk2.getSizeForEviction(); if (buk1NumEntries > buk2NumEntries) { return -1; } else if (buk1NumEntries < buk2NumEntries) { return 1; } return 0; } });
public int compare(BucketRegion buk1, BucketRegion buk2) { long buk1NumEntries = buk1.getSizeForEviction(); long buk2NumEntries = buk2.getSizeForEviction(); if (buk1NumEntries > buk2NumEntries) { return -1; } else if (buk1NumEntries < buk2NumEntries) { return 1; } return 0; } });
Set<BucketRegion> buckets = dataStore.getAllLocalBucketRegions(); for (BucketRegion br : buckets) { if (HeapEvictor.MINIMUM_ENTRIES_PER_BUCKET < br.getSizeForEviction()) { bucketList.add(br);
private List<LocalRegion> getAllSortedRegionList(){ List<LocalRegion> allRegionList = getAllRegionList(); //Capture the sizes so that they do not change while sorting final TObjectLongHashMap sizes = new TObjectLongHashMap(allRegionList.size()); for(LocalRegion r : allRegionList) { long size = r instanceof BucketRegion ?((BucketRegion)r).getSizeForEviction() : r.size(); sizes.put(r, size); } //Sort with respect to other PR buckets also in case of multiple PRs Collections.sort(allRegionList, new Comparator<LocalRegion>() { public int compare(LocalRegion r1, LocalRegion r2) { long numEntries1 = sizes.get(r1); long numEntries2 = sizes.get(r2); if (numEntries1 > numEntries2) { return -1; } else if (numEntries1 < numEntries2) { return 1; } return 0; } }); return allRegionList; }
Set<BucketRegion> buckets = dataStore.getAllLocalBucketRegions(); for (BucketRegion br : buckets) { if (HeapEvictor.MINIMUM_ENTRIES_PER_BUCKET < br.getSizeForEviction()) { bucketList.add(br);
private List<LocalRegion> getAllSortedRegionList(){ List<LocalRegion> allRegionList = getAllRegionList(); //Capture the sizes so that they do not change while sorting final Object2LongOpenHashMap sizes = new Object2LongOpenHashMap(allRegionList.size()); for(LocalRegion r : allRegionList) { long size = r instanceof BucketRegion ?((BucketRegion)r).getSizeForEviction() : r.size(); sizes.put(r, size); } //Sort with respect to other PR buckets also in case of multiple PRs Collections.sort(allRegionList, new Comparator<LocalRegion>() { public int compare(LocalRegion r1, LocalRegion r2) { long numEntries1 = sizes.get(r1); long numEntries2 = sizes.get(r2); if (numEntries1 > numEntries2) { return -1; } else if (numEntries1 < numEntries2) { return 1; } return 0; } }); return allRegionList; }
private void createAndSubmitWeightedRegionEvictionTasks() { List<LocalRegion> allRegionList = getAllSortedRegionList(); float numEntriesInVm = 0 ; for(LocalRegion lr : allRegionList){ if(lr instanceof BucketRegion){ numEntriesInVm = numEntriesInVm + ((BucketRegion)lr).getSizeForEviction(); }else { numEntriesInVm = numEntriesInVm + lr.getRegionMap().sizeInVM(); } } for(LocalRegion lr : allRegionList){ List<LocalRegion> regionsForSingleTask = new ArrayList<LocalRegion>(1); float regionEntryCnt = 0; if(lr instanceof BucketRegion){ regionEntryCnt = ((BucketRegion)lr).getSizeForEviction(); }else { regionEntryCnt = lr.getRegionMap().sizeInVM(); } float percentage = (regionEntryCnt/numEntriesInVm); long bytesToEvictPerTask = (long)(getTotalBytesToEvict() * percentage); regionsForSingleTask.add(lr); if (mustEvict()) { submitRegionEvictionTask(new RegionEvictorTask(regionsForSingleTask, this,bytesToEvictPerTask)); }else { break; } } }
private void createAndSubmitWeightedRegionEvictionTasks() { List<LocalRegion> allRegionList = getAllSortedRegionList(); float numEntriesInVm = 0 ; for(LocalRegion lr : allRegionList){ if(lr instanceof BucketRegion){ numEntriesInVm = numEntriesInVm + ((BucketRegion)lr).getSizeForEviction(); }else { numEntriesInVm = numEntriesInVm + lr.getRegionMap().sizeInVM(); } } for(LocalRegion lr : allRegionList){ List<LocalRegion> regionsForSingleTask = new ArrayList<LocalRegion>(1); float regionEntryCnt = 0; if(lr instanceof BucketRegion){ regionEntryCnt = ((BucketRegion)lr).getSizeForEviction(); }else { regionEntryCnt = lr.getRegionMap().sizeInVM(); } float percentage = (regionEntryCnt/numEntriesInVm); long bytesToEvictPerTask = (long)(getTotalBytesToEvict() * percentage); regionsForSingleTask.add(lr); if (mustEvict()) { submitRegionEvictionTask(new RegionEvictorTask(regionsForSingleTask, this,bytesToEvictPerTask)); }else { break; } } }
+ " entries evicted : " + ((BucketRegion)bucket).getEvictions() + " and bucket size is " + ((BucketRegion)bucket).getSizeForEviction());
return monitorStateIsEviction && ((BucketRegion) region).getSizeForEviction() > 0;
return monitorStateIsEviction && ((BucketRegion) region).getSizeForEviction() > 0;