当前位置: 首页 > 软件库 > 其他开源 > Linux内核 >

UKSM

Linux 内核
授权协议 GPLv2
开发语言 C/C++
所属分类 其他开源、 Linux内核
软件类型 开源软件
地区 国产
投 递 者 尹俊雅
操作系统 Linux
开源组织
适用人群 未知
 软件概览

Linux UKSM 是国人自主研发的一个 Linux 内核相关项目,这个项目对服务器和桌面应用都可以显著的减少 Linux 系统冗余的内存,已经在 RHEL6、CentOS 6、Ubuntu 12.04 等系统充分验证和测试过。

Linux相同页面合并机制(KSM)使得内存中相同的页面,可以通过修改页表的方式合并成一个。通常这个机制被应用在有众多虚拟机(目前仅支持 KVM)或者有很多冗余内存数据的场景(如有很多类似数据工作集的并行科学计算)里面。但是,目前它的实现方式仍然比较简陋,UKSM的出现,彻底消除了KSM原本局限,真正使得这项技术能被更多的普通用户使用。具体的来说,它有以下的亮点(原本KSM不具有的特性):

  • 全系统扫描,用户透明。 UKSM现在自动扫描所有用户进程的匿名映射内存区域(包括malloc分配出来的内存)。不需要修改一行应用程序的源码,使用起来超级简单,安装完成以 后,重启使用本站补丁的内核即可(有部分已编译的二进制内核供下载)。起它几乎什么都不需要做(除非你想通过sysfs调整其内部参数)。
  • 不无谓地浪费CPU时间。UKSM自动探测并分析得出包含丰富冗余数据的区域,并在其上全速工作。对于没有太多冗余甚至彻底没有冗余数据的区域,只进行速度非常低(通常情况下,用top看,CPU占用率为0)的采样扫描。而当包含丰富冗余数据的区域出现的时候,它又能非常快速的作出响应。
  • UKSM能够以极快的速度扫描,并合并冗余数据。 在Intel core 2 Q9300的CPU上,KSM的官方评测其内存合并速度最高在260M/s左右,而实际工作的平均速度在几十M每秒。由于采用了全新的hash算法,相同的硬件环境下面,我们的算法的合并速度最高可达到477MB/sec ∼ 923MB/sec。而对于不包含冗余数据的页面上,UKSM的扫描速度最高是627MB/sec ∼ 2445MB/sec。正因为有如此惊人的速度,全系统扫描才真正成为可能。而对于已有的KVM的冗余消除应用来说,速度上无疑是一个质的的飞跃!
  • 抖动区域避免。UKSM能实时自动地发现不友好的抖动区域,并降低其上的扫描速度,避免在此类区域上浪费时间。
  • 昨天,把自己的OpenSuSE12.1内核升级到了3.4.5,最新的内核,同时也把UKSM的补丁也打到内核中去了。 给大家介绍一下下。 首先下载最新版的内核源代码,很简单,在 kernel.org 就可以下载了,下载完成可以直接放在自己的home目录里面,不要放到系统的源代码文件夹,这样可以不加权限进行配置和打补丁。我的是~/src/linux-3.4.5 内核源代码下载好后,再下载相应的UKSM

  • Linux相同页面合并机制(KSM)使得内存中相同的页面,可以通过修改页表的方式合并成一个。通常这个机制被应用在有众多虚拟机(目前仅支持 KVM)或者有很多冗余内存数据的场景(如有很多类似数据工作集的并行科学计算)里面。但是,目前它的实现方式仍然比较简陋,UKSM的出现,彻底消除了KSM原本局限,真正使得这项技术能被更多的普通用户使用。具体的来说,它有以下的亮点(原本KSM不具有的特性): 全系统

  • Linux内核机制KSM(Kernel Samepage Merging)能合并KVM虚拟机之间相同内存的页面,被CentOS, RHEL之类的服务器内核广泛采用,但是其速度很慢。UKSM(Ultra KSM)是国人在此基础上的极大改进。通过使用了更高级的算法,UKSM的新特性包括: * 全系统扫描,用户透明:能扫描所有应用程序(虚拟机方面目前仅支持KVM,其它的也在计划中)中匿名映射区域的页面,

  • KSM是Linux内核的一个特性,提供了内存页合并的功能。 但是KSM的实现比较简单,有很多优化的余地。因此就出现了很多KSM改进的项目。 UKSM是国人开发的一个KSM改进项目。有如下优点,看了下代码,实现思路如下: 1.   全系统扫描,用户透明 KSM需要程序调用 madvise 系统调用,才会进行merge。 UKSM自动对全系统扫描,因此不需要上层应用程序进行修改。 2.   不无谓的浪

  • PKSM是国人对KSM,UKSM的改进。 主要有以下优点,目前PKSM处于开发阶段,尚不能商用。 相对于UKSM,优点主要在于2,4 1.对用户透明 自动添加全系统的用户进程的匿名页面到PKSM中,因此不在需要用户修改用户程序(使用madvise系统调用来添加用户进程到KSM系统中)。 2. 高效的匿名内存页面检测 自动检测匿名页面的创建和释放,使用新的算法和机制来直接处理linux内核创建/释放

  • 开源代码参考: mm/uksm.c · pf-5.0 · Oleksandr Natalenko / pf-kernel · GitLab

 相关资料
  • 我开发了kervel驱动程序,并与dell进行了通信。尝试做一个快照功能和行走功能 我的结构是 在我的快照函数中,我这样做。 在walk函数中,我执行以下操作 当我在我的驱动程序条目中(当驱动程序加载时)使用这个函数时,所有的工作都很好。但当我从dll中调用它时,只有2秒钟的时间“Word Fine”,然后我就会出现蓝屏。 当我尝试从SM_MSI结构中删除Name变量时,所有工作都很完美。!!所以

  • 本章描述 Linux 内核中的内存管理。在本章中你会看到一系列描述 Linux 内核内存管理框架的不同部分的帖子。 内存块 - 描述早期的 memblock 分配器。 固定映射地址和 ioremap - 描述固定映射的地址和早期的 ioremap 。 kmemcheck - 第三部分描述 kmemcheck 工具。

  • DatabaseType SPI 名称 详细说明 DatabaseType 支持的数据库类型 已知实现类 详细说明 SQL92DatabaseType 遵循 SQL92 标准的数据库类型 MySQLDatabaseType MySQL 数据库 MariaDBDatabaseType MariaDB 数据库 PostgreSQLDatabaseType PostgreSQL 数据库 OracleDa

  • RT-Thread 内核,包括内核库和实时内核的实现 模块   基础定义   RT-Thread 基本数据类型     系统初始化   RT-Thread 的启动流程     内核对象管理   内核对象管理接口     线程管理   线程管理接口     时钟管理   时钟管理接口     定时器管理   定时器管理接口     线程间通讯   线程间通讯接口     内存池管理   静态内存池接

  • 问题内容: 我有一个非常简单的脚本,该脚本在打印和报告的同时分配内存,这是对大型对象的唯一引用。运行脚本后,heapy告诉我应该不使用太多内存,而pidstat告诉我相反: 输出如下: 如何确定该内存已返回操作系统? 问题答案: 何时可以在进程内重新使用内存与何时将内存释放到OS之间可能会有差异。特别是,标准的Python解释器(CPython)维护其自己的池和用于特定类型对象的空闲列表。它将在这

  • 问题内容: VS 哪种被认为是 正确的 (语法上)且性能最高的方法,为什么? 后一个示例中的语法对我来说似乎更合乎逻辑,但我的假设是JOIN会更快。 我看过查询计划,还无法从中解密任何内容。 查询计划1 查询计划2 问题答案: 两种语法有不同的用途。假设使用Join语法,则需要StockToCategory和Category表中的某些内容。如果每个类别的StockToCategory表中有多个条目

  • arm内核发展历史 arm内核 架构 arm7 armv6 cortex-m0 armv6-m cortex-m0+ armv6-m cortex-m3 armv7-m cortex-m4 armv7-m cortex-m7 armv7-m arm9 ARMv6 arm11 ARMv6 arm12 ARMv6 cortex-a7 armv7-a cortex-a8 armv7-a cortex-a

  • 本节的目标是对Hana的核心进行一个高层次的概述。 这个核心是基于tag的概念,它是从Boost.Fusion和Boost.MPL库借用的,Hana更进一步地加深了这个概念。 这些tag随后会用于多个目的,如算法定制,文档分组,改进错误消息和将容器转换为其他容器等。 得益于其模块化设计,Hana可以非常容易地以ad-hoc方式扩展。 事实上,库的所有功能都是通过ad-hoc定制机制提供的。 Tag