Stress test in C !?
30 Nov 2011
This code will create N threads that take B bytes of memory each and spin forever. Call it whihout arguments to see the usage.#include <stdio.h> #include <stdlib.h> #include <pthread.h> #define pexit(s) ({perror(s); exit(EXIT_FAILURE);}) static unsigned int sleepi = 0; void *xmalloc(size_t); void *tfunction(void *); int main(int argc, char **argv) { int nthreads; int nbytes; int i; pthread_t *threadv; if (argc <= 2) { printf("Usage: %s NUMBER_OF_THREADS NUMBER_OF_BYTES_PER_THREAD " "[SLEEP_INTERVAL_IN_SECS]\n", argv[0]); exit(EXIT_FAILURE); } nthreads = atoi(argv[1]); nbytes = atoi(argv[2]); if (argc > 3) { sleepi = atoi(argv[3]); } threadv = xmalloc(sizeof(pthread_t) * nthreads); for (i = 0; i < nthreads; i++) { pthread_create(&threadv[i], NULL, tfunction, (void *)&nbytes); } while (1) sleep(~0lu); /* MAX LONG POSSIBLE */ return 0; } void *xmalloc(size_t siz) { void *n = malloc(siz); if (!n) pexit("malloc"); return n; } void *tfunction(void *num) { int i = *(int *)num; while (i--) malloc(1); if (sleepi) while (1) sleep(sleepi); else while (1); }