开源之夏 2023 | 欢迎参加openEuler A-Tune SIG和Base-service SIG开发任务_调优

开源之夏是中国科学院软件研究所联合openEuler发起的开源软件供应链点亮计划系列暑期活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源软件社区的蓬勃发展。活动联合各大开源社区,针对重要开源软件的开发与维护提供项目,并向全球高校学生开放报名。

openEuler社区目前已上线94个项目!欢迎各大学子按照自己感兴趣或擅长的方向进行申请

今天给大家带来A-Tune SIG和Base-service SIG的任务介绍,这两个SIG共发布了11个项目,涉及操作系统,性能调优和国密安全领域,项目任务覆盖面广,难易程度适中。欢迎大家参与到项目中,我们将为大家提供丰富的学习资源和技术指导 。

项目1:unbound使用libverto替代libevent

项目描述:

libverto提供了异步API接口,允许其他库暴露异步接口给应用程序并来启动或停止应用程序的主循环。libverto提供了glib、libev、libevent、tevent库的控制事件循环的异步API接口,以供应用程序的调用。

Libevent是一个轻量级的高性能网络库,旨在替换事件驱动网络服务器中的事件循环,提供了三类事件的统一反应机制,支持在发生IO事件、信号事件、计时器超时事件后执行回调函数。

由于libverto项目更为灵活,支持更多不同的事件库,因此该项目主要通过修改unbound软件中对libevent的依赖,将对libevent的依赖替代为使用libverto。该项目的主要目标如下:

将unbound中使用到libevent中至少50%的接口替代为使用libverto的接口,并且保持原有软件功能正常。

产出标准:

1. 代码以patch的形式合入unbound仓库的master分支。

2. 替代的接口占原有使用接口的比例50%以上,并且覆盖80%的不同接口,对于无法替代的接口继续使用libevent,并提供对应的材料说明。

3. 替代之后unbound的测试用例以及功能同原有一致。

4. 注释/文档详尽。

技术要求:

1. 熟练掌握 C/C++ 开发语言

2. 熟悉操作系统事件库

项目主页:

https://gitee.com/openeuler/open-source-summer/issues/I6YM46?from=project-issue

项目2:libevhtp使用libhv替代libevent

项目描述:

libhv是一个类似于libevent、libev、libuv的跨平台网络库,提供了更易用的接口和更丰富的协议(社区地址:https://github.com/ithewei/libhv)。

Libevent是一个轻量级的高性能网络库,旨在替换事件驱动网络服务器中的事件循环,提供了三类事件的统一反应机制,支持在发生IO事件、信号事件、计时器超时事件后执行回调函数。

该项目的主要目标如下:

将libevhtp中使用到libevent中至少80%接口替代为使用libhv的接口,并且保持原有软件功能正常。

产出标准:

1、代码以patch的形式合入libevhtp仓库的master分支。

2、替代的接口占原有使用接口的比例50%以上,并且覆盖80%的不同接口,对于无法替代的接口继续使用libevent,并提供对应的材料说明。

3、替代之后unbound的测试用例以及功能同原有一致。

4、注释/文档详尽。

技术要求:

1. 熟练掌握 C/C++ 开发语言

2. 熟悉操作系统事件库

项目导师:

https://gitee.com/openeuler/open-source-summer/issues/I6YLUY?from=project-issue

项目3:nghttp2使用libverto替代libev

项目描述:

libverto提供了异步API接口,允许其他库暴露异步接口给应用程序并来启动或停止应用程序的主循环。libverto提供了glib、libev、libevent、tevent库的控制事件循环的异步API接口,以供应用程序的调用。

Libev 是一个事件循环库,通过注册对事件(例如文件描述符可读或发生超时)的观察,它会管理这些事件源并为程序提供。通过执行事件循环控制程序,并通过回调机制传达事件。功能包括 pid 观察器、基于绝对时间的周期性定时器,以及 epoll/kqueue/event ports/inotify/eventfd/signalfd 后端支持、快速定时器管理、时间跳跃检测和校正,以及易用性。

由于libverto项目更为灵活,支持更多不同的事件库,因此该项目主要通过修改nghttp2软件中对libev的依赖,将对libev的依赖替代为使用libverto。该项目的主要目标如下:

将nghttp2中使用到libev中至少50%的接口替代为使用libverto的接口,并且保持原有软件功能正常。

产出标准:

1、代码以patch的形式合入nghttp2仓库的master分支。

2、替代的接口占原有使用接口的比例50%以上,并且覆盖80%的不同接口,对于无法替代的接口继续使用libev,并提供对应的材料说明。

3、替代之后nghttp2的测试用例以及功能同原有一致。

4、注释/文档详尽。

技术要求:

1、熟练掌握 C/C++ 开发语言

2、熟悉操作系统事件库

项目导师:

项目主页:

https://gitee.com/openeuler/open-source-summer/issues/I6YLTU?from=project-issue

项目4:提供基于Rust的操作系统引导工具

项目描述:

背景:操作系统的启动过程经过BIOS引导grub,然后再由grub 引导内核,grub作为服务器必选的引导工具,其安全性与可靠性要求较高,现有的grub 通过C语言编写,存在一定安全隐患。
解决方案:使用Rust重写一个轻量级的安全可靠的引导程序,满足服务器场景系统引导功能。

产出标准:

使用Rust重写一个轻量级的安全可靠的引导程序,符合UEFI规范,具备多系统引导能力,支持引导本地磁盘安装的内核。

技术要求:

1、了解UEFI规范
2、了解系统引导过程
3、熟悉C、RUST

项目导师:

项目主页:

https://gitee.com/openeuler/open-source-summer/issues/I6YLML?from=project-issue

项目5:为libhv提供适配层,兼容libverto接口

项目描述:

libverto提供了异步API接口,允许其他库暴露异步接口给应用程序并来启动或停止应用程序的主循环。libverto提供了glib、libev、libevent、tevent库的控制事件循环的异步API接口,以供应用程序的调用。
libhv是一个类似于libevent、libev、libuv的跨平台网络库,提供了更易用的接口和更丰富的协议(社区地址:https://github.com/ithewei/libhv)。
该项目要求提供一个适配层组件ifm_libverto对libhv进行封装,封装后的接口同libverto保持兼容。该项目的主要目标如下:

在libhv的基础上提供一个适配层组件ifm_libverto,将libhv的接口封装成libverto兼容的接口。对于libhv不支持的接口,可以调用libverto的接口补齐。

该封装层中除了头文件的函数定义以及结构体定义,其余的内容需重写,通过代码片段扫描。

通过修改gssproxy的依赖,依赖使用ifm_libverto,对于gssproxy功能无影响。

基于现有的benchmark测试工程或者设计新的性能测试用例,对ifm_libverto中的性能测试,并提供性能对比报告。

产出标准:

1、ifm_libverto需提供对应的动态库文件。

2、对gssproxy进行适配验证,支持切换使用ifm_libverto,切换之后gssproxy能够编译通过,并且测试用例通过。

3、性能测试的benchmark无需合入对应的仓库,可以提供独立的仓库进行测试,但是需要在patch提交的时候提供对应的性能测试对比。

4、需要提供对应的测试用例,测试用例可以复用现有libverto的测试代码。

5、除了libverto之外,不主动引入其余的开源软件,相关的代码需要是自研代码,并且通过常用的CodeCheck以及pclint扫描。

6、注释/文档详尽。

7、该代码合入到ifm_nettle仓库,相关的源码文件需同其余模块隔离。

技术要求:

1、熟练掌握 C/C++ 开发语言

2、熟悉操作系统事件库

项目导师:

项目主页:

https://gitee.com/openeuler/open-source-summer/issues/I6YH0K?from=project-issue

项目6: 性能调优可视化工具

项目描述:

当用户在openEuler上使用或开发应用时,会有性能瓶颈,需要分析出哪里是性能瓶颈并进行调优。A-Tune目前具备自动化、智能化的调优能力,但欠缺分析和可视化的能力,因此希望在A-Tune性能调优仓库中,新增一个瓶颈点识别、分析、和可视化的工具。例如采集当前系统的cpu数据,通过开源工具输出火焰图提供给用户分析性能瓶颈。

产出标准:

1.从CPU,内存,磁盘(Disk I/O),网络(Network I/O),内核或其他软硬件性能瓶颈中任选3个维度实现相应的数据采集和可视化功能。
2.要求工具提供命令行/UI/或其他简单易操作的方式供用户使用。进阶:要求工具基于A-Tune现有的命令行框架提供命令行供用户使用。
3.要求工具输出可视化的数据界面,可以是html文件、图片、终端打印等供用户进行直观的性能分析或参考。

技术要求:

1、掌握python和Go编程语言

2、熟悉linux操作系统,具备基本操作系统知识(例如cpu,内存,网络)

3、熟悉A-Tune调优工具

4、具备独立查找资料和解决工程问题的能力。

项目导师:

https://gitee.com/openeuler/open-source-summer/issues/I6YG4L?from=project-issue

项目7: 实现二分法性能分析工具

项目描述:

一款软件如果两个版本的性能差异明显,调优人员需要分析找出两个版本间的影响性能最大的补丁。两个版本之间往往存在几十上百次代码提交,以python软件为例,从python3.9.0到python3.9.1之间,仅一个小版本更新就有282次提交,调优人员很难定位,往往需要大量重复性、耗时长的人工工作。希望实现二分法性能分析工具,通过将282次提交不断进行二分再构建python包,对构建后的包进行性能测试,从而能够自动化地找出关键性能补丁。

产出标准:

在A-Tune仓库下,开发二分法性能分析工具,实现输入待分析软件包(如python/glibc)、任意两个commitid,以及性能benchmark脚本,输出性能提升最大的commitid

技术要求:

1.有linux操作系统开发基础
2.熟练掌握rpmbuild编包或obs编包方法
3.至少掌握一种主流编程语言(C/C++/python/Java/Go)

项目导师:

项目主页:

https://gitee.com/openeuler/open-source-summer/issues/I6YG3Z?from=project-issue

项目8: 多系统交叉验证性能工具

项目描述:

性能调优存在一种常见的场景——同一款软件在两个不同的操作系统上性能差异较大,在这种情况下,调优责任人通常会对两个操作系统的各项系统配置、启动参数、系统服务等数据进行交叉测试,找到影响性能的配置/参数。基于这一目标,实现自动化的交叉验证工具。
以centos和openeuler两款操作系统为例,首先分别测试两款操作系统的基线性能,随后将centos系统上的sysctl配置、启动项配置、系统服务依次配置到openeuler系统并测试配置后的性能数据;openeuler系统同理。

产出标准:

提供一款应用及应用的测试方法,实现sysctl配置、ulimit配置、系统启动项参数配置在openeuler和centos两个操作系统上的交叉下发功能。

技术要求:

1、有linux操作系统开发基础
2、至少掌握一种主流编程语言(C/C++/python/Java/Go)

项目导师:

项目主页:

https://gitee.com/openeuler/open-source-summer/issues/I6YFVD?from=project-issue

项目9: 基于迁移学习的动态调优算法设计与实现

项目描述:

A-Tune是一款基于AI的操作系统性能调优引擎。A-Tune利用AI技术,使操作系统“懂”业务,简化IT系统调优工作的同时,让应用程序发挥出色性能。当我们针对特定场景进行调优时,通常存在一些历史调优过的相似场景,通过利用历史相似调优场景的数据,可提升调优效率。本项目基于A-Tune当前调优能力,设计迁移学习算法实现动态调优;支持对历史调优数据的存储、查询,架构设计合理;相比于A-Tune现有调优算法的效率提升30%;适用于主流的大数据场景(e.g., Mysql)。(算法实现可提供指导)

产出标准:

1. 方案创新性:基于A-Tune当前调优能力,设计迁移学习算法实现动态调优;支持对历史调优数据的存储、查询,架构设计合理;
2. 技术领先性:相比于A-Tune现有调优算法的效率提升30%,适用于主流的大数据场景(e.g., Mysql)

技术要求:

1. 对机器学习模型有一定的了解
2. 有linux操作系统开发基础
3. 对A-Tune调优功能有所了解

项目导师:

项目主页:

https://gitee.com/openeuler/open-source-summer/issues/I6YIF9?from=project-issue

项目10:A-Tune 识别应用场景及动态推荐调优参数

项目描述:

当用户需要调节一款软件的性能时,可能出现如下情况:用户只了解当前软件的参数功能和数值范围,对内核态参数不了解,无法给出内核态参数的调优范围。此时,A-Tune可以新增功能:1.根据调优软件类型,识别当前应用场景;2.根据应用场景识别的结果,向用户推荐需要调优的内核态参数。

产出标准:

1.实现软件模型的常见场景感知,如计算、存储、网络等软件负载资源。(目前A-Tune已具备一定能力)
2.实现软件模型的正确分类(目前A-Tune已具备一定能力)
3.实现对应场景下的参数推荐

技术要求:

1.有linux操作系统开发基础
2.熟练掌握python语言,了解go语言
3.具备AI/机器学习基础

项目导师:

项目主页:

https://gitee.com/openeuler/open-source-summer/issues/I6YH50?from=project-issue

项目11:RPM签名及校验支持国密算法

项目描述:

背景:各Linux发行版发布在RPM软件仓库中的RPM包都会做数字签名,这样使用者就可以对从互联网获取到的RPM包进行数字签名校验,确认RPM包是可信的,完整的。

需求:目前,各发行版对RPM包做数字签名主要使用RSA证书和SHA256哈希算法,我国正在推进国密算法的商业使用,本项目需要使用国密算法SM2(椭圆曲线公钥密码算法)和SM3(杂凑算法)实现RPM包数字签名,并可以在使用dnf安装软件包时,实现RPM包的国密算法数字签名校验。

产出标准:

1. 实现 RPM 包签名支持使用 SM2 数字证书和 SM3 杂凑算法
2. 实现 rpm -K 支持校验使用国密算法签名的 RPM 包
3. 实现 gpg key 导入、导出等管理功能新增支持国密算法
4. 实现 dnf 支持校验使用国密算法签名的 RPM 包,并且不影响校验使用其他算法签名的 RPM 包

技术要求:

1. 熟练掌握 python 开发语言
2. 熟练掌握 C/C++ 开发语言
3. 熟悉 dnf、rpm 等包管理工具的使用
4. 熟悉 Linux 系统对 RPM 包签名管理流程
5. 了解加解密算法知识

项目导师:

项目主页:

https://gitee.com/openeuler/open-source-summer/issues/I6Y72Q?from=project-issue

活动日程及参与方式

目前正处于学生注册、沟通导师、提交项目申请环节。

开源之夏 2023 | 欢迎参加openEuler A-Tune SIG和Base-service SIG开发任务_应用程序_02

为了让大家更深入地了解A-Tune SIG和Base-service SIG的项目,openEuler将在5月23日(下周二)举办线上直播。

时间:5月23日(下周二)

地点:openEuler B站

扫描下方二维码即可预约直播

开源之夏 2023 | 欢迎参加openEuler A-Tune SIG和Base-service SIG开发任务_学生_03

点击【阅读原文】查看 2023 开源之夏 openEuler 所有项目详细信息,有感兴趣的可以直接登录开源之夏官网报名与导师沟通投递简历哦~