Attachment:
lvm_thin_compare_redhat2.sh
Description: Bourne shell script
[root lab-dm-cn4 md]# DEVICE_PATH=/dev/ram
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# rm -f $DEVICE_PATH
[root lab-dm-cn4 md]# mknod -m 660 $DEVICE_PATH b 1 1
[root lab-dm-cn4 md]# #check the size of ramdisk
[root lab-dm-cn4 md]# #it should be 4G as we booted the kernel with ramdisk_size=4194304
[root lab-dm-cn4 md]# echo checking ramdisk size
checking ramdisk size
[root lab-dm-cn4 md]# blockdev --getsize $DEVICE_PATH
8388608
[root lab-dm-cn4 md]# echo zeroing out ramdisk
zeroing out ramdisk
[root lab-dm-cn4 md]# dd if=/dev/zero of=$DEVICE_PATH oflag=direct bs=512 count=`blockdev --getsize $DEVICE_PATH`
8388608+0 records in
8388608+0 records out
4294967296 bytes (4.3 GB) copied, 13.8445 s, 310 MB/s
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# #let's divide the ramdisk into 2 linear ramdisks of 2G in size
[root lab-dm-cn4 md]# let fullramdisksize=`blockdev --getsize /dev/ram`
[root lab-dm-cn4 md]# let ramdisksize=$fullramdisksize/2
[root lab-dm-cn4 md]# echo 0 $ramdisksize linear $DEVICE_PATH 0 | $DMSETUP create ramdisk1
[root lab-dm-cn4 md]# echo 0 $ramdisksize linear $DEVICE_PATH $ramdisksize | $DMSETUP create ramdisk2
[root lab-dm-cn4 md]# echo checking ramdisk1 size
checking ramdisk1 size
[root lab-dm-cn4 md]# blockdev --getsize /dev/mapper/ramdisk1
4194304
[root lab-dm-cn4 md]# echo checking ramdisk2 size
checking ramdisk2 size
[root lab-dm-cn4 md]# blockdev --getsize /dev/mapper/ramdisk2
4194304
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# #constants
[root lab-dm-cn4 md]# let ONEMEG=1024*2; #translated to sectors
[root lab-dm-cn4 md]# DEVICE_PATH=/dev/mapper/ramdisk1
[root lab-dm-cn4 md]# #user defined
[root lab-dm-cn4 md]# DMSETUP=/home/jagan/src/LVM2.2.02.88/tools/dmsetup
[root lab-dm-cn4 md]# LUN=1
[root lab-dm-cn4 md]# META_DEVICE_START_SECTOR=0 #on $DEVICE_PATH this is where meta data starts
[root lab-dm-cn4 md]# let META_DEV_SIZE=8*$ONEMEG; #8M translated to sectors
[root lab-dm-cn4 md]# let DATA_DEV_SIZE=1*1024*$ONEMEG; #1G translated to sectors
[root lab-dm-cn4 md]# let PAGESIZE=64*2 #page size is 64k in sectors
[root lab-dm-cn4 md]# let DD_BS=4*1024 # dd block size = 4k bytes
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# #system defined
[root lab-dm-cn4 md]# let DATA_DEVICE_START_SECTOR=$META_DEVICE_START_SECTOR+$META_DEV_SIZE
[root lab-dm-cn4 md]# let PAGES=$DATA_DEV_SIZE/$PAGESIZE
[root lab-dm-cn4 md]# let SEEK=$PAGESIZE*512/$DD_BS # how many blocks we need to seek in dd to go to next page
[root lab-dm-cn4 md]# let BLOCKS=$DATA_DEV_SIZE*512/$DD_BS
[root lab-dm-cn4 md]# noofruns=20
[root lab-dm-cn4 md]# AIO_PATH=/root/aio-stress.exe
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# echo $DMSETUP LUNID=$LUN DEVICE=$DEVICE_PATH DEVICE_START=$META_DEVICE_START_SECTOR META_DEV_SIZE=$META_DEV_SIZE DATA_DEV_SIZE=$DATA_DEV_SIZE PAGESIZE=$PAGESIZE DD_BS=$DD_BS DATA_DEVICE_START_SECTOR=$DATA_DEVICE_START_SECTOR PAGES=$PAGES SEEK=$SEEK BLOCKS=$BLOCKS
/home/jagan/src/LVM2.2.02.88/tools/dmsetup LUNID=1 DEVICE=/dev/mapper/ramdisk1 DEVICE_START=0 META_DEV_SIZE=16384 DATA_DEV_SIZE=2097152 PAGESIZE=128 DD_BS=4096 DATA_DEVICE_START_SECTOR=16384 PAGES=16384 SEEK=16 BLOCKS=262144
[root lab-dm-cn4 md]# echo 0 $META_DEV_SIZE linear $DEVICE_PATH $META_DEVICE_START_SECTOR | $DMSETUP create tp_meta_disk$LUN
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# #zero out first 4k of meta data disk
[root lab-dm-cn4 md]# dd if=/dev/zero of=/dev/mapper/tp_meta_disk$LUN bs=4096 count=1
1+0 records in
1+0 records out
4096 bytes (4.1 kB) copied, 3.7874e-05 s, 108 MB/s
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# #create data disk
[root lab-dm-cn4 md]# echo 0 $DATA_DEV_SIZE linear $DEVICE_PATH $DATA_DEVICE_START_SECTOR | $DMSETUP create tp_data_disk$LUN
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# #create thin pool
[root lab-dm-cn4 md]# $DMSETUP create pool$LUN --table "0 $DATA_DEV_SIZE thin-pool /dev/mapper/tp_meta_disk$LUN /dev/mapper/tp_data_disk$LUN $PAGESIZE 0 " #1G page with 100 with no water mark
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# #verify that 0 pages are allocated
[root lab-dm-cn4 md]# echo verify that 0 pages are allocated
verify that 0 pages are allocated
[root lab-dm-cn4 md]# $DMSETUP status pool$LUN
0 2097152 thin-pool 0 10/2048 0/16384 -
[root lab-dm-cn4 md]# $DMSETUP message /dev/mapper/pool$LUN 0 "create_thin 0"
[root lab-dm-cn4 md]# $DMSETUP create thin$LUN --table "0 $DATA_DEV_SIZE thin /dev/mapper/pool$LUN 0"
[root lab-dm-cn4 md]# echo by now no pages should be allocated
by now no pages should be allocated
[root lab-dm-cn4 md]# $DMSETUP status pool$LUN
0 2097152 thin-pool 0 11/2048 0/16384 -
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# DEVICE_PATH=/dev/mapper/ramdisk2
[root lab-dm-cn4 md]# let LVM_DEVICE_SIZE=$META_DEV_SIZE+$DATA_DEV_SIZE;
[root lab-dm-cn4 md]# let BLOCKS=($DATA_DEV_SIZE-$PAGESIZE)*512/$DD_BS
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# #system defined
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# echo $DMSETUP LUNID=$LUN DEVICE=$DEVICE_PATH DEVICE_START=$META_DEVICE_START_SECTOR META_DEV_SIZE=$META_DEV_SIZE DATA_DEV_SIZE=$DATA_DEV_SIZE PAGESIZE=$PAGESIZE DD_BS=$DD_BS DATA_DEVICE_START_SECTOR=$DATA_DEVICE_START_SECTOR PAGES=$PAGES SEEK=$SEEK BLOCKS=$BLOCKS LVM_DEVICE_SIZE=$LVM_DEVICE_SIZE
/home/jagan/src/LVM2.2.02.88/tools/dmsetup LUNID=1 DEVICE=/dev/mapper/ramdisk2 DEVICE_START=0 META_DEV_SIZE=16384 DATA_DEV_SIZE=2097152 PAGESIZE=128 DD_BS=4096 DATA_DEVICE_START_SECTOR=16384 PAGES=16384 SEEK=16 BLOCKS=262128 LVM_DEVICE_SIZE=2113536
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# pvcreate -M2 --dataalignment 4K --metadatacopies 1 --metadatasize 8M --zero y -v /dev/mapper/ramdisk2
Set up physical volume for "/dev/mapper/ramdisk2" with 4194304 available sectors
Zeroing start of device /dev/mapper/ramdisk2
Writing physical volume data to disk "/dev/mapper/ramdisk2"
Physical volume "/dev/mapper/ramdisk2" successfully created
[root lab-dm-cn4 md]# vgcreate -l 16384 -s 64k -c n -A n 6C067CWX00132-1 /dev/mapper/ramdisk2
WARNING: This metadata update is NOT backed up
Volume group "6C067CWX00132-1" successfully created
[root lab-dm-cn4 md]# lvcreate -A n -C n -l 100%VG -Z y -n engineering -r None 6C067CWX00132-1
Using reduced mirror region size of 128 sectors
WARNING: This metadata update is NOT backed up
WARNING: This metadata update is NOT backed up
Logical volume "engineering" created
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# echo measuring performance of ramdisk
measuring performance of ramdisk
[root lab-dm-cn4 md]# i=0; while [ $i -lt $noofruns ] ; do $AIO_PATH -O -o 1 -c 16 -t 16 -d 256 /dev/ram 2>&1 | grep throughput | cut -f3 -d ' ' | cut -f2 -d '(' | cut -f1 -d ' ' ; let i=$i+1; done | awk -v runs=$noofruns 'BEGIN{i=0.0} {i+=$0} END{print i/runs}'
10125
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# echo measuring performance of ramdisk1
measuring performance of ramdisk1
[root lab-dm-cn4 md]# i=0; while [ $i -lt $noofruns ] ; do $AIO_PATH -O -o 1 -c 16 -t 16 -d 256 /dev/mapper/ramdisk1 2>&1 | grep throughput | cut -f3 -d ' ' | cut -f2 -d '(' | cut -f1 -d ' ' ; let i=$i+1; done | awk -v runs=$noofruns 'BEGIN{i=0.0} {i+=$0} END{print i/runs}'
9690.55
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# echo measuring performance of ramdisk2
measuring performance of ramdisk2
[root lab-dm-cn4 md]# i=0; while [ $i -lt $noofruns ] ; do $AIO_PATH -O -o 1 -c 16 -t 16 -d 256 /dev/mapper/ramdisk2 2>&1 | grep throughput | cut -f3 -d ' ' | cut -f2 -d '(' | cut -f1 -d ' ' ; let i=$i+1; done | awk -v runs=$noofruns 'BEGIN{i=0.0} {i+=$0} END{print i/runs}'
9548.89
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# echo measuring performance of un-allocated tp lun
measuring performance of un-allocated tp lun
[root lab-dm-cn4 md]# i=0; while [ $i -lt $noofruns ] ; do $AIO_PATH -O -o 1 -c 16 -t 16 -d 256 /dev/mapper/thin$LUN 2>&1 | grep throughput | cut -f3 -d ' ' | cut -f2 -d '(' | cut -f1 -d ' ' ; let i=$i+1; done | awk -v runs=$noofruns 'BEGIN{i=0.0} {i+=$0} END{print i/runs}'
2257.67
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# echo touching all pages in tp lun to make it fully allocated
touching all pages in tp lun to make it fully allocated
[root lab-dm-cn4 md]# i=0;while [ $i -lt $PAGES ]; do let j=$i*$SEEK; echo $i; dd if=/dev/zero of=/dev/mapper/thin$LUN bs=4096 seek=$j count=1; let i=$i+1; done >&/dev/null
[root lab-dm-cn4 md]# echo now all pages should be allocated
now all pages should be allocated
[root lab-dm-cn4 md]# #touch all pages on thin provisoned data disk so that all pages are allocated
[root lab-dm-cn4 md]# $DMSETUP status pool$LUN
0 2097152 thin-pool 0 147/2048 16384/16384 -
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# echo measuring performance of fully-allocated tp lun
measuring performance of fully-allocated tp lun
[root lab-dm-cn4 md]# i=0; while [ $i -lt $noofruns ] ; do $AIO_PATH -O -o 1 -c 16 -t 16 -d 256 /dev/mapper/thin$LUN 2>&1 | grep throughput | cut -f3 -d ' ' | cut -f2 -d '(' | cut -f1 -d ' ' ; let i=$i+1; done | awk -v runs=$noofruns 'BEGIN{i=0.0} {i+=$0} END{print i/runs}'
5742.14
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# echo measuring performance of ramdisk
measuring performance of ramdisk
[root lab-dm-cn4 md]# i=0; while [ $i -lt $noofruns ] ; do $AIO_PATH -O -o 1 -c 16 -t 16 -d 256 /dev/ram 2>&1 | grep throughput | cut -f3 -d ' ' | cut -f2 -d '(' | cut -f1 -d ' ' ; let i=$i+1; done | awk -v runs=$noofruns 'BEGIN{i=0.0} {i+=$0} END{print i/runs}'
10288.2
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# echo measuring performance of ramdisk1
measuring performance of ramdisk1
[root lab-dm-cn4 md]# i=0; while [ $i -lt $noofruns ] ; do $AIO_PATH -O -o 1 -c 16 -t 16 -d 256 /dev/mapper/ramdisk1 2>&1 | grep throughput | cut -f3 -d ' ' | cut -f2 -d '(' | cut -f1 -d ' ' ; let i=$i+1; done | awk -v runs=$noofruns 'BEGIN{i=0.0} {i+=$0} END{print i/runs}'
9721.8
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# echo measuring performance of ramdisk2
measuring performance of ramdisk2
[root lab-dm-cn4 md]# i=0; while [ $i -lt $noofruns ] ; do $AIO_PATH -O -o 1 -c 16 -t 16 -d 256 /dev/mapper/ramdisk2 2>&1 | grep throughput | cut -f3 -d ' ' | cut -f2 -d '(' | cut -f1 -d ' ' ; let i=$i+1; done | awk -v runs=$noofruns 'BEGIN{i=0.0} {i+=$0} END{print i/runs}'
9415.25
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# echo measuring performance of data-not-written lvm lun
measuring performance of data-not-written lvm lun
[root lab-dm-cn4 md]# i=0; while [ $i -lt $noofruns ] ; do $AIO_PATH -O -o 1 -c 16 -t 16 -d 256 /dev/mapper/6C067CWX00132--1-engineering 2>&1 | grep throughput | cut -f3 -d ' ' | cut -f2 -d '(' | cut -f1 -d ' ' ; let i=$i+1; done | awk -v runs=$noofruns 'BEGIN{i=0.0} {i+=$0} END{print i/runs}'
9258.24
[root lab-dm-cn4 md]# #write something
[root lab-dm-cn4 md]# dd if=/dev/zero of=/dev/mapper/6C067CWX00132--1-engineering bs=4096 count=$BLOCKS
262128+0 records in
262128+0 records out
1073676288 bytes (1.1 GB) copied, 1.96007 s, 548 MB/s
[root lab-dm-cn4 md]#
[root lab-dm-cn4 md]# echo measuring performance of data-written lvm lun
measuring performance of data-written lvm lun
[root lab-dm-cn4 md]# i=0; while [ $i -lt $noofruns ] ; do $AIO_PATH -O -o 1 -c 16 -t 16 -d 256 /dev/mapper/6C067CWX00132--1-engineering 2>&1 | grep throughput | cut -f3 -d ' ' | cut -f2 -d '(' | cut -f1 -d ' ' ; let i=$i+1; done | awk -v runs=$noofruns 'BEGIN{i=0.0} {i+=$0} END{print i/runs}'
9126.04
[root lab-dm-cn4 md]#