cctools
rmsummary.h
1 /*
2 Copyright (C) 2022 The University of Notre Dame This software is
3 distributed under the GNU General Public License. See the file
4 COPYING 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 
26 struct rmsummary
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 
80 void rmsummary_print(FILE *stream, struct rmsummary *s, int pprint, struct jx *verbatim_fields);
81 void rmsummary_print_buffer(struct buffer *B, const struct rmsummary *s, int only_resources);
82 char *rmsummary_print_string(const struct rmsummary *s, int only_resources);
83 
84 /* Returns 1 if resource set, 0 if resource does not exist. */
85 int rmsummary_set(struct rmsummary *s, const char *resource, double value);
86 double rmsummary_get(const struct rmsummary *s, const char *resource);
87 
88 void rmsummary_set_by_offset(struct rmsummary *s, size_t offset, double value);
89 double rmsummary_get_by_offset(const struct rmsummary *s, size_t offset);
90 
92 struct rmsummary *rmsummary_parse_file_single(const char *filename);
93 
95 struct rmsummary *rmsummary_parse_string(const char *str);
96 
98 struct list *rmsummary_parse_file_multiple(const char *filename);
99 
100 struct jx *rmsummary_to_json(const struct rmsummary *s, int only_resources);
101 struct rmsummary *json_to_rmsummary(struct jx *j);
102 
104 struct rmsummary *rmsummary_create(double default_value);
105 void rmsummary_delete(struct rmsummary *s);
106 
107 void rmsummary_read_env_vars(struct rmsummary *s);
108 
109 void rmsummary_merge_max_w_time(struct rmsummary *dest, const struct rmsummary *src);
110 
111 struct rmsummary *rmsummary_copy(const struct rmsummary *src, int deep_copy);
112 void rmsummary_merge_override(struct rmsummary *dest, const struct rmsummary *src);
113 void rmsummary_merge_override_basic(struct rmsummary *dest, const struct rmsummary *src);
114 void rmsummary_merge_max(struct rmsummary *dest, const struct rmsummary *src);
115 void rmsummary_merge_min(struct rmsummary *dest, const struct rmsummary *src);
116 void rmsummary_add(struct rmsummary *dest, const struct rmsummary *src);
117 
118 void rmsummary_debug_report(const struct rmsummary *s);
119 
120 struct rmsummary *rmsummary_get_snapshot(const struct rmsummary *s, size_t i);
121 int rmsummary_check_limits(struct rmsummary *measured, struct rmsummary *limits);
122 
123 size_t rmsummary_num_resources();
124 const char **rmsummary_list_resources();
125 
126 const char *rmsummary_resource_units(const char *resource_name);
127 int rmsummary_resource_decimals(const char *resource_name);
128 size_t rmsummary_resource_offset(const char *resource_name);
129 
130 const char *rmsummary_resource_to_str(const char *resource, double value, int include_units);
131 
132 #endif
jx.h
category
Definition: category.h:69
rmsummary
Definition: rmsummary.h:26
buffer
Definition: buffer.h:26
buffer.h
jx
JX value representing any expression type.
Definition: jx.h:117