C Redhat 7.1内核进程堆栈大小从8K到16KB

C Redhat 7.1内核进程堆栈大小从8K到16KB,c,linux,linux-kernel,redhat,C,Linux,Linux Kernel,Redhat,在阅读《红帽7.1》的发行说明时,我读到以下内容: Process Stack Size Increased from 8KB to 16KB Since Red Hat Enterprise Linux 7.1, the kernel process stack size has been increased from 8KB to 16KB to help large processes that use stack space. 我知道内核进程堆栈是驻留内存,在创建进程时进行分配,并且内

在阅读《红帽7.1》的发行说明时,我读到以下内容:

Process Stack Size Increased from 8KB to 16KB
Since Red Hat Enterprise Linux 7.1, the kernel process stack size has been increased from 8KB to 16KB to help large processes that use stack space.
我知道内核进程堆栈是驻留内存,在创建进程时进行分配,并且内存需要是连续的,在页大小为4096字节的
x86_64
中,内核需要为进程堆栈找到4页(共2页)

当内核内存碎片化时,此功能可能会出现问题? 使用一个进程内核堆栈大小,当内存碎片化时,进程创建将更容易出现问题?


当内存碎片化时,查找堆栈空间可能是一个问题。

内核通常需要分配一组物理上连续的一个或多个页面。这在分配缓冲区(DMA等数据传输的驱动程序所需)或创建进程堆栈时可能是必要的

通常,为了满足这些要求,内核试图通过分配物理上连续的页面来避免碎片化,另外释放的页面被合并/分组到更大的物理上连续的页面组中(如果可用)。这由内存管理子系统和伙伴分配器处理。现在,当程序开始执行时,在RHEL7中创建堆栈(
8k
16k
)时


如果内核无法获取或分配请求的物理连续页面集(2个用于8k堆栈,4个用于16k堆栈,假设页面大小为4k),那么这可能会导致
页面分配失败,顺序为:2
。(即2^2=4页*4K)。顺序取决于请求的物理连续页面的大小。当页面分配失败时,我们可以观察到
/proc/buddyinfo
文件,它可能显示物理内存碎片化的迹象。

您的问题似乎不清楚,与编程无关。是关于linux内核进程的。我会回答你的问题。然后你会看到为什么你的问题有问题。谢谢,我会在我的问题中添加一些东西。我不知道这与编程有什么关系。这也不是问题。组成内核堆栈的页面不需要在物理RAM中是连续的。它们需要在虚拟地址空间中是连续的,但是64位内核虚拟地址空间非常大,128 TB,所以碎片从来都不是问题。内核进程堆栈必须驻留在连续的物理内存中吗?这就是我要寻找的。