Skip to content
Snippets Groups Projects
Commit 21db50cb authored by clohr's avatar clohr
Browse files

Affichage trié

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/C/trunk@1961 b32b6428-25c9-4566-ad07-03861ab6144f
parent fe574f39
Branches
No related tags found
No related merge requests found
......@@ -66,6 +66,53 @@ seen_dev_t *append_dev(seen_devs_t *seen_devs, const char *addr, const char *dev
}
/*
* list of devices sorted by messages count
*/
typedef TAILQ_HEAD(sorted_listhead, sorted_entry) sorted_devs_t;
typedef struct sorted_entry {
char *addr;
char *type;
char *ip;
double bw, count;
TAILQ_ENTRY(sorted_entry) entries;
} sorted_dev_t;
void insert_sorted_dev(sorted_devs_t *sorted_devs, char *addr, char *type, char *ip, double bw, double count) {
sorted_dev_t *np, *smaller_dev = NULL;
TAILQ_FOREACH(smaller_dev, sorted_devs, entries)
if ( count > smaller_dev->count)
break;
np = (sorted_dev_t*) malloc( sizeof(sorted_dev_t) );
np->addr = addr;
np->type = type;
np->ip = ip;
np->bw = bw;
np->count = count;
if (smaller_dev)
TAILQ_INSERT_BEFORE(smaller_dev, np, entries);
else
TAILQ_INSERT_TAIL(sorted_devs, np, entries);
}
void print_sorted_dev(sorted_devs_t *sorted_devs) {
sorted_dev_t *sorted_dev;
TAILQ_FOREACH(sorted_dev, sorted_devs, entries)
printf("count:% .3g%% bw:% .3g%% %s %s %s\n", sorted_dev->count, sorted_dev->bw, sorted_dev->ip, sorted_dev->addr, sorted_dev->type);
}
void del_sorted_dev(sorted_devs_t *sorted_devs) {
sorted_dev_t *sorted_dev;
TAILQ_FOREACH(sorted_dev, sorted_devs, entries)
free(sorted_dev);
}
/*
* global variables
* functions on global variables
......@@ -100,10 +147,12 @@ void init_data() {
void print_report(int s) {
seen_dev_t *np;
seen_dev_t *seen_dev;
struct timeval now, elapsed;
unsigned long sec, min, hr, day, t, elapsed_sec;
double bw, bw_dev;
unsigned nb_devs = 0;
sorted_devs_t sorted_devs;
gettimeofday(&now, NULL);
printf("%s", ctime(&(now.tv_sec)));
......@@ -120,13 +169,20 @@ void print_report(int s) {
elapsed_sec = elapsed.tv_sec + elapsed.tv_usec*1E-6;
bw = (double)(bytes_count) / (double)(elapsed_sec);
printf("bandwidth: %.3g kB/s %.3g msg/s (%llu messages, mean size: %.3gB)\n", bw/1024, (double)(msgs_count)/elapsed_sec, msgs_count, (double)(bytes_count)/msgs_count);
LIST_FOREACH(np, seen_devs, entries) {
bw_dev = (double)(np->bytes) / (double)(elapsed.tv_sec + elapsed.tv_usec*1E-6);
printf("%s %s %s bw:%.3g%% count:%.3g%%\n", np->addr, np->ip, np->type, bw_dev/bw*100.0, (double)(np->msgs)/(double)(msgs_count)*100.0);
TAILQ_INIT(&sorted_devs);
LIST_FOREACH(seen_dev, seen_devs, entries) {
bw_dev = (double)(seen_dev->bytes) / (double)(elapsed.tv_sec + elapsed.tv_usec*1E-6);
insert_sorted_dev(&sorted_devs, seen_dev->addr, seen_dev->type, seen_dev->ip, bw_dev/bw*100.0, (double)(seen_dev->msgs)/(double)(msgs_count)*100.0);
nb_devs++;
}
printf("bandwidth: %.3g kB/s %.3g msg/s (%llu messages, mean size: %.3gB) %d devices\n",
bw/1024, (double)(msgs_count)/elapsed_sec, msgs_count, (double)(bytes_count)/msgs_count, nb_devs);
print_sorted_dev(&sorted_devs);
printf("\n");
del_sorted_dev(&sorted_devs);
switch (s) {
case SIGHUP:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment