Linux 上的最大子进程数

2024-05-01

下面的代码将产生尽可能多的子级。自己不会进一步fork,一旦父进程退出就会变成僵尸。
父进程将产生多少个子进程?

int main(int argc, char *arg[])
{
     while(fork() > 0);
}

子进程的数量可以通过以下方式限制设置限制(2) http://man7.org/linux/man-pages/man2/setrlimit.2.html using RLIMIT_NPROC。请注意fork(2) http://man7.org/linux/man-pages/man2/fork.2.html可能会因多种原因而失败。你可以使用bash builtin https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html ulimit设置该限制。

您可以使用getrlimit(或解析/proc/self/limits, see proc(5) http://man7.org/linux/man-pages/man5/proc.5.html)来获取该信息。

在系统范围内,您可能会使用/proc/sys/kernel/threads-max since:

该文件指定系统范围内的线程数限制 可以在系统上创建的(任务)。

还有/proc/sys/kernel/pid_max

该文件指定 PID 环绕的值(即 该文件中的值比最大 PID 大 1)。 PID 大于该值的不分配;因此,这个值 文件还充当系统范围内的总数限制 进程和线程。该文件的默认值 32768, 导致与早期内核相同的 PID 范围。在 32 位上 平台上,32768 是 pid_max 的最大值。在 64 位上 系统中,pid_max 可以设置为 2^22 以内的任何值(PID_MAX_LIMIT, 约 400 万)。

但是,可能存在其他限制(特别是交换空间)。

内核的任务要么是单线程进程,要么是某个进程内的某个线程 - 例如由低级系统调用创建clone(2) http://man7.org/linux/man-pages/man2/clone.2.html(或一些内核线程 http://www.crashcourse.ca/wiki/index.php/Kernel_threads like kworker, ksoftirqdETC...)。

顺便说一句,实际的进程数量更多地受到可用资源的限制。典型的 Linux 桌面只有几百个进程(目前,我的 Debian/x86-64 桌面具有 32Gb RAM 和 i5-4690S 有 227 个进程)。所以一个进程是一个相当昂贵的资源(它需要RAM,它需要CPU......)。如果你有太多,你就会经历殴打 https://en.wikipedia.org/wiki/Thrashing_(computer_science)。在实践中,你不想有太多runnable进程或可调度的任务(可能最多只有几十个,也许每个任务不超过几个)core https://en.wikipedia.org/wiki/Multi-core_processor).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 上的最大子进程数 的相关文章

  • 是否可以从 C++ 应用程序调用 C# 应用程序?

    我是一名编程学生 现在我已经上了两门 C 课程 这个学期我将参加我的第一门 C 课程 出于好奇 是否可以从 C 应用程序调用 C 应用程序 如果是的话 是否还可以检查运行该程序的计算机是否具有 NET框架 我只是很好奇 我想如果可能的话 这
  • 并行化斐波那契序列生成器

    我正在学习并行化 在一项练习中 我得到了一些我应该提高性能的算法 其中之一是斐波那契数列生成器 array 0 0 array 1 1 for q 2 q lt MAX q array q array q 1 array q 2 我怀疑 这
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 监视目录的更改

    很像一个类似的问题 https stackoverflow com questions 112276 directory modification monitoring 我正在尝试监视 Linux 机器上的目录以添加新文件 并希望在这些新文
  • C 中“complex”的默认类型

    根据我读过的文档 C99 和更高版本的支持float complex double complex and long double complex作为复杂类型 但是 此代码在使用时编译时不会发出警告gcc Wall Wextra inclu
  • 带有运算符语法的错误消息,但不带有函数语法的错误消息

    为什么我在调用 unary 时收到错误消息 使用运算符语法 如果我用函数语法调用它就可以了 现场演示 https godbolt org z j7AbeQ template
  • 时间:2019-03-17 标签:c++fstream并发访问

    如果从不同的进程 线程同时访问文件会发生什么 据我所知 没有锁定文件的标准方法 只有操作系统特定的功能 就我而言 文件将被经常读取而很少写入 现在如果A打开一个文件进行读取 ifstream 并开始读取块 和B打开相同的文件进行写入 ofs
  • 将错误代码映射到 C++ 中的字符串

    将错误代码从枚举映射到字符串的更有效方法是什么 在 C 中 例如 现在我正在做这样的事情 std string ErrorCodeToString enum errorCode switch errorCode case ERROR ONE
  • ALTER TABLE ... ADD CONSTRAINT 失败时将事务回滚到保存点

    有没有办法在事务中添加检查约束and如果失败回滚到以前的保存点 而不是回滚整个事务 就我而言 当 ALTER TABLE ADD CONSTRAINT 命令失败时 事务无法回滚到保存点 尝试这样做会引发 InvalidOperationEx
  • 如何在dll级别读取app.config? [复制]

    这个问题在这里已经有答案了 我在一个解决方案中有一个控制台应用程序项目和库项目 dll The 图书馆项目有 app config 文件 我在其中存储我在库中使用的一些键值对 控制台应用程序引用此 dll 我有另一个 app config
  • C 语言中的 Alpha 混合 2 RGBA 颜色[重复]

    这个问题在这里已经有答案了 可能的重复 如何快速进行阿尔法混合 https stackoverflow com questions 1102692 how to do alpha blend fast 对 2 个 RGBA 整数 颜色进行
  • Xamarin.Forms UWP 项目中标题栏和选项卡之间令人恼火的空白

    我几乎是新手Xamarin Forms我正在开发一个相当简单的跨平台应用程序 该应用程序在 Android 中显示得足够好 但在 UWP 中却出现了一个愚蠢的空白 该项目由一个 TabbedPage 组成 其中包含 4 个 Navigati
  • 无法识别解决方案文件夹中的 Visual Studio 2017 Nuget.config

    我在使用 Visual Studio 2017 时遇到问题 新的解决方案不断引用 C Users yopa AppData Roaming NuGet Nuget config 中意外位置的 Nuget config 文件 我已将 nuge
  • 如果“嵌入式”SQL 2008 数据库文件不存在,如何创建它?

    我使用 C ADO Net 和在 Server Management Studio 中创建的嵌入式 MS SQL 2008 数据库文件 附加到 MS SQL 2008 Express 创建了一个数据库应用程序 有人可以向我指出一个资源 该资
  • 将 Swagger 与命名空间版本的 WebApi 结合使用

    我已经找到了如何使用基于名称空间的 WebAPI 版本这个班 https aspnet codeplex com SourceControl changeset view dd207952fa86 Samples WebApi Namesp
  • 将 char 绑定到枚举类型

    我有一段与此非常相似的代码 class someclass public enum Section START MID END vector section Full void ex for int i 0 i section
  • 使用 C# 动态创建按钮并按预定义的顺序放置它们

    NET 4 5 C 创建 Windows 窗体 我想动态创建和添加按钮并为其分配单击事件 但希望它们以特定的方式动态放置 就像图像一样 我的问题是如何以上述方式动态放置按钮 即 4x4 格式 一行 4 个按钮 4 列 但行数不受限制 是否可
  • 如何提高环复杂度?

    对于具有大量决策语句 包括 if while for 语句 的方法 循环复杂度会很高 那么我们该如何改进呢 我正在处理一个大项目 我应该减少 CC gt 10 的方法的 CC 并且有很多方法都存在这个问题 下面我将列出一些例如我遇到的问题的
  • 为什么表达式 a = a + b - ( b = a ) 在 C++ 中给出序列点警告?

    以下是测试代码 int main int a 3 int b 4 a a b b a cout lt lt a lt lt a lt lt lt lt b lt lt b lt lt n return 0 编译此命令会出现以下警告 gt g
  • 嵌入式二进制资源 - 如何枚举嵌入的图像文件?

    我按照中的说明进行操作这本书 http www apress com book view 9781430225492 关于资源等的章节 我不太明白的是 如何替换它 images Add new BitmapImage new Uri Ima

随机推荐

  • Apache HttpClient 摘要式身份验证

    基本上我需要做的是执行摘要身份验证 我尝试的第一件事是可用的官方示例here http svn apache org repos asf httpcomponents httpclient tags 4 0 1 httpclient src
  • FOSUser Bundle 必须配置路径“fos_user”的子节点“db_driver”

    我试图在安装 FOSUser Bundle 2 0 后更新学说架构 但我不断收到此错误 In ArrayNode php line 238 The child node db driver at path fos user must be
  • 创建具有后退按钮样式的 UIBarButtonItem

    我正在寻找一种以编程方式创建的方法UIBarButtonItem看起来像一个后退按钮UINavigationBar 显然 后退按钮仅在按下后才会出现UINavigationController 所以我只能插入一个 取消 样式的按钮 但我的目
  • 如何将 datetime64 数组转换为 int?

    有了这个 pd Timestamp 31 12 1999 23 59 12 value gt gt 946684752000000000 我可以获得日期时间基本值的整数值 如何对日期时间值数组完成此操作 df pd DataFrame a
  • 当我在浏览器中访问 Google 或 Google App Engine 等网站时,Google Cloud SDK 出现网络连接问题

    我在 Google App Engine 上创建了一个帐户 然后通过 gcloud init 安装了 google cloud sdk 并收到以下错误 Pick configuration to use 1 Re initialize th
  • 当点击 JButton 连接到服务器时,程序冻结

    我正在使用 Java 中的 TCP 进行简单的 1v1 私人聊天 目前 每当我使用 JButtons 时都会遇到问题 这是我第一次尝试使用 JButtons 和 ActionListeners 所以我不能 100 确定这里发生了什么 我有两
  • SQL查询;水平到垂直

    我遇到了涉及将水平行转换为垂直行的 SQL 查询 SQL Server 以下是我的数据 No Flag 1 Flag 2 Flag 3 A 1 2 3 B 4 1 6 转换后 该表应为 No FlagsName Flag value A F
  • 致命错误:发送表单时未找到“App\Http\Controllers\Input”类

    我正在尝试发送一封包含来自 Laravel 应用程序的表单的电子邮件 当你点击提交时 它会抛出上述错误 致命错误 找不到类 App Http Controllers Input 不知道为什么 因为我没有 也不知道我需要有一个输入控制器 或者
  • 三.JS Shadow 到对象

    我想添加castShadow and receiveShadow在一个物体上 但是下面的代码有什么问题吗 var mtlLoader new THREE MTLLoader mtlLoader setPath objects Tree mt
  • python 中的 fiona 导入问题

    我已经使用whl发行版安装了fiona 但是在导入时我收到以下错误 ImportError Traceback most recent call last
  • 在 Kali (Debian) 中安装 mono-devel 时,软件包具有未满足的依赖关系

    我尝试安装 mono devel 并输入sudo apt get mono devel在终端中 但失败了 得到以下结果 apt get install mono devel Reading package lists Done Buildi
  • Fabric JS ClipPath:裁剪后如何使图像适合画布?

    我使用 FabricJS 和 ClipPath 属性实现了图像裁剪 问题是如何使裁剪后的图像适合画布 我希望裁剪后的图像填充画布区域 但不知道是否可以使用 Fabric js 来完成 因此 我希望用户单击 裁剪 按钮后图像的选定部分适合画布
  • 并发用户和多个观察者

    我知道已经有a thread https stackoverflow com questions 14307341 how exactly are concurrent users determined for a firebase app
  • Graylog2-如何将日志保留配置为 1 周

    我们正在使用一些 Graylog2 服务器 graylog server 版本 1 3 4 因为我们收到太多的日志消息 所以需要大量的内存 我正在尝试将日志保留时间减少到 1 周 所有超过 1 周的日志消息都将被删除 但是 我无法在配置文件
  • typo3 extbase:验证表单

    我创建了一个简单的 订阅新闻通讯 表单
  • Java 工具创建的 WSDL 文件的 WCF 序列化问题

    我的团队的任务是让几个内部开发的 NET 客户端应用程序连接到一些新的 Java Web 服务 Java Web 服务是第三方 供应商提供的 WSDL 文件 我们的团队修改 控制的能力有限 这意味着我们可能有权要求我们的供应商对 WSDL
  • 根据索引查找金字塔的行?

    给定一个像这样的金字塔 0 1 2 3 4 5 6 7 8 9 并给出金字塔的索引i where i代表i金字塔的第一个数字 有没有办法找到金字塔的行的索引i第一个元素属于 例如 如果i 6 7 8 9 它位于第 3 行 从第 0 行开始
  • SerializationException:未解析成员“...”的类型

    我一直在尝试将程序集动态加载到 AppDomain 我需要这样做 因为我想动态调用一个方法 但在我的应用程序运行时不要保留 DLL 的句柄 以便在需要时可以替换它 但我收到此 SerializationException 异常 成员 的类型
  • Javascript查找伪元素

    所以我一直在努力CSS 选择器引擎 https github com alpha123 Puma 并且我想支持伪元素 before after selection first line 等 我注意到 Slick Sizzle 和其他一些流行
  • Linux 上的最大子进程数

    下面的代码将产生尽可能多的子级 自己不会进一步fork 一旦父进程退出就会变成僵尸 父进程将产生多少个子进程 int main int argc char arg while fork gt 0 子进程的数量可以通过以下方式限制设置限制 2