[linux-lvm] My explanation, correct? Re: Parallel IO on striped logic volume?
Xiaoxiang Liu
xiliu at ncsa.uiuc.edu
Thu Sep 27 20:56:28 UTC 2001
>I build a striped LV on 4 scsi disks. If I do sequential IO on one disk
>with buffer size 4k, the bandwidth is 9MB/s. Then I do sequential IO on
>LV with buffer size 16k. Theoretically I can get almost 4*9=36MB/s
>because LVM stripe 4k IO on every disk but I only get 18MB/s. I don't
>know where I lost so much performance or it is the overhead of LVM?
Later I repeated all those tests and used different benchmarking tools.
But this time I care more about the distribution of the execution time.
Below is my test results generated by lmdd from LMBETCH tool and I use
"time" command to get the real time and system time and raw command to
implement Raw IO.
( Here LVMn means Logical Volume built on n disks with striping size 4K)
Objects Chunk_Size Total_IO_Size Bandwidth Real_time System_time
------- ---------- ------------- --------- --------- -----------
Single disk 4KB 1GB 8.7MB/s 117.6s 37.1s
LVM2 8KB 2GB 12.7MB/s 161.2s 78.1s
LVM3 12KB 3GB 15.5MB/s 197.8s 115.6s
LVM4 16KB 4GB 17.4MB/s 235.1s 154.4s
I find only system time increases linearly and it looks like
the reason that causes the lost bandwidth of LVM3 or LVM4.
Here I have an assumption: IO_time = real_time - system_time.
If this assumption is correct, the IO times used in those four tests
are almost same and it makes sense because all tests read 1GB data from a
single disk. So theoretically we believe the time used to read nGB
data from LVMn should be same as the time used to read 1GB from a single
disk because LVM can stripe the IO to separate disks. Actually I think
the time used to read nGB from LVMn should be
n * system_time_of_single_disk + IO_time_of_single_disk
Even the calculated results can match my test results, I still feel
confused.
1) Even CPU can only serve one disk's requests at any time, there should
be some overlap of system time and IO time but in my results, I can't
find the overlap.
2) Why does system time increase linearly? For LVM4, the cpu usage becomes
65%. Isn't it too high? I think all the tests should be IO-bounded. But
tests for LVM3 and LVM4 are cpu-bounded.
>My question is why I can't see nearly linear scaling of the bandwidth
>when the buffer size is small? Does striping LVM do real parallel IO
>similar to software RAID0?
I can answer this question now because I tried raid0 and got almost same
performance as LVM. Now my questions become:
1) Is my assumption of IO time correct?
2) Is my explanation reasonable?
3) Why LVM3 or LVM4 used so much system time and have such high cpu usage?
Thanks!
--xiaoxiang
More information about the linux-lvm
mailing list