This works! Thanks. Mind explaining the general idea / concept? Maybe I can port it to perl.
On Wed, Apr 13, 2011 at 6:21 AM, fooler mail <[email protected]> wrote: > On Tue, Apr 12, 2011 at 9:29 PM, John Homer H Alvero > <[email protected]> wrote: >> Hello Fooler, >> >> Sorry for the late reply. It's for an integration project. There's a >> trigger on CPU usage and CPU usage alone. I need to simulate simulate >> that CPU usage. >> > > hi john, > > ok i understand.. i made a simple C program for you (as im not used to > perl programming) to simulate CPU usage... it will waste or use the > CPU approximately with a given percentange as a parameter... > > just take note that cpu percentage is different from cpu load... cpu > percentage is the time spent by cpu on a given process... so i guess > this is what you are looking for to waste CPU cycles in user space... > > take note also if you have N processors... run this program N times > also so that each proccessor will be wasting X percentage of cpu > cycles... so that your average will be (X*N) / N or X percentage... > linux scheduler will take care fo assigning the program to its free > cpu.. > > name the program below let say to waste.c and compile with gcc > > $ gcc waste.c -o waste > > run the program with a given percentage let say 85 percent... > > $ ./waste 85 > > run "top" command and press 1 to see per CPU utilization as well as > per process utilization... you can see there the dynamics of linux > scheduler... just increase SAMPLING value not greater than signed > integer value (around 2 giga plus) if you need better accuracy or > decrease it for faster sampling times but at the expense of its > accuracy... or you can convert signed interger to unsigned integer for > bigger value... hope this helps.. > > #include <stdio.h> > #include <stdlib.h> > #include <time.h> > #include <unistd.h> > #include <sys/select.h> > > #define SAMPLING 2000000000 > > void WasteCPU(int waste, int percent) { > int i; > struct timeval sleep; > > for(i = waste; i; i--); > sleep.tv_sec = 0; > sleep.tv_usec = (100 - percent) * 10000; > select(1, NULL, NULL, NULL, &sleep); > } > > int main(int argc, char *argv[]) { > float cps; > int waste, percent; > clock_t time1, time2; > > printf("Start to sampling clock speed...\n"); > percent = 100; > waste = SAMPLING; > time1 = clock(); > WasteCPU(waste, percent); > time2 = clock(); > cps = (time2 - time1) / (float) CLOCKS_PER_SEC; > > percent = atoi(argv[1]); > waste = (int) (SAMPLING / cps / (100.0 / percent)); > printf("Sampling done. Wasting CPU approximately %d > percent...\n", percent); > while (1) { > WasteCPU(waste, percent); > } > > return (0); > } > > > fooler. > _________________________________________________ > Philippine Linux Users' Group (PLUG) Mailing List > http://lists.linux.org.ph/mailman/listinfo/plug > Searchable Archives: http://archives.free.net.ph > _________________________________________________ Philippine Linux Users' Group (PLUG) Mailing List http://lists.linux.org.ph/mailman/listinfo/plug Searchable Archives: http://archives.free.net.ph

