571
社区成员
发帖
与我相关
我的任务
分享Red Hat对CentOS发行策略的改变,使得CentOS不再是一个稳定的生产环境操作系统,众多在生产环境中使用CentOS作为服务器系统的公司和开发者不得不寻找CentOS替代品。Ubuntu、SUSE、Debian等已经非常成熟的Linux发行版成为了开发者群体中呼声最高的替代品。在云计算和大数据迅速发展的今天,底层基础设施和平台也受到了世界各国的普遍重视。从目前的形势来看,当前CentOS的替代方案更多来自于国外的团队,对于国内很多需要从CentOS迁移到其他服务器系统的厂商来说,未来仍然存在受限的隐患。因此,像openEuler这样开放多元且包容的开源操作系统就显得尤为难得。
作为软件工程专业的学生,了解一些操作系统的底层原理和常用技术对未来的学习和工作都是非常有益的。现代程序开发过程中使用到的多线程、IO操作、网络等相关的技术都与操作系统有密切的关系,熟悉操作系统的底层设计在未来编写程序的时候能够帮助自己从底层写出更加高效健壮的代码。
Openeuler是基于CentOS开源项目自主开发的Linux发行版,它以Linux稳定版内核为基础,支持鲲鹏处理器和容器虚拟化技术,是一个面向企业级的通用服务器架构平台,支持x86架构和Aarch64架构。对于华为自家的鲲鹏处理器有着很好的支持,并且由于背靠华为生态,未来可能会广泛应用于服务器、云计算、边缘计算、嵌入式等各种形态设备,有望形成一套国内成熟的通用服务架构平台。
方案描述
基于openEuler操作系统开展对cgroup和namespace内核子系统的质量评测,生成功能、性能、可靠性测试集。
基本实现思路
所选择的测试的组合必须给系统的资源带来足够的压力。openEuler内核的四个主要方面可以影响系统的响应和执行时间:
- CPU:用于在机器的 CPU(s)上处理数据的时间。
- Memory:用于自真实存储器中读写数据的时间。
- I/O:用于自磁盘存储器读写数据的时间。
- Networking:用于自网络读写数据的时间。
UnixBench是一个类unix系统(Unix,BSD,Linux)下的性能测试工具,一个开源工具,被广泛用与测试linux系统主机的性能。Unixbench的主要测试项目有:系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C库等系统基准性能提供测试数据。
LTP套件是由 Linux Test Project 所开发的一套系统测试套件。它基于系统资源的利用率统计开发了一个测试的组合,为系统提供足够的压力。通过压力测试来判断系统的稳定性和可靠性。压力测试是一种破坏性的测试,即系统在非正常的、超负荷的条件下的运行情况。用来评估在超越最大负载的情况下系统将如何运行,是系统在正常的情况下对某种负载强度的承受能力的考验。
在容器中,cpu和内存资源是使用Cgroup来控制,PID、IPC、网络等资源是通过Namespace来划分。在程序没有部署在容器的情况下,我们仍可以利用Cgoup和Namespace来构造场景完成一些异常测试,如利用Cgroup的资源控制功能做资源满载的测试;利用Namespace的资源隔离特性做一些网络异常测试而不影响其他程序的运行。使用Namespace又叫做命名空间,可以让每个进程组具有独立的PID、IPC和网络空间等,也就是说这些系统资源不再是全局性的,而是属于特定的Namespace,每个Namespace里面的资源对其他Namespace都是透明的,从而达到资源的隔离效果。
在这里我们综合考量UnixBench和LTP测试集,提出以下测试实现思路:

阶段一:初始测试
初始测试是开始测试的必要条件。初始测试包括测试套件在硬件和操作系统上成功运转,这些硬件和操作系统将用于可靠性运转。测试套件包附带的驱动程序脚本用于验证cgroup和namespace内核子系统。这个脚本串行地运行一组成包的测试,并报告全部结果。也可以选择同时并行地运行几个实例。在执行脚本的时候,可以指定参数添加需要的测试的项目,这个脚本执行:
- 硬盘 I/O 测试。
- SCHED 测试。
- 命令功能的验证测试。
- 系统调用功能的验证测试。
- IPC (pipeio, semaphore) 测试。


阶段二:压力测试。
可以验证在cgroup和namespace内核子系统高使用率时的健壮性。
- 内存管理压力测试。
- 文件系统压力测试。
- 数学 (浮点) 测试。
- 多线程压力测试。
- 网络压力测试。


阶段三:测试分析
我们对组合测试进行分析,以确定 group和namespace内核的哪些部分在测试执行中得到了使用。然后修改组合测试,在保持期望的高强度系统压力的同时提高代码覆盖率的百分比。最终得到的压力测试涵盖了内核的足够多部分,有助于稳定性声明,并且有系统使用情况和内核代码覆盖情况的数据来支持它。分析综合的测试数据,得到最后cgroup和namespace测试稳定性结论。
阶段四:结果分析
将cgroup和namespace内核模块的测试结果综合汇总成表单,对其功能、性能、可靠性提取分析,得到最终结论。


作者:332