From: Petr Vorel <pvorel@suse.cz>
To: Andrea Cervesato <andrea.cervesato@suse.com>
Cc: ltp@lists.linux.it
Subject: Re: [LTP] [PATCH v8 1/2] Rewrite aio-stress test using LTP API
Date: Fri, 14 Oct 2022 00:56:54 +0200 [thread overview]
Message-ID: <Y0iXthAQlzOkp2/s@pevik> (raw)
In-Reply-To: <20221013082146.14581-3-andrea.cervesato@suse.com>
Hi Andrea,
2 nits below.
very nit: I'd put copyright 2022.
> +++ b/runtest/ltp-aio-stress.part1
...
> - * will open or create each file on the command line, and start a series
> - * of aio to it.
> - *
> - * aio is done in a rotating loop. first file1 gets 8 requests, then
> - * file2, then file3 etc. As each file finishes writing, it is switched
> - * to reads
> - *
> - * io buffers are aligned in case you want to do raw io
> - *
> - * compile with gcc -Wall -laio -lpthread -o aio-stress aio-stress.c
> + * Will open or create each file on the command line, and start a series
nit: I'm not a native English speaker but "Will" sound strange to me.
Maybe just:
"Test opens or creates ..."
I'd personally put blank line before starting multiline comment, before opening
if, below } - ending if and return before the end of function (readability). But
you can ignore these.
/* this
=> should be
/*
* This
+ using comments in style like in include/tst_fuzzy_sync.h (@return etc) would
be nice, but again, you can ignore these comments :).
> + * of AIO to it.
> *
> - * run aio-stress -h to see the options
> + * AIO is done in a rotating loop. First file1.bin gets 8 requests, then
> + * file2.bin, then file3.bin etc. As each file finishes writing, it is switched
> + * to reads.
> *
> - * Please mail Chris Mason (mason@suse.com) with bug reports or patches
> + * IO buffers are aligned in case you want to do raw IO.
> */
> +
> #define _FILE_OFFSET_BITS 64
> -#define PROG_VERSION "0.21"
> #define NEW_GETEVENTS
Why this? io_getevents() takes now 4 args, man does not mention when it was
changed. I'd delete this definition and #else.
...
> /*
> * latencies during io_submit are measured, these are the
> * granularities for deviations
> */
> #define DEVIATIONS 6
> -int deviations[DEVIATIONS] = { 100, 250, 500, 1000, 5000, 10000 };
> +static int deviations[DEVIATIONS] = { 100, 250, 500, 1000, 5000, 10000 };
How about use ARRAY_SIZE()?
diff --git testcases/kernel/io/ltp-aiodio/aio-stress.c testcases/kernel/io/ltp-aiodio/aio-stress.c
index ca51b3a52..b24ca17eb 100644
--- testcases/kernel/io/ltp-aiodio/aio-stress.c
+++ testcases/kernel/io/ltp-aiodio/aio-stress.c
@@ -103,15 +103,14 @@ static char *unlink_files;
* latencies during io_submit are measured, these are the
* granularities for deviations
*/
-#define DEVIATIONS 6
-static int deviations[DEVIATIONS] = { 100, 250, 500, 1000, 5000, 10000 };
+static int deviations[] = { 100, 250, 500, 1000, 5000, 10000 };
struct io_latency {
double max;
double min;
double total_io;
double total_lat;
- double deviations[DEVIATIONS];
+ double deviations[ARRAY_SIZE(deviations)];
};
/* container for a series of operations to a file */
@@ -278,7 +277,7 @@ static void calc_latency(struct timeval *start_tv, struct timeval *stop_tv,
struct io_latency *lat)
{
double delta;
- int i;
+ size_t i;
delta = time_since(start_tv, stop_tv);
delta = delta * 1000;
@@ -289,7 +288,7 @@ static void calc_latency(struct timeval *start_tv, struct timeval *stop_tv,
lat->min = delta;
lat->total_io++;
lat->total_lat += delta;
- for (i = 0; i < DEVIATIONS; i++) {
+ for (i = 0; i < ARRAY_SIZE(deviations); i++) {
if (delta < deviations[i]) {
lat->deviations[i]++;
break;
@@ -416,12 +415,12 @@ static void print_lat(char *str, struct io_latency *lat)
char out[4 * 1024];
char *ptr = out;
double avg = lat->total_lat / lat->total_io;
- int i;
+ size_t i;
double total_counted = 0;
tst_res(TINFO, "%s min %.2f avg %.2f max %.2f", str, lat->min, avg, lat->max);
- for (i = 0; i < DEVIATIONS; i++) {
+ for (i = 0; i < ARRAY_SIZE(deviations); i++) {
ptr += sprintf(ptr, "%.0f < %d", lat->deviations[i], deviations[i]);
total_counted += lat->deviations[i];
}
Again, you can ignore this.
> + { "f:", &str_num_files, "Number of files to generate" },
nit: this is not sorted alphabetically.
> + { "b:", &str_max_io_submit, "Max number of iocbs to give io_submit at once" },
> + { "c:", &str_num_contexts, "Number of io contexts per file" },
> + { "g:", &str_context_offset, "Offset between contexts (default 2M)" },
> + { "s:", &str_file_size, "Size in MB of the test file(s) (default 1024M)" },
> + { "r:", &str_rec_len, "Record size in KB used for each io (default 64K)" },
> + { "d:", &str_depth, "Number of pending aio requests for each file (default 64)" },
> + { "e:", &str_io_iter, "Number of I/O per file sent before switching to the next file (default 8)" },
> + { "a:", &str_iterations, "Total number of ayncs I/O the program will run, default is run until Cntl-C (default 500)" },
This should be without ", default is run until Cntl-C".
OT: Cntl looks trange to me, I'd use ^C or <ctrl> + C (irrelevant now)
I also see RUN_FOREVER, do we really need it? No other LTP test runs forever.
> + { "O", &str_o_flag, "Use O_DIRECT" },
> + { "o:", &str_stages, "Add an operation to the list: write=0, read=1, random write=2, random read=3" },
> + { "m", &str_use_shm, "SHM use ipc shared memory for io buffers instead of malloc" },
> + { "n", &no_fsync_stages, "No fsyncs between write stage and read stage" },
> + { "l", &latency_stats, "Print io_submit latencies after each stage" },
> + { "L", &completion_latency_stats, "Print io completion latencies after each stage" },
Also this is not sorted.
> + { "t:", &str_num_threads, "Number of threads to run" },
> + { "u", &unlink_files, "Unlink files after completion" },
> + { "v", &verify, "Verification of bytes written" },
> + { "x", &no_stonewall, "Turn off thread stonewalling" },
> + {},
> + },
> +};
> #else
> -int main(void)
> -{
> - fprintf(stderr, "test requires libaio and it's development packages\n");
> - return TCONF;
> -}
> +TST_TEST_TCONF("test requires libaio and its development packages");
> #endif
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2022-10-13 22:57 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-13 8:21 [LTP] [PATCH v8 0/2] Rewrite aio-stress test Andrea Cervesato via ltp
2022-10-13 8:21 ` [LTP] [PATCH v8] Refactor aiocp using new LTP API Andrea Cervesato via ltp
2022-10-24 7:27 ` Richard Palethorpe
2022-10-13 8:21 ` [LTP] [PATCH v8 1/2] Rewrite aio-stress test using " Andrea Cervesato via ltp
2022-10-13 22:56 ` Petr Vorel [this message]
2022-10-24 14:42 ` Cyril Hrubis
2022-10-13 8:21 ` [LTP] [PATCH v8 2/2] Merge ltp-aio-stress part2 with part1 Andrea Cervesato via ltp
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=Y0iXthAQlzOkp2/s@pevik \
--to=pvorel@suse.cz \
--cc=andrea.cervesato@suse.com \
--cc=ltp@lists.linux.it \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.