Linux 内核主线总体而言兼具了性能、稳定和安全于一身,不过总有些 Geek 不满足主线中的种种限制,使用各自社区的补丁为它添砖加瓦。

概述

pf内核,这算是一个非常为人熟知的内核。包含了ck补丁(兼容4.8版本将是最后一个版本),详见:MuQSS - The Multiple Queue Skiplist Scheduler;bfq补丁和graysky gcc 优化CPU补丁。该内核没有为 Debian 系打包。

zen内核,这是一群 Geek 修改的内核,包括了 pf 内核在内的所有优化补丁,另外还加上 aufs 补丁。这个补丁的具体内容可以参见这里:aufs wiki。

grsecurity/pax内核,这个内核基本就是内核主线和 grsecurity/pax 补丁,因为其它补丁很难或者说极难打上。这个补丁主要目的在于安全强化,所以内核性能就放在第二位。更多内容可以参考:官方主页。

测试平台及社区内核

我自己使用的台式机,配置如下图:

使用测试的四个内核,分别是pf内核4.8.0.pf2版本,zen内核4.7.6版本,两个grsecurity/pax(下文简称GP,GP内核在图中都是带有-grsec的版本)内核版本,其中之一使用主线内核和GP补丁,另一个使用主线、GP补丁和Graysky2补丁。详见下图:

测试

C-Ray测试

从 C-Ray 的测试中,可以发现 GP 内核表现基本一致。4.7.7是GP+Graysky2的版本,如果说这个是比GP原生有所提升,这个微小的差距人类是无法感觉到的。另外,zen内核和pf内核虽然大版本不同,但差距非常小。

Parallel BZIP2 Compression 测试

这项测试的结果与上一个基本类似。

7-Zip Compression 测试

这项测试的结果也在预料之中。不过从以上三项测试,不难看出 GP 内核的性能确实较另外两个差些。

Loopback TCP Network Performance 测试

这个测试中对比两个 GP 和其它两个内核,发现GP几乎完败。

IOzone 测试

这项测试中除了 zen 内核明显领先,其他都差不多。

SQLite 测试

这项测试中 GP 内核有小幅领先,但差距不大。

Apache 测试

关于GP+graysky2的版本为什么跑下来还不如不优化的GP,猜测原因有可能是我后来将 kernel.grsecurity.harden_ipc 设置为0有关,待到后面总结详谈。

PostgreSQL pgbench 测试

这个测试中缺失GP原始版本的跑分,推测也和上一个测试中的异常得分有关。不过神奇的是在这个版本中,GP+graysky2的GP版本跑分超过了两个优化的内核。

总结

鱼和熊掌不可兼得,社区版本中,最注重安全的 Grsecurity/PaX 内核补丁的使用,提升的安全性却降低了性能,但是就降低的程度来说,除了TCP那个测试,其它降低的并不多,个人认为这个程度完全不影响正常使用。

就 Zen 内核,和 pf 内核而言,两者因为大版本号的不同,对比意义不大,不过总的来说,除了 Apache 那个测试,Zen 完胜 pf 之外,它们基本上都差不多,各有千秋。

一些其它需要注意的小插曲:

Zen 内核测试时,我将TCP无意间修改成 YeAH,而不是 pf 内核测试时的 Westwood,或许这个也是 TCP 测试中两个微小差距的原因!?

关于 kernel.grsecurity.harden_ipc 问题。关于 Grsecurity/PaX 内核的编译,我基本上完全参考了 《面向桌面的 PaX/Grsecurity 内核配置注释与评论》 一文,该文中提到关于 IPC 的问题,将该选项开启后,“让 PaX 禁止权限宽松到离谱的 IPC 被访问,以免 buggy 的 IPC 程序被攻击,但同时允许有 CAP_IPC_OWNER 权限的进程这么做。我从没见过这个特性导致问题,推荐编译时开启,运行时可以用 sysctl 关闭”。不过随着我开启该选项,大量 ipc 内容填充 dmesg 日志,目前我没有追踪到问题本质,随后的工作将更新到这里。

最后,我在 Ubuntu 论坛的编译打包板块为各位发烧友制作最新的 Zen 和 Grsecurity/PaX 内核,没有提供源,需要自行下载用 dpkg 安装,详见这里。

Linux内核省电社区,Linux 内核社区补丁对比相关推荐

  1. linux补丁rt ck pf zen,Linux 内核社区补丁对比

    Linux 内核主线总体而言兼具了性能.稳定和安全于一身,不过总有些 Geek 不满足主线中的种种限制,使用各自社区的补丁为它添砖加瓦. 概述 pf内核,这算是一个非常为人熟知的内核.包含了ck补丁( ...

  2. Linux驱动 | HC-SR501红外热释电驱动(中断内核线程)

    HC-SR501红外热释电驱动 参考:HC-SR501热释电红外传感器驱动(STM32)_一灯大师_Alex的博客-CSDN博客_stm32hc-sr501 https://blog.csdn.net ...

  3. linux内核7大功能,Linux Kernel5.10十个值得关注的功能

    Linux Kernel 5.10 有望在本周末发布,外媒 Phoronix 盘点了 10 个值得关注的改进和新功能.5.10 不仅是 2020 年最后一个内核版本,而且还是长期支持(LTS)版本. ...

  4. linux 内核地址随机化,GNU/Linux内核的地址随机化

    地址空间布局随机化(ASLR)是一项增加安全性的技术,***者发现漏洞之后开始编写exploit时如果要考虑绕过ASLR这会增加编写exploit的难度,最早是2001年Grsecurity社区(强悍 ...

  5. linux内核设计与实现---从内核出发

    获取.编译.安装内核 1 获取内核源码 安装内核源代码 何处安装源码 使用补丁 2 内核源码树 3 编译内核 减少编译的垃圾信息 衍生多个编译作业 安装内核 启用指定内核作为引导 4 内核开发的特点 ...

  6. 实时Linux内核调度器 | Real-Time Linux Kernel Scheduler

    <Real-Time Linux Kernel Scheduler> HOWTOs by Ankita Garg on August 1, 2009 目录 Design Goal 设计目标 ...

  7. 一文了解linux内核,一文了解Linux的系统结构

    什么是 Linux ? 如果你以前从未接触过Linux,可能就不清楚为什么会有这么多不同的Linux发行版.在查看Linux软件包时,你肯定被发行版.LiveCD和GNU之类的术语搞晕过.初次进入Li ...

  8. 【操作系统】Linux内核和Windows系统的内核有什么区别?

    本文内容转载自"拉勾教育"的讲义,更多课程信息请关注拉勾教育.本人在学习之余记记笔记,顺便当当搬运工! 目录 Linux内核和Windows系统的内核有什么区别? 什么是内核? 内 ...

  9. 安卓与linux内核版本的关系,Linux内核是如何定义版本的?

    我们平时常用到的Linux系统包括CentOS.Ubuntu等,其实这些都是Linux的发行版本,Linux还有一个版本是内核版本. 内核版本的命名规则 在Linux官网(kernel.org)上,我 ...

最新文章

  1. MySQL 最新8.0版本windows系统下数据库的安装、配置与使用实例演示,客户端使用ip连接数据库失败问题处理
  2. html ppt文件在线播放,[2018年最新整理]如何在PPT中插入html网页.ppt
  3. 百万农民创大业-农业大健康:产业融合谋定振兴乡村唱大戏
  4. HTML与CSS基础之常用选择器(一)
  5. 视觉研究的前世今生(中)王天珍(武汉理工大学)
  6. 用Canvas画圆环百分比进度条
  7. 谷歌浏览器该扩展程序未列在Chrome网上应用店中解决方法
  8. Bezier(贝塞尔)曲线(三阶)的轨迹规划在自动驾驶中的应用(四)
  9. C#.Net工作笔记012---c# 文件操作_文件路径操作_随时更新
  10. elk错误:Too Many Requests
  11. 图谱特征与卷积神经网络的名优大米无损鉴别
  12. 第二次课动手动脑的问题以及课后实验性的问题
  13. java二进制八进制十六进制写法,java 二进制,八进制,十进制,十六进制间相互转换的步骤...
  14. 如何在spring框架中解决多数据源的问题[转]
  15. pwnable.kr 第一题fd
  16. Flash 第二篇 AS影片剪辑
  17. 2015070610 - 看到很多所谓的大牛
  18. for in在python中什么意思_python中for in的用法详解
  19. Fix ‘Clearing orphaned inodes’ on Ubuntu
  20. adc0808模数转换实验报告_模数转换实验报告

热门文章

  1. oracle存储过程生成单号,Oracle生成单据编号存储过程的实例代码
  2. Git Worktree 高级使用,这样清爽多了|新技能
  3. 儿童版「微信」要来了?
  4. 每日一皮:史上最直观的单向循环链表,还不懂算我输!
  5. 注意:宝塔曝未授权访问数据库漏洞,尽快升级版本!
  6. 80%的Oracle JDK用户另有想法
  7. 进栈顺序为abcd则出栈顺序为_线性表之顺序表示
  8. PyTorch ToTensor解读
  9. ProxylessNAS pytorch
  10. Layout of the output array img is incompatible with cv::Mat (step[ndims-1] !