All of lore.kernel.org
 help / color / mirror / Atom feed
* [linux-lvm] why LVM reads when I tell it to write?
@ 2009-03-23 15:38 Tomasz Chmielewski
  2009-03-23 21:23 ` Larry Dickson
  0 siblings, 1 reply; 2+ messages in thread
From: Tomasz Chmielewski @ 2009-03-23 15:38 UTC (permalink / raw)
  To: LVM general discussion and development

Why is LVM reading large amounts of data when I tell it to write only?


For example, this is what iostat shows when writing to a raw partition
(when doing "dd if=/dev/zero of=/dev/sdb5", iostat output every second):

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb              80.81         0.00      5171.72          0       5120

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb              78.00         0.00      4992.00          0       4992

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb              81.82         0.00      5236.36          0       5184

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb              77.00         0.00      4928.00          0       4928

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb              79.21         0.00      5069.31          0       5120


This is what happens if we go through LVM - look how much is read before 
it actually writes anything:

(when doing "dd if=/dev/zero of=/dev/test/test_volume").

What's interesting, if I add i.e. bs=64k to dd, I don't see these unexpected
reads on LVM any more. Why does it happen?


Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb             212.87       851.49         0.00        860          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb             956.57      3826.26         0.00       3788          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb            1083.84      4335.35         0.00       4292          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb            1016.00      4064.00         0.00       4064          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb            1035.64      4142.57         0.00       4184          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb            1034.00      4136.00         0.00       4136          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb             965.66      3862.63         0.00       3824          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb            1025.00      4100.00         0.00       4100          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb             991.92      3967.68         0.00       3928          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb            1032.00      4128.00         0.00       4128          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb            1009.90      4039.60         0.00       4080          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb             366.33      1330.61      4040.82       1304       3960

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb            1016.16      4060.61        76.77       4020         76

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb             383.17      1394.06      4055.45       1408       4096

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb             741.00      2904.00      1800.00       2904       1800

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb             638.61      2475.25      2273.27       2500       2296

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb             421.00      1560.00      3720.00       1560       3720

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb             955.56      3802.02       501.01       3764        496

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb             275.76       965.66      4016.16        956       3976

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb             853.00      3384.00       840.00       3384        840

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb             560.40      2130.69      3223.76       2152       3256

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb             500.00      1907.07      2787.88       1888       2760

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb             133.00       352.00      5296.00        352       5296

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb              53.00         0.00      6244.00          0       6244

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb             267.00       904.00      4840.00        904       4840

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb              52.00         0.00      6240.00          0       6240



-- 
Tomasz Chmielewski
http://wpkg.org

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [linux-lvm] why LVM reads when I tell it to write?
  2009-03-23 15:38 [linux-lvm] why LVM reads when I tell it to write? Tomasz Chmielewski
@ 2009-03-23 21:23 ` Larry Dickson
  0 siblings, 0 replies; 2+ messages in thread
From: Larry Dickson @ 2009-03-23 21:23 UTC (permalink / raw)
  To: LVM general discussion and development

[-- Attachment #1: Type: text/plain, Size: 5945 bytes --]

Hello Tomasz,

An experiment with dd to a plain file indicates its default block size is
512 bytes. Given that, the most common cause of reads when writing is that
LVM may insist on writing aligned full pages or chunks. This would force
read-modify-writes if it's not smart enough to preview enough commands to
see it's going to overwrite the whole chunk. That would be solved if the
block size is a multiple of chunk size (assuming of course that it is
aligned).

Larry Dickson
Cutting Edge Networked Storage

On 3/23/09, Tomasz Chmielewski <mangoo@wpkg.org> wrote:
>
> Why is LVM reading large amounts of data when I tell it to write only?
>
>
> For example, this is what iostat shows when writing to a raw partition
> (when doing "dd if=/dev/zero of=/dev/sdb5", iostat output every second):
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb              80.81         0.00      5171.72          0       5120
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb              78.00         0.00      4992.00          0       4992
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb              81.82         0.00      5236.36          0       5184
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb              77.00         0.00      4928.00          0       4928
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb              79.21         0.00      5069.31          0       5120
>
>
> This is what happens if we go through LVM - look how much is read before it
> actually writes anything:
>
> (when doing "dd if=/dev/zero of=/dev/test/test_volume").
>
> What's interesting, if I add i.e. bs=64k to dd, I don't see these
> unexpected
> reads on LVM any more. Why does it happen?
>
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb             212.87       851.49         0.00        860          0
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb             956.57      3826.26         0.00       3788          0
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb            1083.84      4335.35         0.00       4292          0
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb            1016.00      4064.00         0.00       4064          0
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb            1035.64      4142.57         0.00       4184          0
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb            1034.00      4136.00         0.00       4136          0
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb             965.66      3862.63         0.00       3824          0
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb            1025.00      4100.00         0.00       4100          0
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb             991.92      3967.68         0.00       3928          0
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb            1032.00      4128.00         0.00       4128          0
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb            1009.90      4039.60         0.00       4080          0
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb             366.33      1330.61      4040.82       1304       3960
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb            1016.16      4060.61        76.77       4020         76
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb             383.17      1394.06      4055.45       1408       4096
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb             741.00      2904.00      1800.00       2904       1800
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb             638.61      2475.25      2273.27       2500       2296
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb             421.00      1560.00      3720.00       1560       3720
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb             955.56      3802.02       501.01       3764        496
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb             275.76       965.66      4016.16        956       3976
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb             853.00      3384.00       840.00       3384        840
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb             560.40      2130.69      3223.76       2152       3256
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb             500.00      1907.07      2787.88       1888       2760
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb             133.00       352.00      5296.00        352       5296
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb              53.00         0.00      6244.00          0       6244
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb             267.00       904.00      4840.00        904       4840
>
> Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
> sdb              52.00         0.00      6240.00          0       6240
>
>
>
> --
> Tomasz Chmielewski
> http://wpkg.org
>
> _______________________________________________
> linux-lvm mailing list
> linux-lvm@redhat.com
> https://www.redhat.com/mailman/listinfo/linux-lvm
> read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/
>

[-- Attachment #2: Type: text/html, Size: 6977 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-03-23 21:24 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-23 15:38 [linux-lvm] why LVM reads when I tell it to write? Tomasz Chmielewski
2009-03-23 21:23 ` Larry Dickson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.