拥有一小堆线程有什么好处?

问题描述 投票:1回答:1

我正在研究POSIX线程,发现有一种方法可以更改堆栈大小;我仍然是一般操作系统的外行。那么,拥有小的堆栈有什么好处,我在运行时会节省内存吗?输入嵌入式系统?

c operating-system pthreads posix embedded-linux
1个回答
0
投票

拥有少量堆栈有什么好处

主要好处是您可以创建更多线程。

在32位OS(4GiB地址空间)上,使用8MiB堆栈最多可以创建512个线程。实际上,您将更快地用完虚拟地址,因为内核通常会保留总地址空间的1/2到1/4,而堆库和共享库会更多地分割可用地址空间。

如果正在运行服务器进程(例如Web搜索),则可能需要使用“每个连接一个线程”模型,该模型随后限制了您在一台计算机上可以同时处理多少个同时连接。甚至在10年前,与处理器的功能相比,500个线程还是太少了。

对于64位OS,地址空间用尽不多。

此外,一旦线程使用了大量堆栈,该内存将被“搁浅”。

假设您有一台Web服务器,每秒处理1000个请求。如果大多数请求使用(例如)32KiB的堆栈,但是偶尔出现的罕见请求使用4MiB的堆栈,并且如果请求在线程池中随机分布,则最终每个线程将使用2MiB的RAM,因此您的过程将继续使用N * 2MiB的RAM,尽管99.99%的时间只需要N * 32KiB。

如果强制线程使用不超过(例如)64KiB的堆栈,则可以避免此类RAM搁浅。

具有此额外的RAM,您可以在同一台计算机上运行其他任务(这是多少云服务提供商能够以非常低的成本出售其“超额容量”)。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.