On Monday 26 March 2007 14:00, Martin Simmons wrote: > >>>>> On Sat, 24 Mar 2007 13:35:28 +0100, Kern Sibbald said: > > > > Hello, > > > > As you may remember, one of the things I am working on for version 2.1.x is > > performance. My most recent work on performance has been to review and > > re-write the pruning and purging code. Over the years, this code has been > > added to and patched, and there are a number of issues that I want to > > address: > > > > 1. Review the pruning algorithms to improve the SQL. > > 2. Pruning during "status dir" > > 3. User complaints that it requires two passes to recycle Volumes > > > > The basic algorithm for recycling volumes is documented in the manual, and it > > will remain unchanged. However, I have now re-written the prune/purge code > > to do the following things: > > > > 1. Reduce unnecessary SQL calls to a minimum > > 2. When pruning, submit SQL statements that prune up to 1000 jobs > > in a single SQL statement rather than 1000 separate SQL statements. > > 3. Prune only a single volume if the SD requests pruning rather than > > pruning *all* the volumes in the Pool. > > 4. After pruning a Volume, explicitly check if it can be marked as Purged. > > 5. Ensure that there are not multiple copies of the same code (pruning and > > and purging share a lot code, some of which was duplicated). > > > > The net result is not a huge gain in performance, except in a few exceptional > > cases, but the code base is much cleaner, and I believe I have corrected at > > least one case where pruning would be performed but Bacula did not detect and > > hence mark the Volume purged. > > > > There are two issues where I would appreciate a bit of user feedback: > > > > 1. Previous when Bacula needed a new Volume, it would prune *all* volumes > > in the current pool. Now it prunes only one at a time, until it finds one > > that has been Purged. This means that less pruning will be done, and > > database records will tend to remain longer (possibly much longer). > > Although individual volumes can be prunned by command, there is no > > command to prune a whole pool. > > Re "until it finds one that has been Purged": will it still consider other > volumes if the newly-purged tape is not in the drive?
What it will do is accept any Volume currently in the drive providing the Volume is in append or purged modes. What it will not do is prune all volumes in the pool. It will purge the first one that it finds that can be pruned. If you have pre-loaded a volume you think will be purged, when the SD finds a volume in the drive, it asks the Dir if it can be used. The Dir will then carefully check to see if the volume has expired and can be reused, and it will attempt to prune the volume. > > E.g. if there are two tapes A and B, both past their Volume Retention times, > what will happen if tape A gets purged first but tape B is in the drive? > Currently tape B is purged and recycled as well, which I think is the correct behaviour. Yes, I that is what happens. However, in looking at the code to verify this, I noticed that I forgot to update the code for pruning a single volume to the new algorithms. I am now fixing this so it will use the same more efficient code. It would have worked but using somewhat older code. > > Similarly, if tape A is in the drive today and gets purged and recycled, what > happens if tomorrow tape B is in the drive? Will it be purged and recycled as > well? It should work correctly, providing I haven't introduced a new bug ... > > These are cases where it currently prints "Recycled current volume" Yes. Regards, Kern ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Bacula-users mailing list Bacula-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bacula-users