Stack Size Calculator
Calculate thread stack size requirements and total stack memory for multi-threaded processes.
Inputs
Default is 8192 KB (8 MB) on most Linux systems
Protected page between stacks to detect overflow
Total Stack Memory
1,600.78MB
Total Stack Memory
1.563GB
Effective Per-Thread Size
8,196KB
Thread Count
200
Step by step
Per-thread (including guard)
8192 + 4 KB
= 8196 KB
Total stack memory
8196 KB × 200 threads
= 1600.78 MB (1.563 GB)
How it works
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
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.