aboutsummaryrefslogtreecommitdiffstats
path: root/P3
diff options
context:
space:
mode:
Diffstat (limited to 'P3')
-rw-r--r--P3/.vscode/launch.json2
-rw-r--r--P3/server.c15
2 files changed, 8 insertions, 9 deletions
diff --git a/P3/.vscode/launch.json b/P3/.vscode/launch.json
index 5fab37f..f529d06 100644
--- a/P3/.vscode/launch.json
+++ b/P3/.vscode/launch.json
@@ -9,7 +9,7 @@
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/web_server",
- "args": ["9000", "testing", "2", "2", "0", "10", "3"],
+ "args": ["9000", "testing", "100", "100", "1", "100", "100"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
diff --git a/P3/server.c b/P3/server.c
index 7946457..5164a91 100644
--- a/P3/server.c
+++ b/P3/server.c
@@ -26,7 +26,7 @@ int tempNodeCounter = 0, counter2 = 0;
pthread_t *wID;
char *path;
pthread_mutex_t Qlock, logLock, cacheLock;
-clock_t start_t, end_t, total_t;
+clock_t start_t, end_t, total_t = 600;
void *worker(void *arg);
/*
@@ -64,10 +64,10 @@ void *dynamic_pool_size_update(void *arg)
// Policy: Have clock tracking how long the whole process takes
// If above maxProcessTime -> spawn X workers
// Else if below mostEfficientTime kill all unnecessary threads leaving 1(or 2) of each
- if (total_t > 30)
+ if (total_t > 3000)
{
// Threads must be detachable
- wID = realloc(wID, (++wIndex) * sizeof(pthread_t));
+ wID = (pthread_t *) realloc(wID, (++wIndex * sizeof(pthread_t)));
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
@@ -78,10 +78,10 @@ void *dynamic_pool_size_update(void *arg)
sprintf(threadName, "Worker %d", wIndex);
pthread_setname_np(wID[wIndex - 1], threadName);
}
- else if (total_t < 6)
+ else if (total_t < 500)
{
//TODO: Make sure thread isn't doing anything before killing it
- pthread_cancel(wID[--wIndex]);
+ pthread_cancel(wID[wIndex--]);
// Need dynamically allocated array of thread ID's so we can cancel the necessary threads
wID = realloc(wID, wIndex * sizeof(pthread_t));
}
@@ -438,7 +438,7 @@ void *worker(void *arg)
free(request);
free(workerBuf);
end_t = clock();
- total_t = (double)(end_t - start_t) / CLOCKS_PER_SEC;
+ total_t = (double)(end_t - start_t);
printf("Total time taken by CPU: %ld\n", total_t);
}
return NULL;
@@ -506,8 +506,7 @@ int main(int argc, char **argv)
struct sigaction act;
act.sa_handler = eggs;
act.sa_flags = 0;
- if (sigemptyset(&act.sa_mask) == -1 ||
- sigaction(SIGINT, &act, NULL) == -1)
+ if (sigemptyset(&act.sa_mask) == -1 || sigaction(SIGINT, &act, NULL) == -1)
{
perror("SIGINT Handler Error");
return -2;