This is the mail archive of the
cygwin
mailing list for the Cygwin project.
RE: NTFS fragmentation
- From: "Gary R. Van Sickle" <g dot r dot vansickle at worldnet dot att dot net>
- To: <cygwin at cygwin dot com>, "'Vladimir Dergachev'" <vdergachev at rcgardis dot com>
- Date: Wed, 2 Aug 2006 18:08:57 -0500
- Subject: RE: NTFS fragmentation
[cc'ing you per your request]
> From: Vladimir Dergachev
> Sent: Wednesday, August 02, 2006 5:33 PM
> Subject: NTFS fragmentation
>
>
> Hi all,
>
> I have encountered a rather puzzling fragmentation
> that occurs when writing files using Cygwin.
>
> What happens is that if one creates a new file and
> writes data to it (whether via a command line redirect or
> with a Tcl script - have not tried C
> yet) the file ends up heavily fragmented.
>
> In contrast, native Windows utilities do not exhibit
> this issue.
>
> Someone suggested to me that Windows requires an
> expected file length to be passed at the time of open, thus I
> searched on Google and found "fsutil" program that allows to
> reserve space on the filesystem.
>
> I attached a small Tcl script that, when run, creates
> two 30 MB files - one using regular open/write pair (and
> which is fragmented into about 300 pieces on my system) and
> one using fsutil/open in append mode/seek 0 method.
>
> To see the problem defragment your system, run the test
> script and then run analyze and ask to view report. You will
> see a.dat at top of the list, while b.dat never appears in
> the report.
>
> Despite the workaround, it is still kinda hard for me
> to believe that anyone has designed a filesystem that needs
> to know what is the file size going to be - especially for a
> single program writing on an almost empty disk. Perhaps there
> is some sort of environment variable that I need to set ?
>
> Any suggestions and comments would be greatly
> appreciated.
> Please CC me - I am not on the list.
>
> thank you very much
>
> Vladimir Dergachev
I'll try your test case when I get a chance, but my WAG is that you're
seeing the effects of Cygwin's creation of sparse files by default for any
file beyond a certain size. I unfortunately do not recall what that size
is. What happens as you change FILE_SIZE and/or BUFFER_SIZE in your script,
to maybe a small multiple of your cluster size?
--
Gary R. Van Sickle
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/