mirror of
https://github.com/systemd/systemd.git
synced 2025-03-13 00:58:27 +03:00
parse-util: prefix load average macros with LOAD_AVG_
Follow-up for #20839
This commit is contained in:
parent
49e9218ae3
commit
3542da2442
@ -740,13 +740,13 @@ int parse_oom_score_adjust(const char *s, int *ret) {
|
||||
int store_loadavg_fixed_point(unsigned long i, unsigned long f, loadavg_t *ret) {
|
||||
assert(ret);
|
||||
|
||||
if (i >= (~0UL << PRECISION_BITS))
|
||||
if (i >= (~0UL << LOADAVG_PRECISION_BITS))
|
||||
return -ERANGE;
|
||||
|
||||
i = i << PRECISION_BITS;
|
||||
f = DIV_ROUND_UP((f << PRECISION_BITS), 100);
|
||||
i = i << LOADAVG_PRECISION_BITS;
|
||||
f = DIV_ROUND_UP((f << LOADAVG_PRECISION_BITS), 100);
|
||||
|
||||
if (f >= FIXED_POINT_1_0)
|
||||
if (f >= LOADAVG_FIXED_POINT_1_0)
|
||||
return -ERANGE;
|
||||
|
||||
*ret = i | f;
|
||||
|
@ -138,10 +138,10 @@ int parse_oom_score_adjust(const char *s, int *ret);
|
||||
/* Implement floating point using fixed integers, to improve performance when
|
||||
* calculating load averages. These macros can be used to extract the integer
|
||||
* and decimal parts of a value. */
|
||||
#define PRECISION_BITS 11
|
||||
#define FIXED_POINT_1_0 (1 << PRECISION_BITS)
|
||||
#define INT_SIDE(x) ((x) >> PRECISION_BITS)
|
||||
#define DECIMAL_SIDE(x) INT_SIDE(((x) & (FIXED_POINT_1_0 - 1)) * 100)
|
||||
#define LOADAVG_PRECISION_BITS 11
|
||||
#define LOADAVG_FIXED_POINT_1_0 (1 << LOADAVG_PRECISION_BITS)
|
||||
#define LOADAVG_INT_SIDE(x) ((x) >> LOADAVG_PRECISION_BITS)
|
||||
#define LOADAVG_DECIMAL_SIDE(x) LOADAVG_INT_SIDE(((x) & (LOADAVG_FIXED_POINT_1_0 - 1)) * 100)
|
||||
|
||||
/* Given a Linux load average (e.g. decimal number 34.89 where 34 is passed as i and 89 is passed as f), convert it
|
||||
* to a loadavg_t. */
|
||||
|
@ -502,8 +502,8 @@ static int monitor_memory_pressure_contexts_handler(sd_event_source *s, uint64_t
|
||||
|
||||
log_debug("Memory pressure for %s is %lu.%02lu%% > %lu.%02lu%% for > %s with reclaim activity",
|
||||
t->path,
|
||||
INT_SIDE(t->memory_pressure.avg10), DECIMAL_SIDE(t->memory_pressure.avg10),
|
||||
INT_SIDE(t->mem_pressure_limit), DECIMAL_SIDE(t->mem_pressure_limit),
|
||||
LOADAVG_INT_SIDE(t->memory_pressure.avg10), LOADAVG_DECIMAL_SIDE(t->memory_pressure.avg10),
|
||||
LOADAVG_INT_SIDE(t->mem_pressure_limit), LOADAVG_DECIMAL_SIDE(t->mem_pressure_limit),
|
||||
FORMAT_TIMESPAN(m->default_mem_pressure_duration_usec, USEC_PER_SEC));
|
||||
|
||||
r = update_monitored_cgroup_contexts_candidates(
|
||||
@ -527,8 +527,8 @@ static int monitor_memory_pressure_contexts_handler(sd_event_source *s, uint64_t
|
||||
log_notice("Killed %s due to memory pressure for %s being %lu.%02lu%% > %lu.%02lu%%"
|
||||
" for > %s with reclaim activity",
|
||||
selected, t->path,
|
||||
INT_SIDE(t->memory_pressure.avg10), DECIMAL_SIDE(t->memory_pressure.avg10),
|
||||
INT_SIDE(t->mem_pressure_limit), DECIMAL_SIDE(t->mem_pressure_limit),
|
||||
LOADAVG_INT_SIDE(t->memory_pressure.avg10), LOADAVG_DECIMAL_SIDE(t->memory_pressure.avg10),
|
||||
LOADAVG_INT_SIDE(t->mem_pressure_limit), LOADAVG_DECIMAL_SIDE(t->mem_pressure_limit),
|
||||
FORMAT_TIMESPAN(m->default_mem_pressure_duration_usec, USEC_PER_SEC));
|
||||
return 0;
|
||||
}
|
||||
@ -811,7 +811,7 @@ int manager_get_dump_string(Manager *m, char **ret) {
|
||||
"System Context:\n",
|
||||
yes_no(m->dry_run),
|
||||
PERMYRIAD_AS_PERCENT_FORMAT_VAL(m->swap_used_limit_permyriad),
|
||||
INT_SIDE(m->default_mem_pressure_limit), DECIMAL_SIDE(m->default_mem_pressure_limit),
|
||||
LOADAVG_INT_SIDE(m->default_mem_pressure_limit), LOADAVG_DECIMAL_SIDE(m->default_mem_pressure_limit),
|
||||
FORMAT_TIMESPAN(m->default_mem_pressure_duration_usec, USEC_PER_SEC));
|
||||
oomd_dump_system_context(&m->system_context, f, "\t");
|
||||
|
||||
|
@ -530,11 +530,11 @@ void oomd_dump_memory_pressure_cgroup_context(const OomdCGroupContext *ctx, FILE
|
||||
"%s\tPressure: Avg10: %lu.%02lu Avg60: %lu.%02lu Avg300: %lu.%02lu Total: %s\n"
|
||||
"%s\tCurrent Memory Usage: %s\n",
|
||||
strempty(prefix), ctx->path,
|
||||
strempty(prefix), INT_SIDE(ctx->mem_pressure_limit), DECIMAL_SIDE(ctx->mem_pressure_limit),
|
||||
strempty(prefix), LOADAVG_INT_SIDE(ctx->mem_pressure_limit), LOADAVG_DECIMAL_SIDE(ctx->mem_pressure_limit),
|
||||
strempty(prefix),
|
||||
INT_SIDE(ctx->memory_pressure.avg10), DECIMAL_SIDE(ctx->memory_pressure.avg10),
|
||||
INT_SIDE(ctx->memory_pressure.avg60), DECIMAL_SIDE(ctx->memory_pressure.avg60),
|
||||
INT_SIDE(ctx->memory_pressure.avg300), DECIMAL_SIDE(ctx->memory_pressure.avg300),
|
||||
LOADAVG_INT_SIDE(ctx->memory_pressure.avg10), LOADAVG_DECIMAL_SIDE(ctx->memory_pressure.avg10),
|
||||
LOADAVG_INT_SIDE(ctx->memory_pressure.avg60), LOADAVG_DECIMAL_SIDE(ctx->memory_pressure.avg60),
|
||||
LOADAVG_INT_SIDE(ctx->memory_pressure.avg300), LOADAVG_DECIMAL_SIDE(ctx->memory_pressure.avg300),
|
||||
FORMAT_TIMESPAN(ctx->memory_pressure.total, USEC_PER_SEC),
|
||||
strempty(prefix), FORMAT_BYTES(ctx->current_memory_usage));
|
||||
|
||||
|
@ -804,24 +804,24 @@ static void test_parse_loadavg_fixed_point(void) {
|
||||
loadavg_t fp;
|
||||
|
||||
assert_se(parse_loadavg_fixed_point("1.23", &fp) == 0);
|
||||
assert_se(INT_SIDE(fp) == 1);
|
||||
assert_se(DECIMAL_SIDE(fp) == 23);
|
||||
assert_se(LOADAVG_INT_SIDE(fp) == 1);
|
||||
assert_se(LOADAVG_DECIMAL_SIDE(fp) == 23);
|
||||
|
||||
assert_se(parse_loadavg_fixed_point("1.80", &fp) == 0);
|
||||
assert_se(INT_SIDE(fp) == 1);
|
||||
assert_se(DECIMAL_SIDE(fp) == 80);
|
||||
assert_se(LOADAVG_INT_SIDE(fp) == 1);
|
||||
assert_se(LOADAVG_DECIMAL_SIDE(fp) == 80);
|
||||
|
||||
assert_se(parse_loadavg_fixed_point("0.07", &fp) == 0);
|
||||
assert_se(INT_SIDE(fp) == 0);
|
||||
assert_se(DECIMAL_SIDE(fp) == 7);
|
||||
assert_se(LOADAVG_INT_SIDE(fp) == 0);
|
||||
assert_se(LOADAVG_DECIMAL_SIDE(fp) == 7);
|
||||
|
||||
assert_se(parse_loadavg_fixed_point("0.00", &fp) == 0);
|
||||
assert_se(INT_SIDE(fp) == 0);
|
||||
assert_se(DECIMAL_SIDE(fp) == 0);
|
||||
assert_se(LOADAVG_INT_SIDE(fp) == 0);
|
||||
assert_se(LOADAVG_DECIMAL_SIDE(fp) == 0);
|
||||
|
||||
assert_se(parse_loadavg_fixed_point("4096.57", &fp) == 0);
|
||||
assert_se(INT_SIDE(fp) == 4096);
|
||||
assert_se(DECIMAL_SIDE(fp) == 57);
|
||||
assert_se(LOADAVG_INT_SIDE(fp) == 4096);
|
||||
assert_se(LOADAVG_DECIMAL_SIDE(fp) == 57);
|
||||
|
||||
/* Caps out at 2 digit fracs */
|
||||
assert_se(parse_loadavg_fixed_point("1.100", &fp) == -ERANGE);
|
||||
|
@ -35,40 +35,40 @@ static void test_read_mem_pressure(void) {
|
||||
assert_se(write_string_file(path, "some avg10=0.22 avg60=0.17 avg300=1.11 total=58761459\n"
|
||||
"full avg10=0.23 avg60=0.16 avg300=1.08 total=58464525", WRITE_STRING_FILE_CREATE) == 0);
|
||||
assert_se(read_resource_pressure(path, PRESSURE_TYPE_SOME, &rp) == 0);
|
||||
assert_se(INT_SIDE(rp.avg10) == 0);
|
||||
assert_se(DECIMAL_SIDE(rp.avg10) == 22);
|
||||
assert_se(INT_SIDE(rp.avg60) == 0);
|
||||
assert_se(DECIMAL_SIDE(rp.avg60) == 17);
|
||||
assert_se(INT_SIDE(rp.avg300) == 1);
|
||||
assert_se(DECIMAL_SIDE(rp.avg300) == 11);
|
||||
assert_se(LOADAVG_INT_SIDE(rp.avg10) == 0);
|
||||
assert_se(LOADAVG_DECIMAL_SIDE(rp.avg10) == 22);
|
||||
assert_se(LOADAVG_INT_SIDE(rp.avg60) == 0);
|
||||
assert_se(LOADAVG_DECIMAL_SIDE(rp.avg60) == 17);
|
||||
assert_se(LOADAVG_INT_SIDE(rp.avg300) == 1);
|
||||
assert_se(LOADAVG_DECIMAL_SIDE(rp.avg300) == 11);
|
||||
assert_se(rp.total == 58761459);
|
||||
assert(read_resource_pressure(path, PRESSURE_TYPE_FULL, &rp) == 0);
|
||||
assert_se(INT_SIDE(rp.avg10) == 0);
|
||||
assert_se(DECIMAL_SIDE(rp.avg10) == 23);
|
||||
assert_se(INT_SIDE(rp.avg60) == 0);
|
||||
assert_se(DECIMAL_SIDE(rp.avg60) == 16);
|
||||
assert_se(INT_SIDE(rp.avg300) == 1);
|
||||
assert_se(DECIMAL_SIDE(rp.avg300) == 8);
|
||||
assert_se(LOADAVG_INT_SIDE(rp.avg10) == 0);
|
||||
assert_se(LOADAVG_DECIMAL_SIDE(rp.avg10) == 23);
|
||||
assert_se(LOADAVG_INT_SIDE(rp.avg60) == 0);
|
||||
assert_se(LOADAVG_DECIMAL_SIDE(rp.avg60) == 16);
|
||||
assert_se(LOADAVG_INT_SIDE(rp.avg300) == 1);
|
||||
assert_se(LOADAVG_DECIMAL_SIDE(rp.avg300) == 8);
|
||||
assert_se(rp.total == 58464525);
|
||||
|
||||
/* Pressure file with extra unsupported fields */
|
||||
assert_se(write_string_file(path, "some avg5=0.55 avg10=0.22 avg60=0.17 avg300=1.11 total=58761459\n"
|
||||
"full avg10=0.23 avg60=0.16 avg300=1.08 avg600=2.00 total=58464525", WRITE_STRING_FILE_CREATE) == 0);
|
||||
assert_se(read_resource_pressure(path, PRESSURE_TYPE_SOME, &rp) == 0);
|
||||
assert_se(INT_SIDE(rp.avg10) == 0);
|
||||
assert_se(DECIMAL_SIDE(rp.avg10) == 22);
|
||||
assert_se(INT_SIDE(rp.avg60) == 0);
|
||||
assert_se(DECIMAL_SIDE(rp.avg60) == 17);
|
||||
assert_se(INT_SIDE(rp.avg300) == 1);
|
||||
assert_se(DECIMAL_SIDE(rp.avg300) == 11);
|
||||
assert_se(LOADAVG_INT_SIDE(rp.avg10) == 0);
|
||||
assert_se(LOADAVG_DECIMAL_SIDE(rp.avg10) == 22);
|
||||
assert_se(LOADAVG_INT_SIDE(rp.avg60) == 0);
|
||||
assert_se(LOADAVG_DECIMAL_SIDE(rp.avg60) == 17);
|
||||
assert_se(LOADAVG_INT_SIDE(rp.avg300) == 1);
|
||||
assert_se(LOADAVG_DECIMAL_SIDE(rp.avg300) == 11);
|
||||
assert_se(rp.total == 58761459);
|
||||
assert(read_resource_pressure(path, PRESSURE_TYPE_FULL, &rp) == 0);
|
||||
assert_se(INT_SIDE(rp.avg10) == 0);
|
||||
assert_se(DECIMAL_SIDE(rp.avg10) == 23);
|
||||
assert_se(INT_SIDE(rp.avg60) == 0);
|
||||
assert_se(DECIMAL_SIDE(rp.avg60) == 16);
|
||||
assert_se(INT_SIDE(rp.avg300) == 1);
|
||||
assert_se(DECIMAL_SIDE(rp.avg300) == 8);
|
||||
assert_se(LOADAVG_INT_SIDE(rp.avg10) == 0);
|
||||
assert_se(LOADAVG_DECIMAL_SIDE(rp.avg10) == 23);
|
||||
assert_se(LOADAVG_INT_SIDE(rp.avg60) == 0);
|
||||
assert_se(LOADAVG_DECIMAL_SIDE(rp.avg60) == 16);
|
||||
assert_se(LOADAVG_INT_SIDE(rp.avg300) == 1);
|
||||
assert_se(LOADAVG_DECIMAL_SIDE(rp.avg300) == 8);
|
||||
assert_se(rp.total == 58464525);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user