#!/usr/local/bin/perl use strict; use warnings; my $DK = "dk8"; my $PATH = "/mnt"; my $RAID_TOTAL_SECTOR = 23442100000; for my $raidparam (16, 32, 64, 128) { for my $newfs_fs_div (1, 2, 4, 8) { for my $newfs_bs (16384, 32768, 65536) { my $newfs_fs = $newfs_bs / $newfs_fs_div; my $time_start = time; print "###\n"; print "### START TIME ", scalar(localtime), "\n"; print "###\n"; print "### raidparam = $raidparam\n"; print "### newfs blocksize = $newfs_bs\n"; print "### newfs fragsize = $newfs_fs\n"; print "###\n"; gen_raidconf($raidparam); cmd("raidctl -C /etc/raid0.conf raid0"); cmd("raidctl -I 20130723 raid0"); cmd("gpt destroy raid0"); cmd("gpt show raid0"); cmd("gpt create raid0"); cmd("gpt show raid0"); cmd("gpt add -b 64 -s $RAID_TOTAL_SECTOR -t ffs raid0"); cmd("dkctl raid0 addwedge raiddisk 64 $RAID_TOTAL_SECTOR ffs"); cmd("time newfs -f $newfs_fs -b $newfs_bs -i 32768 -O2 $DK"); cmd("mount -olog /dev/$DK $PATH2"); cmd("time dd if=/dev/zero of=$PATH/zzz bs=1m count=256"); cmd("time tar -C $PATH -zxpf /var/tmp/test.tar.gz"); cmd("time rm -fr $PATH/*"); cmd("time sync"); cmd("time tar -C $PATH -zxpf /var/tmp/test.tar.gz"); cmd("time umount $PATH"); cmd("raidctl -u raid0"); print "###\n"; print "### END TIME ", scalar(localtime), "\n"; print "###\n"; my $time_end = time; difftime($time_start, $time_end) } } } sub difftime { my ($start, $end) = @_; my $diff = $end - $start; print "###\n"; print "### TOTAL TIME $diff second\n"; print "###\n"; print "\n"; } sub cmd { my @cmd = @_; print STDERR "# ", join(" ", @cmd), "\n"; system(join(" ", @cmd)); } sub gen_raidconf { my ($sectpersu) = @_; open(RAIDCONF, ">/etc/raid0.conf"); print RAIDCONF "START array\n"; print RAIDCONF "1 5 0\n"; print RAIDCONF "\n"; print RAIDCONF "START disks\n"; print RAIDCONF "/dev/dk3\n"; print RAIDCONF "/dev/dk4\n"; print RAIDCONF "/dev/dk5\n"; print RAIDCONF "/dev/dk6\n"; print RAIDCONF "/dev/dk7\n"; print RAIDCONF "\n"; print RAIDCONF "# RAID5\n"; print RAIDCONF "START layout\n"; print RAIDCONF "$sectpersu 1 1 5\n"; print RAIDCONF "\n"; print RAIDCONF "START queue\n"; print RAIDCONF "fifo 100\n"; close(RAIDCONF); }