我需要为各种颜色创建大约10,000个绑定挂件。在大约3000到4000坐骑之后,它的速度明显减慢,从100/s降到了5-10/s。我想它在内核中的分配可能达到了一些奇怪的内部限制,而且内核必须对每个坐骑进行扩展。是否有已知的sysctl设置可以提前将其提高?
发布于 2019-03-20 14:09:54
按照名称空间的思路,您可能会减少所需挂载的数量。您将这些用于chroot环境,因此我想每个环境都要安装几个挂载。
通过创建一个模板环境并将应用程序安装到它们自己的命名空间中,您可能会得到更低的效果。
Linux名称空间起源于2002年的2.4.19内核
在名称空间中,您可以创建其他进程不共享的挂载。因此,您可以启动一个新的命名空间,将一个应用程序绑定到chroot环境中,然后将chroot绑定到其中。没有其他的应用程序能够看到最后的安装。
假设您知道每个环境都需要/etc
/dev
/proc
/sys
/tmp
/bin
。您可以创建一个模板/chroot_env
:
# bind mount
/chroot_env
/chroot_env/etc
/chroot_env/dev
/chroot_env/proc
/chroot_env/sys
/chroot_env/tmp
/chroot_env/bin
# With empty directories
/chroot_env/opt
/chroot_env/opt/app
然后,在实际调用chroot
之前,您可以:
# Start a new shell in a new namespace
unshare --mount
mount --bind /opt/my_app /chroot_env/opt/app
# run the app as a chroot
chroot /chroot_env /opt/my_app
请注意,要在脚本中执行此操作,您可能需要执行以下操作:
unshare --mount sh -c 'mount --bind /opt/my_app /chroot_env/opt/app && chroot /chroot_env /opt/my_app/run'
这意味着您只是在每个应用程序上安装一个(到/opt/app
),而不是每个环境一个,而不是6(?)。
https://unix.stackexchange.com/questions/507420
复制相似问题