我已经在/etc/security/limits.conf. 当我以testuser正常用户身份登录我的桌面环境时(使用超薄login管理器),一切正常。
当我登录的用户testuser通过Xephyr(从我的其他会议的其他用户),一切工作正常,除了chromium浏览器。这是我遇到的错误dmesg:
Chrome_ChildIOT (2472): VmData 4310827008 exceed data ulimit 4294967296. Update limits or use boot option ignore_rlimit_data.
Run Code Online (Sandbox Code Playgroud)
铬不可用(它启动,但无限期地等待加载任何页面)
除了chromium设置了正确的限制外,所有其他程序。我已经使用以下方法验证了这一点:
find /proc/ -maxdepth 1 -user testuser -exec cat {}/limits \; | grep 'Max data size'
Run Code Online (Sandbox Code Playgroud)
所有PIDs已Max data size设置为无限制:
Max data size unlimited unlimited bytes
Run Code Online (Sandbox Code Playgroud)
除了chromium进程:
Max data size 4294967296 4294967296 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Run Code Online (Sandbox Code Playgroud)
我想明白:
1) 为什么chromium与所有其他程序有不同的限制?
2)“默认”限制来自哪里(铬从哪里获取限制4294967296?
3)我如何才能在全局范围内为所有进程一劳永逸地更改这些默认限制,无论它们是否使用 pam ?
int*_*ika 11
- 为什么 Chromium 的限制与所有其他程序不同?
Chromium 可能看起来像一个简单的应用程序,但事实并非如此,首先是多线程使 Chromium 为不同的任务(扩展、选项卡、核心 Web 引擎等)运行多个进程,然后是虚拟化,Chromium 使用许多沙箱来隔离浏览活动使它比其他应用程序使用更多的资源,而且使用的 web 引擎也不是一个轻量级的......加上运行所需的不同所需的库和其他大量资源功能......一些相关的文档可以在这里找到, 这里和这篇文章有一些有用的信息。
- “默认”限制来自哪里(铬从哪里获取限制 4294967296?
4294967296 字节(4096 MB 或 4GB 限制)铬设计有 4GB 限制,这是硬编码的,有关此的更多信息可在此处和此处获得
- 如何在全局范围内为所有进程一劳永逸地更改这些默认限制,无论它们是否使用 pam?
这不是一件容易的事,但您在大多数常用流程中做得对,现在对于像 Chrome 这样的复杂流程,您需要为每个“特殊”应用程序自定义配置。
对于chromium,有一些命令参数可用于自定义/启用/禁用功能,您可以尝试使用其中的一些来使chrome满足您的需求,这里有一些有趣的开关:
这些开关可以与这样的命令行一起使用 /usr/bin/chromium --single-process
--single-process
--aggressive-tab-discard
--aggressive-cache-discard
--ui-compositor-memory-limit-when-visible-mb
--disk-cache-dir # Use a specific disk cache location, rather than one derived from the UserDatadir.
--disk-cache-size # Forces the maximum disk space to be used by the disk cache, in bytes.
--force-gpu-mem-available-mb # Sets the total amount of memory that may be allocated for GPU resources
--gpu-program-cache-size-kb # Sets the maximum size of the in-memory gpu program cache, in kb
--mem-pressure-system-reserved-kb # Some platforms typically have very little 'free' memory, but plenty is available in buffers+cached. For such platforms, configure this amount as the portion of buffers+cached memory that should be treated as unavailable. If this switch is not used, a simple pressure heuristic based purely on free memory will be used.
--renderer-process-limit # Overrides the default/calculated limit to the number of renderer processes. Very high values for this setting can lead to high memory/resource usage or instability.
Run Code Online (Sandbox Code Playgroud)
您还可以使用更新 ulimit 的脚本运行铬(请注意,低于 4GB 的值可能会导致浏览器崩溃...)
ulimit -Sv 4352000000 #4.2GB
/usr/bin/chromium
# or 0.42GB, it works but the browser may crash
#ulimit -Sv 435200000 #0.42GB
#/usr/bin/chromium
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1004 次 |
| 最近记录: |