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("");
}
next prev 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).