cctools
rmsummary.h
1/*
2Copyright (C) 2022 The University of Notre Dame This software is
3distributed under the GNU General Public License. See the file
4COPYING for details.
5*/
6
7#ifndef __RMSUMMARY_H
8#define __RMSUMMARY_H
9
10#include <stdio.h>
11#include <stdlib.h>
12
13#include "jx.h"
14#include "int_sizes.h"
15#include "buffer.h"
16
17/* Environment variables names */
18#define RESOURCES_CORES "CORES"
19#define RESOURCES_MEMORY "MEMORY"
20#define RESOURCES_DISK "DISK"
21#define RESOURCES_WALL_TIME "WALL_TIME"
22#define RESOURCES_GPUS "GPUS"
23#define RESOURCES_MPI_PROCESSES "MPI_PROCESSES"
24
25
27{
28 char *category;
29 char *command;
30 char *taskid;
31
32 double cores;
33 double gpus;
34 double memory;
35 double disk;
36
37 char *exit_type;
38 int64_t signal;
39 int64_t exit_status;
40 int64_t last_error;
41
42 double start;
43 double end;
44
45 double cores_avg;
46
47 double wall_time;
48 double cpu_time;
49
50 double virtual_memory;
51 double swap_memory;
52
53 double bytes_read;
54 double bytes_written;
55
56 double bytes_received;
57 double bytes_sent;
58 double bandwidth;
59
60 double machine_cpus;
61 double machine_load;
62 double context_switches;
63
64 double max_concurrent_processes;
65 double total_processes;
66
67 double total_files;
68 double fs_nodes;
69
70 double workers;
71
72 struct rmsummary *limits_exceeded;
73 struct rmsummary *peak_times; /* from start, in usecs */
74
75 char *snapshot_name; /* NULL for root summary, otherwise the label of the snapshot */
76 size_t snapshots_count; /* number of intermediate measurements, if any. */
77 struct rmsummary **snapshots; /* snapshots_count sized array of snapshots. */
78};
79
80void rmsummary_print(FILE *stream, struct rmsummary *s, int pprint, struct jx *verbatim_fields);
81void rmsummary_print_buffer(struct buffer *B, const struct rmsummary *s, int only_resources);
82char *rmsummary_print_string(const struct rmsummary *s, int only_resources);
83
84/* Returns 1 if resource set, 0 if resource does not exist. */
85int rmsummary_set(struct rmsummary *s, const char *resource, double value);
86double rmsummary_get(const struct rmsummary *s, const char *resource);
87
88void rmsummary_set_by_offset(struct rmsummary *s, size_t offset, double value);
89double rmsummary_get_by_offset(const struct rmsummary *s, size_t offset);
90
92struct rmsummary *rmsummary_parse_file_single(const char *filename);
93
95struct rmsummary *rmsummary_parse_string(const char *str);
96
98struct list *rmsummary_parse_file_multiple(const char *filename);
99
100struct jx *rmsummary_to_json(const struct rmsummary *s, int only_resources);
101struct rmsummary *json_to_rmsummary(struct jx *j);
102
104struct rmsummary *rmsummary_create(double default_value);
105void rmsummary_delete(struct rmsummary *s);
106
107void rmsummary_read_env_vars(struct rmsummary *s);
108
109void rmsummary_merge_max_w_time(struct rmsummary *dest, const struct rmsummary *src);
110
111struct rmsummary *rmsummary_copy(const struct rmsummary *src, int deep_copy);
112void rmsummary_merge_override(struct rmsummary *dest, const struct rmsummary *src);
113void rmsummary_merge_override_basic(struct rmsummary *dest, const struct rmsummary *src);
114void rmsummary_merge_default(struct rmsummary *dest, const struct rmsummary *src);
115void rmsummary_merge_max(struct rmsummary *dest, const struct rmsummary *src);
116void rmsummary_merge_min(struct rmsummary *dest, const struct rmsummary *src);
117void rmsummary_add(struct rmsummary *dest, const struct rmsummary *src);
118
119void rmsummary_debug_report(const struct rmsummary *s);
120
121struct rmsummary *rmsummary_get_snapshot(const struct rmsummary *s, size_t i);
122int rmsummary_check_limits(struct rmsummary *measured, struct rmsummary *limits);
123
124size_t rmsummary_num_resources();
125const char **rmsummary_list_resources();
126
127const char *rmsummary_resource_units(const char *resource_name);
128int rmsummary_resource_decimals(const char *resource_name);
129size_t rmsummary_resource_offset(const char *resource_name);
130
131const char *rmsummary_resource_to_str(const char *resource, double value, int include_units);
132
133#endif
String Buffer Operations.
JSON Expressions (JX) library.
Definition buffer.h:26
Definition category.h:69
JX value representing any expression type.
Definition jx.h:117
Definition rmsummary.h:27