diff -Naur ganglia-3.0.0/gmetad/data_thread.c ganglia-3.0.0-mod/gmetad/data_thread.c --- ganglia-3.0.0/gmetad/data_thread.c 2005-02-02 16:24:14.000000000 -0200 +++ ganglia-3.0.0-mod/gmetad/data_thread.c 2005-02-10 07:31:20.000000000 -0200 @@ -158,10 +158,25 @@ g_tcp_socket_delete(sock); gettimeofday(&end, NULL); - /* Sleep somewhere between (step +/- 5sec.) */ - sleep_time = (d->step - 5) + (10 * (rand()/(float)RAND_MAX)) - (end.tv_sec - start.tv_sec); - if( sleep_time > 0 ) - sleep(sleep_time); + + if(d->step >= 5) + { + /* Sleep somewhere between (step +/- 5sec.) */ + sleep_time = (d->step - 5) + (10 * (rand () / (float) RAND_MAX)) - (end.tv_sec - start.tv_sec); + debug_msg("Sleeping... sleep_time=%d, d->step=%d", sleep_time, d->step); + if(sleep_time > 0) + sleep (sleep_time); + } + else + { + /* Sleep somewhere between (step +/- step/4 sec.) */ + sleep_time = 1000000 * ((d->step - d->step / 4.0) + (rand () / (float) (RAND_MAX)) * d->step / 2.0); + debug_msg("Sleeping... sleep_time=%d, d->step=%d", sleep_time, d->step); + if(sleep_time >= 1000000) + usleep(sleep_time); + else + sleep (1); + } } return NULL; } diff -Naur ganglia-3.0.0/gmetad/rrd_helpers.c ganglia-3.0.0-mod/gmetad/rrd_helpers.c --- ganglia-3.0.0/gmetad/rrd_helpers.c 2005-02-02 16:24:14.000000000 -0200 +++ ganglia-3.0.0-mod/gmetad/rrd_helpers.c 2005-02-10 07:31:35.000000000 -0200 @@ -72,6 +72,12 @@ char s[16], start[64]; char sum[64]; char num[64]; + + char hour[64]; + char day[64]; + char week[64]; + char month[64]; + char year[64]; /* Our heartbeat is twice the step interval. */ heartbeat = 8*step; @@ -90,12 +96,29 @@ sprintf(num,"DS:num:GAUGE:%d:U:U", heartbeat); argv[argc++] = num; } + /* argv[argc++] = "RRA:AVERAGE:0.5:1:240"; argv[argc++] = "RRA:AVERAGE:0.5:24:240"; argv[argc++] = "RRA:AVERAGE:0.5:168:240"; argv[argc++] = "RRA:AVERAGE:0.5:672:240"; argv[argc++] = "RRA:AVERAGE:0.5:5760:370"; - + */ + + sprintf(hour,"RRA:AVERAGE:0.5:1:%d", 3600/step); + argv[argc++] = hour; + + sprintf(day,"RRA:AVERAGE:0.5:%d:240", (15*24)/step ); + argv[argc++] = day; + + sprintf(week,"RRA:AVERAGE:0.5:%d:240", (15*168)/step); + argv[argc++] = week; + + sprintf(month,"RRA:AVERAGE:0.5:%d:240", (15*672)/step); + argv[argc++] = month; + + sprintf(year,"RRA:AVERAGE:0.5:%d:240", (15*5760)/step); + argv[argc++] = year; + pthread_mutex_lock( &rrd_mutex ); optind=0; opterr=0; rrd_clear_error();