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

Re: [linux-lvm] Wierd lvm2 performance problems

Hi Luca,

I gave this a little more thought ...

Luca Berra schrieb:
On Mon, Apr 20, 2009 at 03:15:12PM +0200, Sven Eschenberg wrote:
Hi Luca,

Okay, let's assume a chunk size of C. No matter what your md looks like,
the logical md volume consists of a series of size/C chunks. the very
first chunk C0 will hold the LVM header.
If I align the extends with the chunksize and the extends even have the
chunksize, then every extens PEx of my PV equals exactly a chunk on any of
the disks.
Which in turn means, if I want to read PEx I have to read some chunk Cy on
one disk, and PEx+1 would most certainly be a Chunk Cy+1 which would
reside on a different physical disk.


So the question is: Why would you want to align the first PE to the
stripesize, rather then the chunksize?

Because when you _write_ incomplete stripes, the raid code
would need to do a read-modify-write of the parity block.

Okay, the question is, how often, if you modify files at random, do you really write a full stripe, even if the cache holds back all modification for a couple minutes. I wonder how often you can take advantage of this in normal mixed load situations.

Filesystem, like ext3/4 and xfs have the ability to account for stripe
size in the block allocator to prevent unnecessary read-modify-writes,
but if you do not stripe-align the start of the filesystem you cannot
take advantage of this.

Okay, understood, but doesn't this imply, as long as my application running on top of an md and/or LV ontop of an md cannot take advantage of the layout information, it doesn't matter at all. I do see the advantage, I.E. if you have an RDBMS that can operate and organize itself ontop of some blockdevice which has a certain layout, or any filesystem taking this into account. In contrast, if I am to export the blockdevice as iSCSI target in a plain NAS, this doesn't help me at all. Now, even if I properly stripe align the pe_start, what happens if I am doing a whole disk online capacity expansion? As long as LVM cannot realign everything online, and the filesystem can realign itself (or update it's layout accordingly) online, this is pretty much pointless.


In the end it all comes down to, that in most cases aligning doesn't help, at leats not, if the whoel array configuration might change over time - or am I mistaken there?



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