Hello, Sorry, this is much longer than I had planned. If you have large FileSets, please read at least the last 3 or 4 paragraphs.
I would like to say that I am relatively happy with release 2.0.x. As with every major release, there are always "teething" problems in the first few versions, but my feeling is that this release has had fewer and far less serious bugs than previous versions. In case you are not aware, version 2.0.2 is the most recent release. I now have a few more bug fixes in the CVS, but I don't consider them serious enough to make an additional release just for them. As you probably know, my two personal topics for the next release are: 1. Bacula GUI, now going by the user preferred name "bat". 2. Performance improvements. 1. GUI bat is progressing nicely, but a bit slower than I expected due to item #2 (see below). It now communicates with the Director, and the GUI interface is all defined using designer (GUI layout program) forms. Though my implementation is not very elegant, I've also managed to implement the console and a dummy restore "page" with designer in separate subdirectories. The restore page does nothing, but it does put up an interface that Eric sent me, which is the same as the brestore GUI. Having the pages implemented with designer and in separate subdirectories will vastly simplify adding new pages (i.e. functionality) and allowing multiple developers to work at the same time. I'm currently adding code to obtain the default values from Bacula (jobs, pools, storage, ...) so that it can display dialogs similar to the gnome console, where the dialog "knows" which jobs can be selected, ... 2. Performance I have planed on implementing the following things: - Immediate disconnect of the FD from the SD after sending all files to the SD. This will permit Laptops to send the data, then disconnect, even if there is spooling or attribute insertion to be done. This is now implemented in the CVS. - Database performance improvements in several different areas, the most important being faster insertion of attributes. Eric and Marc are working on this, and have submitted a working patch that is not yet integrated, but that gives significant speed improvements especially for PostgreSQL Another area is faster pruning, for which I have a patch, but it is not yet tested. - Transmitting attributes to the Director in a separate thread while spooling/despooling the data. This remains to be started. - Improving the performance of building the in-memory restore tree. You probably don't know that in 2005 (yea two years ago), I wrote a red-black binary tree class for Bacula with the intention of using it for the in-memory restore tree file lists. I completed the code, but never integrated it into the tree routines (if I remember correctly, this was because the tree traversal routines were hand crafted linked lists) Since then, I have converted the tree lists to be Bacula dlist classes, (doubly linked list) with a "fake" binary sort, which improved performance significantly. The red-back binary trees remained unused awaiting integration. An amazing thing recently happened. Rudolf Cejka, being hit by directories with lots of files, implemented AA binary tree routines that he calls tlist to replace the Bacula dlist routines in the restore code. It turns out that AA trees are a simplified form of red-black trees that give similar performance, but not quite as consistent as red-black trees (AA trees remain better balanced than rb trees, but that costs a bit more but speeds up searches). Rudolf needed to make only trivial changes to something like 5 lines of code to integrate his tlist routines. I would like to integrate his tlist code since AA tree handling is much simpler than RB trees. However, while we are working out the licensing issues, I corrected one bug that Rudolf found in my RB tree routines, and one other minor design change and integrated them in the CVS HEAD. Last night I did some performance testing with the new RB binary tree code in restore. I was hoping for a 10 times improvement. My test was rather stupid -- I created a directory containing two subdirectories, one has 419,549 files (with simple names like a.0 - a.9999, ab.xx ...) and the second directory has the same number of files with the same names. This is not really representative of what one would have on most systems (though it may simulate certain mailbox directories). So the two subdirectories have approx 840,000 files. I then backed up the directory containing the two subdirectories (SQLite2 DB) with a full save and did a restore, but stopped the process once all data was loaded into the in-memory tree. I.e. restore 5 (current) 1 (select client) quit (quit after in-memory tree is built) Now the amazing part: For Bacula 2.0.2, which uses the dlist routines, it took 58 minutes to load the in-memory tree (including the time for SQLite to lookup the records). For Bacula 2.1.2, which used my rblist routines, it took 10.05 seconds to load the in-memory tree. A speed up 513 times. I certainly expected an improvement, but not that much. At this point, I would appreciate it if some of you could pull down the CVS code (if you have problems with that let me know, and I will post a .tar.gz file to my web site) and test it with some large number of files to restore using real data. Several of you have FileSets of over 1,000,000 files, and I will be very interested to see what this code produces. I look forward to your feedback. If the code proves stable (it passes all my file based regression scripts), I will probably release it in 2.0.3 or 2.0.4. Many thanks to Rudolf for showing me how simple it was to integrate the RB tree code. Best regards, Kern ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier. Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Bacula-users mailing list Bacula-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bacula-users