Make diskinfo report disk stripe size and offset. It should help users to

make file systems optimally aligned and tuned for better performance.
This commit is contained in:
Alexander Motin 2009-12-24 21:39:30 +00:00
parent 95139d9d6a
commit 851b967a27
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=200968
2 changed files with 13 additions and 2 deletions

View File

@ -46,7 +46,8 @@ and optionally runs a naive performance test on the device.
.Pp
If given no arguments, the output will be a single line per specified device
with the following fields: device name, sectorsize, media size in bytes,
media size in sectors, firmware cylinders, firmware heads, and firmware sectors.
media size in sectors, stripe size, stripe offset, firmware cylinders,
firmware heads, and firmware sectors.
The last three fields are only present if the information is available.
.Pp
If given the

View File

@ -58,7 +58,7 @@ main(int argc, char **argv)
{
int i, ch, fd, error;
char buf[BUFSIZ], ident[DISK_IDENT_SIZE];
off_t mediasize;
off_t mediasize, stripesize, stripeoffset;
u_int sectorsize, fwsectors, fwheads;
while ((ch = getopt(argc, argv, "ctv")) != -1) {
@ -104,11 +104,19 @@ main(int argc, char **argv)
error = ioctl(fd, DIOCGFWHEADS, &fwheads);
if (error)
fwheads = 0;
error = ioctl(fd, DIOCGSTRIPESIZE, &stripesize);
if (error)
stripesize = 0;
error = ioctl(fd, DIOCGSTRIPEOFFSET, &stripeoffset);
if (error)
stripeoffset = 0;
if (!opt_v) {
printf("%s", argv[i]);
printf("\t%u", sectorsize);
printf("\t%jd", (intmax_t)mediasize);
printf("\t%jd", (intmax_t)mediasize/sectorsize);
printf("\t%jd", (intmax_t)stripesize);
printf("\t%jd", (intmax_t)stripeoffset);
if (fwsectors != 0 && fwheads != 0) {
printf("\t%jd", (intmax_t)mediasize /
(fwsectors * fwheads * sectorsize));
@ -124,6 +132,8 @@ main(int argc, char **argv)
(intmax_t)mediasize, buf);
printf("\t%-12jd\t# mediasize in sectors\n",
(intmax_t)mediasize/sectorsize);
printf("\t%-12jd\t# stripesize\n", stripesize);
printf("\t%-12jd\t# stripeoffset\n", stripeoffset);
if (fwsectors != 0 && fwheads != 0) {
printf("\t%-12jd\t# Cylinders according to firmware.\n", (intmax_t)mediasize /
(fwsectors * fwheads * sectorsize));