Frage: Konsolidierung von Blobs

Hier finden YaCy User Hilfe wenn was nicht funktioniert oder anders funktioniert als man dachte. Bei offensichtlichen Fehlern diese bitte gleich in die Bugs (http://bugs.yacy.net) eintragen.
Forumsregeln
In diesem Forum geht es um Benutzungsprobleme und Anfragen für Hilfe. Wird dabei ein Bug identifiziert, wird der thread zur Bearbeitung in die Bug-Sektion verschoben. Wer hier also einen Thread eingestellt hat und ihn vermisst, wird ihn sicherlich in der Bug-Sektion wiederfinden.

Frage: Konsolidierung von Blobs

Beitragvon PCA42 » Di Mai 05, 2009 10:21 pm

Ich muss mal ne Frage fragen: Werden die 1 GB großen Blobs eigentlich nochmal zu einem Merge herangezogen, wenn die Gap's darin eine bestimmte Größe erreicht haben? Denn sonst würde ja bei intensiven DHT mit der Zeit viel toter Platz entstehen.
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home

Re: Frage: Konsolidierung von Blobs

Beitragvon Orbiter » Di Mai 05, 2009 10:59 pm

hm, an diesen Fall habe ich noch nicht gedacht; entsprechend gibts keine Funktion dazu. In diesem Zusammenhang hatte ich mal geplant, dass BLOBs nicht nur gemerged, sondern auch gesplittet werden können. Das Splitten sollte den Effekt haben, dass sie in 'mundgerechte' Stück zerhackt werden, die ohne große Selektion mehr vom DHT-Versende Prozess verschickt werden können - in einem neuen Protokoll. Das ganze wäre also noch ein weiterer Weg und nicht so schnell zu machen. Das wäre aber die Edelversion.

Eine andere Möglichkeit wäre es, den Merge-Prozess zu anzupassen, dass er bei der Größenberechnung die Gaps mit hinzuzieht. Ich muss mal sehen ob das einfach ist. Dann könnte man auch große BLOBs so lange mit kleineren BLOBs mergen, bis sie 2GB groß sind. Das kommt auf die to-dos, aber ich glaube ich lasse vielleicht auch die Finger davon vor dem nächsten Release damit nicht wieder was unstable wird. So lange muss man dieses Problem dann halt mal mitschleppen, ich hoffe es ist kein showstopper.
Orbiter
 
Beiträge: 5798
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Frage: Konsolidierung von Blobs

Beitragvon PCA42 » Mi Mai 06, 2009 7:08 am

Mit dem nächsten Release geb ich dir recht, da sollte das echt nicht rein. Im Augenblick läuft Yacy sehr stabil.

Aber ich würde das nicht mit in die normale Merge-Logik mit einbauen wollen. Ich würde mir das eher so vorstellen, dass man diese Konsolidierung auch Nutzen kann, um RWI-Fragmente aus verschiedenen Blobs zusammenzuführen. Damit wird dann auch wieder die Performance beim Suchen erhöht, weil weniger Dateien angefasst werden.

DHT - Guter Punkt für nach dem Release: Können die zu versendenden Datenmengen nicht wieder erhöht werden? Der DHT-Puffer kann ja nun nicht mehr volllaufen.

Btw.: Warum eigentlich 2 GB Blobs? Die sind derzeit auf 1 GB begrenzt.
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home

Re: Frage: Konsolidierung von Blobs

Beitragvon PCA42 » Do Mai 07, 2009 7:10 am

Hab noch eine Idee dazu: man könnte doch nach 10 Tagen (oder auch eine andere Zeit) einfach die zwei ältesten Blobs miteinander "kreuzen" und dann daraus wieder zwei entstehen lassen, wobei der frei Platz insgesamt einem zugeschlagen wird. So laufen die Blobs immer 10 Tage nach ihrer Entstehung durch eine Optimierung. Der erste wird als neuer Blob (neues Entstehungsdatum abgelegt), der zweite bleibt bei seinem Datum und wird dann nach seinen 10 Tagen mit dem nächst jüngeren "gepaart". So wird der frei Speicherplatz der Reihe nach weitergegeben.
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home

Re: Frage: Konsolidierung von Blobs

Beitragvon sixcooler » Mo Mai 18, 2009 9:49 pm

Auch auf die Gefahr hin das ich mich als 'Nichtversteher' oute:

Warum nicht ältere Blobs mit sich selber mergen?
das mergen läuft ja sehr gut ;) und Doubletten entstehen nicht weil sie dabei eh gefilter werden (?)

Code: Alles auswählen
Index: source/de/anomic/kelondro/blob/BLOBArray.java
===================================================================
--- source/de/anomic/kelondro/blob/BLOBArray.java   (Revision 5962)
+++ source/de/anomic/kelondro/blob/BLOBArray.java   (Arbeitskopie)
@@ -251,6 +251,14 @@
         return new File[]{f0, f1};
     }
     
+    public synchronized File unmountOldest() {
+       if (this.blobs.size() == 0) return null;
+       if (System.currentTimeMillis() - this.blobs.get(0).creation.getTime() < this.fileAgeLimit) return null;
+       File f = this.blobs.get(0).location;
+       unmountBLOB(f, false);
+       return f;
+    }
+   
     public synchronized File unmountSmallestBLOB(long maxResultSize) {
         return smallestBLOB(null, maxResultSize);
     }
Index: source/de/anomic/kelondro/text/ReferenceContainerArray.java
===================================================================
--- source/de/anomic/kelondro/text/ReferenceContainerArray.java   (Revision 5962)
+++ source/de/anomic/kelondro/text/ReferenceContainerArray.java   (Arbeitskopie)
@@ -279,6 +279,15 @@
             merger.merge(ff[0], ff[1], this.array, this.payloadrow, newContainerBLOBFile());

             donesomething = true;

         }

+       

+        // at least merge very old files with it self

+        while (this.merger.queueLength() < 1) {

+            File ff = this.array.unmountOldest();

+            if (ff == null) break;

+            Log.logInfo("RICELL-shrink4", "unmountOldest()");

+            merger.merge(ff, ff, this.array, this.payloadrow, newContainerBLOBFile());

+            donesomething = true;

+        }



         return donesomething;

     }


sixcooler
 
Beiträge: 494
Registriert: Do Aug 14, 2008 5:22 pm

Re: Frage: Konsolidierung von Blobs

Beitragvon PCA42 » Di Mai 19, 2009 4:51 am

Weil die RWIs in den verschiedenen Blobs mehrfach vorkommen können. Dadurch ist im Augenblick der RWI-Index, der im Speicher gehalten wird, sehr groß. Auch müssen durch diesen Effekt bei einem Suche mehrere Einträge aus den Blobs zusammengetragen werden. Das frisst Performance bei der Suche.
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home

Re: Frage: Konsolidierung von Blobs

Beitragvon sixcooler » Di Mai 19, 2009 12:58 pm

PCA42 leider verstehe ich Deine Antwort wenig, bin aber sehr daran interessiert.

Meine Idee war alte Blobs (>1 Monat) mit sich selber zu mergen weil bei diesen zu erwarten ist das schon einiges durch DHT-out an 'totem' Platz entstanden ist, sie aber aufgrund ihrer Größe lange nicht mehr mit anderen gemerged wurden und wohlmöglich nie werden (wenn nah 1GB).

2 gleiche Blobs haben natürlich gleiche RWIs, werden doch aber beim merge nur einmal in das neue Blob geschrieben?
Der 'tote' Platz wird bereinigt und das entstehendde Blob wird kleiner(und kann wohlmöglich mit einem anderen gemerged werden).
sixcooler
 
Beiträge: 494
Registriert: Do Aug 14, 2008 5:22 pm

Re: Frage: Konsolidierung von Blobs

Beitragvon Orbiter » Di Mai 19, 2009 1:27 pm

also ein Umkopieren kann man machen. Ich würde das nicht als BLOB mit sich selber mergen zusammenhacken, das wäre einerseits unsauber und andererseits mit viel Overhead verbunden, weil man die BLOBs in dem File ja auch noch in RWIs umwandeln muss. Ich ziehe das Umkopieren mal in Betracht, kann das nur nicht jetzt machen weil ich an was ganz anderem dran bin...
Orbiter
 
Beiträge: 5798
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Frage: Konsolidierung von Blobs

Beitragvon PCA42 » Di Mai 19, 2009 2:27 pm

Dann nennen wir das Kind umkopieren. Wichtig wären mir die zu erwartenden Effekte. Ganz wichtig dabei ist mir Reduzierung der RWI-Verteilung über die Dateien und damit die Anzahl der RWIs. Mir geht auch bald der Speicher aus mit 81Mio RWIs.
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home

Re: Frage: Konsolidierung von Blobs

Beitragvon Orbiter » Mo Jan 04, 2010 7:18 pm

hier gehts weiter: viewtopic.php?p=18475#p18475
Orbiter
 
Beiträge: 5798
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main


Zurück zu Fragen und Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron