/[gzz]/gzz/gzz/mem/MemoryPartitioner.java
ViewVC logotype

Diff of /gzz/gzz/mem/MemoryPartitioner.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.10 by tjl, Sat Jan 18 13:30:58 2003 UTC revision 1.11 by tjl, Sat Jan 18 20:24:26 2003 UTC
# Line 114  public class MemoryPartitioner { Line 114  public class MemoryPartitioner {
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;
# Line 172  public class MemoryPartitioner { Line 172  public class MemoryPartitioner {
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                  }                  }
# Line 203  public class MemoryPartitioner { Line 203  public class MemoryPartitioner {
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          }          }
# Line 220  public class MemoryPartitioner { Line 220  public class MemoryPartitioner {
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);
# Line 235  public class MemoryPartitioner { Line 235  public class MemoryPartitioner {
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              }              }

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26