Skip to contentSkip to conversation

Reduce thread stack size

PATCH Applied Bart Van Assche 2 participants 2 messages Aug 1, 2010

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Reduce thread stack size

This patch reduces the stack size required by fio threads and hence allows to run fio with 200 or more threads on systems with a moderate amount of virtual memory.

fio.c +5 -1
index 896f797..6ab0f4a 100644
@@ -1380,9 +1380,13 @@ static void *gtod_thread_main(void *data)
 
 static int fio_start_gtod_thread(void)
 {
+	pthread_attr_t attr;
 	int ret;
 
-	ret = pthread_create(&gtod_thread, NULL, gtod_thread_main, NULL);
+	pthread_attr_init(&attr);
+	pthread_attr_setstacksize(&attr, PTHREAD_STACK_MIN);
+	ret = pthread_create(&gtod_thread, &attr, gtod_thread_main, NULL);
+	pthread_attr_destroy(&attr);
 	if (ret) {
 		log_err("Can't create gtod thread: %s\n", strerror(ret));
 		return 1;
verify.c +7 -1
index 42ea462..7957bd4 100644
@@ -886,12 +886,16 @@ done:
 int verify_async_init(struct thread_data *td)
 {
 	int i, ret;
+	pthread_attr_t attr;
+
+	pthread_attr_init(&attr);
+	pthread_attr_setstacksize(&attr, PTHREAD_STACK_MIN);
 
 	td->verify_thread_exit = 0;
 
 	td->verify_threads = malloc(sizeof(pthread_t) * td->o.verify_async);
 	for (i = 0; i < td->o.verify_async; i++) {
-		ret = pthread_create(&td->verify_threads[i], NULL,
+		ret = pthread_create(&td->verify_threads[i], &attr,
 					verify_async_thread, td);
 		if (ret) {
 			log_err("fio: async verify creation failed: %s\n",
@@ -907,6 +911,8 @@ int verify_async_init(struct thread_data *td)
 		td->nr_verify_threads++;
 	}
 
+	pthread_attr_destroy(&attr);
+
 	if (i != td->o.verify_async) {
 		log_err("fio: only %d verify threads started, exiting\n", i);
 		td->verify_thread_exit = 1;
Applied
#1 lore raw
Quoted 6 lines · Bart Van Assche

This patch reduces the stack size required by fio threads and hence allows to run fio with 200 or more threads on systems with a moderate amount of virtual memory.

Thanks, applied. From a quick look on the stack usage and what the min pthread stack size is here (16K), only the blktrace load looks problematic.

Signature · 4 lines
Jens Axboe


Confidentiality Notice: This e-mail message, its contents and any attachments to it are confidential to the intended recipient, and may contain information that is privileged and/or exempt from disclosure under applicable law. If you are not the intended recipient, please immediately notify the sender and destroy the original e-mail message and any attachments (and any copies that may have been made) from your system or otherwise. Any unauthorized use, copying, disclosure or distribution of this information is strictly prohibited.