All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] stat cleanup/bugfix patches
@ 2019-02-07 15:51 vincentfu
  2019-02-07 15:51 ` [PATCH 1/2] stat: clean up calc_clat_percentiles vincentfu
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: vincentfu @ 2019-02-07 15:51 UTC (permalink / raw)
  To: axboe, fio; +Cc: Vincent Fu

From: Vincent Fu <vincent.fu@wdc.com>

Jens, please consider these two cleanup/bugfix patches for stat.c

Vincent

Vincent Fu (2):
  stat: clean up calc_clat_percentiles
  stat: put 'percentiles' object in appropriate 'clat_ns' or 'lat_ns'
    parent

 stat.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

-- 
2.17.1



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] stat: clean up calc_clat_percentiles
  2019-02-07 15:51 [PATCH 0/2] stat cleanup/bugfix patches vincentfu
@ 2019-02-07 15:51 ` vincentfu
  2019-02-07 15:51 ` [PATCH 2/2] stat: put 'percentiles' object in appropriate 'clat_ns' or 'lat_ns' parent vincentfu
  2019-02-07 16:49 ` [PATCH 0/2] stat cleanup/bugfix patches Jens Axboe
  2 siblings, 0 replies; 4+ messages in thread
From: vincentfu @ 2019-02-07 15:51 UTC (permalink / raw)
  To: axboe, fio; +Cc: Vincent Fu

From: Vincent Fu <vincent.fu@wdc.com>

We already know the size of the buffer needed. So there
is no need to do anything fancy when allocating it.
---
 stat.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/stat.c b/stat.c
index 351c49cc..7c843e6b 100644
--- a/stat.c
+++ b/stat.c
@@ -139,7 +139,6 @@ unsigned int calc_clat_percentiles(uint64_t *io_u_plat, unsigned long long nr,
 {
 	unsigned long long sum = 0;
 	unsigned int len, i, j = 0;
-	unsigned int oval_len = 0;
 	unsigned long long *ovals = NULL;
 	bool is_last;
 
@@ -161,6 +160,10 @@ unsigned int calc_clat_percentiles(uint64_t *io_u_plat, unsigned long long nr,
 	if (len > 1)
 		qsort((void *)plist, len, sizeof(plist[0]), double_cmp);
 
+	ovals = malloc(len * sizeof(*ovals));
+	if (!ovals)
+		return 0;
+
 	/*
 	 * Calculate bucket values, note down max and min values
 	 */
@@ -170,11 +173,6 @@ unsigned int calc_clat_percentiles(uint64_t *io_u_plat, unsigned long long nr,
 		while (sum >= (plist[j].u.f / 100.0 * nr)) {
 			assert(plist[j].u.f <= 100.0);
 
-			if (j == oval_len) {
-				oval_len += 100;
-				ovals = realloc(ovals, oval_len * sizeof(*ovals));
-			}
-
 			ovals[j] = plat_idx_to_val(i);
 			if (ovals[j] < *minv)
 				*minv = ovals[j];
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] stat: put 'percentiles' object in appropriate 'clat_ns' or 'lat_ns' parent
  2019-02-07 15:51 [PATCH 0/2] stat cleanup/bugfix patches vincentfu
  2019-02-07 15:51 ` [PATCH 1/2] stat: clean up calc_clat_percentiles vincentfu
@ 2019-02-07 15:51 ` vincentfu
  2019-02-07 16:49 ` [PATCH 0/2] stat cleanup/bugfix patches Jens Axboe
  2 siblings, 0 replies; 4+ messages in thread
From: vincentfu @ 2019-02-07 15:51 UTC (permalink / raw)
  To: axboe, fio; +Cc: Vincent Fu

From: Vincent Fu <vincent.fu@wdc.com>

In the JSON output, the 'percentiles' object currently always appears within the
'clat_ns' object. Put it inside the 'lat_ns' object when --lat_percentiles=1 is set.
---
 stat.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/stat.c b/stat.c
index 7c843e6b..c1f46e1d 100644
--- a/stat.c
+++ b/stat.c
@@ -1088,7 +1088,8 @@ static void add_ddir_status_json(struct thread_stat *ts,
 		len = 0;
 
 	percentile_object = json_create_object();
-	json_object_add_value_object(tmp_object, "percentile", percentile_object);
+	if (ts->clat_percentiles)
+		json_object_add_value_object(tmp_object, "percentile", percentile_object);
 	for (i = 0; i < len; i++) {
 		snprintf(buf, sizeof(buf), "%f", ts->percentile_list[i].u.f);
 		json_object_add_value_int(percentile_object, (const char *)buf, ovals[i]);
@@ -1127,6 +1128,8 @@ static void add_ddir_status_json(struct thread_stat *ts,
 	json_object_add_value_int(tmp_object, "max", max);
 	json_object_add_value_float(tmp_object, "mean", mean);
 	json_object_add_value_float(tmp_object, "stddev", dev);
+	if (ts->lat_percentiles)
+		json_object_add_value_object(tmp_object, "percentile", percentile_object);
 	if (output_format & FIO_OUTPUT_JSON_PLUS && ts->lat_percentiles)
 		json_object_add_value_object(tmp_object, "bins", clat_bins_object);
 
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/2] stat cleanup/bugfix patches
  2019-02-07 15:51 [PATCH 0/2] stat cleanup/bugfix patches vincentfu
  2019-02-07 15:51 ` [PATCH 1/2] stat: clean up calc_clat_percentiles vincentfu
  2019-02-07 15:51 ` [PATCH 2/2] stat: put 'percentiles' object in appropriate 'clat_ns' or 'lat_ns' parent vincentfu
@ 2019-02-07 16:49 ` Jens Axboe
  2 siblings, 0 replies; 4+ messages in thread
From: Jens Axboe @ 2019-02-07 16:49 UTC (permalink / raw)
  To: vincentfu, fio; +Cc: Vincent Fu

On 2/7/19 8:51 AM, vincentfu@gmail.com wrote:
> From: Vincent Fu <vincent.fu@wdc.com>
> 
> Jens, please consider these two cleanup/bugfix patches for stat.c
> 
> Vincent
> 
> Vincent Fu (2):
>   stat: clean up calc_clat_percentiles
>   stat: put 'percentiles' object in appropriate 'clat_ns' or 'lat_ns'
>     parent
> 
>  stat.c | 15 ++++++++-------
>  1 file changed, 8 insertions(+), 7 deletions(-)

Looks good, applied both. Thanks Vincent.

-- 
Jens Axboe



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-02-07 16:49 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-07 15:51 [PATCH 0/2] stat cleanup/bugfix patches vincentfu
2019-02-07 15:51 ` [PATCH 1/2] stat: clean up calc_clat_percentiles vincentfu
2019-02-07 15:51 ` [PATCH 2/2] stat: put 'percentiles' object in appropriate 'clat_ns' or 'lat_ns' parent vincentfu
2019-02-07 16:49 ` [PATCH 0/2] stat cleanup/bugfix patches Jens Axboe

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.