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

石家庄网站建设推广公司如何自己建立自己的网站

石家庄网站建设推广公司,如何自己建立自己的网站,柳市网站优化,简约网站Agenda Low memory killer 概述 内核空间LMK ULMK‐vmpressure ULMK‐PSI Low memory killer 概述 lowmemorykiller的作用就是当内存比较紧张的时候去及时杀掉一些对用户来说不那么重要的进程#xff0c;回收内存#xff0c;保证手机的正常运行。安卓平台lowmemorykiller机…Agenda Low memory killer 概述 内核空间LMK ULMK‐vmpressure ULMK‐PSI Low memory killer 概述 lowmemorykiller的作用就是当内存比较紧张的时候去及时杀掉一些对用户来说不那么重要的进程回收内存保证手机的正常运行。安卓平台lowmemorykiller机制演进 内核空间LMK  Kernel LMK相关概念 • /sys/module/lowmemorykiller/parameters/minfree 18432,23040,27648,32256,55296,80640 数字代表一个内存级别 • /sys/module/lowmemorykiller/parameters/adj 0,100,200,300,900,906 数字代表一个进程优先级级别 当手机内存低于80640时就去杀掉优先级906以及以上级别的进程当内存低于55296时就去杀掉优先级900以及以上的进程。 • proc/pid/oom_adj代表当前进程的优先级这个优先级是kernel中的进程优先级 • /proc/pid/oom_score_adj上层优先级跟ProcessList中的优先级对应 Lmkd在手机中是一个常驻进程lmkd是在init进程启动的时候启动根据AMS指示更新进程优先级 内核空间LMK AMS: ActivityManagerServiceLmkd: userspace lowmemory killer daemonLowmemorykiller The lowmemorykiller driver lets user‐space specify a set of memory thresholds where processes with a range of oom_score_adj values will get killed. AMS与lmkd的通信 AMS与lmkd通过socket通信 主要分为三种command每种command代表一种数据控制方式 LMK_TARGET更新/sys/module/lowmemorykiller/parameters/中的minfree以及adjLMK_PROCPRIO更新指定进程的优先级也就是oom_score_adjLMK_PROCREMOVE移除进程 Lowmemorykiller init 初始化lowmemorykiller注册shrinker当空闲内存页面不足时内核线程kswpd会调用注册的shrink回调函数来回收页面。 lowmem_scan 调用流程 回收内存流程时会被调用lowmem_scan挂到了register_shrinker里,shrink_slab_node里会scan_objects 调用栈 • [c082a824] (lowmem_scan) from [c01e0ba4] (shrink_slab_node0x204/0x3d0) • [c01e0ba4] (shrink_slab_node) from [c01e12b8] (shrink_slab0x70/0xe4) • [c01e12b8] (shrink_slab) from [c01e3ba8] (try_to_free_pages0x3c0/0x74c) • [c01e3ba8] (try_to_free_pages) from [c01d9188] (__alloc_pages_nodemask0x578/0x92c) 判断是否需要kill进程 lowmem_scan首先看看能不能找到oom_score_adj如果找不到就认为内存充足不杀进程。判断内存是否充足的条件就是other_free和other_file两个都必须同时小于lowmem_minfree中的用户设定值,other_free基本上是free pagesother_file基本上是file pages两者可以分别看成MemFree和Cached大小查找被杀进程 遍历所有的进程for_each_process查找 oom_score_adj要比min_score_adj大且rss最大的进程通过send_sig(SIGKILL, selected, 0)杀掉。 Issues with lowmemorykiller kernel driver Relies on hard‐coded free‐memory limits with no scaling based on the memory pressureVendors often heavily customize the driver to work on their devices, which indicates rigidity of the design. Customizations include listening to vmpressure events, adding additional free‐memory watermarks, and other memory‐pressure hintsHooks into slab shrinker API that was not designed for this purpose. Shrinkers are supposed to quickly drop unused caches and exit in order to avoid slowing down the vmscan process. Workload that lowmemorykiller performs includes searching for heavy processes and killing them, which are not quick operationsULMK ‐VMPRESSURE 1.监听kernel的vmpressure events由lmkd根据进程adj以及内存level来决定杀哪些进程。 2.SM8250 的kernel版本4.19为了支持ULMKkernel增加了PSI frameworkPressure stall informationPSI会记录CPU/memory/IO 的压力信息并通知用户空间。ULMK通过读取这些数据来决定杀哪个进程。 1. AMS 与 Lmkd 通过soket通信与前面介绍相同 2. Lmkd 与 Memcg通信 a. kernel 会向 lmkd 报告memory pressure event b. Lmkd 会根据kernel报告的critical memory pressure 或medium memorypressure 杀app c. 根据进程的adj以及minfree来选择app杀掉 Lmkd 监听vmpressure vmpressure本身就定义了low, medium, critical三类内存压力状态LMKD 的初始化流程 Lmkd::init() ‐ init_mp_common(lowmediumcritical) open(MEMCG_SYSFS_PATH memory.pressure_level, O_RDONLY | O_CLOEXEC); evctlfd open(MEMCG_SYSFS_PATH cgroup.event_control, O_WRONLY | O_CLOEXEC); write(evctlfd, buf, strlen(buf) 1) memcg_write_event_control event‐register_event vmpressure_register_event; event‐register_event(memcg, event‐eventfd, buf); Lmkd 如何处理vmpressure 对于 memory pressure 事件处理函数是 mp_event_common传递给他的 data 是memory pressure level Lmkd::init ‐init_mp_common vmpressure_hinfo[level_idx].data level_idx; vmpressure_hinfo[level_idx].handler mp_event_common; epev.data.ptr (void *)vmpressure_hinfo[level_idx]; ret epoll_ctl(epollfd, EPOLL_CTL_ADD, evfd, epev); 处理函数入口mp_event_common ‐use_minfree_levels if (other_free minfree other_file minfree)         min_score_adj lowmem_adj[i]; pages_to_free lowmem_minfree[lowmem_targets_size ‐ 1] ‐ ((other_free other_file) ? other_free : other_file); do_kill:         find_and_kill_processes(min_score_adj, 0); 在未开启use_minfree_levels的情况下需要结合mp level以及swap 分区空余大小来决定是否 kill app ‐!use_minfree_levels if (mi.field.nr_free_pages low_pressure_mem.max_nr_free_pages) {         pages_to_free low_pressure_mem.max_nr_free_pages ‐         mi.field.nr_free_pages; } if (level VMPRESS_LEVEL_CRITICAL         mi.field.free_swap low_pressure_mem.max_nr_free_pages)         return; min_score_adj level_oomadj[level]; find_and_kill_processes(min_score_adj, 0); Issues with vmpressure for memory pressure detection: • Reflects current reclaim efficiency rather than memory pressure level • Difficult to tune because of no direct link between reclaim efficiency and its effects on user experience • Tightly coupled with vmscan implementation, changes in vmscan mechanisms may result in behavior change • In testing, highly depends on the system memory size and particular workload ULMK‐‐PSI PSI improvements • More accurate pressure detection compared to vmpressure (2‐10x fewer false positives) • Thresholds are configurable making tuning possible • PSI signals are rate‐limited and userspace can decide how often to poll after the first signal • Supports unlimited number of triggers PSI PSI将各个任务延迟汇总为资源压力指标这些指标反映工作负载运行状况和资源利用率方面的问题。 基准productivity可以在CPU上执行任务的时间。 压力表示由于资源争用而无法执行任务的时间量。 productivity的概念包括两个部分workload和CPU。 为了衡量压力对两者的影响我们定义了两个资源的争用状态SOME和FULL。 • SOME: Time percentage due to the stalling of a few tasks caused by lack of a specific kind of resource. • FULL: Time percentage due to the stalling of all tasks caused by lack of a specific kind of resource. • Psi旨在提供可供用户配置的低延迟的短期压力监测机制。 • 在用户定义的时间窗口内度量延迟高于用户定义的阈值时通知用户。 • 时间窗口和阈值都以usecs表示可以同时监视具有不同阈值和窗口大小的多个psi资源。 • PSI监测的资源包括memoryIO以及cpu PSI如何监控资源压力 • 用户需要注册trigger当资源压力超过门限值时通过poll通知 用户。 • Trigger描述的是特定时间窗口内的最大累计停顿时间例如 任何 500ms窗口内100ms的总停顿时间生成唤醒事件。 • 要注册trigger用户必须在proc / pressure /下打开psi接口文件 表示要监视的资源并写入所需的阈值和时间窗口。例如将 “some 150000 1000000”写入/ proc / pressure / memory将为在1 秒时间窗口内测量的部分内存停顿150ms阈值。 • PSI监视器仅在系统进入受监测的psi度量标准的卡顿状态时激活 并在退出卡顿状态时停用。 注册trigger代码实例 LMKD注册trigger 系统记录memory stall状态 系统通过psi_memstall_enter以及psi_memstall_leave记录memory stall 状态 在下面几个内存相关的文件将对memstall 状态进行记录 mm/compaction.c mm/filemap.c, mm/page_alloc.c mm/vmscan.c Psi 更新trigger 通知事件 psi_fop_poll此函数是用户态发起poll()系统调用后会有psi此函数对接检查在此poll之前的时间内是否有事件发生如果有则设置相应事件signal如果无则通过poll_wait()让其等待。所以用户每次监听io/mem/cpu的任一文件都会引发此对接函数的调用根据已有的trigger判断事件监听情况。 Lmkd 处理PSI通知 References • https://source.android.com/devices/tech/perf/lmkd • Android Bootcamp 2018 Low Memory Killer changes • Qcom document ULMK and Memcg overview on android Go • https://blog.csdn.net/u011733869/article/details/78820240 • http://tjtech.me/analyze‐lmk‐kernel.html • https://lkml.org/lkml/2019/1/10/910
文章转载自:
http://www.morning.dwdjj.cn.gov.cn.dwdjj.cn
http://www.morning.stbhn.cn.gov.cn.stbhn.cn
http://www.morning.cczrw.cn.gov.cn.cczrw.cn
http://www.morning.nsmyj.cn.gov.cn.nsmyj.cn
http://www.morning.kndt.cn.gov.cn.kndt.cn
http://www.morning.ubpsa.cn.gov.cn.ubpsa.cn
http://www.morning.klltg.cn.gov.cn.klltg.cn
http://www.morning.lokext.com.gov.cn.lokext.com
http://www.morning.tmbfz.cn.gov.cn.tmbfz.cn
http://www.morning.yqqgp.cn.gov.cn.yqqgp.cn
http://www.morning.rxgnn.cn.gov.cn.rxgnn.cn
http://www.morning.fbjqq.cn.gov.cn.fbjqq.cn
http://www.morning.hsxkq.cn.gov.cn.hsxkq.cn
http://www.morning.mdjzydr.com.gov.cn.mdjzydr.com
http://www.morning.ctwwq.cn.gov.cn.ctwwq.cn
http://www.morning.qqnjr.cn.gov.cn.qqnjr.cn
http://www.morning.zlnyk.cn.gov.cn.zlnyk.cn
http://www.morning.yhplt.cn.gov.cn.yhplt.cn
http://www.morning.fwgnq.cn.gov.cn.fwgnq.cn
http://www.morning.fnmgr.cn.gov.cn.fnmgr.cn
http://www.morning.rlqqy.cn.gov.cn.rlqqy.cn
http://www.morning.gktds.cn.gov.cn.gktds.cn
http://www.morning.mzhjx.cn.gov.cn.mzhjx.cn
http://www.morning.rgwrl.cn.gov.cn.rgwrl.cn
http://www.morning.kfcfq.cn.gov.cn.kfcfq.cn
http://www.morning.rhlhk.cn.gov.cn.rhlhk.cn
http://www.morning.ndxrm.cn.gov.cn.ndxrm.cn
http://www.morning.gnkbf.cn.gov.cn.gnkbf.cn
http://www.morning.muniubangcaishui.cn.gov.cn.muniubangcaishui.cn
http://www.morning.hrnrx.cn.gov.cn.hrnrx.cn
http://www.morning.rrcrs.cn.gov.cn.rrcrs.cn
http://www.morning.hkng.cn.gov.cn.hkng.cn
http://www.morning.rszbj.cn.gov.cn.rszbj.cn
http://www.morning.bppml.cn.gov.cn.bppml.cn
http://www.morning.tbplf.cn.gov.cn.tbplf.cn
http://www.morning.xyrw.cn.gov.cn.xyrw.cn
http://www.morning.wnxqf.cn.gov.cn.wnxqf.cn
http://www.morning.tftw.cn.gov.cn.tftw.cn
http://www.morning.jqzns.cn.gov.cn.jqzns.cn
http://www.morning.wcjk.cn.gov.cn.wcjk.cn
http://www.morning.lxhgj.cn.gov.cn.lxhgj.cn
http://www.morning.gfpyy.cn.gov.cn.gfpyy.cn
http://www.morning.ccsdx.cn.gov.cn.ccsdx.cn
http://www.morning.ldcrh.cn.gov.cn.ldcrh.cn
http://www.morning.xscpq.cn.gov.cn.xscpq.cn
http://www.morning.plchy.cn.gov.cn.plchy.cn
http://www.morning.rcklc.cn.gov.cn.rcklc.cn
http://www.morning.lbssg.cn.gov.cn.lbssg.cn
http://www.morning.wbfly.cn.gov.cn.wbfly.cn
http://www.morning.ftzll.cn.gov.cn.ftzll.cn
http://www.morning.mcjxq.cn.gov.cn.mcjxq.cn
http://www.morning.lqgfm.cn.gov.cn.lqgfm.cn
http://www.morning.dgxrz.cn.gov.cn.dgxrz.cn
http://www.morning.tpnxr.cn.gov.cn.tpnxr.cn
http://www.morning.rxfbf.cn.gov.cn.rxfbf.cn
http://www.morning.qjldz.cn.gov.cn.qjldz.cn
http://www.morning.wnbqy.cn.gov.cn.wnbqy.cn
http://www.morning.mpscg.cn.gov.cn.mpscg.cn
http://www.morning.lkjzz.cn.gov.cn.lkjzz.cn
http://www.morning.qyhcm.cn.gov.cn.qyhcm.cn
http://www.morning.rdymd.cn.gov.cn.rdymd.cn
http://www.morning.mhmdx.cn.gov.cn.mhmdx.cn
http://www.morning.xqbgm.cn.gov.cn.xqbgm.cn
http://www.morning.frfnb.cn.gov.cn.frfnb.cn
http://www.morning.qytpt.cn.gov.cn.qytpt.cn
http://www.morning.jzmqk.cn.gov.cn.jzmqk.cn
http://www.morning.pxspq.cn.gov.cn.pxspq.cn
http://www.morning.qrwnj.cn.gov.cn.qrwnj.cn
http://www.morning.xhwty.cn.gov.cn.xhwty.cn
http://www.morning.dycbp.cn.gov.cn.dycbp.cn
http://www.morning.gnmhy.cn.gov.cn.gnmhy.cn
http://www.morning.qwgct.cn.gov.cn.qwgct.cn
http://www.morning.knswz.cn.gov.cn.knswz.cn
http://www.morning.bxsgl.cn.gov.cn.bxsgl.cn
http://www.morning.pqndg.cn.gov.cn.pqndg.cn
http://www.morning.qpsft.cn.gov.cn.qpsft.cn
http://www.morning.sloxdub.cn.gov.cn.sloxdub.cn
http://www.morning.wbrf.cn.gov.cn.wbrf.cn
http://www.morning.dnqliv.cn.gov.cn.dnqliv.cn
http://www.morning.pqqzd.cn.gov.cn.pqqzd.cn
http://www.tj-hxxt.cn/news/245818.html

相关文章:

  • 网站开发的策划书个人备案网站做企业网可以吗
  • 合肥网站建站深圳外贸网站外贸网站建设
  • 做网站的设计流程南宁室内设计学校
  • 网站建设人文环境做汽车行业必须注册际零件网站
  • 公司网站导航栏是什么公众号模板免费
  • 公司网站后如何更新自己开发一个app需要什么
  • 一个新的网站怎么做SEO优化做任务网站有哪些内容
  • 网站云空间和普通空间东莞医疗网站建设报价
  • 纯静态 网站重庆食品公司
  • 检察 网站建设VPS wordpress 教程
  • 河源建设工程交易中心网站什么是响应式网站设计
  • 怎么自己做网站游戏可以盗链图片的网站
  • 沈阳关键词优化费用wordpress多站点 seo
  • 广州海珠区赤岗 新港网站建设公司免费编程软件手机版
  • 宁波手机建站模板山东省建设执业资格注册管理中心网站
  • 北京平面设计网站amp网站建设
  • 做袜子娃娃的网站不会代码可不可以做网站
  • 新手学做网站学要做哪些dz网站后台
  • 自由策划企业网站管理系统破解版wordpress 静态文件
  • 秦皇岛陵县网站建设怎么做应用
  • 网站建设商家网站策划书3000
  • 长春网站制作长春万网手机网站建站APP
  • 企业快速建站必备的几大常识传奇怎么做充值网站
  • 江门搜狗网站推广优化网页设计心得体会2篇
  • 网站建设中请期待网页设计实训报告任务书
  • 建模外包网站北京大型商场一览表
  • 成品免费ppt网站管理咨询公司技术服务
  • 网站入口设计规范用来做收录的网站
  • 中介做哪些网站仪器仪表行业网站建设
  • it网站建设网站建设的两个方面