UKSM KSM在Android上的表现

article/2025/9/17 0:15:22

作为一个系统管理程序(hypervisor),Linux® 有几个创新,2.6.32 内核中一个有趣的变化是 KSM(Kernel Samepage Merging) 允许这个系统管理程序通过合并内存页面来增加并发虚拟机的数量。Linux UKSM 是国人自主研发的一个 Linux 内核相关项目,这个项目对服务器和桌面应用都可以显著的减少 Linux 系统冗余的内存,已经在 RHEL6、CentOS 6、Ubuntu 12.04 等系统充分验证和测试过。Linux相同页面合并机制(KSM)使得内存中相同的页面,可以通过修改页表的方式合并成一个。通常这个机制被应用在有众多虚拟机(目前仅支持 KVM)或者有很多冗余内存数据的场景(如有很多类似数据工作集的并行科学计算)里面。但是,目前它的实现方式仍然比较简陋,UKSM的出现,彻底消除了KSM原本局限,真正使得这项技术能被更多的普通用户使用。
众所周知,Android 内核衍生自Linux,但因平台特性,Android Kernel与 Linux Kernel演变出分歧,KSM和UKSM是意在解决内存冗余占用问题开发出的两个内核模块,他们在安装运行多个虚拟机宿主Host上表现相当出色。尤其是UKSM,较于KSM,有较高的性能、透明度和安全性,被广大Kernel内核开发人员和大型服务器用户所青睐。
我们的产品内存有限,合并冗余的内存占用,从内存优化的角度出发,KSM和UKSM无疑是比较好的选择。以下我们针对KSM和UKSM的表现作出测试,以作为UKSM和KSM是否登录产品的决策依据。
说明:KSM在Android Kernel 3.10时代就已经集成,内核开关为 CONFIG_KSM,依赖开关为CONFIG_MMU,UKSM为国人解决服务器冗余内存占用研发,可供参考的版本为0.1.2.3-for-v3.1 ~~~0.1.2.5-for-v3.18。

测试条件:
1.机型:(1G RAM/ MT6580);
2.平台:Android 7.1;
3.内核:Kernel 3.18
测试步骤:
测试机在内核中集成uksm模块,对比机关闭uksm模块,打开ksm开关,使用原生ksm模块做内存合并。测试机与对比机测试方法相同。正常开机开始统计数据(ksm和uksm守护进程CPU占用、整机内存剩余占用),开机手机静置10min,随即开始使用native应用test.bin进行内存申请和填充 “test 200 1”,申请200M内存,整块内存区域使用’1’填充,等待两分钟后重复申请填充,第4分钟同上,等待2分钟,终止数据抓取脚本。
测试原理:
测试机器在正常运行过程中,ksm/uksm对内存合并的积极性、合并效率(内存曲线展示)以及在此过程中的cpu开销(top数据体现)。

数据分析:
16min测试中对比机(ksm)和测试机(uksm)的内存波动。分析,在手机静置的10min中,uksm合并不如ksm积极,现象是在此过程中整机内存uksm略少于ksm,这一值约为30~40M。分别在10min、12min和14min时由test发起的内存申请可以看出,uksm对此200M内存的合并速度远远快于ksm,即uksm遍历合并完成200M内存耗时16s,而ksm完成此过程需要平均60s。
合并动作发生时的内存波动,可以直观展示合并效率
下面是top -m 50 中的ksmd/ukamd信息,可以看出uksm对CPU的利用率非常高,而就内存页检测而言,cpu占用稳定在1%一下,而此数据在ksmd上为均值26%,而且整机运行过程中,ksmd的cpu占用持续高波动,对功耗产生的压力较大。
这里写图片描述

这项数据表明,UKSM在Android上的表现确实优于KSM,无论从速度还是CPU资源消耗的角度。但是在小内存设备上并没有什么优势,亲测:累死累活得合并10~15M内存,功耗上来了,犯不着费这个劲,指着大内存设备上验证是否有用,毕竟国内的牛人当初整出来UKSM就是针对虚拟机服务器这种使用场景。


http://chatgpt.dhexx.cn/article/L2cfl0xJ.shtml

相关文章

针对低端机KSM的优化

 简介: KSM的基本概念和思想可参考如下的分析 http://blog.csdn.net/summer_liuwei/article/details/6013255 http://blog.csdn.net/haitaoliang/article/details/25003395 代码分析 一, 编译设置,初始化 1. kernel-…

Linux KSM共享内存

简介:作为一个系统管理程序(hypervisor),Linux 有几个创新,2.6.32 内核中一个有趣的变化是 KSM(Kernel Samepage Merging) 允许这个系统管理程序通过合并内存页面来增加并发虚拟机的数量。本文探索 KSM 背后的理念&am…

Linux KSM

转载:http://www.cnblogs.com/zhangzhang/archive/2012/05/23/2514336.html 简介:作为一个系统管理程序(hypervisor),Linux 有几个创新,2.6.32 内核中一个有趣的变化是 KSM(Kernel Samepage Merging) 允许…

KSM应用实践

KSM应用实践 原创 lyonger 网易游戏运维平台 2019-08-17 lyonger 18年加入网易,先后负责过多个游戏产品的运维工作,多年运维生涯。负责小游戏CI/CD、事件处理平台开发、游戏Nomad运维模式探索、gitlab平台维护等工作。主要关注Linux性能优化、DevOps、云…

linux ksm,内存页面共享-KSM

导读 本文适合有基本Linux内存管理概念的新手阅读,且本文旨在从工作流程和设计思想上介绍KSM,在涉及到源代码的地方,进行了部分删减,如果想详细了解KSM,推荐阅读源代码及源代码中的注释。 作者也是初次接触Linux内核源…

Linux内存管理 之 KSM功能介绍

目录 前言1. 概述1.1 使用 madvise 控制 KSM1.1 KSM 守护进程 sysfs 接口 2.KSM技术应用场景3. KSM技术实践3.1 查看KSM运行情况3.2 KSM设置3.3 对vm的设置 前言 KSM(Kernel Samepage Merging) 共享内存的概念在现代操作系统中很常用了,比如,一个程序启…

HTTP 401 错误 - 未授权: (Unauthorized)

http://blog.csdn.net/patronsaint/article/details/5639962 介绍 您的Web服务器认为,客户端(例如您的浏览器或我们的 CheckUpDown 机器人)发送的 HTTP 数据流是正确的,但进入网址 (URL) 资源 , 需要用户身份验证 &a…

403错误(已解决)

问题描述: 取得到图片的地址,但是显示图片无法加载 浏览器开发者模式报错403 问题解决: 图片的url部署在阿里云的oss存储仓库上,登陆阿里云发现是欠费导致的oss文件存储功能失效 补充: 403 Forbidden错误的原因和解…

Error:Request failed with status code 401

Error:Request failed with status code 401 错误示例: // 获取个人信息 export const getUserInfoAPI () > {return request({url: /v1_0/user/profile,method: GET,Headers: {Authorization: Bearer ${getToken()}}}) }正确做法 // 获取个人信息 export co…

服务器发送了 HTTP 状态代码 401: Unauthorized

根据wsdl连接生成客户端代码,调用接口报错:服务器发送了 HTTP 状态代码 401: Unauthorized。查询此错误的原因是没有访问权限,想到客户再提供接口wsdl访问连接的时候提供了用户名和密码。 解决办法: 增加此类 在接口运行前增加此…

前端401错误 解决方法:响应拦截器

目录 1.该问题出现的原因 2.处理401问题的解决方案原理 3.使用响应拦截器解决问题 1.该问题出现的原因 在前后端分离项目中,最常见的是前端点击登录后,后端返回token字符串,这个token可以看作是一个“令牌”,就比如你去酒店办理…

解密网站401错误:了解发生原因和修复方法

​  每个网站都会有不同的错误码,其中,401错误被认为是相对常见的错误码。那么,什么是网站401错误呢?在摸清了这一点之后,我们也需要学习一下如何解决它。 什么是 401 状态码? 401 状态代码是 Web 服务器发送给浏览器的 HTTP …

401 错误原因和解决方案

401.1 您未被授权查看该页 HTTP 错误 401.1 - 未经授权:访问由于 凭据无效被拒绝。 出现问题的原因: 计算机用户名ftpname帐号的密码和IIS中记录的不一致。 出现这个问题的原因就是手工到IIS中修改了用户的登录密码,从而导致计算机用户名…

401错误 解决方法:响应拦截器

关于401错误 401错误场景 1. 用户未登录,代码报401,应该回到登录页 2. 登录用户的token过期 : 怎样理解token过期? . 就是登录成功了以后,后端会返回一个token值,这个值在后续请求时带上(就像是开门钥匙), 但是,这个值一般会有有效期(具…

点到超平面的距离公式

超平面: 第一步:求出超平面的法向量 超平面上任意两点, 则向量一定垂直于该超平面的法向量。这两点满足: 两式相减: 就是向量,由此可以看出超平面的法向量就是向量 第二步:求出点到超平面的距离r 假设…

模式识别中的最优分类超平面与线性支持向量机

模式识别中的最优分类超平面与线性支持向量机 本章的内容需要你理解一下的基础知识。 模式识别部分:线性分类器基本概念、感知器 数学基础部分:拉格朗日乘子法、拉格朗日对偶问题 当然,以上的基础知识不需要你现在就看,可以在阅…

平面、超平面的法线,平行超平面的距离

1. 法线 一个平面或超平面由一个方程(不是一组方程)定义: { x ∣ a T x b } \{x\mid a^Txb\} {x∣aTxb} 其中 a a a 是一个非零的列向量,而 b b b 是一个实数。那么它的法线(垂线)向量是 a a a。 例如…

如何理解超平面?

超平面的公式 首先明确几个定义:(1) 超平面是指n维线性空间中维度为n-1的子空间。它可以把线性空间分割成不相交的两部分。比如二维空间中,一条直线是一维的,它把平面分成了两块;三维空间中,一个平面是二维的&#xf…

支持向量所在超平面方程_如何用python绘制超平面支持向量机?

一个完整的例子 import numpy as np import matplotlib.pyplot as plt def __intersect(rect, line): l = [] xmin,xmax,ymin,ymax = rect a,b,c = line assert a!=0 or b!=0 if a == 0: y = -c/b if y<=ymax and y>=ymin: l.append((xmin, y)) l.append((xmax, y)) retu…

SVM(四):超平面详细解释

目录 背景定义超平面方程推导平面直线方程空间平面方程超平面 点到超平面的距离推导点到平面直线的距离点到空间平面的距离超平面 判断超平面的正反 背景 关于超平面的介绍&#xff0c;网上的博客资料太多了&#xff0c;然而真正简洁易懂、切中要害的实在是太少了&#xff0c;…