Stack Size Calculator
Calculate thread stack size requirements and total stack memory for multi-threaded processes.
About Stack Size Calculator
Each thread in a multi-threaded process gets its own stack, sized by ulimit -s (default 8MB on most Linux distributions) or explicitly via pthread_attr_setstacksize(). With hundreds or thousands of threads, total stack memory reservation becomes substantial — 200 threads × 8MB = 1.6GB of virtual address space. Reducing per-thread stack size for threads with known shallow call depths can significantly reduce the memory footprint of high-concurrency servers.
Formula
Total stack memory
total_stack = (per_thread_stack + guard_page) × thread_count
- S
- per-thread stack size
- G
- guard page size
- n
- thread count
Worked example
With the default values below, Stack Size Calculator returns Total Stack Memory of 1,600.78. Change any input above and every figure here is recalculated in your browser.
Inputs used
- Per-Thread Stack Sizeminimum 64 KB
- 8,192 KB
- Number of Threadsminimum 1
- 200
- Guard Page Sizeminimum 0 KB
- 4 KB
Results
- Total Stack Memory
- 1,600.78 MB
- Total Stack Memory
- 1.563 GB
- Effective Per-Thread Size
- 8,196 KB
- Thread Count
- 200
Step by step
- 1Per-thread (including guard)= 8196 KB
- 2Total stack memory= 1600.78 MB (1.563 GB)
Assumptions and limits
- The result is derived only from the 3 inputs listed above. Anything not among them is not part of the calculation.
- In particular, this calculator does not take inflation, tax, fees or charges or compounding frequency into account.
- Figures are rounded for display to 3 decimal places, so totals built from several rounded parts can differ slightly from the unrounded arithmetic.
How these calculators are built and tested is described on the Methodology page. If a figure looks wrong, please report it.
Frequently Asked Questions
What is the default thread stack size on Linux?
Usually 8MB (8192KB), set by ulimit -s. The actual default comes from the RLIMIT_STACK resource limit and can be overridden per-thread via pthread_attr_setstacksize() before creating the thread.
When should I reduce the default stack size?
When running many threads (hundreds+) that have shallow call stacks and don't use large stack-allocated arrays. Web servers, thread pools, and event-driven workers often safely use 256KB-1MB stacks.
