(An old thread, I know
)
I'm having essentially the same question - what is done during a "Closing archive". I have a huge archive (670 GB), holding the backups of two complete machines, living on a NAS.
E.g. just now, I had the QRecall Activity window telling me:
"Closing archive
1.41 MB, 29% duplicate
51 items, 412 KB/min"
with the counter running for 45 minutes in the "Closing archive" state; capturing itself (according to the log entries) took about 7 minutes (incl. opening archive from the NAS, locating local changes and writing them).
I watched, as you said, for lots of small network action, however did not find that to occur: on average maybe 1 to 2 packets/s. I tried to sample QRecallHelper from the Acticity window, but that failed due to some unknown error. I then turned to Instruments, and found that:
1. any significant reads/writes only happened in the last minute or so
2. the QRecallHelper process took 100% of CPU usage all the time
3. the QRecallHelper process took about 700 MB of physical memory
From Instruments, I was able to do some sort of sampling, and most of QRecallHelper's threads were probably waiting on some semaphore and handling the AutoReleasePool or something like that (I'm no ObjC programmer), while there was only one with symbols starting with NSHash... that probably indicates that the time goes into hash table management (updates, finding free buckets etc.), but not into network transfers as you described earlier in this thread for an
initial capture.
Is this expected behaviour? Is there anything I could do to speed up the Closing Archive stage? Could that operation be parallelized somehow (probably not if all operations need to be performed on the same hashtable)? Mind you, the captures
do succeed - I'm just curious what happens at that stage - it seems to be completely work done in-memory.
You can (temporarily...) download an Instruments document (10 MB) of the last 15 minutes of the above "Closing Archive" operation in case it might be of interest from
here.
Regards, Christian