当前位置: 首页 > news >正文

网站主服务器ip地址网站建设推广选哪家

网站主服务器ip地址,网站建设推广选哪家,广东手机微信网站制作,网站开发用到哪些技术引入概念 在旧版本的安卓系统中#xff0c;当触发lmk#xff08;low memory killer#xff09;的时候一般认为就是内存不足导致#xff0c;但是随着安卓版本的增加lmk的判断标准已经不仅仅是内存剩余大小#xff0c;io#xff0c;cpu同样会做评判#xff0c;从而保证设备…引入概念 在旧版本的安卓系统中当触发lmklow memory killer的时候一般认为就是内存不足导致但是随着安卓版本的增加lmk的判断标准已经不仅仅是内存剩余大小iocpu同样会做评判从而保证设备性能。这里引入的概念就是psiPressure Stall Information压力失速信息用来检测内存压力这样能够更全面的保证我们的内存性能提高设备反应速度。 Android 10 及更高版本支持新的 lmkd 模式它使用内核压力失速信息 (PSI) 监视器来检测内存压力。上游内核中的 PSI 补丁程序集已向后移植到 4.9 和 4.14 内核可测量由于内存不足导致任务延迟的时间。由于这些延迟会直接影响用户体验因此它们代表了确定内存压力严重性的便捷指标。上游内核还包括 PSI 监视器这类监视器允许特权用户空间进程例如 lmkd指定这些延迟的阈值并在突破阈值时从内核订阅事件。 PSI 监视器与 vmpressure 信号 由于 vmpressure 信号由内核生成用于检测内存压力并由 lmkd 使用通常包含大量误报因此 lmkd 必须执行过滤以确定是否真的存在内存压力。这会导致不必要的 lmkd 唤醒并使用额外的计算资源。使用 PSI 监视器可以实现更精确的内存压力检测并最大限度地减少过滤开销。 使用 PSI 监视器 如需使用 PSI 监视器而不是 vmpressure 事件请配置 ro.lmk.use_psi 属性。默认值为 true这会以 PSI 监视器作为 lmkd 内存压力检测的默认机制。由于 PSI 监视器需要内核支持因此内核必须包含 PSI 向后移植补丁程序并在启用 PSI 支持 (CONFIG_PSIy) 的情况下进行编译。 为何舍弃原始内核LMK策略 内核中 LMK 驱动程序的缺点 由于存在大量问题Android 弃用了 LMK 驱动程序问题包括 对于低内存设备必须主动进行调整即便如此在处理涉及支持大文件的活跃页面缓存的工作负载时其性能也较差。性能不良会导致出现抖动但不会终止。LMK 内核驱动程序依赖于可用内存限制不会根据内存压力进行扩缩。由于设计的严格性合作伙伴通常会自定义该驱动程序使其可以在自己的设备上使用。LMK 驱动程序已挂接到 Slab Shrinker API该 API 并非为了执行繁重操作例如搜索并终止目标而设计这类操作会导致 vmscan 进程变慢。 用户空间 lmkd 用户空间 lmkd 可实现与内核中的驱动程序相同的功能但它使用现有的内核机制检测和评估内存压力。这些机制包括使用内核生成的 vmpressure 事件或压力失速信息 (PSI) 监视器来获取关于内存压力水平的通知以及使用内存 cgroup 功能限制根据进程的重要性分配给每个进程的内存资源。 在 Android 10 中使用用户空间 lmkd 在 Android 9 及更高版本中用户空间 lmkd 会在未检测到内核中的 LMK 驱动程序时激活。由于用户空间 lmkd 要求内核支持内存 cgroup因此必须使用以下配置设置编译内核 CONFIG_ANDROID_LOW_MEMORY_KILLERn CONFIG_MEMCGy CONFIG_MEMCG_SWAPy 终止策略 用户空间 lmkd 支持基于以下各项的终止策略vmpressure 事件或 PSI 监视器、其严重性以及交换利用率等其他提示。低内存设备和高性能设备的终止策略有所不同 对于内存不足的设备一般情况下系统会选择承受较大的内存压力。对于高性能设备如果出现内存压力则会视为异常情况应及时修复以免影响整体性能。 您可以使用 ro.config.low_ram 属性配置终止策略。如需了解详情请参阅低 RAM 配置。 用户空间 lmkd 还支持一种旧模式在该模式下它使用与内核中的 LMK 驱动程序相同的策略即可用内存和文件缓存阈值做出终止决策。要启用旧模式请将 ro.lmk.use_minfree_levels 属性设置为 true。 配置 lmkd 使用以下属性为特定设备配置 lmkd。 属性使用默认ro.config.low_ram指定设备是低内存设备还是高性能设备。falsero.lmk.use_psi使用 PSI 监视器而不是 vmpressure 事件。truero.lmk.use_minfree_levels使用可用内存和文件缓存阈值来做出进程终止决策即与内核中的 LMK 驱动程序的功能一致。falsero.lmk.low在低 vmpressure 水平下可被终止的进程的最低 oom_adj 得分。1001 停用ro.lmk.medium在中等 vmpressure 水平下可被终止的进程的最低 oom_adj 得分。800 已缓存或非必要服务ro.lmk.critical在临界 vmpressure 水平下可被终止的进程的最低 oom_adj 得分。0 任何进程ro.lmk.critical_upgrade支持升级到临界水平。falsero.lmk.upgrade_pressure由于系统交换次数过多将在该水平执行水平升级的 mem_pressure 上限。100 停用ro.lmk.downgrade_pressure由于仍有足够的可用内存将在该水平忽略 vmpressure 事件的 mem_pressure 下限。100 停用ro.lmk.kill_heaviest_task终止符合条件的最繁重任务最佳决策与终止符合条件的任何任务快速决策。truero.lmk.kill_timeout_ms从某次终止后到其他终止完成之前的持续时间以毫秒为单位。0 停用ro.lmk.debug启用 lmkd 调试日志。false 注意mem_pressure  内存使用量/RAM_and_swap 使用量以百分比的形式表示。 设备配置示例 PRODUCT_PROPERTY_OVERRIDES \ro.lmk.low1001 \ro.lmk.medium800 \ro.lmk.critical0 \ro.lmk.critical_upgradefalse \ro.lmk.upgrade_pressure100 \ro.lmk.downgrade_pressure100 \ro.lmk.kill_heaviest_tasktrue Android 11 中的用户空间 lmkd Android 11 通过引入新的终止策略改进了 lmkd。该终止策略使用 PSI 机制来执行 Android 10 中引入的内存压力检测。Android 11 中的 lmkd 会根据内存资源使用情况和抖动来防止出现内存不足和性能下降。这一终止策略取代了以前的策略可同时用于高性能设备和低内存 (Android Go) 设备。 内核要求 对于 Android 11 设备lmkd 需要以下内核功能 添加 PSI 补丁程序并启用 PSIAndroid 通用内核 4.9、4.14 和 4.19 中提供向后移植。添加 PIDFD 支持补丁程序Android 通用内核 4.9、4.14 和 4.19 中提供向后移植。对于低内存设备添加内存 cgroup。 必须使用以下配置设置编译内核 CONFIG_PSIy 在 Android 11 中配置 lmkd Android 11 中的内存终止策略支持下面列出的调节旋钮和默认值。这些功能在高性能设备和低内存设备上都可使用。 属性使用默认高性能低内存ro.lmk.psi_partial_stall_ms部分 PSI 失速阈值以毫秒为单位用于触发内存不足通知。如果设备收到内存压力通知的时间太晚可以降低此值以在较早的时间触发通知。如果在不必要的情况下触发了内存压力通知请提高此值以降低设备对噪声的敏感度。70200ro.lmk.psi_complete_stall_ms完全 PSI 失速阈值以毫秒为单位用于触发关键内存通知。如果设备收到关键内存压力通知的时间太晚可以降低该值以在较早的时间触发通知。如果在不必要的情况下触发了关键内存压力通知可以提高该值以降低设备对噪声的敏感度。700ro.lmk.thrashing_limit工作集 refault 数量的上限以占具有文件支持的页面缓存总大小的百分比表示。如果工作集 refault 的数量超过该值则视为系统对其页面缓存造成抖动。如果设备性能在内存压力期间受到影响请降低该值以限制抖动。如果因抖动原因而导致设备性能不必要地降低请提高该值以允许更多抖动。10030ro.lmk.thrashing_limit_decay抖动阈值衰减以占在系统无法恢复时甚至是终止后用于降低阈值的原始阈值的百分比表示。如果持续抖动导致不必要的终止请降低该值。如果终止后对持续抖动的响应速度过慢请提高该值。1050ro.lmk.swap_util_max最大交换内存量以占可交换内存总量的百分比表示。如果交换的内存量超过此上限则表示系统在交换了其大部分可交换内存后仍然存在压力。 当内存压力是由不可交换内存的分配导致时就可能会发生这种情况原因在于大部分可交换内存已经交换所以无法通过交换来缓解这一压力。默认值为 100这实际上会停用此检查。如果设备的性能在交换利用率较高且可用交换水平未降至 ro.lmk.swap_free_low_percentage 的内存压力期间受到影响请降低该值以限制交换利用率。100100 以下旧的调节旋钮也可用于新的终止策略。 属性使用默认高性能低内存ro.lmk.swap_free_low_percentage可用交换水平以占总交换空间的百分比表示。“lmkd”使用该值作为阈值来判断何时将系统视为交换空间不足。如果“lmkd”因交换空间过多而终止请降低该百分比。如果“lmkd”终止得太晚从而导致 OOM 终止请提高该百分比。2010ro.lmk.debug这会启用“lmkd”调试日志。在调节时启用调试。false 问题实例 客户做重启压测发现重启过程中概率出现应用被杀情况。本次被杀应用为launcher对应log如下 02-04 11:02:19.762 D/lowmemorykiller(  440): critical pressure event triggered 02-04 11:02:19.763 D/lowmemorykiller(  440): nr_free_pages: 39252 nr_inactive_file: 216786 nr_active_file: 84889 workingset_refault: 0 pgscan_kswapd: 199494 pgscan_direct: 0 pgscan_direct_throttle: 0 init_pgscan_direct: 0 init_pgscan_kswapd: 0 base_file_lru: 0 init_ws_refault: 0 free_swap: 393151 total_swap: 393215 swap_free_percentage: 99% 02-04 11:02:19.763 D/lowmemorykiller(  440): pgskip deltas: DMA: -1DMA32: 0 Normal: 0 High: -1 Movable: 0 02-04 11:02:19.763 D/lowmemorykiller(  440): reclaim: 1 in_compaction : 0 02-04 11:02:19.763 E/lowmemorykiller(  440): zoneinfo_parse_node per-node stats not found in zone DMA32; moving to next zone 02-04 11:02:19.763 E/lowmemorykiller(  440): calc_zone_watermarks pgskip_deltas_val: 0 pgskip_deltas[PGSKIP_IDX(i)]: 0 02-04 11:02:19.763 D/lowmemorykiller(  440): Zone: 0 nr_free_pages: 38701 min: 18432 low: 25249 high: 32066 present: 778880 nr_cma_free: 207 max_protection: 0 02-04 11:02:19.763 D/lowmemorykiller(  440): Zone: 1 nr_free_pages: 0 min: 0 low: 0 high: 0 present: 0 nr_cma_free: 0 max_protection: 0 02-04 11:02:19.763 D/lowmemorykiller(  440): Aggregate wmarks: min: 18432 low: 100996 high: 128264 (nr_free - nr_cma_free): 38494 wbf_effective: 4 02-04 11:02:19.763 D/lowmemorykiller(  440): smallest wmark breached: high free_pages: 38494 cached_pages_considered_free: 0 breached_wm_level: 128264 02-04 11:02:19.763 D/lowmemorykiller(  440): nr_free_pages: 38701 Cached: 301751 Unevictable: 1712 Shmem: 985 mlocked: 1711 SwapCached: 0 active_anon: 522 inactive_anon: 141235cma_free: 207 02-04 11:02:19.765 E/ThermalEngine( 2896): parse_cooling_devices: Added cooling device: pause-cpu7 with cdev id:13 02-04 11:02:19.766 I/lowmemorykiller(  440): Kill com.android.launcher3 (2671), uid 10091, oom_score_adj 100 to free 102928kB rss, 0kB swap; reason: critical pressure and device is low on memory 02-04 11:02:19.766 E/ThermalEngine( 2896): parse_cooling_devices: Added cooling device: ufs with cdev id:1 02-04 11:02:19.766 I/killinfo(  440): [2671,10091,100,50,102928,1,2726892,154804,1207004,0,9144,3940,6848,6844,1572860,1572604,2088,564940,339556,867144,87576,174144,26928,57000,0,0,828,0,23977,0,0,0,66404,0,0,0.180000,0.180000,6.140000,2.280000,23.650000]   通过log来看触发的是critical pressure event。 通过lmk源码排查如下 system\memory\lmkd\lmkd.cpp 通过注释可以知道这是因为内存回收太慢导致。这里控制是通过监听kernel里的epoll事件然后做相关判断进行进程的kill这里代表了内存失速由于我们3g内存其实也并不是很宽裕需要经常回收内存通过killinfo我们可以看到psi最后一项达到了23.650000证明cpu压力很大证明系统回收内存压力较大我们通过修改 ro.lmk.psi_scrit_complete_stall_ms来延长反应时间增大到400ms从而解决此问题下一篇文章将会详细分解lmk相关代码。
http://www.sczhlp.com/news/182953/

相关文章:

  • 宏远建设有限公司网站ppt超链接网站怎么做
  • 教育网站框架模板安徽省通信建设管理局网站
  • 天津制作网站的公司电话企业网站的建设步骤包括
  • 个人网站放什么内容企业号官网入口
  • 九江建设监督网站优化关键词排名外包
  • 网站不维护会怎么样装修公司网页设计模板
  • 服务器放网站算卦网站开发
  • 汉字市城乡建设规划局官方网站产品介绍彩页模板
  • 站酷网入口韩国男女直接做视频网站
  • wordpress站点进入时弹窗建立多个wordpress
  • 梅州建设公司网站wordpress资源合集显示
  • 最优惠的网站优化佛山网站建设 合优
  • 5 ABC413 题解
  • 4 CF 1032 div3 题解
  • 3 ABC411 C ~ E题解
  • 9 ABC408 D~F 题解
  • 8 ABC425 G 题解
  • 十堰做网站公司长春火车站到龙嘉机场怎么走
  • 电商网站开发要求南沙seo培训
  • 网站风格类型有哪些松江微网站建设
  • 就有公司域名怎么建设网站进出口贸易公司取名大全
  • 专题网站建设自查整改报告员工做违法网站
  • 网站开发获客渠道咸阳学校网站建设报价
  • 装修公司网站php源码建设银行流水账网站查询
  • 企业网站建设首页要写什么内容wordpress 时间轴插件
  • 亚马逊品牌备案网站怎么做互联网上市公司一览表
  • 唐山手机网站建设悦然wordpress建站服务
  • 网站抓取qq号码原理惠州营销型网站建设
  • 在线做网站需要什么我国中小企业500强
  • 网站数据库怎么做同步吗wordpress 虚拟资源