projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
docs: move rate_cycle description
[fio.git]
/
eta.c
diff --git
a/eta.c
b/eta.c
index 17970c78dbfd94261403b6c67c536e875ad65fdb..af4027e0e2997e9ae220fe2fe94da05ff1995121 100644
(file)
--- a/
eta.c
+++ b/
eta.c
@@
-3,6
+3,7
@@
*/
#include <unistd.h>
#include <string.h>
*/
#include <unistd.h>
#include <string.h>
+#include <stdlib.h>
#ifdef CONFIG_VALGRIND_DEV
#include <valgrind/drd.h>
#else
#ifdef CONFIG_VALGRIND_DEV
#include <valgrind/drd.h>
#else
@@
-380,8
+381,8
@@
bool eta_time_within_slack(unsigned int time)
*/
bool calc_thread_status(struct jobs_eta *je, int force)
{
*/
bool calc_thread_status(struct jobs_eta *je, int force)
{
-
struct thread_data *td
;
-
int i, unified_rw_re
p;
+
int unified_rw_rep
;
+
bool any_td_in_ram
p;
uint64_t rate_time, disp_time, bw_avg_time, *eta_secs;
unsigned long long io_bytes[DDIR_RWDIR_CNT] = {};
unsigned long long io_iops[DDIR_RWDIR_CNT] = {};
uint64_t rate_time, disp_time, bw_avg_time, *eta_secs;
unsigned long long io_bytes[DDIR_RWDIR_CNT] = {};
unsigned long long io_iops[DDIR_RWDIR_CNT] = {};
@@
-408,14
+409,13
@@
bool calc_thread_status(struct jobs_eta *je, int force)
if (!ddir_rw_sum(disp_io_bytes))
fill_start_time(&disp_prev_time);
if (!ddir_rw_sum(disp_io_bytes))
fill_start_time(&disp_prev_time);
- eta_secs = malloc(thread_number * sizeof(uint64_t));
- memset(eta_secs, 0, thread_number * sizeof(uint64_t));
+ eta_secs = calloc(thread_number, sizeof(uint64_t));
je->elapsed_sec = (mtime_since_genesis() + 999) / 1000;
bw_avg_time = ULONG_MAX;
unified_rw_rep = 0;
je->elapsed_sec = (mtime_since_genesis() + 999) / 1000;
bw_avg_time = ULONG_MAX;
unified_rw_rep = 0;
- for_each_td(td
, i
) {
+ for_each_td(td) {
unified_rw_rep += td->o.unified_rw_rep;
if (is_power_of_2(td->o.kb_base))
je->is_pow2 = 1;
unified_rw_rep += td->o.unified_rw_rep;
if (is_power_of_2(td->o.kb_base))
je->is_pow2 = 1;
@@
-457,9
+457,9
@@
bool calc_thread_status(struct jobs_eta *je, int force)
je->nr_pending++;
if (je->elapsed_sec >= 3)
je->nr_pending++;
if (je->elapsed_sec >= 3)
- eta_secs[
i
] = thread_eta(td);
+ eta_secs[
__td_index
] = thread_eta(td);
else
else
- eta_secs[
i
] = INT_MAX;
+ eta_secs[
__td_index
] = INT_MAX;
check_str_update(td);
check_str_update(td);
@@
-476,26
+476,26
@@
bool calc_thread_status(struct jobs_eta *je, int force)
}
}
}
}
}
}
- }
+ }
end_for_each();
if (exitall_on_terminate) {
je->eta_sec = INT_MAX;
if (exitall_on_terminate) {
je->eta_sec = INT_MAX;
- for_each_td
(td, i
) {
- if (eta_secs[
i
] < je->eta_sec)
- je->eta_sec = eta_secs[
i
];
- }
+ for_each_td
_index(
) {
+ if (eta_secs[
__td_index
] < je->eta_sec)
+ je->eta_sec = eta_secs[
__td_index
];
+ }
end_for_each();
} else {
unsigned long eta_stone = 0;
je->eta_sec = 0;
} else {
unsigned long eta_stone = 0;
je->eta_sec = 0;
- for_each_td(td
, i
) {
+ for_each_td(td) {
if ((td->runstate == TD_NOT_CREATED) && td->o.stonewall)
if ((td->runstate == TD_NOT_CREATED) && td->o.stonewall)
- eta_stone += eta_secs[
i
];
+ eta_stone += eta_secs[
__td_index
];
else {
else {
- if (eta_secs[
i
] > je->eta_sec)
- je->eta_sec = eta_secs[
i
];
+ if (eta_secs[
__td_index
] > je->eta_sec)
+ je->eta_sec = eta_secs[
__td_index
];
}
}
- }
+ }
end_for_each();
je->eta_sec += eta_stone;
}
je->eta_sec += eta_stone;
}
@@
-504,7
+504,11
@@
bool calc_thread_status(struct jobs_eta *je, int force)
fio_gettime(&now, NULL);
rate_time = mtime_since(&rate_prev_time, &now);
fio_gettime(&now, NULL);
rate_time = mtime_since(&rate_prev_time, &now);
- if (write_bw_log && rate_time > bw_avg_time && !in_ramp_time(td)) {
+ any_td_in_ramp = false;
+ for_each_td(td) {
+ any_td_in_ramp |= in_ramp_time(td);
+ } end_for_each();
+ if (write_bw_log && rate_time > bw_avg_time && !any_td_in_ramp) {
calc_rate(unified_rw_rep, rate_time, io_bytes, rate_io_bytes,
je->rate);
memcpy(&rate_prev_time, &now, sizeof(now));
calc_rate(unified_rw_rep, rate_time, io_bytes, rate_io_bytes,
je->rate);
memcpy(&rate_prev_time, &now, sizeof(now));
@@
-687,10
+691,9
@@
struct jobs_eta *get_jobs_eta(bool force, size_t *size)
return NULL;
*size = sizeof(*je) + THREAD_RUNSTR_SZ + 8;
return NULL;
*size = sizeof(*je) + THREAD_RUNSTR_SZ + 8;
- je =
malloc(
*size);
+ je =
calloc(1,
*size);
if (!je)
return NULL;
if (!je)
return NULL;
- memset(je, 0, *size);
if (!calc_thread_status(je, force)) {
free(je);
if (!calc_thread_status(je, force)) {
free(je);
@@
-707,10
+710,10
@@
void print_thread_status(void)
size_t size;
je = get_jobs_eta(false, &size);
size_t size;
je = get_jobs_eta(false, &size);
- if (je)
+ if (je)
{
display_thread_status(je);
display_thread_status(je);
-
- free(je);
+ free(je);
+ }
}
void print_status_init(int thr_number)
}
void print_status_init(int thr_number)