loader: Add a readtest command

readtest will simply load the file in memory, useful for timing
loading on some filesystems.

Reviewed by:	tsoome
MFC after:	2 weeks
Sponsored by:	Beckhoff Automation GmbH & Co. KG
Differential Revision:	https://reviews.freebsd.org/D33411
This commit is contained in:
Emmanuel Vadot 2021-12-09 14:54:58 +01:00
parent bf07f2f862
commit 70661eaafa
2 changed files with 32 additions and 0 deletions

View File

@ -545,3 +545,34 @@ command_lsdev(int argc, char *argv[])
pager_close();
return (CMD_OK);
}
static int
command_readtest(int argc, char *argv[])
{
int fd;
time_t start, end;
char buf[512];
ssize_t rv, count = 0;
if (argc != 2) {
snprintf(command_errbuf, sizeof(command_errbuf),
"Usage: readtest <filename>");
return (CMD_ERROR);
}
start = getsecs();
if ((fd = open(argv[1], O_RDONLY)) < 0) {
snprintf(command_errbuf, sizeof(command_errbuf),
"can't open '%s'", argv[1]);
return (CMD_ERROR);
}
while ((rv = read(fd, buf, sizeof(buf))) > 0)
count += rv;
end = getsecs();
printf("Received %zd bytes during %jd seconds\n", count, (intmax_t)end - start);
close(fd);
return (CMD_OK);
}
COMMAND_SET(readtest, "readtest", "Time a file read", command_readtest);

View File

@ -55,6 +55,7 @@ __FBSDID("$FreeBSD$");
#include <string.h>
#include <bootstrap.h>
#include "stand.h"
#include "net.h"
#include "netif.h"