114 |
this.o = o; |
this.o = o; |
115 |
} |
} |
116 |
|
|
117 |
void fit(MemoryConsumer cons, int bytes) { |
void fit(MemoryConsumer cons, float priority, int bytes) { |
118 |
if(dbg) pa("Reserving "+bytes+" for "+cons); |
if(dbg) pa("Reserving "+bytes+" for "+cons); |
119 |
cons.setReservation(bytes, curQuality, o); |
cons.setReservation(priority, bytes, curQuality, o); |
120 |
if(dbg) pa("Reserved"); |
if(dbg) pa("Reserved"); |
121 |
setBytes = bytes; |
setBytes = bytes; |
122 |
setQuality = curQuality; |
setQuality = curQuality; |
123 |
} |
} |
124 |
|
|
125 |
int maximum(MemoryConsumer cons, int left) { |
int maximum(MemoryConsumer cons, float priority, int left) { |
126 |
int m = cons.getMaxBytes(curQuality); |
int m = cons.getMaxBytes(curQuality); |
127 |
cons.setReservation(m, curQuality, o); |
cons.setReservation(priority, m, curQuality, o); |
128 |
setBytes = m; |
setBytes = m; |
129 |
setQuality = curQuality; |
setQuality = curQuality; |
130 |
return left-m; |
return left-m; |
172 |
rerate(); |
rerate(); |
173 |
// AbstractUpdateManager.chg(); |
// AbstractUpdateManager.chg(); |
174 |
if(dbg) pa("rerated, sleeping"); |
if(dbg) pa("rerated, sleeping"); |
175 |
Thread.sleep(50); |
Thread.sleep(250); |
176 |
} catch(Exception e) { |
} catch(Exception e) { |
177 |
ZZLogger.exc(e, "gzz.mem.MemoryPartitioner thread!"); |
ZZLogger.exc(e, "gzz.mem.MemoryPartitioner thread!"); |
178 |
} |
} |
203 |
MemoryConsumer cons = (MemoryConsumer)i.next(); |
MemoryConsumer cons = (MemoryConsumer)i.next(); |
204 |
ConsumerRecord rec = (ConsumerRecord)consumer2record.get(cons); |
ConsumerRecord rec = (ConsumerRecord)consumer2record.get(cons); |
205 |
if(rec.curImportance == 1) |
if(rec.curImportance == 1) |
206 |
left = rec.maximum(cons, left); |
left = rec.maximum(cons, 0, left); |
207 |
else |
else |
208 |
rec.fit(cons, 0); |
rec.fit(cons, 0, 0); |
209 |
} |
} |
210 |
return; |
return; |
211 |
} |
} |
220 |
ConsumerRecord rec = (ConsumerRecord)consumer2record.get(cons); |
ConsumerRecord rec = (ConsumerRecord)consumer2record.get(cons); |
221 |
float imp = 0; |
float imp = 0; |
222 |
if(rec.curImportance > 0) |
if(rec.curImportance > 0) |
223 |
imp = (float)Math.pow(rec.curImportance/maximportance, round); |
imp = (float)Math.pow(.99 * rec.curImportance/maximportance, round); |
224 |
else if(round == 0) |
else if(round == 0) |
225 |
imp = 1; |
imp = 1; |
226 |
int byt = cons.getMaxBytes(rec.curQuality); |
int byt = cons.getMaxBytes(rec.curQuality); |
235 |
ConsumerRecord rec = (ConsumerRecord)consumer2record.get(cons); |
ConsumerRecord rec = (ConsumerRecord)consumer2record.get(cons); |
236 |
float imp = 0; |
float imp = 0; |
237 |
if(rec.curImportance > 0) |
if(rec.curImportance > 0) |
238 |
imp = (float)Math.pow(rec.curImportance/maximportance, round); |
imp = (float)Math.pow(.99 * rec.curImportance/maximportance, round); |
239 |
else if(round == 0) |
else if(round == 0) |
240 |
imp = 1; |
imp = 1; |
241 |
int byt = cons.getMaxBytes(rec.curQuality); |
int byt = cons.getMaxBytes(rec.curQuality); |
242 |
rec.fit(cons, (int)(imp * byt)); |
|
243 |
|
float priority = 1-rec.curImportance; |
244 |
|
byt = (int) (imp * byt); |
245 |
|
|
246 |
|
if(byt < cons.getReservation()) |
247 |
|
priority -= 1; // First free |
248 |
|
|
249 |
|
rec.fit(cons, priority, (int)(imp * byt)); |
250 |
} |
} |
251 |
return; |
return; |
252 |
} |
} |