[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Efficient Create Swap File?

Mike McCarty wrote, On 03/27/2009 04:01 PM:
I've seen various recommendations for adding swap files after
system creation, and it occurs to me that the "standard" technique
may not be the most efficient. I realize that one rarely creates
swap files, but nonetheless on occasion one needs to "precreate"
some file or other, then do something to it, like mkfs etc.

Anyway, mostly trying to improve my general knowledge of
how best to use the abilities of the system, and my understanding
of the relative merits of doing things one way vs. another,
not trying to speed up rarely performed procedures.

The standard technique is to do something like

$ dd if=/dev/zero of=/path/to/new/file bs=1024 count=524288
$ mkswap /path/to/new/file

to create a 512MB file. The second command may be different,
depending upon the circumstances, but the technique remains
the same. In effect, the new file gets written twice.

It occurs to me that one could, instead, do

$ dd if=/dev/zero of=/path/to/new/file bs=1M seek=511 count=1
$ mkswap /path/to/new/file

and have the same results, requiring only writing the file


My guess is that when the swap file with a "hole" first gets used, there
will be a long(ish?) pause while some part or parts of the sparse file
get filled in. This is not so good for a swap file, but when one
is actually going to rewrite most of the file anyway, and is only
using the file itself as more or less an indicator of the size, then
it might make sense.



This brings up a question for me...
If using the first method, while in use or during the mkswap command, does the bits written to the file end up at the same physical locations as the 0s they are replacing? if they do, then the first method on a disk that is not fragmented, would give you a contiguous swap space.
if they don't, then like you say, what is the point of writing all the 0s to disk?

So then do we have to think about our file systems?
msdos/vfat would write to the same locations I think.
ext2 would write to the same locations I think.
ext3 without journaling, would write to the same locations I think.???
ext3 with journaling, pathology???
ext4 with/without journaling, I have not used or read about.???

Todd Denniston
Crane Division, Naval Surface Warfare Center (NSWC Crane)
Harnessing the Power of Technology for the Warfighter

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]