9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: erik quanstrom <quanstro@quanstro.net>
To: 9fans@9fans.net
Subject: Re: [9fans] copying fossil filesystem to a bigger disk
Date: Tue,  4 Oct 2011 10:13:40 -0400	[thread overview]
Message-ID: <062948585b96427f121f35b27c1f90fe@brasstown.quanstro.net> (raw)
In-Reply-To: <cae68b045335522b8d7bfbdf9260bb3b@hamnavoe.com>

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

> Is there any experiment I can do (not involving a crowbar and a
> microscope) to find out the real physical sector size?  Bigger
> transfers get more of the bandwidth, but then a smaller proportion
> of the transfer needs read/modify/write.  I could do random addressing
> but then I would expect seek time to dominate.
>
> Not that it matters (my drive works fine), but I'm curious!

i think the attached program ought to work.  here are some local
results.  no 4k-sector drives.  sorry.  if this doesn't work, especially for
writing, it's probablly a caching effect.  you may need to run till
the cache fills up (64mb or so) and then start timing.

iosz	r (s)	riops	w	wiops	model
512	12.227	81.78	5.531	180.78	Hitachi HUA721050KLA330
4096	12.363	80.88	5.649	176.99	Hitachi HUA721050KLA330
512	5.957	167.85	2.636	379.26	SEAGATE ST373455SS (sas)
4096	5.946	168.15	2.665	375.19	SEAGATE ST373455SS (sas)
512	0.181	5494.54	0.168	5941.86	SSDSA2SH064G1GC INTEL (ssd)
4096	0.317	3150.64	0.213	4689.26	SSDSA2SH064G1GC INTEL (ssd)

as already known, none of these appear to have any sector size wierdness.

surprising, considering the intel ssd is attached to a openrd!

- erik

[-- Attachment #2: randomio.c --]
[-- Type: text/plain, Size: 2006 bytes --]

#include <u.h>
#include <libc.h>

enum {
	Ios	= 1000,		/* number of ios / test */
	Nanoi	= 1000000000,	/* 1/nano */
	Microi	= 1000000,
};

enum {
	Read	= 1<<0,
	Write	= 1<<1,
};

static int otab[4] = {
[Read]		OREAD,
[Write]		OWRITE,
[Read|Write]	ORDWR,
};

static char *rwtab[4] = {
[Read]		"read",
[Write]		"write",
[Read|Write]	"rdwr",
};

void
rio(int fd, uvlong byte0, uvlong bytes, uint ss, int rw)
{
	char *buf;
	int i;
	uvlong maxlba, lba, t, x;
	long (*io)(int, void*, long, vlong);

	maxlba = (bytes - byte0) / ss;
	if(rw == Read)
		io = pread;
	else if(rw == Write)
		io = pwrite;
	else{
		io = nil;		/* compiler noise */
		sysfatal("not prepared to mix read/write yet");
	}

	buf = malloc(ss);
	if(buf == nil)
		sysfatal("malloc");

	srand(nsec());
	t = -nsec();
	for(i = 0; i < Ios; i++){
		lba = frand()*maxlba;	/* awful.  no vlnrand() */
		io(fd, buf, ss, byte0 + lba*ss);
	}
	t += nsec();
	free(buf);

	print("%s %lld.%03lld\n", rwtab[rw], t/Nanoi, (t%Nanoi)/Microi);
	x = (uvlong)Ios*(uvlong)Nanoi*100;
	x /= t;
	print("%lld.%02lld iops\n", x/100, (x%100));
}

void
usage(void)
{
	fprint(2, "usage: randomio [-rw] [-o offset] [-s sectorsz] [file ...]\n");
	exits("usage");
}

void
main(int argc, char **argv)
{
	int i, byte0, fd, rw, ss;
	uvlong bytes;
	Dir *d;

	rw = 0;
	ss = 512;
	byte0 = 0;
	ARGBEGIN{
	case 'r':
		rw |= Read;
		break;
	case 'w':
		rw |= Write;
		break;
	case 'o':
		byte0 = atoi(EARGF(usage()));
		break;
	case 's':
		ss = atoi(EARGF(usage()));
		break;
	default:
		usage();
	}ARGEND;

	if(rw == 0)
		rw = Read;

	for(i = 0; i < argc; i++){
		d = dirstat(argv[i]);
		if(d == nil)
			sysfatal("dirstat: %r");
		bytes = d->length;
		free(d);

		fd = open(argv[i], otab[rw]);
		if(fd == -1)
			sysfatal("open: %r");

		if(rw & Read)
			rio(fd, byte0, bytes, ss, Read);
		if(rw & Write)
			rio(fd, byte0, bytes, ss, Write);
		close(fd);
	}
	exits("");
}

  parent reply	other threads:[~2011-10-04 14:13 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-24  0:20 slash
2011-09-24  8:07 ` David du Colombier
2011-09-24  8:34   ` Steve Simon
2011-09-29 23:54   ` slash
2011-09-30  8:31     ` Richard Miller
2011-09-30  8:54       ` Richard Miller
2011-09-30  9:44         ` Charles Forsyth
2011-09-30 14:06           ` erik quanstrom
2011-09-30 14:16           ` Ethan Grammatikidis
2011-09-30 14:00         ` erik quanstrom
2011-10-01 10:36           ` slash
     [not found]           ` <CAEaiYYzXCfB2KbnDzBHTXytrfQqGUCepRg5Aj-c14ZoEz5hHaw@mail.gmail.c>
2011-10-01 13:51             ` erik quanstrom
2011-10-01 15:27               ` slash
2011-10-01 16:14             ` erik quanstrom
2011-10-01 16:23               ` erik quanstrom
2011-10-04 11:28                 ` Richard Miller
2011-10-04 11:52                   ` Charles Forsyth
2011-10-04 12:01                     ` Richard Miller
2011-10-04 12:05                       ` erik quanstrom
2011-10-04 12:09                       ` Charles Forsyth
2011-10-04 12:13                         ` Charles Forsyth
2011-10-04 12:19                           ` dexen deVries
2011-10-04 12:27                           ` Richard Miller
     [not found]                       ` <CAOw7k5i3i+w_=pUuFjUCnxH1Tp5U0vh3v7wFUoBddfML9xG+ag@mail.gmail.c>
2011-10-04 12:17                         ` erik quanstrom
2011-10-04 12:30                           ` Charles Forsyth
     [not found]                           ` <CAOw7k5hGWG16a5fTjtXBEBd2-gt=XnhjEJKFNjdPrB46_6=dBg@mail.gmail.c>
2011-10-04 12:34                             ` erik quanstrom
2011-10-04 12:05                   ` erik quanstrom
2011-10-04 12:15                     ` Richard Miller
2011-10-04 12:17                       ` erik quanstrom
2011-10-04 12:17                   ` erik quanstrom
2011-10-04 12:33                     ` Richard Miller
2011-10-04 12:52                       ` dexen deVries
2011-10-04 13:05                         ` dexen deVries
2011-10-04 14:13                       ` erik quanstrom [this message]
2011-10-04 15:56                         ` Richard Miller
2011-10-04 16:00                           ` erik quanstrom
2011-10-04 16:42                             ` Richard Miller
2011-10-04 16:45                               ` erik quanstrom
2011-10-04 17:52                                 ` Charles Forsyth
2011-10-04 18:05                                   ` dexen deVries
2011-10-04 18:24                                 ` Bakul Shah
2011-10-04 18:29                                   ` erik quanstrom
2011-10-03 23:07               ` slash
2011-10-06  7:35                 ` Peter A. Cejchan
2011-10-07 10:49                   ` slash
2011-10-07 11:15                     ` Peter A. Cejchan
2011-10-07 13:03                       ` Steve Simon
2011-10-10 10:32                         ` Peter A. Cejchan
     [not found]                   ` <CAEaiYYya5eq3CoVbbZGqPf91_kMEcbkCQ_8WEL4yakFdenek5g@mail.gmail.c>
2011-10-07 13:17                     ` erik quanstrom
2011-10-10  2:32                       ` slash
     [not found]                       ` <CAEaiYYy36ydHfw=Tg2YC9x9gEW7=MAHF2C6-UVbgr36G-qv=rA@mail.gmail.c>
2011-10-10  3:11                         ` erik quanstrom
2011-10-10 10:15                           ` slash
     [not found]                         ` <d0c02b8a1e36c9329902a1183192d732@chula.quanstro.>
     [not found]                           ` <CAEaiYYxoHLgMZddGZ4gCPvW-GuqwRYzytXgfezoi+vjUgxx9tg@mail.gmail.c>
2011-10-10 13:17                             ` erik quanstrom
2011-10-11  8:51                               ` slash
2011-10-11  8:55                                 ` slash
2011-10-11 15:01                                 ` slash
2011-10-11 15:36                                   ` David du Colombier
2011-10-12 19:24                                     ` slash
2011-10-13  7:07                   ` Peter A. Cejchan
     [not found]               ` <CAEaiYYxsUzf70Ffhd3hzsBZcMb5=2yhfSCv5-nJ+_27wYbJKig@mail.gmail.c>
2011-10-03 23:10                 ` erik quanstrom
2011-10-04  0:02                 ` erik quanstrom
2011-10-04  7:58                   ` dexen deVries
2011-10-04  9:52               ` Richard Miller
2011-10-04  9:34           ` Richard Miller
2011-10-07  7:47       ` [9fans] io patterns erik quanstrom
2011-09-24  8:30 ` [9fans] copying fossil filesystem to a bigger disk Steve Simon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=062948585b96427f121f35b27c1f90fe@brasstown.quanstro.net \
    --to=quanstro@quanstro.net \
    --cc=9fans@9fans.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).