Re: LVM performance

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

 



Peter Grandi schrieb:
pg> Those are as such not very meaningful. What matters most is
pg> whether the starting physical address of each logical volume
pg> extent is stripe aligned (and whether the filesystem makes use
pg> of that) and then the stripe size of the parity RAID set, not
pg> the chunk sizes in themselves. [ ... ]

om> Am I right to assume that stripe alignment matters because
om> of the read-modify-write cycle needed for unaligned writes?

Sure, if you are writing as you say later. Note also that I was
commenting on the points made about chunk size and alignment:

  jk> [ ... ] This might be related to raid chunk positioning with
  jk> respect to LVM chunk positioning. If they interfere there
  jk> indeed may be some performance drop. Best to make sure that
  jk> those chunks are aligned together. [ ... ]

  om> I'm seeing a 20% performance drop too, with default RAID
  om> and LVM chunk sizes of 64K and 4M, respectively. Since 64K
  om> divides 4M evenly, I'd think there shouldn't be such a big
  om> performance penalty.

As I said, if there is an issue with "interference", it is about
stripes, not chunks, and both alignment and size, not just size.


Thanks for explaining this. I think I finally got it ;-).
I will probably recreate the array anyway, so I might as well do it right this time. I currently have three drives, but when I run out of space, I will add a fourth. So the setup should be prepared for a reshape.

Based on what I understand, the things to look out for are:

* LVM/md first extent stripe alignment: when creating the PV, specify a --metadatasize that is divisible by all anticipated stripe sizes, i.e., the least common multiple. For example, to accommodate for 3, 4 or 5 drive configurations with 64KB chunk size, that would be 768KB.

* Alignment of other extents: for the initial array creation with 3 drives the default 4MB extent size is fine. When I add a fourth drive, I can resize the extents with vgchange - though I'm a bit hesitant as the manpage doesn't explicitly say that this doesn't destroy any data. The bigger problem is that the extent size must be a power of two, so the maximum I can use with 192KB stripe size is 64KB. I'll see if that hurts performance. The vgchange manpage says it doesn't...

* Telling the file system that the underlying device is striped. ext3 has the stride parameter, and changing it doesn't seem to be possible. XFS might be better, as the swidth/sunit options can be set at mount-time. This would speed up writes, while reads of existing data wouldn't be affected too much by the misalignment anyway. Right?

Reading from the outer tracks of a RAID5 2+1 on contemporary
500GB drives should give you at least 100-120MB/s (as if it were
a 2x RAID0), and the numbers that you are reporting above seem
meaningless for a comparison between MD and DM, because there
must be something else that makes them both perform very badly.

The general slowness is due to the fact that I'm using external drives, two USB ones and one Firewire. To add insult to injury, the two USB drives share one port with a hub, so it's obviously not going to be very fast. Also, it's probably not the best idea since it adds another potential single point of failure... That said, the machine is currently down for hardware troubleshooting (see my other thread "RAID-5 data corruption" for that) and if it turns out the USB controller is indeed flaky, i might end up replacing the whole thing with a more sensible configuration.


Odds are that your test was afflicted by the page cache
read-ahead horror that several people have reported, and that I
have investigated in detail in a recent posting to this list,
with the conclusion that it is a particularly grave flaw in the
design and implementation of Linux IO.

Do you mean the "slow raid5 performance" thread from October where you pointed out that the page cache is rather CPU-intensive? Also, it might be related to read-ahead: It was 128 for md0 and 256 for dm-0, and after I set it to 3072 for both, I got about the same sequential read performance (~50MB/s) for both.

Since the horror comes from poor scheduling of streaming read
sequences, there is wide variability among tests using the same
setup, and most likely DM and MD have a slightly different
interaction with the page cache.

PS: maybe you are getting 40-50MB/s only because of some other
    reason, e.g. a slow host adapter or host bus, but whatever
    it is, it results in an improper comparison between DM and
    MD.

Okay, I'll shut up. :-)

--
Oliver
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux