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

网页升级访问狼每日正常更新郑州seo顾问

网页升级访问狼每日正常更新,郑州seo顾问,工作总结个人总结,wordpress友链首页显示1 原理说明 LMKD 借助 Linux 内核的 OOM(Out of Memory)机制来管理内存。当系统内存不足时,OOM 触发器会发送信号给LMKD,通知其进行内存管理。LMKD根据预先定义的策略和优先级,选择性地终止一些进程,以释放…

1 原理说明

LMKD 借助 Linux 内核的 OOM(Out of Memory)机制来管理内存。当系统内存不足时,OOM 触发器会发送信号给LMKD,通知其进行内存管理。LMKD根据预先定义的策略和优先级,选择性地终止一些进程,以释放内存。

LMKD运行流程如下:

  1. 监测内存使用:LMKD 定期检查系统内存使用情况,包括各个进程的内存占用和系统总体内存压力。
  2. 内存压力评估:根据内存使用情况,LMKD 会计算出当前的内存压力指数,以判断是否需要进行内存管理。
  3. 内存压力事件处理:当内存压力指数超过一定阈值时,LMKD 触发内存压力事件,并根据预先配置的策略进行相应的处理。
  4. 进程终止:LMKD 根据策略和优先级,选择性地终止一些进程。通常,LMKD 会优先终止那些占用内存较多、优先级较低或者处于后台运行的进程。
  5. 释放内存:通过终止进程释放的内存会被回收,从而使系统内存得到释放,缓解内存压力。
  6. 日志记录和统计:LMKD 记录终止的进程信息和释放的内存量,并将其记录到系统日志中,以供后续分析和优化。

这里选择运行到第4步时进行进程终止过滤,即使用包名进行过滤。

2 修改方案(Android R S)

修改文件为:AOSP/system/memory/lmkd/lmkd.cpp,不同可能lmkd.cpp的位置不同,本质上都是修改kill_one_process的实现,过滤掉包名,具体代码修改如下:

static int kill_one_process(struct proc* procp, int min_oom_score, struct kill_info *ki,union meminfo *mi, struct wakeup_info *wi, struct timespec *tm,struct psi_data *pd) {int pid = procp->pid;int pidfd = procp->pidfd;uid_t uid = procp->uid;char *taskname;int r;int result = -1;struct memory_stat *mem_st;struct kill_stat kill_st;int64_t tgid;int64_t rss_kb;int64_t swap_kb;static char buf[PAGE_SIZE];
+    //AGS add start
+    char packageName[128] = {""};
+    //AGS add endif (!read_proc_status(pid, buf, sizeof(buf))) {goto out;}if (!parse_status_tag(buf, PROC_STATUS_TGID_FIELD, &tgid)) {ALOGE("Unable to parse tgid from /proc/%d/status", pid);goto out;}if (tgid != pid) {ALOGE("Possible pid reuse detected (pid %d, tgid %" PRId64 ")!", pid, tgid);goto out;}// Zombie processes will not have RSS / Swap fields.if (!parse_status_tag(buf, PROC_STATUS_RSS_FIELD, &rss_kb)) {goto out;}if (!parse_status_tag(buf, PROC_STATUS_SWAP_FIELD, &swap_kb)) {goto out;}taskname = proc_get_name(pid, buf, sizeof(buf));// taskname will point inside buf, do not reuse buf onwards.if (!taskname) {goto out;}+    // AGS add start,添加包名过滤
+    strncpy(packageName, taskname,128);
+    //ALOGE("AGS-lmkd:packageName=%s,taskname=%s,strcmp=%d",packageName,taskname,strcmp(packageName,"com.xxx.xxx"));
+    if(!strncmp(packageName,"com.xxx.xxx",strlen("com.xxx.xxx")))
+    {
+        ALOGE("AGS add lmkd-whitelist:pkgname=%s",packageName);
+        return -1000;
+    }
+    //AGS add endmem_st = stats_read_memory_stat(per_app_memcg, pid, uid, rss_kb * 1024, swap_kb * 1024);//...
out:/** WARNING: After pid_remove() procp is freed and can't be used!* Therefore placed at the end of the function.*/pid_remove(pid);return result;
}

思考与扩展:这里实际上也可以根据自己的需要做成白名单和黑名单来解决该问题,但是其本质都是包名的过滤。

http://www.yidumall.com/news/80254.html

相关文章:

  • 格力网站的建设情况制作一个网站的流程有哪些
  • 武汉网站建设索王道下拉网站安全查询系统
  • 怀化网站制作百度统计工具
  • 商城网站制作报价精准引流获客软件
  • 网站首页效果图怎么设计b2b免费推广网站
  • 国际电商平台排名搜索引擎优化入门
  • 公司网站模板最新推广普通话手抄报句子
  • wordpress验证登录seo用什么论坛引流
  • 黄山旅游攻略三日游自驾游百度seo是什么意思呢
  • 企业宣传文案模板seo推广排名软件
  • 站长之家seo网络营销与传统营销的整合
  • 定制网站开发蒙特浏览器如何推广自己网站
  • 动态网页的特点武汉seo优化排名公司
  • 宁德时代网站哪个公司做的网站推广和宣传的方法
  • 网上下的网站模版后门网站seo推广招聘
  • 宝安沙井海岸城网站文章优化技巧
  • 网站建设桂林sem优化公司
  • 网站页面框架设计宁德seo推广
  • 电子商务网站开发应遵循的基本原则网站怎么推广效果好一点呢
  • 手机网站建设选 朗创营销重庆seo俱乐部联系方式
  • 建站快车复制网站内容seo排名快速
  • 做企业门户网站都疫情死亡最新数据消息
  • 太原在线网站建设bt磁力搜索器
  • 千峰培训可靠吗?长沙seo优化
  • 网站负责人彩色验照网上电商怎么做
  • 个人网站可以做哪些主题企业策划方案怎么做
  • 火车票网站建设多少石家庄网站优化
  • 网站建设后的优势seo赚钱培训课程
  • 在什么网站能找到做外贸的邮箱聚合搜索引擎
  • 如何提高网站的用户体验ue南宁seo平台标准