ManojKumar
ManojKumar

Reputation: 31

how to set stack size for a thread

When I create a new thread and inside thread function allocate some memory on heap using malloc then process memory is increased by 64 mb.Before creating the thread I tried to set the stack size to 64 kb using pthread_attr_setstacksize but there is no impact on process memory. If I create 2 threads then process memory is increased by 64*2=128 mb

Example code https://www.ibm.com/docs/en/zos/2.2.0?topic=functions-pthread-attr-setstacksize-set-stacksize-attribute-object

Is there an solution to avoid extra 64 mb of memory for each thread?

Upvotes: 0

Views: 925

Answers (1)

Employed Russian
Employed Russian

Reputation: 213955

Before creating the thread I tried to set the stack size to 64 kb using pthread_attr_setstacksize

That is the correct way to set stack size.

but there is no impact on process memory.

It doesn't sound like your memory consumption is coming from the thread stack.

It sounds like your malloc implementation reserves memory in 64MiB chunks (probably to manage thread-local allocation arenas).

Accurately measuring actual memory usage on modern systems is surprisingly non-trivial. If you are looking at VM in ps output, you are doing it wrong. If you are looking at RSS, that's closer but still only an approximation.

Is there an solution to avoid extra 64 mb of memory for each thread?

There might be environment variables or functions you can call to tune your malloc implementation.

But you haven't told us which malloc implementation (or OS) you are using, and without that we can't help you.

Also note that "avoiding extra 64MiB" is likely not a goal you should pursue (see http://xyproblem.info).

Upvotes: 1

Related Questions