{"id":23658777,"url":"https://github.com/opencloudos/lkp-extent","last_synced_at":"2026-03-01T09:35:52.962Z","repository":{"id":45840534,"uuid":"459389200","full_name":"OpenCloudOS/lkp-extent","owner":"OpenCloudOS","description":"lkp-extent enhances the ability to run inside containers and deploy containers on multiple hosts based on lkp","archived":false,"fork":false,"pushed_at":"2023-12-13T12:42:18.000Z","size":26458,"stargazers_count":19,"open_issues_count":2,"forks_count":15,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-01T12:52:25.860Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenCloudOS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-15T01:47:26.000Z","updated_at":"2024-06-05T09:42:36.000Z","dependencies_parsed_at":"2024-12-29T00:51:34.119Z","dependency_job_id":null,"html_url":"https://github.com/OpenCloudOS/lkp-extent","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/OpenCloudOS/lkp-extent","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenCloudOS%2Flkp-extent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenCloudOS%2Flkp-extent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenCloudOS%2Flkp-extent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenCloudOS%2Flkp-extent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenCloudOS","download_url":"https://codeload.github.com/OpenCloudOS/lkp-extent/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenCloudOS%2Flkp-extent/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29965698,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T09:33:09.965Z","status":"ssl_error","status_checked_at":"2026-03-01T09:25:48.915Z","response_time":124,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-29T00:51:28.297Z","updated_at":"2026-03-01T09:35:52.934Z","avatar_url":"https://github.com/OpenCloudOS.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"![img](images/lkp.png)\n\n# lkp-extent\n\nlkp-extent项目致力于增加[LKP](https://github.com/intel/lkp-tests \"LKP\")项目在容器环境下的压力相关测试，从而增加Linux系统的ras特性。目前主要分为如下几个方向：\n```\n  1） 增加LKP远程管理分发机制 （已完成）\n  2） 增加LKP对容器环境的测试 （大部分完成）\n  3） 增加ebpf测试内核的用例  （待完成）\n```\n\n## 1. 项目介绍\n\n  \u003elkp-extent是[LKP](https://github.com/intel/lkp-tests \"LKP\")的一个扩展功能，但是该repo并不会对[LKP](https://github.com/intel/lkp-tests \"LKP\")工程本身进行修改，他可以在最大的程度上使用最新的[LKP](https://github.com/intel/lkp-tests \"LKP\")，而lkp-extent上面新增的测试case也只会以overlay的方式叠加到原生态的LKP工程上。\n\n  1.1 远程管理与分发\n  \u003e我们知道在测试系统稳定性的时候，对不同类型的服务器进行大批量暴力测试，才能更容易说明问题。但是原生态的[LKP](https://github.com/intel/lkp-tests \"LKP\")套件主要是用于在单台Linux服务器上测试系统的稳定性，如果需要部署多台不同类型的服务器进行同时测试，则需要手动登录每一台服务器进行设置。因此lkp-extent主要用于扩展[LKP](https://github.com/intel/lkp-tests \"LKP\")功能，解决其在这方面的不足，设计出一个 一对多点的运作模式。\n\n                                         lkp-server\n                                             |\n          +-----------------+----------------+----------------+-------------------+\n          |                 |                |                |                   |\n          |                 |                |                |                   |\n       lkp-node         lkp-node           .....           lkp-node           lkp-node\n\n  \u003e如图，首先我们将一台服务器称为node，而lkp-extent则需要存在一个server node和若干个client node。server node会进入监听模式，client node会根据自身的服务器配置相继接入对应的server node。这样server node上面，就可以对client node进行全方位的操作.\n\n  1.2 容器环境支持\n\n  \u003e目前[LKP](https://github.com/intel/lkp-tests \"LKP\")的测试case更多的是偏向于对Linux内核本身的测试，然而对于容器环境相关的测试则是几乎没有，因此lkp-extent工程会重点研发容器环境相关的测试case，用于打造一个更稳定的容器OS。\n  \n  1.3 实现\n  \u003elkp-extent使用以下第三方库：\n   ```\n  （1） 基于muduo  ：满足C10K并发要求，适合内网工具使用的非阻塞异步网络库\n  （2） 基于overlayfs：与原lkp项目解耦，容器挂载于overlayfs的merged目录\n  （3） 基于protobuf ：高性能消息序列化工具。\n   ```\n  \n  \u003elkp-extent目前提供以下能力：\n   ```\n  （1）对客户端的动态管理，命令下发，testcase分发，result回收。减轻测试运维压力。\n  （2）对lkp的容器扩展，在容器中执行测试，将result打包至宿主机目录内。\n   ```\n  \n  \u003elkp-extent目前存在以下不足：\n   ```\n  （1）缺少对运行lkp的docker的后台管理，后续可以考虑加入。\n  （2）缺少对docker特性的lkp测试用例，后续可以考虑加入。\n  （3）目前的docker镜像使用ubuntu制作。可以制作OpenCloudOS版本镜像用于测试，后续可以考虑加入其他docker镜像。\n  ```\n## 2. 安装方法\n  2.1 安装TencentOS或者OpenCloudOS镜像\n\n  2.2 安装编译需要的相关依赖\n  ```\n  $ yum install boost-devel cmake -y\n  ```\n  2.3 下载lkp-extent源码\n  ```\n  $ git clone https://github.com/OpenCloudOS/lkp-extent.git\n  $ cd lkp-extent\n  ```\n  \n  2.4 protobuf安装（使用protobuf 3.0.0离线压缩包，在etc目录下有安装包）\n  ```\n  $ cd etc\n  $ tar xvf protobuf-cpp-3.0.0.tar.gz\n  $ cd protobuf-3.0.0\n  $ ./configure --prefix=/usr/\n  $ make\n  $ make install\n  ```\n  \n  2.5 lkp-extent安装\n  \n  ```\n  $ cd ../..\n  $ ./build.sh     # 编译lkp-extent代码\n  \n  显示lkp-extent is ready!即可。\n  ```\n  \n  输入lkp-ctl可以看到lkp-extent的介绍则说明安装成功。\n \n## 3. 使用方法\n\n  \u003e**用之前需要在lkp-extent.config配置文件中修改IP、port等配置。**\n  \n  3.1 初始化，下载安装lkp项目，配置overlayfs并mount。\n  ```\n  lkp-ctl init\n  ```\n\n  3.2 开启服务，可选择为当前主机开启lkp-extent的client或者server服务\n  ```\n  lkp-ctl start server  \n  lkp-ctl start client\n  ```\n    \n  3.3 显示当前已经连接的节点数量与信息，只对server有效\n  ```\n  lkp-ctl list\n  ```\n    \n  3.4 控制节点执行lkp测试\n  ```\n  lkp-ctl run ebizzy                  #执行本机lkp测试  \n  lkp-ctl -a run ebizzy               #所有远程client节点执行ebizzy测试   \n  lkp-ctl -i 2 -c 5 dockertest        #2号节点开启5个容器执行dockertest测试（当前没有dockertest.yaml，使用ebizzy进行过容器测试）\n  ```\n  \n  3.5 向远端节点推送自定义testcase\n  ```\n  lkp-ctl -a push dockertest.yaml     #向所有远端节点广播推送  \n  lkp-ctl -i 0 push dockertest.yaml   #向0号节点推送dockertest.yaml，会添加到/lkp-tests/jobs中\n  ```\n    \n  3.6 从远端节点回收测试结果\n  ```\n  lkp-ctl -a result                   #向所有节点回收结果\n  lkp-ctl -i 0 result                 #向0号节点回收结果\n  ```\n    \n  3.7 命令远端节点更新\n  ```\n  lkp-ctl -a update                   #所有节点更新\n  lkp-ctl -i 11 update                #11号节点更新\n  ```\n    \n  3.8 关闭lkp-extent服务\n  ```\n  lkp-ctl stop\n  ```\n  \n  ## 4. 结语\n  \n  \u003elkp-extent是一个依赖于LKP测试套件的工程，因此lkp-extent工程里面关于容器测试case的写法和[LKP](https://github.com/intel/lkp-tests \"LKP\")的job写法相同([readme](https://github.com/intel/lkp-tests/blob/master/doc/add-testcase.md \"how to\"))。在使用过程中，lkp-extent会将自身的测试项overlay到[LKP](https://github.com/intel/lkp-tests \"LKP\")工程的jobs目录上，这样方便LKP工程进行统一管理。同样在之前提到的，拥有远程管理的基础上，lkp-ctl可以拥有通过配置文件，让多个host在指定时间，指定条件进行自动部署，自动测试和自动返回测试结果的功能。\n  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopencloudos%2Flkp-extent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopencloudos%2Flkp-extent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopencloudos%2Flkp-extent/lists"}