Re: Turn off amgtar sparse detection for better performance
Exuvo <[email protected]> Sat, 7 Sep 2024 14:59:50 +0200
| Newsgroups | gmane.comp.archivers.amanda.user |
|---|---|
| Message-ID | <[email protected]> |
I have 1 sparse DB file at 100MB, it is not worth supporting that for 1/4 backup speeds over my 16TB backup run.
If any of my users (only 2 of them) were to use TB sized sparse files they are not getting those files back on restore and a complementary ban.
Sure if you have lots of large VMs, then yes keep sparse support enabled for those DLEs but i would not have it enabled by default when it comes at such a large cost.
For me block de-duplication is a larger issue but sparse support does nothing for that anyways.
Anton "exuvo" Olsson
[email protected]
On 2024-09-06 22:58, Jon LaBadie wrote:
> On Sat, Sep 07, 2024 at 01:19:03AM +1000, meku wrote:
>> Thank you for the amazing tip. I also benchmarked similar results: amgtar
>> was averaging 140MB/s with --sparse, and with sparse disabled it now
>> averages 600MB/s. I expect this will have a huge improvement on backup
>> times.
>>
>> On Sat, 31 Aug 2024 at 10:57, Exuvo <[email protected]> wrote:
>>
>>> I have been trying to figure out why tar run by amanda was so much slower
>>> than my manual tar runs.
>>> The culprit is tar --sparse (which is on by default in amgtar) which for
>>> me maxes out 1 CPU core and reduces tar's read speed to around 130MB/s for
>>> me on a ZFS filesystem with 1GB files.
>>> I turned that option off and now it can read at 500MB/s with only 30% CPU
>>> usage.
>>>
>>> I suspect this will also resolve the slow read speeds i have with lots of
>>> tiny files as tar was also capped on CPU there but i had assumed it was
>>> blocking on IO.
>>>
>
> Take these cautionary comments as coming from someone uncertain of their accuracy.
> A sparse file is one which has some blocks to which no data has been written.
>
> For example, I had a UNIX Sys Adm whom I despised going round in circles trying
> to figure something out. These were the days of GB sized disks being large.
> Being a control freak, he set the user file size limit (ulimit -f) to about 4MB.
> If you needed larger files you had to get dispensation from him.
>
> I wrote a C program that simply created a file, wrote one byte at the start. It then "seeked" to 1TB, wrote one more byte, and closed the file. To most command line programs it was a 1TB file, bigger than the
> user limit and 4 times bigger than the entire disk. Do a wc, a cat, ls -l,
> etc and it was 1TB. But it only used 2 of the millions of disk blocks available. If you cat'ted the file, the system supplied a TB of null
> bytes between the two single characters I actually wrote to the file.
>
> So what would happen if you amanda-backed-up that file? Without the
> --sparse flag of amgtar the system would efficiently supply a 1TB file with lots of null bytes. If you compressed your backup, gzip would shrink those nulls to almost nothing. But what would happen if you
> restored that file from backup? You better have lots of room, you
> will get the entire 1TB file, null bytes included. Nothing in the
> backup says it was originally sparse.
>
>
> I suggest you consider whether to use --sparse on a DLE by DLE basis.
> You may have some file systems (likely dedicated to a single application) that are likely to use sparse files. Database managers for
> example. Maybe Virtual Machines. Maybe ???
>
> Check the effect of --sparse on them. Time/speed, size, and VERY
> important, restoration.
>
> You may also want to delve deeper into gtar's use of --sparse. It is
> configurable. Here are 3 pieces from the man page.
>
>
> --hole-detection=METHOD
> Use METHOD to detect holes in sparse files. This option implies --sparse.
> Valid values for METHOD are seek and raw. Default is seek with fallback
> to raw when not applicable.
>
> --sparse-version=MAJOR[.MINOR]
> Set which version of the sparse format to use. This option implies
> --sparse. Valid argument values are 0.0, 0.1, and 1.0. For a
> detailed discussion of sparse formats, refer to the GNU Tar Manual,
> appendix D, "Sparse Formats". Using the info reader, it can be
> accessed running the following command: info tar 'Sparse Formats'.
>
> -S, --sparse
> Handle sparse files efficiently. Some files in the file system may have
> segments which were actually never written (quite often these are database
> files created by such systems as DBM). When given this option, tar attempts
> to determine if the file is sparse prior to archiving it, and if so, to
> reduce the resulting archive size by not dumping empty parts of the file.
>
> Good Luck,
> Jon
>