xfsrepair memory consumption
Hi all,
I'm just asking if any work has been done/is in progress to improve xfs_repair memory consumption.
I know that xfs tools use a lot of memory but IIRC someone wrote on this mailing list that s/he'll work on this issue.
But now I see that the memory requirements are increasing instead of lowering.
I discovered this because running xfs_repair 2.6.20-1 on a 300GB file system fills up the entire memory on a debian sarge (256MB Mem/256MB swap) and eventually the process is killed
....
Phase 6 - check inode connectivity...
- resetting contents of realtime bitmap and summary inodes
- ensuring existence of lost+found directory
- traversing filesystem starting at / ...
Killed
Next I tried a self compiled xfsprogs 2.8.18-1 from cvs but things get worse.
So I increased the memory to 512MB, and made sure not to use the multi thread but still no luck:
....
Phase 3 - for each AG...
- scan and clear agi unlinked lists...
- process known inodes and perform inode discovery...
- agno = 0
- agno = 1
- agno = 2
Killed
Finally using the *old* version 2.6.20-1 with 512MB of memory xfs_repair finished with success, but using near all the available memory.
More info:
enceladus:~# xfs_info /dev/sdb1
meta-data=/media/iomega300 isize=256 agcount=16, agsize=4578901 blks
= sectsz=512
data = bsize=4096 blocks=73262416, imaxpct=25
= sunit=0 swidth=0 blks, unwritten=1
naming =version 2 bsize=4096
log =internal bsize=4096 blocks=32768, version=1
= sectsz=512 sunit=0 blks
realtime =none extsz=65536 blocks=0, rtextents=0
enceladus:~# df /dev/sdb1
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb1 292918592 164698268 128220324 57% /media/300
enceladus:~# df -i /dev/sdb1
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sdb1 293049664 6511481 286538183 3% /media/300Thanks in Advance,
Daniele P.
Quoted 3 lines · Daniele P.
Hi all,
I'm just asking if any work has been done/is in progress to improvexfs_repairmemory consumption.
Work is in progress, but it won't really solve your problem. See, you've got:
Quoted 3 lines
enceladus:~# df -i /dev/sdb1 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sdb1 293049664 6511481 286538183 3% /media/300
6 million inodes in your filesystem, and a certain points in repair we have to hold indexes of them all (plus some state) in memory. Phase 6 is one of these points.
In terms of inode count, I generally use the rule that for every 10million inodes you need a gigabyte of RAM for repair - you needed about 500MB for 6million inodes.
We have been trimming bits and pieces off this per-inode usage but there comes a point where you just need more memory. That is, as filesystem size grows, so does the amount of memory needed to repair it in a finite time....
Cheers,
Dave.
Signature · 3 lines
Dave Chinner Principal Engineer SGI Australian Software Group
Hi Daniele,
The nlink/phase 7 patch I recently sent out does reduce this inode memory requirements which should address the issue you see.
I'm going to make one further optimisation in this patch which I will repost most likely next week.
Regards,
Barry.
Quoted 42 lines
-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of David Chinner
Sent: Wednesday, 21 March 2007 9:13 AM
To: Daniele P.
Cc: [email protected]
Subject: Re: xfsrepair memory consumptionQuoted 3 lines · Daniele P.
Hi all,
I'm just asking if any work has been done/is in progress to improvexfs_repairmemory consumption.Work is in progress, but it won't really solve your problem. See, you've got:
Quoted 3 lines
enceladus:~# df -i /dev/sdb1 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sdb1 293049664 6511481 286538183 3% /media/3006 million inodes in your filesystem, and a certain points in repair we have to hold indexes of them all (plus some state) in memory. Phase 6 is one of these points.
In terms of inode count, I generally use the rule that for every 10million inodes you need a gigabyte of RAM for repair - you needed about 500MB for 6million inodes.
We have been trimming bits and pieces off this per-inode usage but there comes a point where you just need more memory. That is, as filesystem size grows, so does the amount of memory needed to repair it in a finite time....
Cheers,
Dave.
Signature · 3 lines
Dave Chinner Principal Engineer SGI Australian Software Group
Quoted 5 lines · you
Hi Daniele,
The nlink/phase 7 patch I recently sent out does reduce this inode memory requirements which should address the issue you see.
Hi Barry,
maybe this could help. A simple ps -u during xfs_repair show an increasing memory usage in phase 6 and 7 for 2.8.18-1. Unfortunately with 2.6.20-1 the memory usage is exploding in phase 2.
Regards,
Daniele P.
Quoted 4 lines · you
On Tue, Mar 20, 2007 at 03:32:05PM +0100, Daniele P. wrote:
6 million inodes in your filesystem, and a certain points in repair we have to hold indexes of them all (plus some state) in memory. Phase 6 is one of these points.
Hi David,
thanks for the explanation.
Quoted 3 lines
In terms of inode count, I generally use the rule that for every 10million inodes you need a gigabyte of RAM for repair - you needed about 500MB for 6million inodes.
This is true for 2.6.20-1, but 2.8.18-1 use a lot of memory in phase 2.
I just want to point out the *increasing* memory requirements rather than the total amount of memory needed to repair an xfs file system.
Regards,
Daniele P.