Re: Rdiff-backup v2.2.6 list increments slowed by uid or gid name lookups
Ty Boyack <[email protected]> Fri, 18 Jul 2025 00:44:25 -0600
| Newsgroups | gmane.comp.sysutils.backup.rdiff-backup.general |
|---|---|
| Message-ID | <[email protected]> |
Hi Eric, Thanks very much for the follow up and for keeping the ideas flowing! The command I am using is just: rdiff-backup list increments /path/to/backup/ so I'm not trying to get the size. I like your thought though, so I just tried both: rdiff-backup list increments --no-size /path/to/backup/ and rdiff-backup list increments --size /path/to/backup/ and --no-size was the same behavior as not using any size related option, while adding --size was slower (but of course has more info). I can see the issue most clearly with a command like: strace -e newfstatat -f rdiff-backup list increments --no-size /path/to/backup/ 2>&1 | egrep '/path/to/backup' (The pipe to egrep is just to clean up the output and not show all the newfstatats to system files.) Rdiff-backup appears to do: 1) a few newfstatat calls to files within the rdiff-backup-data folder, then 2) a newfstatat of each top level folder in the backup repo, and then 3) newfstatat calls on files within the rdiff-backup-data folder like all of the increments.date.dir and current_mirror files. So if my backup repository looks like: /path/to/backup/directoryA /path/to/backup/directoryB /path/to/backup/directoryC /path/to/backup/rdiff-backup-data I'd see groups of newfstatat calls in this order: /path/to/backup/ /path/to/backup/rdiff-backup-data /path/to/backup/directoryA * /path/to/backup/directoryB * /path/to/backup/directoryC * /path/to/backup/rdiff-backup-data * /path/to/backup/rdiff-backup-data/increments.date.dir... /path/to/backup/rdiff-backup-data/increments.date.dir... /path/to/backup/rdiff-backup-data/increments.date.dir... /path/to/backup/rdiff-backup-data/current_mirror The slow behavior is coming from the time it spends outside of the rdiff-backup-data folder -- the ones marked with an asterisk. I am running rdiff-backup 2.2.6 on Rocky Linux 10. Sorry I didn't mention that before! Again, thanks for any thoughts on this. -Ty On 7/17/25 11:33 PM, [email protected] wrote: > ** Caution: EXTERNAL Sender ** > > Hi, > > sorry, I misread you. > > Do you use the list increments with size? It takes the size directly > from the file system, as it isn't stored anywhere, and can take quite a > long time. If not, I'd have to dig deeper into the code. > > KR, Eric > > On 12/07/2025 09:53, Ty Boyack wrote: >> Thanks for that thought, Eric! Just for clarity, backups work great, are >> not unnecessarily slow, and I am happy with the way the user id mappings >> all work. It is just the "list increments" options that is causing the >> question. >> >> I think the --preserve-numerical-ids is not available during a "list >> increments" operation. My question is really wondering what happens >> during a list increments process. I would think it would look into the >> rdiff-backup-directory and get the list of increment directories or >> files and return the list of increments. But instead it stats all of the >> top level folders which is what takes so much time. Why does it need to >> stat all the top level directories? What is gained by stating all those >> rather than just pulling data from the rdiff-backup-data folder? in >> other words I don't want to request a complex caching mechanism if it is >> just a step that could be skipped altogether. >> >> Thanks for the help and thoughts, >> >> -Ty >> >> >> >> On 7/12/25 1:36 AM, [email protected] wrote: >>> ** Caution: EXTERNAL Sender ** >>> >>> Hi, >>> >>> rdiff-backup saves by default user/group names so that they can be >>> restored on a different server even if they have different uid/gid. >>> You could try with --preserve-numerical-ids but I'm not sure this will >>> help because I think rdiff-backup will still try to save both, just >>> favorize one or the other. >>> >>> So, if that doesn't help, we could think about a caching mechanism but >>> not any time soon. I'd ask you to create an issue as RFE for this. >>> >>> KR, Eric >>> >>> On 11/07/2025 12:15, Ty Boyack wrote: >>>> Hi,b >>>> >>>> Like so many others I want to express my thanks for all the recent >>>> development (and previous development) that has gone into this great >>>> piece of software! >>>> >>>> I have noticed a slowdown that could be from a change in our system or >>>> from code changes in rdiff-backup, but either way I am wondering if >>>> performance could be improved. >>>> >>>> Our situation is that we have a volume of user network home >>>> directories, >>>> which has over 50,000 top level directories in it (and millions of >>>> files >>>> below that). Each directory is owned by a different user. I've been >>>> backing it up for years with rdiff-backup without any problems. >>>> >>>> As I am migrating to new storage servers, the "list increments" >>>> command >>>> is painfully slow, taking hours to complete. Tracing the system >>>> calls I >>>> see that it is doing a newfstatat() call on every one of those 50k top >>>> level directories. I don't know if this was done in previous >>>> versions or >>>> if this is new. Our previous storage systems used NIS to look up >>>> usernames/uids (which was very fast), while the new one uses Active >>>> Directory/SSSD. The calls to SSSD are what is causing the slowness, >>>> taking around half a second per call. (I'll happily entertain thoughts >>>> that this is a problem and too slow, but for now I need to accept >>>> it as >>>> a given.) >>>> >>>> My question for the rdiff-backup developers, is why do we need to do >>>> stat all these top level directories to get the list of increments at >>>> all? Shouldn't that information all be in the rdiff-backup-data >>>> folder? >>>> If we do need to do some form of stat on these top directories, can it >>>> be done in such a way as to work with numberic uid/gid info rather >>>> than >>>> initiating a call to name services? If we did not have to hit Active >>>> Directory for each of those folders the speed would be drastically >>>> improved in this use case. >>>> >>>> I have only spent a little time looking into this issue so I might not >>>> be seeing everything correctly, but I'd love to hear thoughts about >>>> this. >>>> >>>> Thanks, >>>> >>>> -Ty >>>> >>>> >>>> >>> >>> >> > > -- -==============================================================- Ty Boyack NREL IT Engineer Please put all IT help requests though the ticketing system at: https://services.warnercnr.colostate.edu/ or email to: [email protected] -==============================================================-