Re: strange raid5

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

 



1048576 = 1024 * 1024 = 32 * 32768. :)

so it should be 32 stripe writes.

ming

On Fri, 2005-07-22 at 23:14 -0700, Tyler wrote:
> By my calculations, 1048756 is *not* a multiple of 32768 (32 
> Kilobytes).  Did I miscalculate?
> 
> Regards,
> Tyler.
> 
> Ming Zhang wrote:
> 
> >i created a 32KB chunk size 3 disk raid5. then write this disk with a
> >small code i wrote. i found that even i write it with 1048756 in unit,
> >which is multiple of stripe size, it still has a lot of read when seen
> >from iostat. 
> >
> >any idea? thanks!
> >
> >i attached the code for reference.
> >
> >[root@bakstor2u root]# cat /proc/mdstat
> >Personalities : [linear] [raid0] [raid1] [raid5] [multipath] [raid6]
> >[raid10] [faulty]
> >md0 : active raid5 sdc[2] sdb[1] sda[0]
> >      781422592 blocks level 5, 32k chunk, algorithm 2 [3/3] [UUU]
> >
> >unused devices: <none>
> >[root@bakstor2u root]# ./write /dev/md0 1048576 1000
> > 1048576Bytes *     1000 :    34.745MB/s
> >
> >
> >avg-cpu:  %user   %nice    %sys %iowait   %idle
> >           0.00    0.00   17.17   82.83    0.00
> >
> >Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
> >hda               0.00         0.00         0.00          0          0
> >hdc               0.00         0.00         0.00          0          0
> >md0            8791.92         0.00     70335.35          0      69632
> >sda             605.05       387.88     35143.43        384      34792
> >sdb             611.11       323.23     35143.43        320      34792
> >sdc             602.02       387.88     35143.43        384      34792
> >sdd               0.00         0.00         0.00          0          0
> >sde               0.00         0.00         0.00          0          0
> >sdf               0.00         0.00         0.00          0          0
> >sdg               0.00         0.00         0.00          0          0
> >sdh               0.00         0.00         0.00          0          0
> >
> >
> >  
> >
> >------------------------------------------------------------------------
> >
> >/*
> > * I need a small program to write in various mode.
> > */
> >#include <stdio.h>
> >#include <stdlib.h>
> >#include <sys/types.h>
> >#include <sys/stat.h>
> >#include <sys/time.h>
> >#include <fcntl.h>
> >
> >int main(int argc, char *argv[])
> >{
> >	int size, cnt;
> >	char *buf;
> >	char *fn;
> >	int fid, i;
> >	struct timeval tv1, tv2, ttv1, ttv2;
> >	double x;
> >	int sync = 1;
> >	int timing = 0;
> >	unsigned long *t;
> >
> >	if (argc < 4) {
> >		printf("%s <fn> <strip size> <strip count> [s/a [t]]\n", argv[0]);
> >		exit(1);
> >	}
> >	fn = argv[1];
> >	size = atoi(argv[2]);
> >	cnt = atoi(argv[3]);
> >	if ((argc >=5) && (argv[4][0] == 'a'))
> >		sync = 0;
> >	if ((argc >=6) && (argv[5][0] == 't'))
> >		timing = 1;
> >	if (timing) {
> >		t = (unsigned long *)malloc(sizeof(double) * cnt);
> >		if (!t) {
> >			printf("fail to get mem for t\n");
> >			exit(1);
> >		}
> >	}
> >	buf = malloc(size * sizeof(char));
> >	if (!buf) {
> >		printf("fail to get memory\n");
> >		exit(1);
> >	}
> >	fid = open(fn, O_CREAT|O_WRONLY|(sync ? O_SYNC : 0), S_IRWXU);
> >	if (fid == -1) {
> >		printf("open file fail\n");
> >		exit(1);
> >	}
> >	gettimeofday(&tv1, NULL);
> >	for (i = 0; i < cnt; i++) {
> >		if (timing) {
> >			gettimeofday(&ttv1, NULL);
> >			write(fid, buf, size);
> >			gettimeofday(&ttv2, NULL);
> >			t[i] = (ttv2.tv_sec - ttv1.tv_sec) * 1000000 + ttv2.tv_usec - ttv1.tv_usec;
> >		} else
> >			write(fid, buf, size);
> >	}
> >	close(fid);
> >	gettimeofday(&tv2, NULL);
> >	x = (tv2.tv_sec - tv1.tv_sec) + ((double)(tv2.tv_usec - tv1.tv_usec)) 
> >		* 0.000001;
> >	x = ((double)(size * cnt) / 1048576.0) / x;
> >	printf("%8dBytes * %8d :%10.3fMB/s\n", size, cnt, x);
> >	if (timing) {
> >		for (i = 0; i < cnt; i++) {
> >			printf("%8ld", t[i]);
> >			if (!(i % 10))
> >				printf("\n");
> >		}
> >		printf("\n");
> >	}
> >}
> >
> >  
> >
> >------------------------------------------------------------------------
> >
> >No virus found in this incoming message.
> >Checked by AVG Anti-Virus.
> >Version: 7.0.323 / Virus Database: 267.9.2/55 - Release Date: 7/21/2005
> >  
> >

-
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