Commit 483c7c96 authored by Rusty Russell's avatar Rusty Russell

lbalance: update tools for new time (and jmap!)

Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent d9b63547
#! /usr/bin/make #! /usr/bin/make
MODULES=../../jmap.o ../../time.o CCANDIR=../../..
CFLAGS=-I../../.. -g #-O2 CCAN_OBJS:=ccan-jmap.o ccan-time.o
LDFLAGS=-lJudy
lbalance: lbalance.c $(MODULES) CFLAGS=-I$(CCANDIR) -Wall -g #-O2
LDLIBS=-lJudy
$(MODULES): lbalance: lbalance.c $(CCAN_OBJS)
make -C ../../.. $(patsubst ../../%.o, ccan/%.o, $@) EXCLUDE=
clean: clean:
rm -f lbalance $(MODULES) rm -f lbalance $(CCAN_OBJS)
ccan-jmap.o: $(CCANDIR)/ccan/jmap/jmap.c
$(CC) $(CFLAGS) -c -o $@ $<
ccan-time.o: $(CCANDIR)/ccan/time/time.c
$(CC) $(CFLAGS) -c -o $@ $<
#include <ccan/lbalance/lbalance.h> #include <ccan/lbalance/lbalance.h>
#include <ccan/lbalance/lbalance.c> #include <ccan/lbalance/lbalance.c>
#include <ccan/time/time.h> #include <ccan/time/time.h>
#include <ccan/jmap/jmap_type.h> #include <ccan/jmap/jmap.h>
#include <stdio.h> #include <stdio.h>
#include <err.h> #include <err.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/wait.h>
/* Defines struct jmap_task. */ struct jmap_task {
JMAP_DEFINE_UINTIDX_TYPE(struct lbalance_task, task); JMAP_MEMBERS(unsigned int, struct lbalance_task *);
};
/* Figure out how many loops we need to run for about 1 second. */ /* Figure out how many loops we need to run for about 1 second. */
static unsigned long burn_count; static unsigned long burn_count;
static void calibrate_burn_cpu(void) static void calibrate_burn_cpu(void)
{ {
struct timeval start = time_now(); struct timeabs start = time_now();
while (time_less(time_now(), time_add(start, time_from_msec(1000)))) while (time_before(time_now(),
timeabs_add(start, time_from_msec(1000))))
burn_count++; burn_count++;
printf("Burn count = %lu\n", burn_count); printf("Burn count = %lu\n", burn_count);
} }
...@@ -23,12 +29,12 @@ static void calibrate_burn_cpu(void) ...@@ -23,12 +29,12 @@ static void calibrate_burn_cpu(void)
static void burn_cpu(void) static void burn_cpu(void)
{ {
unsigned int i, after = 0; unsigned int i, after = 0;
struct timeval start = time_now(); struct timeabs start = time_now();
/* We do a loop similar to the calibrate_burn_cpu loop. */ /* We do a loop similar to the calibrate_burn_cpu loop. */
for (i = 0; i < burn_count; i++) { for (i = 0; i < burn_count; i++) {
after += time_less(time_now(), after += time_before(time_now(),
time_add(start, time_from_msec(1000))); timeabs_add(start, time_from_msec(1000)));
} }
/* We use the result so the compiler can't discard it. */ /* We use the result so the compiler can't discard it. */
exit(after); exit(after);
...@@ -51,9 +57,9 @@ static pid_t spawn(char *args[]) ...@@ -51,9 +57,9 @@ static pid_t spawn(char *args[])
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
unsigned int i, num, fixed_target = 0, num_done = 0, num_running = 0; unsigned int num, fixed_target = 0, num_done = 0, num_running = 0;
struct lbalance *lb; struct lbalance *lb;
struct jmap_task *tasks = jmap_task_new(); struct jmap_task *tasks = jmap_new(struct jmap_task);
if (argc < 2) { if (argc < 2) {
fprintf(stderr, fprintf(stderr,
...@@ -80,7 +86,7 @@ int main(int argc, char *argv[]) ...@@ -80,7 +86,7 @@ int main(int argc, char *argv[])
calibrate_burn_cpu(); calibrate_burn_cpu();
while (num_done < num) { while (num_done < num) {
unsigned int j, target = fixed_target; unsigned int target = fixed_target;
struct lbalance_task *task; struct lbalance_task *task;
struct rusage ru; struct rusage ru;
pid_t pid; pid_t pid;
...@@ -96,14 +102,14 @@ int main(int argc, char *argv[]) ...@@ -96,14 +102,14 @@ int main(int argc, char *argv[])
task = lbalance_task_new(lb); task = lbalance_task_new(lb);
else else
task = (void *)1; task = (void *)1;
jmap_task_add(tasks, pid, task); jmap_add(tasks, pid, task);
num_running++; num_running++;
printf("+"); fflush(stdout); printf("+"); fflush(stdout);
} }
/* Now wait for something to die! */ /* Now wait for something to die! */
pid = wait3(NULL, 0, &ru); pid = wait3(NULL, 0, &ru);
task = jmap_task_get(tasks, pid); task = jmap_get(tasks, pid);
if (lb) if (lb)
lbalance_task_free(task, &ru); lbalance_task_free(task, &ru);
num_done++; num_done++;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment