diff --git a/TC_Project.yml b/TC_Project.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7159efd963df02b46e6e4470c1ab0c14fda9bb7e
--- /dev/null
+++ b/TC_Project.yml
@@ -0,0 +1,54 @@
+projects:
+ - project_id: TC2024120201 # 项目id
+ repos:
+ - repo_name: anolis/cloud-kernel # 仓库
+ dir_or_files: # 仓库内文件或文件夹, 为空时表示所有目录
+ -
+ - repo_name: src-anolis-sig/cloud-kernel
+ dir_or_files:
+ -
+ - project_id: TC2024080201 # 知识库文档共建,项目 Sponsor:林生(阿里云),徐国振(浪潮信息)
+ repos:
+ - repo_name: https://gitee.com/anolis/anolis-kb # 仓库
+
+ - project_id: TC2024080205 # 龙蜥社区 AI 容器镜像商业参考实现建设,项目 Sponsor:宋凯(浪潮信息),王洪虎(龙芯),徐春梅(阿里云)
+ repos:
+ - repo_name: anolis/anolis-container
+
+ - project_id: TC2024080206 # 龙蜥社区 AI 容器组件 Pyhon Whl 软件仓建设,项目 Sponsor:宋凯(浪潮信息),王洪虎(龙芯),徐春梅(阿里云)
+ repos:
+ - repo_name: src-anolis-whl
+
+ - project_id: TC2024080202 # Anolis OS 7 YUM 源维护项目,项目 Sponsor:崔湛(统信),庞训磊(阿里云)
+ repos:
+ - repo_name: https://gitee.com/anolis/anolis7.9els # 仓库
+
+ - project_id: TC2024080204 # [安全漏洞机制共建] 共建安全漏洞管理机制,项目 Sponsor:张世乐(阿里云),徐国振(浪潮信息),谈虎(中兴通讯),崔湛(统信软件),贺春妮(中科方德),段廷银(中科曙光),史建才(北京红旗),安全委员会,Distro SIG,Cloud Kernel SIG
+ repos:
+ - repo_name: https://gitee.com/src-anolis-os # group组下所有仓库
+
+ - repo_name: https://gitee.com/src-anolis-sig
+
+ - project_id: TC2024110201 # [龙芯架构支持] 发行版龙芯处理器支持,项目 Sponsor:王洪虎(龙芯中科),高畅(阿里云),LoongArch SIG,Distro SIG,Cloud Kernel SIG
+ repos:
+ - repo_name: https://gitee.com/src-anolis-os # group组
+
+ - repo_name: https://gitee.com/src-anolis-sig
+
+ - project_id: TC2024110202 # [申威架构支持] 发行版申威处理器支持,项目 Sponsor:崔巍(电科申泰),韩笑(阿里云),申威架构 SIG,Distro SIG,Cloud Kernel SIG
+ repos:
+ - repo_name: https://gitee.com/src-anolis-os # group组
+
+ - repo_name: https://gitee.com/src-anolis-sig
+
+ - project_id: TC2024110203 # [GNR架构支持] 发行版 Intel 处理器支持,项目 Sponsor:李崇(英特尔),尚旭春(阿里云),Xuchun(SIG 管理员)Intel Arch SIG,Distro SIG,Cloud Kernel SIG
+ repos:
+ - repo_name: https://gitee.com/src-anolis-os # group组
+
+ - repo_name: https://gitee.com/src-anolis-sig
+
+ - project_id: TC2024120201 # [海光四号架构支持] 发行版海光处理器支持,项目 Sponsor:李伟(海光信息),易兴睿(阿里云),Hygon Arch SIG,Distro SIG,Cloud Kernel SIG
+ repos:
+ - repo_name: https://gitee.com/src-anolis-os # group组
+
+ - repo_name: https://gitee.com/src-anolis-sig
\ No newline at end of file
diff --git "a/sig/AI/content/Bugzilla\347\263\273\347\273\237/Bugzilla\347\224\250\346\210\267\346\226\207\346\241\243.md" "b/sig/AI/content/Bugzilla\347\263\273\347\273\237/Bugzilla\347\224\250\346\210\267\346\226\207\346\241\243.md"
index 6076d9eb8468e7775018769f6bd3bad92d5ca670..0533529798d6e61d7980fc234ec3095ca7094bcc 100644
--- "a/sig/AI/content/Bugzilla\347\263\273\347\273\237/Bugzilla\347\224\250\346\210\267\346\226\207\346\241\243.md"
+++ "b/sig/AI/content/Bugzilla\347\263\273\347\273\237/Bugzilla\347\224\250\346\210\267\346\226\207\346\241\243.md"
@@ -6,7 +6,7 @@ Bugzilla是一个缺陷管理系统,可以用来管理Bug,也可以用来管

## 二. Bug生命周期
-- **2.1 新建Bug**
+- **2.1 新建Bug**
- **2.1.1 路径**
首页->New/File a Bug->Select a classification->Select a product->Bug创建页面。具体如下:首先,在首页点击New或File a Bug按钮,进行创建Bug。
diff --git "a/sig/AI/content/\345\206\205\346\240\270\350\260\203\346\265\213/...Pstore\345\211\215\347\253\257DMESG_\344\273\243\347\240\201\345\210\206\346\236\220.md" "b/sig/AI/content/\345\206\205\346\240\270\350\260\203\346\265\213/...Pstore\345\211\215\347\253\257DMESG_\344\273\243\347\240\201\345\210\206\346\236\220.md"
index d00e1b42c34c3055a84dfdfe4e134dbab1df1f6d..8682851da2ed6e492c8fcc12c8ac2331a1712193 100644
--- "a/sig/AI/content/\345\206\205\346\240\270\350\260\203\346\265\213/...Pstore\345\211\215\347\253\257DMESG_\344\273\243\347\240\201\345\210\206\346\236\220.md"
+++ "b/sig/AI/content/\345\206\205\346\240\270\350\260\203\346\265\213/...Pstore\345\211\215\347\253\257DMESG_\344\273\243\347\240\201\345\210\206\346\236\220.md"
@@ -203,7 +203,8 @@ pstore dmesg主要工作流程如下:
(5)调用后端的写函数,将record写入相应的后端设备
-
+加点内容
+算22332
diff --git "a/sig/AI/content/\345\206\205\346\240\270\350\260\203\346\265\213/Pstore\345\211\215\347\253\257\357\274\232DMESG_\344\273\243\347\240\201\345\210\206\346\236\220.md" "b/sig/AI/content/\345\206\205\346\240\270\350\260\203\346\265\213/Pstore\345\211\215\347\253\257\357\274\232DMESG_\344\273\243\347\240\201\345\210\206\346\236\220.md"
index d00e1b42c34c3055a84dfdfe4e134dbab1df1f6d..d5f3a1ba76f702e35bea6cc937f08a58227bc95d 100644
--- "a/sig/AI/content/\345\206\205\346\240\270\350\260\203\346\265\213/Pstore\345\211\215\347\253\257\357\274\232DMESG_\344\273\243\347\240\201\345\210\206\346\236\220.md"
+++ "b/sig/AI/content/\345\206\205\346\240\270\350\260\203\346\265\213/Pstore\345\211\215\347\253\257\357\274\232DMESG_\344\273\243\347\240\201\345\210\206\346\236\220.md"
@@ -202,6 +202,8 @@ pstore dmesg主要工作流程如下:
(5)调用后端的写函数,将record写入相应的后端设备
+wwqwq
+
diff --git "a/sig/AI/content/\346\234\210\346\212\245/202212.md" "b/sig/AI/content/\346\234\210\346\212\245/202212.md"
index 88250c901b0988fd3ca405387b290d62c3ad6602..5ace9b5cdb18d6179cf6200f9b7b4cb5d6a49112 100644
--- "a/sig/AI/content/\346\234\210\346\212\245/202212.md"
+++ "b/sig/AI/content/\346\234\210\346\212\245/202212.md"
@@ -80,3 +80,6 @@
# 运营活动
- [浪潮信息正式发布基于龙蜥 Anolis OS 的服务器操作系统 Inspur KOS](https://openanolis.cn/news/726244284765327879)。
- 于2022.12.24 举办了“[龙蜥走进系列活动之走进浪潮信息 MeetUp](https://mp.weixin.qq.com/s?__biz=Mzg4MTMyMTUwMQ==&mid=2247510368&idx=1&sn=95a1d511b32670f8388745682483046a&chksm=cf655a12f812d30494be938d7bf8a46b7244711c8fb75f44e8379ab261b1fd4aeb1c8bb0805e&scene=21#wechat_redirect)",并成立了浪潮信息龙蜥联合实验室,致力于共建龙蜥社区的软硬件兼容性生态、标准建设和技术创新等。
+
+
+TC2024080403
\ No newline at end of file
diff --git "a/sig/AI/content/\346\234\210\346\212\245/2022121.md" "b/sig/AI/content/\346\234\210\346\212\245/2022121.md"
index 9ad98f224496529eddaf50dc615ca397325f8c89..9718d343b780e08f1638b51b2b4574014e947b74 100644
--- "a/sig/AI/content/\346\234\210\346\212\245/2022121.md"
+++ "b/sig/AI/content/\346\234\210\346\212\245/2022121.md"
@@ -1 +1 @@
-xcvxcvxcvxcbcvvb
\ No newline at end of file
+xcvxcvxcvxcbcvvbasdfsda
\ No newline at end of file
diff --git "a/sig/AI/content/\346\234\210\346\212\245/202301.md" "b/sig/AI/content/\346\234\210\346\212\245/202301.md"
index 85bbb428461066b1774f93d5ede99390bf2bc702..154fa40ad1d79cabc278e4bf3dcbffdfb9c87047 100644
--- "a/sig/AI/content/\346\234\210\346\212\245/202301.md"
+++ "b/sig/AI/content/\346\234\210\346\212\245/202301.md"
@@ -1,5 +1,12 @@
# 整体进展
+
+
+修改文件20202202-102-1201-1210201-1-
+
+
+
+
- 发布 ANCK 5.10-013 版本。
- 确定KABI机制整体方案。
- 浪潮信息龙蜥联合实验室的工作事项更新。
diff --git "a/sig/AI/content/\346\234\210\346\212\245/\346\234\210\346\212\245\350\257\264\346\230\216.md" "b/sig/AI/content/\346\234\210\346\212\245/\346\234\210\346\212\245\350\257\264\346\230\216.md"
index 30020428d41c0b35e0eb225c6a3b4a4a06f385a6..4882c4cd488bdd8646accb120e61f294e957c864 100644
--- "a/sig/AI/content/\346\234\210\346\212\245/\346\234\210\346\212\245\350\257\264\346\230\216.md"
+++ "b/sig/AI/content/\346\234\210\346\212\245/\346\234\210\346\212\245\350\257\264\346\230\216.md"
@@ -5,3 +5,13 @@
+ 具体进展:SIG 该月项目的详细进展,分别展开细节。
+ 重要议题: SIG 该月讨论的重要议题。
+ 运营活动: SIG 该月发生的运营活动。
+
+
+66666666666666666666666666666666666666666666666
+
+
+04444433333333333333333333333333333333--
+
+
+ 不写项目编码
+ ------------------------
\ No newline at end of file
diff --git "a/sig/AI/content/\351\276\231\350\234\245\345\256\236\351\252\214\345\256\244/\351\276\231\350\234\245\345\256\236\351\252\214\345\256\244\350\257\276\347\250\213\346\216\245\345\205\245\346\214\207\345\257\274.md" "b/sig/AI/content/\351\276\231\350\234\245\345\256\236\351\252\214\345\256\244/\351\276\231\350\234\245\345\256\236\351\252\214\345\256\244\350\257\276\347\250\213\346\216\245\345\205\245\346\214\207\345\257\274.md"
index 757eaada8906bad388c372d11dcd3402fedfad3a..d13161ade3d8431eaeddc633ac4bdedc72a2e099 100644
--- "a/sig/AI/content/\351\276\231\350\234\245\345\256\236\351\252\214\345\256\244/\351\276\231\350\234\245\345\256\236\351\252\214\345\256\244\350\257\276\347\250\213\346\216\245\345\205\245\346\214\207\345\257\274.md"
+++ "b/sig/AI/content/\351\276\231\350\234\245\345\256\236\351\252\214\345\256\244/\351\276\231\350\234\245\345\256\236\351\252\214\345\256\244\350\257\276\347\250\213\346\216\245\345\205\245\346\214\207\345\257\274.md"
@@ -33,3 +33,6 @@
六、提交审核之后等待管理员审核,管理员审核通过之后在实验室课程中心就能看到了

以上就是龙蜥实验室创作中心创作课程的完整过程,如使用过程中有问题,欢迎联系[基础设施 SIG 组](https://openanolis.cn/sig/SIG-Infra)。
+
+
+加点内容
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/a.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/a.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/a.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/acbsds.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/acbsds.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/acbsds.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/dvdvdv.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/dvdvdv.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/dvdvdv.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test000/a.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/a.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/a.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test000/aA.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/aA.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/aA.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test000/aaa.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/aaa.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/aaa.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/abc.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/abc.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/abc.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/gddgdfd\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2432.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/gddgdfd\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2432.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/gddgdfd\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2432.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2431.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2431.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2431.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2432.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2432.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2432.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2250/a.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2250/a.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2250/a.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2250/c.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2250/c.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test000/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2250/c.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/aaa.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/aaa.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/aaa.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/abc.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/abc.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/abc.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/abcd/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252\346\226\207\346\241\243.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/abcd/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252\346\226\207\346\241\243.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/abcd/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252\346\226\207\346\241\243.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/abcd/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252\346\226\207\346\241\24302.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/abcd/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252\346\226\207\346\241\24302.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/abcd/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252\346\226\207\346\241\24302.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/eeeeeee.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/eeeeeee.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/eeeeeee.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\243.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\243.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\243.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2431.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2431.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2431.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2432.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2432.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2432.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2433.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2433.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2433.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2434.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2434.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2434.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2435.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2435.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2435.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2436.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2436.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2436.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2437.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2437.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2437.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2438.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2438.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2438.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252\346\226\207\346\241\243.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252\346\226\207\346\241\243.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252\346\226\207\346\241\243.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252\346\226\207\346\241\24302.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252\346\226\207\346\241\24302.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2252\346\226\207\346\241\24302.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2253/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2253\346\226\207\346\241\243.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2253/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2253\346\226\207\346\241\243.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2253/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2253\346\226\207\346\241\243.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2253/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2253\346\226\207\346\241\24302.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2253/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2253\346\226\207\346\241\24302.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2253/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2253\346\226\207\346\241\24302.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\225.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\225.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\225.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\22510.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\22510.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\22510.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2252.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2252.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2252.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2254.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2254.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2254.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2255.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2255.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2255.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2256.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2256.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2256.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2257.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2257.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2257.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2258.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2258.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2258.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2259.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2259.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test001/\346\200\247\350\203\275\346\265\213\350\257\2259.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test002/a.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/a.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/a.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test002/aA.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/aA.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/aA.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test002/aaa.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/aaa.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/aaa.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test002/abc.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/abc.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/abc.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test002/tttfsdfsdf.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/tttfsdfsdf.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/tttfsdfsdf.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/abc.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/abc.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/abc.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/gddgdfd\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2432.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/gddgdfd\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2432.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/gddgdfd\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2432.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\243.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\243.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\243.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2430.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2430.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2430.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2431.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2431.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2431.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2432.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2432.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\344\272\214\347\272\247\347\233\256\345\275\225\346\226\207\346\241\2432.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\347\233\256\345\275\225\346\226\207\346\241\243.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\347\233\256\345\275\225\346\226\207\346\241\243.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\225/\347\233\256\345\275\225\346\226\207\346\241\243.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2250/a.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2250/a.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2250/a.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2250/c.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2250/c.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec8e22ac006bf2e176d9e7f7890c4f2de8420eaf
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/test002/\344\272\214\347\272\247\347\233\256\345\275\225\346\265\213\350\257\2250/c.md"
@@ -0,0 +1,205 @@
+# 背景
+代码大页特性将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,以此减低整个系统中TLB entry的资源竞争。对于MySQL、JAVA等应用,能显著减少iTLB miss,提升E2E性能。下面会采用hugetext来代表代码大页。
+
+
+我们在本地基准测试以及业务真实压力测试都验证了hugetext性能效果。对于数据库类业务(例如 MySQL),x86物理机/虚拟机上hugetext提升性能2\~4%,ARM物理机/虚拟机上hugetext提升性能6\~10%;
+
+
+本文档主要用于展示**透明代码大页**使用、mysql相关测试数据,平台涉及x86和arm物理机。最后将代码大页、THP以及4k在mysql上进行性能对比。
+
+作者:王荣巍(雨庭) 徐宇(弃余) 邓刚(据德)
+
+# hugetext使用
+
+## 使用开关
+
+- 启动参数
+
+打开:hugetext=1 or 2 or 3
+关闭:缺省即为关闭
+
+
+
+- sysfs接口
+
+仅打开二进制和动态库大页:echo 1 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+仅打开可执行匿名大页:echo 2 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+打开以上两类大页:echo 3 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+关闭:echo 0 > /sys/kernel/mm/transparent\_hugepage/hugetext\_enabled
+
+
+## 回退
+在打开hugetext\_enabled后,若关闭hugetext\_enabled并且完全消除hugetext\_enabled影响,可以下面几种方式:
+
+- 清理整个系统的page cache:echo 3 > /proc/sys/vm/drop\_caches
+- 清理单个文件的page cache:vmtouch -e /\/target
+
+
+
+## 注意事项
+打开、关闭并不意味着立即合并、拆散大页,hugetext是异步的。
+如果一段代码曾经被整理成大页,即使关闭hugetext功能,还是会大页映射。
+
+
+在测试性能时,为了消除这些影响,可以通过 `echo 3 > /proc/sys/vm/drop\_caches` 来回收整理的大页,以保证下次是普通页映射。
+
+
+想确认代码段是否大页映射,可以通过 `grep FilePmdMapped /proc/$(pidof mysqld)/smaps` 来确认。
+
+# mysql测试准备
+
+创建用户以及修改密码:
+```c
+mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
+```
+
+
+创建数据库:
+```
+CREATE DATABASE hugepages;
+show databases;
+```
+所创建的数据库hugepages需要与下面的步骤保持一直。
+
+
+开始为创建的数据库准备数据,执行以下命令(**进行该步骤前需要安装sysbench**):
+```
+sysbench --test=/usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-size=100000 --report-interval=2 prepare
+```
+其中,prepare表示准备数据,在的sbtest库生成测试数据,
+创建200张表,每张表10万条数据,每2秒显示一次报告。
+
+# 代码大页 - mysql数据库测试
+
+下面是代码大页的测试数据。
+
+## arm平台mysql性能测试
+
+测试说明:
+测试过程中需要对mysqld进行**绑核**,并显示指定内存分配节点为local node。
+
+
+测试命令:
+sysbench /usr/local/share/sysbench/tests/include/oltp\_legacy/oltp.lua --mysql-db=hugepages --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123 --oltp-test-mode=complex --time=300 --threads=1 --report-interval=5 run
+
+
+
+测试过程中,mysql并发数分别是1、8(25%)、16(50%)、32(100%)。测试结果与普通的4K代码页数据对比如下:
+
+
+
+**图1:arm平台mysql TPS测试数据对比**
+
+
+上图TPS对比可以看出:代码大页的性能始终高于普通的代码页。关于这张图中其他的结论,还有:
+
+- 并发数为1时,外在的影响因素最小,此时,代码大页相比普通代码页,性能提升大约在6.9%;
+- 并发数8、16基本可以保证没有cpu的竞争,代码大页的性能提升大约也在6.5%以上;
+- 并发数32时,由于总核数为32,存在于其他应用竞争cpu,所以TPS较低于前面的测试结果。但是代码大页的鲁棒性更好,此时相比普通代码页,性能提升大约在11%左右;
+
+另外,还有RT的对比,如下图:
+
+
+
+**图2:arm平台mysql RT数据对比**
+
+
+RT的数据主要是前95%的请求的最大响应时间(**95th percentile**)。代码大页在RT上的表现与图1一致,大约提升在5.7%~11.4%之间。
+
+## x86平台mysql性能测试
+
+测试方法以及测试数据与arm平台一致。
+
+该测试主要在Intel(R) Xeon(R) Platinum 8163平台下完成。
+
+TPS、RT对比图如下:
+
+
+
+**图3(a、b)为TPS、RT对比图**
+
+
+由于TLB硬件的差异,代码大页在x86和arm上性能提升存在差异,根据图6(a、b)中的测试数据,代码大页在x86上,对TPS的提升大致在3%-5之间,在RT上大致有5%-7.5%的收益。
+
+
+除intel Xeon平台,在海光的机器上对mysql数据库+代码大页进行了性能测试。
+
+
+
+**图4 海光平台测试数据。图左为并发数为1的测试(上为普通,下为开启hugetext),图右为并发数为4的测试数据**
+
+
+上图代码大页性能结论为:单核提升6.5%,4并发数提升3.9%;
+
+## 微架构测试数据
+
+除前面展示的mysql数据库中的TPS和RT数据,我们也记录了在测试过程中iTLB miss,以及换算后的iTLB MPKI数据。
+x86和arm平台的数据如下:
+
+
+x86平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图5 x86平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- 从iTLB miss的数据看,代码大页相比4k代码页大约下降了1.5-2.3倍左右;
+- 从iTLB MPKI的数据看,代码大页相比4k代码页大约下降了1.6-2.3倍之间,与iTLB miss效果相似;
+
+测试iTLB MPKI使用的工具可以从下面的链接获取:
+https://github.com/intel/iodlr
+
+arm平台下的iTLB miss和iTLB MPKI数据:
+
+
+
+**图6 arm平台使用代码大页前后iTLB miss和iTLB MPKI数据对比图**
+
+
+上图数据显示:
+
+- mysql使用代码大页后,iTLB miss大约下降了10倍左右,数值大小从原来的1%下降到0.08%左右;
+- 在iTLB MPKI上,大约下降了6倍左右;
+
+**此外,可以看出在使用代码大页后,性能提升存在平台差异。图6和图7的iTLB miss差异主要是x86和arm的TLB entry差异。**
+
+## 代码大页 vs THP和4k
+
+这里将代码大页和目前比较熟知的THP进行对比,对比中将4k测试数据作为baseline。
+
+对比数据主要包括mysql单线程、4线程和8线程测试。数据如下:
+
+**图7 arm虚拟机中代码大页、THP和4k baseline数据对比**
+
+
+在图7中最后一列为性能与4k base相比提升的百分比,如代码大页和THP在单线程测试中,相比4k页,性能提升分别是12.7%和4.47%(本数据为虚拟机下测试数据,数值大小不能代表物理机下测试数据)。
+
+
+根据图7,可以大致得出以下结论:
+**代码大页的性能以及稳定性远优于anon THP;其性能存在以下规律:**
+**收益:代码大页 > anon THP > 4k**
+
+# 代码大页 - 达梦数据库测试
+
+达梦数据库安装测试文档:https://openanolis.cn/sig/third\_software\_compatibility/doc/390232652013568029
+
+下图为在x86 skylake平台上,关闭THP,分别设置hugetext=0,1或者2对达梦数据库进行测试:
+
+
+**图8 代码大页+达梦数据库性能测试对比**
+
+
+根据图中的数据,大致可以得出以下结论:
+
+(1)在x86 skylake平台上,当磁盘I/O利用率峰值在94%左右时,hugetext对于达梦数据库的提升大约在3.86%左右(如图最后一行数据显示);
+
+(2)当磁盘I/O成为瓶颈,利用率100%,代码大页无法提升性能;
+
+
+
+
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/ToneAgent\347\274\226\350\257\221\346\211\223\345\214\205\346\211\213\345\206\214.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/ToneAgent\347\274\226\350\257\221\346\211\223\345\214\205\346\211\213\345\206\214.md"
new file mode 100644
index 0000000000000000000000000000000000000000..0949b8e70e5300f1cf752ca0259c1d30317b932b
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/ToneAgent\347\274\226\350\257\221\346\211\223\345\214\205\346\211\213\345\206\214.md"
@@ -0,0 +1,63 @@
+# 1. ToneAgent编译
+
+## 1.1 环境准备
+Go 1.17 及以上版本([下载地址](https://go.dev/dl/))
+
+## 1.2 下载ToneAgent
+ git clone git@gitee.com:anolis/tone-agent.git
+ cd tone-agent
+
+## 1.3 编译
+`-o` 后面是二进制的名称
+
+### 1.3.1 编译 AMD64的二进制
+ GOOS=linux GOARCH=amd64 go build -o toneagent-amd64-v102
+
+### 1.3.2 编译 ARM 的二进制
+ GOOS=linux GOARCH=arm64 go build -o toneagent-amd64-v102
+
+# 2. Linux环境二进制打包
+
+## 2.1 RPM包制作
+
+### 2.1.1 RPM环境准备
+ sudo su -c bash # 使用bash
+ yum install rpmdevtools rpmdevtools # 安装rpm打包工具
+
+### 2.1.2 打包RPM包
+ rpmdev-setuptree # 创建目录,会在用户目录下创建rpmbuild文件夹 ~/rpmbuild
+ cd # 返回用户目录
+ vi rpmbuild/SPEC/toneagent.spec # 修改创建spec的模板文件
+ mkdir rpmbuild/BUILDROOT/toneagent-0.0.1-AMD
+ cp ${二进制路径} rpmbuild/BUILDROOT/toneagent-0.0.1-AMD/ # 拷贝二进制到RPM目录
+ cd rpmbuild/SPEC/
+ rpmbuild -bb toneagent.spec # 构建rpm包
+
+### 2.1.3 RPM安装及启动
+ sudo yum -y install ${toneagent包位置} # 安装
+ sudo systemctl start toneagent # 启动
+
+## 2.2 DEB包制作
+
+### 2.1.1 环境准备
+ sudo apt instsll -y dpkg # 使用二进制打包,只需要安装这个包
+ sudo apt install -y dpkg build-essential devscripts quilt dh-make git # 扩展安装
+
+### 2.1.2 打包DEB包
+ mkdir toneagent.work
+ cd toneagent.work
+ mkdir -pv toneagent_0.0.1_amd64/{DEBIAN,bin}
+ cp ${tone-agent二进制} toneagent_0.0.1_amd64/bin/
+ echo "Package: toneagent
+ Version: 1.0
+ Architecture: arm
+ Maintainer: alibaba
+ Installed-Size: 100
+ Depends:
+ Priority: optional
+ Description: toneagent for SUNXI devices (A10,A20 ...),example is Cubieboard.
+ " >> toneagent_0.0.1_amd64/DEBIAN/control
+ dpkg -b toneagent_0.0.1_amd64 toneagent_0.0.1_amd64.deb
+
+### 2.1.3 DEB安装
+ dpkg -i toneagent_0.0.1_amd64.deb
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/aest.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/aest.md"
new file mode 100644
index 0000000000000000000000000000000000000000..9dca95d406a94bcd351308487dead32fe19c01a1
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/aest.md"
@@ -0,0 +1,16 @@
+HCT密码计算套件的目录结构如下:
+阿斯顿法师打发斯蒂芬
+44444444444444444444444444444444444444444444444444444
+hygon-devkit/
+
+ ├─ hct
+ ├──pkg
+ │ ├── hct_1.0.0.20230224_rc
+ │ ├── hct_1.0.1.20230512_rc
+ │ └── hct_1.1.0.20230730_rc
+ │
+ └── README.md
+
+\* pkg目录:内含各版本hct密码计算套件。
+
+\* README.md文件:有关HCT的简单情况。
\ No newline at end of file
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/test.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/test.md"
new file mode 100644
index 0000000000000000000000000000000000000000..9dca95d406a94bcd351308487dead32fe19c01a1
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/test.md"
@@ -0,0 +1,16 @@
+HCT密码计算套件的目录结构如下:
+阿斯顿法师打发斯蒂芬
+44444444444444444444444444444444444444444444444444444
+hygon-devkit/
+
+ ├─ hct
+ ├──pkg
+ │ ├── hct_1.0.0.20230224_rc
+ │ ├── hct_1.0.1.20230512_rc
+ │ └── hct_1.1.0.20230730_rc
+ │
+ └── README.md
+
+\* pkg目录:内含各版本hct密码计算套件。
+
+\* README.md文件:有关HCT的简单情况。
\ No newline at end of file
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/test2.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/test2.md"
new file mode 100644
index 0000000000000000000000000000000000000000..9dca95d406a94bcd351308487dead32fe19c01a1
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/test2.md"
@@ -0,0 +1,16 @@
+HCT密码计算套件的目录结构如下:
+阿斯顿法师打发斯蒂芬
+44444444444444444444444444444444444444444444444444444
+hygon-devkit/
+
+ ├─ hct
+ ├──pkg
+ │ ├── hct_1.0.0.20230224_rc
+ │ ├── hct_1.0.1.20230512_rc
+ │ └── hct_1.1.0.20230730_rc
+ │
+ └── README.md
+
+\* pkg目录:内含各版本hct密码计算套件。
+
+\* README.md文件:有关HCT的简单情况。
\ No newline at end of file
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/\345\257\271\345\244\226\346\234\215\345\212\241API.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/\345\257\271\345\244\226\346\234\215\345\212\241API.md"
new file mode 100644
index 0000000000000000000000000000000000000000..6be2fe13cbb6e50e1bf41c425b239231eda209e8
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/\345\257\271\345\244\226\346\234\215\345\212\241API.md"
@@ -0,0 +1 @@
+参考文档:https://tone.openanolis.cn/help_doc/7
\ No newline at end of file
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/\346\265\213\350\257\225\345\245\227\344\273\266\351\233\206\346\210\220\346\211\213\345\206\214.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/\346\265\213\350\257\225\345\245\227\344\273\266\351\233\206\346\210\220\346\211\213\345\206\214.md"
new file mode 100644
index 0000000000000000000000000000000000000000..67b07c6d8e8470eef075cf75048ba3f4036edeaa
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\345\274\200\345\217\221\346\211\213\345\206\214/\346\265\213\350\257\225\345\245\227\344\273\266\351\233\206\346\210\220\346\211\213\345\206\214.md"
@@ -0,0 +1,282 @@
+# tone-cli介绍
+tone-cli主要用于测试套件(testsuite)的调度及运行。
+
+# 代码仓库
+https://gitee.com/anolis/tone-cli
+
+# 测试套件构成
+测试套件主要由套件本身和集成脚本构成,其中:
+
+- 测试套件可以存放于gitee或其他代码仓库,也可以是一个系统中已经包含的命令
+- 集成脚本由两部分构成:
+ - 适配脚本
+ - 测试套配置文件
+
+# 测试套件集成
+
+## 测试配置文件
+测试配置文件位于`$TONE_ROOT/conf`目录下,与适配脚本一起为测试套件服务。
+
+为了便于组织,当前根据测试类别分为`functional`,`performance`和`stress`。
+
+测试配置文件主要用于描述测试的参数,以netperf为例:
+
+ test IP runtime send_size
+ TCP_RR ipv4 60s Na
+ TCP_RR ipv4 60s 16K
+ TCP_CC ipv4 60s Na
+ TCP_CRR ipv4 60s Na
+ ...
+
+第一行描述为变量名,后续行描述的是变量的值。tone-cli会将测试套配置文件按照配置进行执行:
+
+ $ tone list netperf
+ test IP runtime send_size testconf
+ TCP_RR ipv4 60 None netperf:test=TCP_RR,IP=ipv4,runtime=60s
+ TCP_RR ipv4 60 16K netperf:test=TCP_RR,IP=ipv4,runtime=60s,send_size=16K
+ TCP_CC ipv4 60 None netperf:test=TCP_CC,IP=ipv4,runtime=60s
+ TCP_CRR ipv4 60 None netperf:test=TCP_CRR,IP=ipv4,runtime=60s
+在后续的脚本中,conf中的变量会以参数形式传递给适配脚本。
+
+> 注:
+>
+> - 没有任何变量的测试套,仍然需要创建对应名称的配置文件,保持内容为空
+> - 对于某个参数,如netperf的send_size,在某些状况下不需要传入参数,则可以置为NA
+
+## 适配脚本
+
+测试套件适配脚本需要存放于`$TONE_ROOT/tests`目录下,创建工具对应的目录,如`$TONE_ROOT/tests/netperf`。
+
+tone-cli将测试定义为以下几个阶段,可以根据需要来决定是否需要对应的阶段:
+
+- 测试套件获取
+- 测试套件编译安装
+- 测试执行
+- 结果处理
+- 测试套件卸载
+
+适配脚本需要最少包含`install.sh`,`run.sh`和`README.md`,其中:
+
+- install.sh: 定义测试套件获取、依赖包、测试套件编译及安装
+- run.sh: 定义测试执行过程,结果处理方式
+- README.md: 测试套件必要说明
+
+其他脚本可以根据需要决定,如:将结果处理脚本单独编写,在run.sh中加以引用
+
+### 测试套件获取
+
+当前支持通过URL下载或git方式获取对应的测试套:
+
+| 方式| 参数 | 说明 |举例 |
+| :--:| :---: | :---: |:---: |
+|URL下载 |WEB_URL |测试套下载地址 |WEB_URL=“https://gitee.com/anolis/tone-cli/repository/archive/master.zip”|
+|GIT仓库 |GIT_URL |git仓库地址 |GIT_URL="https://gitee.com/mirrors_HewlettPackard/netperf.git"|
+| |BRANCH |git分支| BRANCH="netperf-2.7.0"|
+
+tone-cli将根据提供的`WEB_URL`,`GIT_URL`,`BRANCH`等信息拉取对应的源代码
+
+### 举例:
+
+`netperf/install.sh`
+
+ GIT_URL="https://gitee.com/mirrors_HewlettPackard/netperf.git"
+ BRANCH="netperf-2.7.0"
+
+### 测试套件编译安装
+
+tone-cli提供的标准安装方式由以下几步:
+
+- 执行安装前额外的操作:extract_src
+- 安装依赖包:install_pkg
+- 编译:build
+- 安装:install
+
+**extract_src**
+
+用于在安装依赖包之前进行必要的准备,如centos安装epel源:
+
+ extract_src()
+ {
+ logger yum install -y epel-release
+ }
+
+**install_pkg**
+
+绝大部分状况下,不需要重写install_pkg的方法,而仅通过设置DEP_PKG_LIST的变量,tone-cli将自动进行依赖包安装。如netperf/install.sh:
+
+ DEP_PKG_LIST="automake gcc texinfo"
+
+**build和install**
+
+通常状况,build和install都需要根据测试套件进行重写。以netperf为例:
+
+ build()
+ {
+ local configure_flags=(
+ --prefix="$TONE_BM_RUN_DIR"
+ )
+ if [ "$(/usr/bin/arch)" = aarch64 ]; then
+ configure_flags+=('--build=aarch64-unknown-linux-gnu')
+ fi
+
+ export CFLAGS="-fno-strict-aliasing -fcommon"
+
+ ./autogen.sh
+ ./configure "${configure_flags[@]}"
+ make
+ }
+
+ install()
+ {
+ make install-exec
+ }
+### 测试执行
+
+测试执行被定义在`run.sh`中,主要的步骤有:
+
+- 测试准备:setup
+- 测试执行:run
+- 测试拆除:teardown
+
+以netperf为例,netperf测试可以划分为:
+
+- 启动netserver
+- 使用netperf命令进行测试
+- 拆除netserver
+
+**setup**
+
+netperf测试中,netserver启动主要逻辑为:
+
+- 判断是否设置了$SERVER,如果已设置,则认为netserver将在对应的server上执行
+- 启动netserver,启动netserver的主要逻辑在netserver.sh中体现
+
+ setup()
+ {
+ [ -n "$SERVER" ] && server=${SERVER%% *} || server=localhost
+ echo "Run netserver on host: $server"
+
+ if [ "$server" = localhost ]; then
+ source "$TONE_BM_SUITE_DIR"/netserver.sh
+ else
+ ssh $server "TONE_ROOT=$TONE_ROOT TONE_BM_RUN_DIR=$TONE_BM_RUN_DIR IP=$IP server=$server $TONE_BM_SUITE_DIR/netserver.sh"
+ fi
+ }
+
+**run**
+
+netperf测试套的执行逻辑,主要根据测试套件配置中的参数组合,设置netperf命令行参数以执行测试
+
+> 注:
+>
+> 在执行命令时,使用logger方法将netperf命令行输出写入对应的日志文件中,以备后续进行结果处理
+
+ run()
+ {
+ export PATH="$TONE_BM_RUN_DIR"/bin:$PATH
+
+ [ -n "$send_size" ] && test_options="-- -m $send_size"
+
+ opt_ip=
+ [ "$IP" = 'ipv4' ] && opt_ip='-4'
+ [ "$IP" = 'ipv6' ] && opt_ip='-6'
+ base_cmd="netperf $opt_ip -t $test -c -C -l $runtime -H $server $test_options"
+
+ # check online cpus with cpu_affinity set on multi-processor machine
+ if [ "$server" = localhost ] && [ "$(nproc)" -gt 1 ]; then
+ check_oneline_cpu
+ # the last cpu is reservered for netserver if test on single node
+ cpu_online_num=$((cpu_online_num - 1))
+ cpu_online_tpy=$(echo "$cpu_online_tpy" | awk '{$NF=""; print $0}')
+ cpu_x=$((1 % cpu_online_num))
+ [ "$cpu_x" -eq 0 ] && cpu_x=$cpu_online_num
+ mycpu=$(echo "$cpu_online_tpy" | awk -v n=$cpu_x '{print $n}')
+ test_cmd="taskset -c $(echo "$mycpu" | cut -d- -f3) $base_cmd"
+ echo "run netperf on cpu: $(echo "$mycpu" | cut -d- -f3),"\
+ "socket: $(echo "$mycpu" | cut -d- -f1),"\
+ "core_id: $(echo "$mycpu" | cut -d- -f2)"
+ else
+ test_cmd="$base_cmd"
+ fi
+
+ logger $test_cmd &
+ logger wait
+ }
+
+**teardown**
+
+netperf的teardown阶段,主要通过执行pkill命令杀死netserver进程
+
+ teardown()
+ {
+ pkill netserver
+ }
+
+**结果处理**
+tone-cli当前规定的结果规范为`key: value`,所以只要符合这个输出规范,对应的结果会被收集并存储。
+
+以netperf为例,其结果处理的`parse()`调用了一个awk脚本:
+
+ #!/usr/bin/awk -f
+
+ /^Size.*Okay.*Throughput.*Demand$/ {
+ unit = "Mbps1"
+ next
+ }
+
+ /^Size.*Throughput.*remote$/ {
+ unit = "Mbps2"
+ next
+ }
+
+ /^bytes.*secs.\s+per sec/ {
+ unit = "tps"
+ next
+ }
+
+ $8 && $0 ~ /^[ \t0-9.]+$/ {
+ if ( unit == "Mbps1" ) {
+ printf("Throughput_Mbps: %s\n",$(NF-2))
+ }
+ else if ( unit == "Mbps2" ) {
+ printf("Throughput_Mbps: %s\n",$5)
+ }
+ else{
+ printf("Throughput_%s: %s\n",unit,$6)
+ }
+ }
+
+执行完毕后会输出:
+
+ Throughput_tps: 91336.30
+
+# 公共变量
+tone-cli提供了多个公共变量用于在测试集成时使用
+
+## 测试套配置文件
+
+|变量名称| 用途| 举例|
+|:--:|:--:|:--:|
+|nr_task |设置使用的线程数,可以使用百分比形式表示,当设置为百分比时,框架会根据当前测试机CPU数量进行计算 |nr_task=1, nr_task=50%|
+|cpu_affinity |设置CPU绑定| cpupin|
+
+## 测试套适配脚本
+
+|变量名称| 用途| 举例|
+|:--:|:--:|:--:|
+|$TONE_BM_CACHE_DIR |测试套件cache目录| /tmp/tone/cache/netperf|
+|$TONE_BM_BUILD_DIR| 测试套件build目录| /tmp/tone/build/netperf|
+|$TONE_BM_RUN_DIR |测试套件run目录,可以将测试套件安装于该目录中,而不用安装到系统目录下| /tmp/tone/run/netperf|
+|$TONE_BM_RESULT_DIR |测试套件结果存放目录 |/tmp/tone/result/netperf|
+|$TONE_CURRENT_RESULT_DIR |当次运行时的结果存放目录| /tmp/tone/result/netperf/1|
+|$TONE_BM_SUITE_DIR |测试套件脚本目录| /tmp/tone/tests/netperf|
+
+# 公共函数
+
+tone-cli提供一些公共函数已方便脚本编写,公共函数主要归档于$TONE_ROOT/lib目录下,在编写脚本时可以按需引入。常用的函数有:
+
+|函数名| 文件 |用途 |举例|
+|:--:|:--:|:--:|:--:|
+|logger |lib/common.sh |记录日志 |logger netperf -t TCP_RR|
+|set_cpu_affinity_server |lib/cpu_affinity.sh |设置服务端CPU绑核,会将server绑定在最后一个CPU核上,注意,需要通过server_cmd变量进行传递 |server_cmd="netserver" [ -n "$cpu_affinity" ] && set_cpu_affinity_client logger ${server_cmd}|
+|set_cpu_affinity_client |lib/cpu_affinity.sh| 设置客户端CPU绑核,会将client绑定在第一个CPU核上,注意,需要通过client_cmd进行传递 |client_cmd="netperf -t TCP_RR" [ -n "$cpu_affinity" ] && set_cpu_affinity_client logger ${client_cmd}|
\ No newline at end of file
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/000000000130_anolis.jpg" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/000000000130_anolis.jpg"
new file mode 100644
index 0000000000000000000000000000000000000000..25e606c9c5d28fccaf9f6caa351e3720570e4162
Binary files /dev/null and "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/000000000130_anolis.jpg" differ
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/T-One\346\246\202\350\277\260.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/T-One\346\246\202\350\277\260.md"
new file mode 100644
index 0000000000000000000000000000000000000000..74f3dbc4638e7e414a44eba81a927b219691bc3a
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/T-One\346\246\202\350\277\260.md"
@@ -0,0 +1,30 @@
+### T- One是什么
+ T-One是一站式的自动化质量协作平台;打通了测试计划、测试准备、测试执行、测试分析、测试报告、覆盖率检测、智能Bisect,环境服务等流程的闭环,为社区研发提供一站式质量服务。
+
+
+### 平台架构
+
+
+### 核心特点
+- 一站式质量平台:平台打通了测试准备、测试执行、测试分析、测试计划、测试报告、覆盖率检测、智能Bisect、智能巡检等流程全闭环,为社区研发提供一站式测试支撑。
+ - 支持多CPU混合架构(x86、arm、loogarch、risc-v)
+ - 支持多操作系统类型(龙蜥OS、centos、debian等)
+ - 支持复杂环境测试(企业内网、独立隔离、弹性云虚拟机/容器、应用集群及多种混合环境)
+
+- 质量协作能力:通过分布式的业务架构和独立租户空间能力,支持多企业、多团队的质量协作模式。
+- 数据分析能力:平台提供了时序分析、对比分析,以及聚合生成测试报告的能力,在大量测试之后对数据进行分析以发现软件问题。
+- 开源软件包CI服务:社区开发者可以将自己的软件包(可来自代码托管平台如github/gitee/codeup等)注册到Testfarm, 平台会监控软件包的代码变更,一旦有变更则会立即触发测试,并将测试结果通知开发者,方便开源软件包引入。
+- 开发者资源服务:社区开发者可以reserve测试环境并登陆,方便在测试环境中进行测试及debug。
+- 缺陷定位诊断服务:对于发现的软件缺陷,平台可以提供了缺陷的自动化定位诊断能力,可以发现引入缺陷的commit地址。
+
+
+### 应用场景
+- 场景1:OS发布测试,每次AnolisOS的发布,社区测试团队会根据发布测试策略进行大规模测试,保障产品发布质量,外部用户可以在Testfarm查看发布测试数据。
+- 场景2:开源软件包CI,社区开发者可以将软件包注册到平台,平台会自动监控软件包的变更,一旦发生变更会立即进行测试并推送测试结果。
+- 场景3:自定义测试,社区开发者根据自己的需求可以在T-One平台进行在线测试,或者使用命令行测试。
+- 场景4:离线测试,对于网络不可达的测试环境,用户可以使用离线测试模式测试并上传数据。
+- 场景5:独立部署,外部用户也可以在自己环境下独立部署平台,测试并上传数据到Testfarm。
+- 场景6:登陆测试环境,社区开发者可以根据需要reserve测试环境登陆进行测试及debug。
+- 场景7:缺陷定位诊断,一旦测试出缺陷,平台会自动诊断缺陷引入的commit。
+
+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/assets/Dingtalk_20240614165831.jpg" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/assets/Dingtalk_20240614165831.jpg"
new file mode 100644
index 0000000000000000000000000000000000000000..925bf2945891170613821e8e7dbc9e4206d17c8d
Binary files /dev/null and "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/assets/Dingtalk_20240614165831.jpg" differ
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/assets/jiagou.jpeg" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/assets/jiagou.jpeg"
new file mode 100644
index 0000000000000000000000000000000000000000..392076fe21eafd908c238ff0e851862e84a05a2d
Binary files /dev/null and "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/assets/jiagou.jpeg" differ
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/atone\351\203\250\347\275\262.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/atone\351\203\250\347\275\262.md"
new file mode 100644
index 0000000000000000000000000000000000000000..12f85c9bb02d73ecf4fa31b8773d8b3743913cf7
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/atone\351\203\250\347\275\262.md"
@@ -0,0 +1,615 @@
+# 部署说明
+
+> 此文档以开源版本 T-One 最小单元部署举例说明,不保障系统的高可用及性能等
+>
+> 若期望大规模集群化部署可以联系SIG项目组进行具体讨论。
+> 若遇到问题请参照文未的 FAQ 文档,或进 SIG 群联系我们。
+
+**组件说明**: T-One 包含多个自研组件和几个开源组件,此文档以开源版本 T-One 最小单元部署举例说明。
+
+* 自研组件:tone-web、tone-agent-proxy、tone-agent、tone-runner等。
+* 开源组件:mysql、kafka、redis、zookeeper
+
+**机器要求**:
+
+* 硬件要求:推荐使用 8c16g 以上规格机器。
+* OS 要求:推荐使用 Anolis OS 系统进行部署( 暂不支持debian、ubuntu等)。
+
+**部署说明**:
+- 主要分为安装环境、项目构建、项目启动、数据初始化等几个步骤。
+- 该文档以x86_64机器为例, 如果您的部署机器为其他arch类型的机器,则需要将docker-compose.yaml中指定的第三方开源组件镜像更换成对应的镜像源。
+- 可以自己指定安装目录,该文档以 ~/tone目录为例(推荐)。
+
+# 部署步骤
+> 后续步骤以 Anolis OS 8.6 环境为示例进行行详细说明。
+
+## 1. 环境准备
+
+### a. 安装docker
+```
+ yum -y install yum-utils
+ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
+ yum install -y docker-ce # 若出错:yum install -y docker-ce --nobest --allowerasing
+
+ # 启动docker
+ systemctl enable docker
+ systemctl start docker
+ systemctl status docker
+```
+### b. 配置docker源
+```
+ vim /etc/docker/daemon.json
+ {
+ "registry-mirrors": [
+ "https://6kx4zyno.mirror.aliyuncs.com",
+ "https://docker.mirrors.ustc.edu.cn",
+ "http://hub-mirror.c.163.com",
+ "https://registry.docker-cn.com"]
+ }
+ systemctl restart docker
+ # 建议使用国内镜像源。 阿里云: https://6kx4zyno.mirror.aliyuncs.com,网易: http://hub-mirror.c.163.com
+```
+### c. 安装docker-compose
+```
+ pip3 install --upgrade pip
+ pip3 install docker-compose
+ docker-compose --version
+```
+
+## 2. 项目构建
+
+### a. 下载项目源码
+```shell
+yum install -y git
+
+git clone --single-branch --branch master https://gitee.com/anolis/tone-web.git ~/tone/code/tone-web
+git clone --single-branch --branch master https://gitee.com/anolis/tone-runner.git ~/tone/code/tone-runner
+git clone --single-branch --branch master https://gitee.com/anolis/tone-agent-proxy.git ~/tone/code/tone-agent-proxy
+git clone --single-branch --branch master https://gitee.com/anolis/tone-storage.git ~/tone/code/tone-storage
+```
+下载后的目录结构:
+```
+~/tone/code/
+ ├── tone-web
+ ├── tone-runner
+ ├── tone-agent-proxy
+ └── tone-storage
+```
+
+### b. 集成前端代码
+```shell
+# 下载前端代码包:
+wget https://anolis-service-pub.oss-cn-zhangjiakou.aliyuncs.com/biz-resource/tone/deploy/front/tone-front-latest.zip
+wget https://anolis-service-pub.oss-cn-zhangjiakou.aliyuncs.com/biz-resource/tone/deploy/front/toneagent-front-latest.zip
+# 安装unzip命令
+yum install -y unzip
+# 解压到指定目录
+unzip -j -o tone-front-latest.zip -d ~/tone/code/tone-web/static/front/
+unzip -j -o toneagent-front-latest.zip -d ~/tone/code/tone-agent-proxy/static/front/
+```
+
+## 3. 项目配置
+### a. 下载 docker-compose.yaml
+```shell
+cd ~/tone
+wget https://anolis-service-pub.oss-cn-zhangjiakou.aliyuncs.com/biz-resource/tone/deploy/docker-compose.yaml
+```
+
+### b. 设置并替换变量
+执行以下脚本(需手动替换`必填的`变量):
+```shell
+# 部署机外网IP地址(必填)
+server_ip=
+
+# 账号密码(必填)
+db_password=
+redis_password=
+tone_storage_password=
+
+# 镜像版本标签(非必改、默认latest)
+version_tag=latest
+
+# token(非必改、可自动生成)
+toneagent_access_key=$(uuidgen)
+toneagent_secret_key=$(uuidgen)
+admin_urls_token=$(uuidgen)
+pub_api_token=$(uuidgen)
+
+sed -i "s/var_db_password/${db_password}/g" docker-compose.yaml
+sed -i "s/var_redis_password/${redis_password}/g" docker-compose.yaml
+sed -i "s/var_tone_storage/${tone_storage_password}/g" docker-compose.yaml
+sed -i "s/var_toneagent_access_key/${toneagent_access_key}/g" docker-compose.yaml
+sed -i "s/var_toneagent_secret_key/${toneagent_secret_key}/g" docker-compose.yaml
+sed -i "s/var_admin_urls_token/${admin_urls_token}/g" docker-compose.yaml
+sed -i "s/var_pub_api_token/${pub_api_token}/g" docker-compose.yaml
+sed -i "s/var_version_tag/${version_tag}/g" docker-compose.yaml
+sed -i "s/var_server_ip/${server_ip}/g" docker-compose.yaml
+```
+
+### c. 启动docker-compose
+```shell
+docker-compose -f ~/tone/docker-compose.yaml up --build -d
+# 注:如代码有更新或首次部署,需要加 --build 参数才会自动重新打包镜像
+```
+
+## 4. 数据初始化
+### a.初始化db
+* 进入`mysql` docker 镜像中,`docker exec -it {数据库容器ID} bash`
+* 连接数据库:`mysql -h 127.0.0.1 -P 3306 -u root -p`
+* 创建 `T-One` 数据库 `tone-db`,`ToneAgent` 数据库 `toneagent-db`
+ ```
+ CREATE DATABASE `tone-db` CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+ CREATE DATABASE `toneagent-db` CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+ ```
+ 也可以直接通过 mysql 可视化界面初始化数据库
+
+### b.初始化 `T-One` 数据
+浏览器或者curl命令请求接口($admin_urls_token可在docker-compose配置里查看或更改)
+```shell
+curl -s "http://${server_ip}:8080/admin/migrate/?token=${admin_urls_token}"
+curl -s "http://${server_ip}:8080/admin/init_data/?token=${admin_urls_token}"
+curl -s "http://${server_ip}:8080/admin/create_superuser/?token=${admin_urls_token}&username=admin&password=admin123."
+curl -s "http://${server_ip}:8081/admin/migrate/?token=${admin_urls_token}"
+curl -s "http://${server_ip}:8081/admin/create_superuser/?token=${admin_urls_token}&username=admin&password=admin123."
+curl -s "http://${server_ip}:8081/admin/import_access_token/?token=${admin_urls_token}"
+```
+
+### c. `T-One` 关联依赖配置
+**系统执行任务还需对以下配置进行设置**
+
+- 配置 `T-One` 测试用例
+- 配置`T-One` 测试机器
+- 配置 `ToneAgent` `token`
+ - 在 ToneAgent 系统-账号管理中增加一组 token
+ - 更改 docker-compose 配置中的toneagent_access_key和toneagent_secret_key
+
+## 5. 验证
+使用浏览器打开链接查看: `T-One` 页面:`http://{host}:8080` `ToneAgent` 管理页面:`http://{host}:8081`
+
+## 6. T-One 多生态使用
+`T-One` + `TestLib`
+### a. 创建 `TestLib` 数据库
+- 进入 mysql docker 镜像,docker exec -it {数据库容器ID} bash
+- 连接数据库:mysql -h 127.0.0.1 -P 3306 -u root -p
+- 创建 TestLib 数据库 testlib
+
+ CREATE DATABASE \`test-lib\` CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+- 创建 TestLib 数据库表
+### testlib数据库初始化
+
+ 点击展开/折叠脚本
+
+```shell
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET NAMES utf8 */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+
+-- 表 test-lib.case 结构
+CREATE TABLE IF NOT EXISTS `case` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '测试用例名称',
+ `creator` varchar(64) NOT NULL COMMENT '负责人',
+ `type` enum('FUNCTIONAL','PERFORMANCE','STRESS','LOAD','SECURITY','COMPATIBILITY','OTHERS') NOT NULL COMMENT '测试用例类型',
+ `priority` enum('PRIORITY_0','PRIORITY_1','PRIORITY_2','PRIORITY_3') NOT NULL COMMENT '测试用例的优先级',
+ `suite_name` varchar(128) DEFAULT NULL COMMENT '测试套名称',
+ `run_method` enum('MANUAL','AUTO') NOT NULL COMMENT '测试用例执行方式,手动、自动',
+ `run_model` enum('SINGLE','CLUSTER') NOT NULL COMMENT '测试用例运行模式,单机、集群',
+ `is_available` tinyint(1) NOT NULL COMMENT '测试用例是否可用',
+ `tone_case` varchar(128) DEFAULT NULL COMMENT 'T-One测试用例,当run_method为自动的时候生效',
+ `device_type` varchar(128) DEFAULT 'unlimit' COMMENT '设备类型,可多选,默认支持所有设备',
+ `device_arch` varchar(256) NOT NULL COMMENT '设备架构类型,可多选,默认支撑所有类型',
+ `labels` varchar(256) DEFAULT NULL COMMENT '设备标签,多个用,隔开',
+ `desc` varchar(512) DEFAULT NULL COMMENT '用例描述',
+ `pre_condition` varchar(512) DEFAULT NULL COMMENT '前置条件',
+ `steps` json DEFAULT NULL COMMENT '操作步骤',
+ `custom_fields` json DEFAULT NULL COMMENT '测试用例扩展属性',
+ `parent` int(11) NOT NULL COMMENT '测试用例分类节点',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name` (`name`),
+ KEY `ix_case_suite_name` (`suite_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.case_label 结构
+CREATE TABLE IF NOT EXISTS `case_label` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '用例标签',
+ `creator` varchar(64) NOT NULL COMMENT '标签创建人',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.case_label_map 结构
+CREATE TABLE IF NOT EXISTS `case_label_map` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `label_name` varchar(64) NOT NULL COMMENT '用例名称',
+ `case_id` int(11) NOT NULL COMMENT '用例ID',
+ PRIMARY KEY (`id`),
+ KEY `ix_case_label_map_label_name` (`label_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.case_tree 结构
+CREATE TABLE IF NOT EXISTS `case_tree` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(16) NOT NULL COMMENT '用例结构树节点名称',
+ `parent` int(11) NOT NULL COMMENT '父节点id',
+ `level` int(11) NOT NULL COMMENT '树结构的深度',
+ `path` varchar(128) NOT NULL COMMENT '模块完整路径',
+ `children_nums` int(11) NOT NULL COMMENT '子节点数量',
+ PRIMARY KEY (`id`),
+ KEY `ix_case_tree_path` (`path`)
+) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.device 结构
+CREATE TABLE IF NOT EXISTS `device` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '设备名称',
+ `arch` enum('X86','ARCH64','RISCV','LOONGARCH','NOARCH','OTHERS') NOT NULL COMMENT '设备架构',
+ `ip` varchar(16) NOT NULL COMMENT '设备ip',
+ `type` enum('UNLIMIT','VM','DOCKER','PHYSICS') NOT NULL COMMENT '设备类型',
+ `sn` varchar(16) DEFAULT NULL COMMENT '设备序号',
+ `status` tinyint(1) NOT NULL COMMENT '设备是否可用',
+ `label` json DEFAULT NULL COMMENT '设备标签列表数组',
+ `owner` varchar(256) NOT NULL COMMENT '设备负责人',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.device_label 结构
+CREATE TABLE IF NOT EXISTS `device_label` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '设备标签名称',
+ `color` varchar(32) NOT NULL COMMENT '设备标签颜色',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `ix_device_label_name` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.device_label_relationship 结构
+CREATE TABLE IF NOT EXISTS `device_label_relationship` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `label_id` int(11) NOT NULL COMMENT '机器Label id',
+ `device_id` int(11) NOT NULL COMMENT '机器Label id',
+ `is_delete` tinyint(1) DEFAULT NULL COMMENT '对应关系是否删除',
+ PRIMARY KEY (`id`),
+ KEY `ix_device_label_relationship_device_id` (`device_id`),
+ KEY `ix_device_label_relationship_label_id` (`label_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.func_result 结构
+CREATE TABLE IF NOT EXISTS `func_result` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `sub_case_name` varchar(128) NOT NULL COMMENT 'tone job名称',
+ `sub_case_result` enum('SUCCESS','FAIL','SKIP') NOT NULL COMMENT '功能结果',
+ `tone_suite_id` int(11) NOT NULL COMMENT 'suite id',
+ `tone_case_id` int(11) NOT NULL COMMENT 'tone case id',
+ `tone_job_id` int(11) NOT NULL COMMENT 'tone job id',
+ `task_id` int(11) NOT NULL COMMENT '测试方案id',
+ `current` json DEFAULT NULL,
+ `expect` json DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `ix_func_result_tone_suite_id` (`tone_suite_id`),
+ KEY `ix_func_result_task_id` (`task_id`),
+ KEY `ix_func_result_tone_case_id` (`tone_case_id`),
+ KEY `ix_func_result_tone_job_id` (`tone_job_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=479 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.outline 结构
+CREATE TABLE IF NOT EXISTS `outline` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '测试大纲文件名',
+ `title` varchar(128) NOT NULL COMMENT '测试大纲的标题',
+ `owner` varchar(16) NOT NULL COMMENT '测试大纲负责人',
+ `tid` varchar(256) NOT NULL COMMENT 'oss文件地址',
+ `remark` varchar(64) DEFAULT NULL COMMENT '测试大纲备注描述信息',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.perf_result 结构
+CREATE TABLE IF NOT EXISTS `perf_result` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `metric` varchar(128) NOT NULL COMMENT '指标名称',
+ `test_value` varchar(64) DEFAULT NULL COMMENT '测试值',
+ `cv_value` varchar(64) DEFAULT NULL COMMENT 'cv值',
+ `max_value` varchar(64) DEFAULT NULL COMMENT '最大值',
+ `min_value` varchar(64) DEFAULT NULL COMMENT '最小值',
+ `unit` varchar(64) DEFAULT NULL COMMENT '测试单位',
+ `track_result` enum('NA','INVALID','NORMAL','DECLINE','INCREASE') NOT NULL COMMENT '跟踪结果',
+ `tone_suite_id` int(11) NOT NULL COMMENT 'suite id',
+ `tone_case_id` int(11) NOT NULL COMMENT 'tone case id',
+ `tone_job_id` int(11) NOT NULL COMMENT 'tone job id',
+ `task_id` int(11) NOT NULL COMMENT '测试方案id',
+ PRIMARY KEY (`id`),
+ KEY `ix_perf_result_task_id` (`task_id`),
+ KEY `ix_perf_result_tone_case_id` (`tone_case_id`),
+ KEY `ix_perf_result_tone_suite_id` (`tone_suite_id`),
+ KEY `ix_perf_result_tone_job_id` (`tone_job_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.plan 结构
+CREATE TABLE IF NOT EXISTS `plan` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `title` varchar(64) NOT NULL COMMENT '测试方案名称',
+ `req_id` int(11) DEFAULT NULL COMMENT '测试需求id',
+ `req_title` varchar(128) DEFAULT NULL COMMENT '测试需求标题',
+ `content` json DEFAULT NULL COMMENT '测试方案内容',
+ `status` varchar(16) NOT NULL COMMENT '测试方案阶段状态',
+ `cases` varchar(256) DEFAULT NULL COMMENT '测试用例,多个使用","隔开',
+ `tasks` varchar(256) DEFAULT NULL COMMENT '测试任务,多个使用","隔开',
+ `reviewers` varchar(256) NOT NULL COMMENT '方案评审人列表',
+ `owner` varchar(256) NOT NULL COMMENT '测试需求的负责人,多个以,隔开',
+ `report` tinyint(1) NOT NULL COMMENT '测试报告是否已生成',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `title` (`title`)
+) ENGINE=InnoDB AUTO_INCREMENT=63 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.plan_review 结构
+CREATE TABLE IF NOT EXISTS `plan_review` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `plan_id` int(11) NOT NULL COMMENT '测试方案id',
+ `reviewer` varchar(32) NOT NULL COMMENT '测试需方案的评审人',
+ `status` varchar(16) NOT NULL COMMENT '评审状态',
+ `desc` varchar(512) DEFAULT NULL COMMENT '评审内容',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.product_category 结构
+CREATE TABLE IF NOT EXISTS `product_category` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '大类名称',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.product_plan 结构
+CREATE TABLE IF NOT EXISTS `product_plan` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `test_product_id` int(11) NOT NULL COMMENT '测试产品id',
+ `plan_id` int(11) NOT NULL COMMENT '测试产品实际复制执行的plan id',
+ `executor` varchar(256) NOT NULL COMMENT '测试产品执行人',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.requirement 结构
+CREATE TABLE IF NOT EXISTS `requirement` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `title` varchar(128) NOT NULL COMMENT '测试需求标题',
+ `outline_id` int(11) DEFAULT NULL COMMENT '测试大纲id',
+ `outline_title` varchar(64) DEFAULT NULL COMMENT '测试大纲标题',
+ `content` json NOT NULL COMMENT '测试需求的描述内容',
+ `status` varchar(16) NOT NULL COMMENT '测试需求阶段',
+ `owner` varchar(16) NOT NULL COMMENT '测试需求的创建人',
+ `assignee` varchar(256) NOT NULL COMMENT '测试需求的指派人,多个以,隔开',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.task 结构
+CREATE TABLE IF NOT EXISTS `task` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '任务名称',
+ `status` varchar(16) NOT NULL COMMENT '任务执行状态',
+ `run_method` enum('MANUAL','AUTO') NOT NULL COMMENT '测试任务执行方式',
+ `owner` varchar(256) NOT NULL COMMENT '任务执行人',
+ `plan_id` int(11) NOT NULL COMMENT '测试方案id',
+ `plan_title` varchar(256) NOT NULL COMMENT '测试方案标题',
+ `cases` varchar(256) NOT NULL COMMENT '测试用例,多个使用,隔开',
+ `desc` varchar(256) DEFAULT NULL COMMENT '备注',
+ `run_result` json DEFAULT NULL COMMENT '手动用例执行结果',
+ `config` json DEFAULT NULL COMMENT '测试任务配置',
+ `device_id` int(11) DEFAULT NULL COMMENT '测试设备ID',
+ `device_ip` varchar(256) DEFAULT NULL COMMENT '测试机器IP',
+ `workspace` varchar(128) NOT NULL COMMENT 'tone workspace',
+ `project` varchar(128) NOT NULL COMMENT 'tone project',
+ `job_type` varchar(128) NOT NULL COMMENT 'tone job type',
+ `test_type` varchar(32) DEFAULT 'others' COMMENT '测试任务类型',
+ `cluster` varchar(256) DEFAULT NULL COMMENT '测试机器集群名称',
+ `tags` varchar(256) DEFAULT NULL COMMENT '测试机器标签',
+ `tsn` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `ix_task_plan_id` (`plan_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=90 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.test_product 结构
+CREATE TABLE IF NOT EXISTS `test_product` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '测试产品名称',
+ `category_id` int(11) NOT NULL COMMENT '大类id',
+ `origin_plan_id` int(11) NOT NULL COMMENT '测试产品对应的plan id',
+ `desc` varchar(256) DEFAULT NULL COMMENT '产品描述',
+ `test_method` varchar(256) DEFAULT NULL COMMENT '测试方法',
+ `test_requirement` varchar(256) DEFAULT NULL COMMENT '测试要求',
+ `need_config` tinyint(1) DEFAULT NULL COMMENT '是否扩展配置',
+ `owner` varchar(256) NOT NULL DEFAULT '' COMMENT '测试产品创建人',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.test_suite 结构
+CREATE TABLE IF NOT EXISTS `test_suite` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(128) NOT NULL COMMENT '测试套名称',
+ `creator` varchar(64) NOT NULL COMMENT '测试套的创建人员',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_case 结构
+CREATE TABLE IF NOT EXISTS `tone_case` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `tone_case_id` int(11) NOT NULL COMMENT 'tone用例ID',
+ `tone_case_name` varchar(256) NOT NULL COMMENT 'tone用例名称',
+ `suite_id` int(11) NOT NULL COMMENT 'suite ID',
+ `suite_name` varchar(256) NOT NULL COMMENT 'suite用例名称',
+ `test_type` varchar(64) DEFAULT NULL COMMENT '测试类型',
+ PRIMARY KEY (`id`),
+ KEY `ix_tone_case_tone_case_name` (`tone_case_name`),
+ KEY `ix_tone_case_suite_id` (`suite_id`),
+ KEY `ix_tone_case_suite_name` (`suite_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=603 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_job 结构
+CREATE TABLE IF NOT EXISTS `tone_job` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(100) NOT NULL COMMENT 'tone job名称',
+ `state` enum('PENDING','RUNNING','SUCCESS','FAIL','STOP','SKIP') NOT NULL COMMENT 'tone job状态',
+ `test_type` enum('FUNCTIONAL','PERFORMANCE') NOT NULL COMMENT '测试类型',
+ `tone_job_id` int(11) NOT NULL COMMENT 'tone job id',
+ `tone_job_link` varchar(100) DEFAULT '' COMMENT 'tone job链接',
+ `task_id` int(11) NOT NULL COMMENT '测试方案id',
+ `server_info` json DEFAULT NULL COMMENT '存储tone job的机器信息',
+ PRIMARY KEY (`id`),
+ KEY `ix_tone_job_tone_job_id` (`tone_job_id`),
+ KEY `ix_tone_job_task_id` (`task_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_sync_pull 结构
+CREATE TABLE IF NOT EXISTS `tone_sync_pull` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=76149 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_sync_push 结构
+CREATE TABLE IF NOT EXISTS `tone_sync_push` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.user 结构
+CREATE TABLE IF NOT EXISTS `user` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `user_name` varchar(256) DEFAULT NULL COMMENT '用户名称',
+ `nick_name` varchar(64) DEFAULT NULL COMMENT '用户昵称,具有唯一性',
+ `email` varchar(64) NOT NULL COMMENT '用户邮箱',
+ `avatar_url` varchar(512) DEFAULT NULL COMMENT '用户头像地址',
+ `role` enum('ADMIN','SENIOR','JUNIOR','COMMON') NOT NULL DEFAULT 'COMMON',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `nick_name` (`nick_name`),
+ KEY `ix_user_user_name` (`user_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.user_open_source 结构
+CREATE TABLE IF NOT EXISTS `user_open_source` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `user_name` varchar(256) DEFAULT NULL COMMENT '用户名称',
+ `nick_name` varchar(64) NOT NULL COMMENT '用户昵称,具有唯一性',
+ `email` varchar(64) NOT NULL COMMENT '用户邮箱',
+ `password` varchar(64) NOT NULL COMMENT '用户密码,前端对密码md5加密后的值',
+ `avatar_url` varchar(512) DEFAULT NULL COMMENT '用户头像地址',
+ `role` enum('ADMIN','SENIOR','JUNIOR','COMMON') NOT NULL DEFAULT 'COMMON',
+ `token` varchar(256) NOT NULL COMMENT 'api访问凭证',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `nick_name` (`nick_name`),
+ UNIQUE KEY `email` (`email`),
+ KEY `ix_user_open_source_token` (`token`(255))
+) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.user_role_op_record 结构
+CREATE TABLE IF NOT EXISTS `user_role_op_record` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `applicant` varchar(64) NOT NULL COMMENT '申请人name',
+ `applicant_id` int(11) NOT NULL COMMENT '申请人ID',
+ `apply_reason` varchar(512) DEFAULT NULL COMMENT '申请理由',
+ `signer` varchar(64) DEFAULT NULL COMMENT '评审人name',
+ `has_review` tinyint(1) NOT NULL COMMENT '是否已经审核',
+ `review_result` enum('INIT','PASS','FAIL') NOT NULL COMMENT '审核结果',
+ `review_reason` varchar(512) DEFAULT NULL COMMENT '评审意见',
+ `method` enum('APPROVE','UPGRADE','DOWNGRADE','DELETE') NOT NULL COMMENT '操作方式',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
+
+/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
+/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+
+
+```
+
+
+### b.TestLib 服务依赖
+### c. clone test-lib代码到~/tone/code目录下
+```shell
+git clone --single-branch --branch master https://gitee.com/anolis/testlib.git ~/tone/code/testlib
+```
+### d.增加docker-compose配置
+```yaml
+# docker-compose.yaml service下增加test-lib
+ test-lib:
+ build:
+ context: code/testlib/
+ dockerfile: Dockerfile
+ args:
+ APP_NAME: test-lib
+ ENV: daily
+ image: test-lib:latest
+ ports:
+ - "8005:8005"
+ depends_on:
+ - mysql
+ - redis
+ environment:
+ <<: *common-variables
+ # db
+ db_url: mysql+aiomysql://${db_user}:{db_password}@mysql:3306/test-lib
+ # redis
+ redis_url: redis://:${redis_password}@redis:6379/10
+ # app
+ tone_host: http://${server_ip}:8080/
+ tone_token: tone_token
+ tone_user_name: tone_user_name
+ main_domain: http://${server_ip}:8005
+ oss_url: http://${server_ip}:8005
+```
+#### e.重启服务
+```shell
+docker-compose -f ~/tone/docker-compose.yaml up --build -d
+```
+## 7. 独立部署 FAQ
+https://tone.openanolis.cn/help_doc/12
\ No newline at end of file
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/test.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/test.md"
new file mode 100644
index 0000000000000000000000000000000000000000..b09df7d02fee342106c45e78485a992609d67bdb
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/test.md"
@@ -0,0 +1,70 @@
+# 一级标题
+## 二级标题
+### 三级标题
+**粗体文本**
+
+__cuti__
+
+*斜体文本*
+
+_xieti_
+
+下划线
+
+~~删除线~~
+
+上标:Xy
+
+下标:An
+
+> 引用文本
+- 无序列表项1
+ - 第二层
+- 无序列表项2
+* * *
+1. 有序列表项1
+2. 有序列表项2
+---
+[链接文本](https://gitee.com/suli01/community/edit/master/sig/T-One/content/%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97/%E7%94%A8%E6%88%B7%E8%81%86%E5%90%AC/test.md)
+
+链接名称
+
+'''python
+def hello_world():
+ print("Hello, world!")
+
+
+
+| 列1 | 列2 | 列3 |
+| --- | --- | --- |
+| 单元格1 | 单元格2 | 单元格3 |
+| 单元格4 | 单元格5 | 单元格6 |
+
+
+| 左对齐 | 居中对齐 | 右对齐 |
+|:-----|:------:|------:|
+| 文本 | 文本 | 文本 |
+
+
+
+
+
+ 值班人员 |
+ 星期一 |
+ 星期二 |
+ 星期三 |
+
+
+ 张三 |
+ 李四 |
+ 王五 |
+
+
+
+- [ ] :待完成事项
+
+- [x] :已完成事项
+
+
+

+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md"
new file mode 100644
index 0000000000000000000000000000000000000000..d0a3a7f08baab2c20bc46fc52570530781997763
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md"
@@ -0,0 +1,2 @@
+# hello
+
\ No newline at end of file
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/\350\201\206\345\220\254.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/\350\201\206\345\220\254.md"
new file mode 100644
index 0000000000000000000000000000000000000000..e5d110a57b01266616a91010b0b0032dcff2c5c1
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/\350\201\206\345\220\254.md"
@@ -0,0 +1,2 @@
+# hello, 欢迎来到聆听 .md
+## 阿斯顿发射点
\ No newline at end of file
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/test1.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/test1.md"
new file mode 100644
index 0000000000000000000000000000000000000000..bce7de8006c232d78a6c8052190ff0a3a60a8fa0
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/test1.md"
@@ -0,0 +1,73 @@
+*斜体文字*
+
+_斜体文字_
+
+**粗体文字**
+
+__粗体文字__
+
+***粗斜体文字***
+
+___粗斜体文字___
+
+***
+* * *
+******
+- - -
+------
+
+~~删除线~~
+
+带下划线文本
+
+# 一级标题
+
+## 二级标题
+
+### 三级标题
+
+#### 四级标题
+
+##### 五级标题
+
+###### 六级标题
+[链接](http://a.com)
+
+> 引用
+* 第一项
+* 第二项
+* 第三项
+
++ 第一项
++ 第二项
++ 第三项
+
+- 第一项
+- 第二项
+- 第三项
+1. 第一项
+2. 第二项
+3. 第三项
+
+1. 第一项:
+ - 第一项嵌套的第一个元素
+ - 第一项嵌套的第二个元素
+2. 第二项:
+ - 第二项嵌套的第一个元素
+ - 第二项嵌套的第二个元素
+水平线:
+
+---
+带反引号的“内联代码”
+```
+# 代码块
+print '3 个反引号或'
+print '缩进 4 个空格'
+```
+
+> 区块引用
+> Markdown教程
+> 学的不仅是技术更是梦想
+
+
+SDFGSDFGSDFGSDFG
\ No newline at end of file
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/tone\351\203\250\347\275\262.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/tone\351\203\250\347\275\262.md"
new file mode 100644
index 0000000000000000000000000000000000000000..12f85c9bb02d73ecf4fa31b8773d8b3743913cf7
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/tone\351\203\250\347\275\262.md"
@@ -0,0 +1,615 @@
+# 部署说明
+
+> 此文档以开源版本 T-One 最小单元部署举例说明,不保障系统的高可用及性能等
+>
+> 若期望大规模集群化部署可以联系SIG项目组进行具体讨论。
+> 若遇到问题请参照文未的 FAQ 文档,或进 SIG 群联系我们。
+
+**组件说明**: T-One 包含多个自研组件和几个开源组件,此文档以开源版本 T-One 最小单元部署举例说明。
+
+* 自研组件:tone-web、tone-agent-proxy、tone-agent、tone-runner等。
+* 开源组件:mysql、kafka、redis、zookeeper
+
+**机器要求**:
+
+* 硬件要求:推荐使用 8c16g 以上规格机器。
+* OS 要求:推荐使用 Anolis OS 系统进行部署( 暂不支持debian、ubuntu等)。
+
+**部署说明**:
+- 主要分为安装环境、项目构建、项目启动、数据初始化等几个步骤。
+- 该文档以x86_64机器为例, 如果您的部署机器为其他arch类型的机器,则需要将docker-compose.yaml中指定的第三方开源组件镜像更换成对应的镜像源。
+- 可以自己指定安装目录,该文档以 ~/tone目录为例(推荐)。
+
+# 部署步骤
+> 后续步骤以 Anolis OS 8.6 环境为示例进行行详细说明。
+
+## 1. 环境准备
+
+### a. 安装docker
+```
+ yum -y install yum-utils
+ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
+ yum install -y docker-ce # 若出错:yum install -y docker-ce --nobest --allowerasing
+
+ # 启动docker
+ systemctl enable docker
+ systemctl start docker
+ systemctl status docker
+```
+### b. 配置docker源
+```
+ vim /etc/docker/daemon.json
+ {
+ "registry-mirrors": [
+ "https://6kx4zyno.mirror.aliyuncs.com",
+ "https://docker.mirrors.ustc.edu.cn",
+ "http://hub-mirror.c.163.com",
+ "https://registry.docker-cn.com"]
+ }
+ systemctl restart docker
+ # 建议使用国内镜像源。 阿里云: https://6kx4zyno.mirror.aliyuncs.com,网易: http://hub-mirror.c.163.com
+```
+### c. 安装docker-compose
+```
+ pip3 install --upgrade pip
+ pip3 install docker-compose
+ docker-compose --version
+```
+
+## 2. 项目构建
+
+### a. 下载项目源码
+```shell
+yum install -y git
+
+git clone --single-branch --branch master https://gitee.com/anolis/tone-web.git ~/tone/code/tone-web
+git clone --single-branch --branch master https://gitee.com/anolis/tone-runner.git ~/tone/code/tone-runner
+git clone --single-branch --branch master https://gitee.com/anolis/tone-agent-proxy.git ~/tone/code/tone-agent-proxy
+git clone --single-branch --branch master https://gitee.com/anolis/tone-storage.git ~/tone/code/tone-storage
+```
+下载后的目录结构:
+```
+~/tone/code/
+ ├── tone-web
+ ├── tone-runner
+ ├── tone-agent-proxy
+ └── tone-storage
+```
+
+### b. 集成前端代码
+```shell
+# 下载前端代码包:
+wget https://anolis-service-pub.oss-cn-zhangjiakou.aliyuncs.com/biz-resource/tone/deploy/front/tone-front-latest.zip
+wget https://anolis-service-pub.oss-cn-zhangjiakou.aliyuncs.com/biz-resource/tone/deploy/front/toneagent-front-latest.zip
+# 安装unzip命令
+yum install -y unzip
+# 解压到指定目录
+unzip -j -o tone-front-latest.zip -d ~/tone/code/tone-web/static/front/
+unzip -j -o toneagent-front-latest.zip -d ~/tone/code/tone-agent-proxy/static/front/
+```
+
+## 3. 项目配置
+### a. 下载 docker-compose.yaml
+```shell
+cd ~/tone
+wget https://anolis-service-pub.oss-cn-zhangjiakou.aliyuncs.com/biz-resource/tone/deploy/docker-compose.yaml
+```
+
+### b. 设置并替换变量
+执行以下脚本(需手动替换`必填的`变量):
+```shell
+# 部署机外网IP地址(必填)
+server_ip=
+
+# 账号密码(必填)
+db_password=
+redis_password=
+tone_storage_password=
+
+# 镜像版本标签(非必改、默认latest)
+version_tag=latest
+
+# token(非必改、可自动生成)
+toneagent_access_key=$(uuidgen)
+toneagent_secret_key=$(uuidgen)
+admin_urls_token=$(uuidgen)
+pub_api_token=$(uuidgen)
+
+sed -i "s/var_db_password/${db_password}/g" docker-compose.yaml
+sed -i "s/var_redis_password/${redis_password}/g" docker-compose.yaml
+sed -i "s/var_tone_storage/${tone_storage_password}/g" docker-compose.yaml
+sed -i "s/var_toneagent_access_key/${toneagent_access_key}/g" docker-compose.yaml
+sed -i "s/var_toneagent_secret_key/${toneagent_secret_key}/g" docker-compose.yaml
+sed -i "s/var_admin_urls_token/${admin_urls_token}/g" docker-compose.yaml
+sed -i "s/var_pub_api_token/${pub_api_token}/g" docker-compose.yaml
+sed -i "s/var_version_tag/${version_tag}/g" docker-compose.yaml
+sed -i "s/var_server_ip/${server_ip}/g" docker-compose.yaml
+```
+
+### c. 启动docker-compose
+```shell
+docker-compose -f ~/tone/docker-compose.yaml up --build -d
+# 注:如代码有更新或首次部署,需要加 --build 参数才会自动重新打包镜像
+```
+
+## 4. 数据初始化
+### a.初始化db
+* 进入`mysql` docker 镜像中,`docker exec -it {数据库容器ID} bash`
+* 连接数据库:`mysql -h 127.0.0.1 -P 3306 -u root -p`
+* 创建 `T-One` 数据库 `tone-db`,`ToneAgent` 数据库 `toneagent-db`
+ ```
+ CREATE DATABASE `tone-db` CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+ CREATE DATABASE `toneagent-db` CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+ ```
+ 也可以直接通过 mysql 可视化界面初始化数据库
+
+### b.初始化 `T-One` 数据
+浏览器或者curl命令请求接口($admin_urls_token可在docker-compose配置里查看或更改)
+```shell
+curl -s "http://${server_ip}:8080/admin/migrate/?token=${admin_urls_token}"
+curl -s "http://${server_ip}:8080/admin/init_data/?token=${admin_urls_token}"
+curl -s "http://${server_ip}:8080/admin/create_superuser/?token=${admin_urls_token}&username=admin&password=admin123."
+curl -s "http://${server_ip}:8081/admin/migrate/?token=${admin_urls_token}"
+curl -s "http://${server_ip}:8081/admin/create_superuser/?token=${admin_urls_token}&username=admin&password=admin123."
+curl -s "http://${server_ip}:8081/admin/import_access_token/?token=${admin_urls_token}"
+```
+
+### c. `T-One` 关联依赖配置
+**系统执行任务还需对以下配置进行设置**
+
+- 配置 `T-One` 测试用例
+- 配置`T-One` 测试机器
+- 配置 `ToneAgent` `token`
+ - 在 ToneAgent 系统-账号管理中增加一组 token
+ - 更改 docker-compose 配置中的toneagent_access_key和toneagent_secret_key
+
+## 5. 验证
+使用浏览器打开链接查看: `T-One` 页面:`http://{host}:8080` `ToneAgent` 管理页面:`http://{host}:8081`
+
+## 6. T-One 多生态使用
+`T-One` + `TestLib`
+### a. 创建 `TestLib` 数据库
+- 进入 mysql docker 镜像,docker exec -it {数据库容器ID} bash
+- 连接数据库:mysql -h 127.0.0.1 -P 3306 -u root -p
+- 创建 TestLib 数据库 testlib
+
+ CREATE DATABASE \`test-lib\` CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+- 创建 TestLib 数据库表
+### testlib数据库初始化
+
+ 点击展开/折叠脚本
+
+```shell
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET NAMES utf8 */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+
+-- 表 test-lib.case 结构
+CREATE TABLE IF NOT EXISTS `case` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '测试用例名称',
+ `creator` varchar(64) NOT NULL COMMENT '负责人',
+ `type` enum('FUNCTIONAL','PERFORMANCE','STRESS','LOAD','SECURITY','COMPATIBILITY','OTHERS') NOT NULL COMMENT '测试用例类型',
+ `priority` enum('PRIORITY_0','PRIORITY_1','PRIORITY_2','PRIORITY_3') NOT NULL COMMENT '测试用例的优先级',
+ `suite_name` varchar(128) DEFAULT NULL COMMENT '测试套名称',
+ `run_method` enum('MANUAL','AUTO') NOT NULL COMMENT '测试用例执行方式,手动、自动',
+ `run_model` enum('SINGLE','CLUSTER') NOT NULL COMMENT '测试用例运行模式,单机、集群',
+ `is_available` tinyint(1) NOT NULL COMMENT '测试用例是否可用',
+ `tone_case` varchar(128) DEFAULT NULL COMMENT 'T-One测试用例,当run_method为自动的时候生效',
+ `device_type` varchar(128) DEFAULT 'unlimit' COMMENT '设备类型,可多选,默认支持所有设备',
+ `device_arch` varchar(256) NOT NULL COMMENT '设备架构类型,可多选,默认支撑所有类型',
+ `labels` varchar(256) DEFAULT NULL COMMENT '设备标签,多个用,隔开',
+ `desc` varchar(512) DEFAULT NULL COMMENT '用例描述',
+ `pre_condition` varchar(512) DEFAULT NULL COMMENT '前置条件',
+ `steps` json DEFAULT NULL COMMENT '操作步骤',
+ `custom_fields` json DEFAULT NULL COMMENT '测试用例扩展属性',
+ `parent` int(11) NOT NULL COMMENT '测试用例分类节点',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name` (`name`),
+ KEY `ix_case_suite_name` (`suite_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.case_label 结构
+CREATE TABLE IF NOT EXISTS `case_label` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '用例标签',
+ `creator` varchar(64) NOT NULL COMMENT '标签创建人',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.case_label_map 结构
+CREATE TABLE IF NOT EXISTS `case_label_map` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `label_name` varchar(64) NOT NULL COMMENT '用例名称',
+ `case_id` int(11) NOT NULL COMMENT '用例ID',
+ PRIMARY KEY (`id`),
+ KEY `ix_case_label_map_label_name` (`label_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.case_tree 结构
+CREATE TABLE IF NOT EXISTS `case_tree` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(16) NOT NULL COMMENT '用例结构树节点名称',
+ `parent` int(11) NOT NULL COMMENT '父节点id',
+ `level` int(11) NOT NULL COMMENT '树结构的深度',
+ `path` varchar(128) NOT NULL COMMENT '模块完整路径',
+ `children_nums` int(11) NOT NULL COMMENT '子节点数量',
+ PRIMARY KEY (`id`),
+ KEY `ix_case_tree_path` (`path`)
+) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.device 结构
+CREATE TABLE IF NOT EXISTS `device` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '设备名称',
+ `arch` enum('X86','ARCH64','RISCV','LOONGARCH','NOARCH','OTHERS') NOT NULL COMMENT '设备架构',
+ `ip` varchar(16) NOT NULL COMMENT '设备ip',
+ `type` enum('UNLIMIT','VM','DOCKER','PHYSICS') NOT NULL COMMENT '设备类型',
+ `sn` varchar(16) DEFAULT NULL COMMENT '设备序号',
+ `status` tinyint(1) NOT NULL COMMENT '设备是否可用',
+ `label` json DEFAULT NULL COMMENT '设备标签列表数组',
+ `owner` varchar(256) NOT NULL COMMENT '设备负责人',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.device_label 结构
+CREATE TABLE IF NOT EXISTS `device_label` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '设备标签名称',
+ `color` varchar(32) NOT NULL COMMENT '设备标签颜色',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `ix_device_label_name` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.device_label_relationship 结构
+CREATE TABLE IF NOT EXISTS `device_label_relationship` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `label_id` int(11) NOT NULL COMMENT '机器Label id',
+ `device_id` int(11) NOT NULL COMMENT '机器Label id',
+ `is_delete` tinyint(1) DEFAULT NULL COMMENT '对应关系是否删除',
+ PRIMARY KEY (`id`),
+ KEY `ix_device_label_relationship_device_id` (`device_id`),
+ KEY `ix_device_label_relationship_label_id` (`label_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.func_result 结构
+CREATE TABLE IF NOT EXISTS `func_result` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `sub_case_name` varchar(128) NOT NULL COMMENT 'tone job名称',
+ `sub_case_result` enum('SUCCESS','FAIL','SKIP') NOT NULL COMMENT '功能结果',
+ `tone_suite_id` int(11) NOT NULL COMMENT 'suite id',
+ `tone_case_id` int(11) NOT NULL COMMENT 'tone case id',
+ `tone_job_id` int(11) NOT NULL COMMENT 'tone job id',
+ `task_id` int(11) NOT NULL COMMENT '测试方案id',
+ `current` json DEFAULT NULL,
+ `expect` json DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `ix_func_result_tone_suite_id` (`tone_suite_id`),
+ KEY `ix_func_result_task_id` (`task_id`),
+ KEY `ix_func_result_tone_case_id` (`tone_case_id`),
+ KEY `ix_func_result_tone_job_id` (`tone_job_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=479 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.outline 结构
+CREATE TABLE IF NOT EXISTS `outline` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '测试大纲文件名',
+ `title` varchar(128) NOT NULL COMMENT '测试大纲的标题',
+ `owner` varchar(16) NOT NULL COMMENT '测试大纲负责人',
+ `tid` varchar(256) NOT NULL COMMENT 'oss文件地址',
+ `remark` varchar(64) DEFAULT NULL COMMENT '测试大纲备注描述信息',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.perf_result 结构
+CREATE TABLE IF NOT EXISTS `perf_result` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `metric` varchar(128) NOT NULL COMMENT '指标名称',
+ `test_value` varchar(64) DEFAULT NULL COMMENT '测试值',
+ `cv_value` varchar(64) DEFAULT NULL COMMENT 'cv值',
+ `max_value` varchar(64) DEFAULT NULL COMMENT '最大值',
+ `min_value` varchar(64) DEFAULT NULL COMMENT '最小值',
+ `unit` varchar(64) DEFAULT NULL COMMENT '测试单位',
+ `track_result` enum('NA','INVALID','NORMAL','DECLINE','INCREASE') NOT NULL COMMENT '跟踪结果',
+ `tone_suite_id` int(11) NOT NULL COMMENT 'suite id',
+ `tone_case_id` int(11) NOT NULL COMMENT 'tone case id',
+ `tone_job_id` int(11) NOT NULL COMMENT 'tone job id',
+ `task_id` int(11) NOT NULL COMMENT '测试方案id',
+ PRIMARY KEY (`id`),
+ KEY `ix_perf_result_task_id` (`task_id`),
+ KEY `ix_perf_result_tone_case_id` (`tone_case_id`),
+ KEY `ix_perf_result_tone_suite_id` (`tone_suite_id`),
+ KEY `ix_perf_result_tone_job_id` (`tone_job_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.plan 结构
+CREATE TABLE IF NOT EXISTS `plan` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `title` varchar(64) NOT NULL COMMENT '测试方案名称',
+ `req_id` int(11) DEFAULT NULL COMMENT '测试需求id',
+ `req_title` varchar(128) DEFAULT NULL COMMENT '测试需求标题',
+ `content` json DEFAULT NULL COMMENT '测试方案内容',
+ `status` varchar(16) NOT NULL COMMENT '测试方案阶段状态',
+ `cases` varchar(256) DEFAULT NULL COMMENT '测试用例,多个使用","隔开',
+ `tasks` varchar(256) DEFAULT NULL COMMENT '测试任务,多个使用","隔开',
+ `reviewers` varchar(256) NOT NULL COMMENT '方案评审人列表',
+ `owner` varchar(256) NOT NULL COMMENT '测试需求的负责人,多个以,隔开',
+ `report` tinyint(1) NOT NULL COMMENT '测试报告是否已生成',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `title` (`title`)
+) ENGINE=InnoDB AUTO_INCREMENT=63 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.plan_review 结构
+CREATE TABLE IF NOT EXISTS `plan_review` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `plan_id` int(11) NOT NULL COMMENT '测试方案id',
+ `reviewer` varchar(32) NOT NULL COMMENT '测试需方案的评审人',
+ `status` varchar(16) NOT NULL COMMENT '评审状态',
+ `desc` varchar(512) DEFAULT NULL COMMENT '评审内容',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.product_category 结构
+CREATE TABLE IF NOT EXISTS `product_category` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '大类名称',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.product_plan 结构
+CREATE TABLE IF NOT EXISTS `product_plan` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `test_product_id` int(11) NOT NULL COMMENT '测试产品id',
+ `plan_id` int(11) NOT NULL COMMENT '测试产品实际复制执行的plan id',
+ `executor` varchar(256) NOT NULL COMMENT '测试产品执行人',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.requirement 结构
+CREATE TABLE IF NOT EXISTS `requirement` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `title` varchar(128) NOT NULL COMMENT '测试需求标题',
+ `outline_id` int(11) DEFAULT NULL COMMENT '测试大纲id',
+ `outline_title` varchar(64) DEFAULT NULL COMMENT '测试大纲标题',
+ `content` json NOT NULL COMMENT '测试需求的描述内容',
+ `status` varchar(16) NOT NULL COMMENT '测试需求阶段',
+ `owner` varchar(16) NOT NULL COMMENT '测试需求的创建人',
+ `assignee` varchar(256) NOT NULL COMMENT '测试需求的指派人,多个以,隔开',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.task 结构
+CREATE TABLE IF NOT EXISTS `task` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '任务名称',
+ `status` varchar(16) NOT NULL COMMENT '任务执行状态',
+ `run_method` enum('MANUAL','AUTO') NOT NULL COMMENT '测试任务执行方式',
+ `owner` varchar(256) NOT NULL COMMENT '任务执行人',
+ `plan_id` int(11) NOT NULL COMMENT '测试方案id',
+ `plan_title` varchar(256) NOT NULL COMMENT '测试方案标题',
+ `cases` varchar(256) NOT NULL COMMENT '测试用例,多个使用,隔开',
+ `desc` varchar(256) DEFAULT NULL COMMENT '备注',
+ `run_result` json DEFAULT NULL COMMENT '手动用例执行结果',
+ `config` json DEFAULT NULL COMMENT '测试任务配置',
+ `device_id` int(11) DEFAULT NULL COMMENT '测试设备ID',
+ `device_ip` varchar(256) DEFAULT NULL COMMENT '测试机器IP',
+ `workspace` varchar(128) NOT NULL COMMENT 'tone workspace',
+ `project` varchar(128) NOT NULL COMMENT 'tone project',
+ `job_type` varchar(128) NOT NULL COMMENT 'tone job type',
+ `test_type` varchar(32) DEFAULT 'others' COMMENT '测试任务类型',
+ `cluster` varchar(256) DEFAULT NULL COMMENT '测试机器集群名称',
+ `tags` varchar(256) DEFAULT NULL COMMENT '测试机器标签',
+ `tsn` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `ix_task_plan_id` (`plan_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=90 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.test_product 结构
+CREATE TABLE IF NOT EXISTS `test_product` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '测试产品名称',
+ `category_id` int(11) NOT NULL COMMENT '大类id',
+ `origin_plan_id` int(11) NOT NULL COMMENT '测试产品对应的plan id',
+ `desc` varchar(256) DEFAULT NULL COMMENT '产品描述',
+ `test_method` varchar(256) DEFAULT NULL COMMENT '测试方法',
+ `test_requirement` varchar(256) DEFAULT NULL COMMENT '测试要求',
+ `need_config` tinyint(1) DEFAULT NULL COMMENT '是否扩展配置',
+ `owner` varchar(256) NOT NULL DEFAULT '' COMMENT '测试产品创建人',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.test_suite 结构
+CREATE TABLE IF NOT EXISTS `test_suite` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(128) NOT NULL COMMENT '测试套名称',
+ `creator` varchar(64) NOT NULL COMMENT '测试套的创建人员',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_case 结构
+CREATE TABLE IF NOT EXISTS `tone_case` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `tone_case_id` int(11) NOT NULL COMMENT 'tone用例ID',
+ `tone_case_name` varchar(256) NOT NULL COMMENT 'tone用例名称',
+ `suite_id` int(11) NOT NULL COMMENT 'suite ID',
+ `suite_name` varchar(256) NOT NULL COMMENT 'suite用例名称',
+ `test_type` varchar(64) DEFAULT NULL COMMENT '测试类型',
+ PRIMARY KEY (`id`),
+ KEY `ix_tone_case_tone_case_name` (`tone_case_name`),
+ KEY `ix_tone_case_suite_id` (`suite_id`),
+ KEY `ix_tone_case_suite_name` (`suite_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=603 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_job 结构
+CREATE TABLE IF NOT EXISTS `tone_job` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(100) NOT NULL COMMENT 'tone job名称',
+ `state` enum('PENDING','RUNNING','SUCCESS','FAIL','STOP','SKIP') NOT NULL COMMENT 'tone job状态',
+ `test_type` enum('FUNCTIONAL','PERFORMANCE') NOT NULL COMMENT '测试类型',
+ `tone_job_id` int(11) NOT NULL COMMENT 'tone job id',
+ `tone_job_link` varchar(100) DEFAULT '' COMMENT 'tone job链接',
+ `task_id` int(11) NOT NULL COMMENT '测试方案id',
+ `server_info` json DEFAULT NULL COMMENT '存储tone job的机器信息',
+ PRIMARY KEY (`id`),
+ KEY `ix_tone_job_tone_job_id` (`tone_job_id`),
+ KEY `ix_tone_job_task_id` (`task_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_sync_pull 结构
+CREATE TABLE IF NOT EXISTS `tone_sync_pull` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=76149 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_sync_push 结构
+CREATE TABLE IF NOT EXISTS `tone_sync_push` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.user 结构
+CREATE TABLE IF NOT EXISTS `user` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `user_name` varchar(256) DEFAULT NULL COMMENT '用户名称',
+ `nick_name` varchar(64) DEFAULT NULL COMMENT '用户昵称,具有唯一性',
+ `email` varchar(64) NOT NULL COMMENT '用户邮箱',
+ `avatar_url` varchar(512) DEFAULT NULL COMMENT '用户头像地址',
+ `role` enum('ADMIN','SENIOR','JUNIOR','COMMON') NOT NULL DEFAULT 'COMMON',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `nick_name` (`nick_name`),
+ KEY `ix_user_user_name` (`user_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.user_open_source 结构
+CREATE TABLE IF NOT EXISTS `user_open_source` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `user_name` varchar(256) DEFAULT NULL COMMENT '用户名称',
+ `nick_name` varchar(64) NOT NULL COMMENT '用户昵称,具有唯一性',
+ `email` varchar(64) NOT NULL COMMENT '用户邮箱',
+ `password` varchar(64) NOT NULL COMMENT '用户密码,前端对密码md5加密后的值',
+ `avatar_url` varchar(512) DEFAULT NULL COMMENT '用户头像地址',
+ `role` enum('ADMIN','SENIOR','JUNIOR','COMMON') NOT NULL DEFAULT 'COMMON',
+ `token` varchar(256) NOT NULL COMMENT 'api访问凭证',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `nick_name` (`nick_name`),
+ UNIQUE KEY `email` (`email`),
+ KEY `ix_user_open_source_token` (`token`(255))
+) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.user_role_op_record 结构
+CREATE TABLE IF NOT EXISTS `user_role_op_record` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `applicant` varchar(64) NOT NULL COMMENT '申请人name',
+ `applicant_id` int(11) NOT NULL COMMENT '申请人ID',
+ `apply_reason` varchar(512) DEFAULT NULL COMMENT '申请理由',
+ `signer` varchar(64) DEFAULT NULL COMMENT '评审人name',
+ `has_review` tinyint(1) NOT NULL COMMENT '是否已经审核',
+ `review_result` enum('INIT','PASS','FAIL') NOT NULL COMMENT '审核结果',
+ `review_reason` varchar(512) DEFAULT NULL COMMENT '评审意见',
+ `method` enum('APPROVE','UPGRADE','DOWNGRADE','DELETE') NOT NULL COMMENT '操作方式',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
+
+/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
+/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+
+
+```
+
+
+### b.TestLib 服务依赖
+### c. clone test-lib代码到~/tone/code目录下
+```shell
+git clone --single-branch --branch master https://gitee.com/anolis/testlib.git ~/tone/code/testlib
+```
+### d.增加docker-compose配置
+```yaml
+# docker-compose.yaml service下增加test-lib
+ test-lib:
+ build:
+ context: code/testlib/
+ dockerfile: Dockerfile
+ args:
+ APP_NAME: test-lib
+ ENV: daily
+ image: test-lib:latest
+ ports:
+ - "8005:8005"
+ depends_on:
+ - mysql
+ - redis
+ environment:
+ <<: *common-variables
+ # db
+ db_url: mysql+aiomysql://${db_user}:{db_password}@mysql:3306/test-lib
+ # redis
+ redis_url: redis://:${redis_password}@redis:6379/10
+ # app
+ tone_host: http://${server_ip}:8080/
+ tone_token: tone_token
+ tone_user_name: tone_user_name
+ main_domain: http://${server_ip}:8005
+ oss_url: http://${server_ip}:8005
+```
+#### e.重启服务
+```shell
+docker-compose -f ~/tone/docker-compose.yaml up --build -d
+```
+## 7. 独立部署 FAQ
+https://tone.openanolis.cn/help_doc/12
\ No newline at end of file
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/test.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/test.md"
new file mode 100644
index 0000000000000000000000000000000000000000..b09df7d02fee342106c45e78485a992609d67bdb
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/test.md"
@@ -0,0 +1,70 @@
+# 一级标题
+## 二级标题
+### 三级标题
+**粗体文本**
+
+__cuti__
+
+*斜体文本*
+
+_xieti_
+
+下划线
+
+~~删除线~~
+
+上标:Xy
+
+下标:An
+
+> 引用文本
+- 无序列表项1
+ - 第二层
+- 无序列表项2
+* * *
+1. 有序列表项1
+2. 有序列表项2
+---
+[链接文本](https://gitee.com/suli01/community/edit/master/sig/T-One/content/%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97/%E7%94%A8%E6%88%B7%E8%81%86%E5%90%AC/test.md)
+
+链接名称
+
+'''python
+def hello_world():
+ print("Hello, world!")
+
+
+
+| 列1 | 列2 | 列3 |
+| --- | --- | --- |
+| 单元格1 | 单元格2 | 单元格3 |
+| 单元格4 | 单元格5 | 单元格6 |
+
+
+| 左对齐 | 居中对齐 | 右对齐 |
+|:-----|:------:|------:|
+| 文本 | 文本 | 文本 |
+
+
+
+
+
+ 值班人员 |
+ 星期一 |
+ 星期二 |
+ 星期三 |
+
+
+ 张三 |
+ 李四 |
+ 王五 |
+
+
+
+- [ ] :待完成事项
+
+- [x] :已完成事项
+
+
+

+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/test002.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/test002.md"
new file mode 100644
index 0000000000000000000000000000000000000000..b72908564d0b1c392ec06a1882232260fdbd34ce
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/test002.md"
@@ -0,0 +1,73 @@
+# 一级标题
+## 二级标题
+### 三级标题
+**粗体文本**
+
+__cuti__
+
+*斜体文本*
+
+_xieti_
+
+下划线
+
+~~删除线~~
+
+上标:Xy
+
+下标:An
+
+> 引用文本
+- 无序列表项1
+ - 第二层
+- 无序列表项2
+* * *
+1. 有序列表项1
+2. 有序列表项2
+---
+[链接文本](https://gitee.com/suli01/community/edit/master/sig/T-One/content/%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97/%E7%94%A8%E6%88%B7%E8%81%86%E5%90%AC/test.md)
+
+链接名称
+
+'''python
+def hello_world():
+ print("Hello, world!")
+
+
+| 列1 | 列2 | 列3 |
+| --- | --- | --- |
+| 单元格1 | 单元格2 | 单元格3 |
+| 单元格4 | 单元格5 | 单元格6 |
+
+
+| 左对齐 | 居中对齐 | 右对齐 |
+|:-----|:------:|------:|
+| 文本 | 文本 | 文本 |
+
+
+
+
+
+ 值班人员 |
+ 星期一 |
+ 星期二 |
+ 星期三 |
+
+
+ 张三 |
+ 李四 |
+ 王五 |
+
+
+
+- [ ] :待完成事项
+| 列1 | 列2 | 列3 |
+| --- | --- | --- |
+| 单元格1 | 单元格2 | 单元格3 |
+| 单元格4 | 单元格5 | 单元格6 |
+
+- [x] :已完成事项
+
+
+

+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/test003.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/test003.md"
new file mode 100644
index 0000000000000000000000000000000000000000..41e1c3d0956cd79016fcfc77744fd6175e5a60ca
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/test003.md"
@@ -0,0 +1,80 @@
+# 一级标题
+## 二级标题
+### 三级标题
+**粗体文本**
+
+__cuti__
+
+*斜体文本*
+
+_xieti_
+
+下划线
+
+~~删除线~~
+
+上标:Xy
+
+下标:An
+
+> 引用文本
+- 无序列表项1
+ - 第二层
+- 无序列表项2
+* * *
+1. 有序列表项1
+2. 有序列表项2
+---
+[链接文本](https://gitee.com/suli01/community/edit/master/sig/T-One/content/%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97/%E7%94%A8%E6%88%B7%E8%81%86%E5%90%AC/test.md)
+
+链接名称
+
+'''python
+def hello_world():
+ print("Hello, world!")
+
+
+
+| 列1 | 列2 | 列3 |
+| --- | --- | --- |
+| 单元格1 | 单元格2 | 单元格3 |
+| 单元格4 | 单元格5 | 单元格6 |
+| 左对齐 | 居中对齐 | 右对齐 |
+|:-----|:------:|------:|
+| 文本 | 文本 | 文本 |
+
+
+
+
+
+ 值班人员 |
+ 星期一 |
+ 星期二 |
+ 星期三 |
+
+
+ 张三 |
+ 李四 |
+ 王五 |
+
+
+| 左对齐 | 居中对齐 | 右对齐 |
+|:-----|:------:|------:|
+| 文本 | 文本 | 文本 |
+
+- [ ] :待完成事项
+| 列1 | 列2 | 列3 |
+| --- | --- | --- |
+| 单元格1 | 单元格2 | 单元格3 |
+| 单元格4 | 单元格5 | 单元格6 |
+- [ ] :待完成事项2
+| 列1 | 列2 | 列3 |
+| --- | --- | --- |
+| 单元格1 | 单元格2 | 单元格3 |
+| 单元格4 | 单元格5 | 单元格6 |
+
+- [x] :已完成事项
+
+
+

+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/test004.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/test004.md"
new file mode 100644
index 0000000000000000000000000000000000000000..8cd3daee888105c0de2a4e97fd250125bad5c010
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/test004.md"
@@ -0,0 +1,80 @@
+# 一级标题
+## 二级标题
+### 三级标题
+**粗体文本**
+
+__cuti__
+
+*斜体文本*
+
+_xieti_
+
+下划线
+
+~~删除线~~
+
+上标:Xy
+
+下标:An
+
+> 引用文本
+- 无序列表项1
+ - 第二层
+- 无序列表项2
+* * *
+1. 有序列表项1
+2. 有序列表项2
+---
+[链接文本](https://gitee.com/suli01/community/edit/master/sig/T-One/content/%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97/%E7%94%A8%E6%88%B7%E8%81%86%E5%90%AC/test.md)
+
+链接名称
+
+'''python
+def hello_world():
+ print("Hello, world!")
+
+
+
+| 列1 | 列2 | 列3 |
+| --- | --- | --- |
+| 单元格1 | 单元格2 | 单元格3 |
+| 单元格4 | 单元格5 | 单元格6 |
+| 左对齐 | 居中对齐 | 右对齐 |
+|:-----|:------:|------:|
+| 文本 | 文本 | 文本 |
+
+
+
+
+
+ 值班人员 |
+ 星期一 |
+ 星期二 |
+ 星期三 |
+
+
+ 张三 |
+ 李四 |
+ 王五 |
+
+
+| 左对齐 | 居中对齐 | 右对齐 |
+|:-----|:------:|------:|
+| 文本 | 文本 | 文本 |
+
+- [ ] :待完成事项
+| 列1 | 列2 | 列3 |
+| --- | --- | --- |
+| 单元格1 | 单元格2 | 单元格3 |
+| 单元格4 | 单元格5 | 单元格6 |
+- [ ] :待完成事项2
+ | 列1 | 列2 | 列3 |
+ | --- | --- | --- |
+ | 单元格1 | 单元格2 | 单元格3 |
+ | 单元格4 | 单元格5 | 单元格6 |
+
+- [x] :已完成事项
+
+
+

+
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/test005.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/test005.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ede9631c48e21f0c4e6677d1a5df93bce9fe4ae7
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/test005.md"
@@ -0,0 +1,12 @@
+HCT密码计算套件的目录结构如下: 阿斯顿法师打发斯蒂芬 44444444444444444444444444444444444444444444444444444 hygon-devkit/
+
+├─ hct
+├──pkg
+│ ├── hct_1.0.0.20230224_rc
+│ ├── hct_1.0.1.20230512_rc
+│ └── hct_1.1.0.20230730_rc
+│
+└── README.md
+* pkg目录:内含各版本hct密码计算套件。
+
+* README.md文件:有关HCT的简单情况。
\ No newline at end of file
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md"
new file mode 100644
index 0000000000000000000000000000000000000000..d0a3a7f08baab2c20bc46fc52570530781997763
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md"
@@ -0,0 +1,2 @@
+# hello
+
\ No newline at end of file
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/\350\201\206\345\220\254.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/\350\201\206\345\220\254.md"
new file mode 100644
index 0000000000000000000000000000000000000000..e5d110a57b01266616a91010b0b0032dcff2c5c1
--- /dev/null
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\224\250\346\210\267\346\214\207\345\215\2272/\347\224\250\346\210\267\350\201\206\345\220\254/\350\201\206\345\220\254.md"
@@ -0,0 +1,2 @@
+# hello, 欢迎来到聆听 .md
+## 阿斯顿发射点
\ No newline at end of file
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\244\276\345\214\272\347\240\224\345\217\221\351\241\271\347\233\256/\345\206\205\346\240\270\350\260\203\346\265\213/Ftrace_osnoise_\344\273\243\347\240\201\345\210\206\346\236\220.md" "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\244\276\345\214\272\347\240\224\345\217\221\351\241\271\347\233\256/\345\206\205\346\240\270\350\260\203\346\265\213/Ftrace_osnoise_\344\273\243\347\240\201\345\210\206\346\236\220.md"
index d8d8d5f7ea67371721d640d941991d8ea0ad4191..b66bf0b7b6301cee323eacf33ae1b05836ebccda 100644
--- "a/sig/Anolis\350\277\201\347\247\273SIG/content/\347\244\276\345\214\272\347\240\224\345\217\221\351\241\271\347\233\256/\345\206\205\346\240\270\350\260\203\346\265\213/Ftrace_osnoise_\344\273\243\347\240\201\345\210\206\346\236\220.md"
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/content/\347\244\276\345\214\272\347\240\224\345\217\221\351\241\271\347\233\256/\345\206\205\346\240\270\350\260\203\346\265\213/Ftrace_osnoise_\344\273\243\347\240\201\345\210\206\346\236\220.md"
@@ -1,7 +1,7 @@

-前面一篇文章中,我们简要的介绍了一下osnoise的相关信息,本篇文章主要针对其源代码进行分析阐述。
+前面一篇文章中,我们简要的osnoise的相关信息,本篇文章主要针对其源代码进行分析阐述。
@@ -84,7 +84,7 @@ osnoise用来记录结果的主要数据结构为`struct osnoise_variables`其
## 2.1 注册trace\_point
-如第一篇文章所述,osnoise引入了一组trace\_point。通过这些trace\_point,开发人员可以获取噪声的详细信息。注册trace\_point的代码如下(以irq\_noise为例):
+如第一篇,osnoise引入了一组trace\_point。通过这些trace\_point,开发人员可以获取噪声的详细信息。注册trace\_point的代码如下(以irq\_noise为例):
diff --git "a/sig/Anolis\350\277\201\347\247\273SIG/sig-info.yaml" "b/sig/Anolis\350\277\201\347\247\273SIG/sig-info.yaml"
index ad6539722fa68ca45bef873df5193721b0ff958f..3d7048b1f2a64c104f7d76d60fb25f0dab715c84 100644
--- "a/sig/Anolis\350\277\201\347\247\273SIG/sig-info.yaml"
+++ "b/sig/Anolis\350\277\201\347\247\273SIG/sig-info.yaml"
@@ -5,6 +5,7 @@ description: OpenAnolis作为一个新的OS开源社区,为了用户能够更
en_description: As a new OS open source community, Anolis OS needs to provide migration guidance and migration tools for migrating from other OS to Anolis OS i
mailing_list: os@lists.openanolis.cn
meeting_url: https://openanolis.cn
+meeting_minutes_url: https://www.openeuler.org/zh/sig/sig-detail/?name=Kernel
maintainers:
- openanolis_id: ceshi002
gitee_id:
diff --git "a/sig/Cloud Kernel/content/\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227/\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227\347\233\256\345\275\225.md" "b/sig/Cloud Kernel/content/\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227/\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227\347\233\256\345\275\225.md"
new file mode 100644
index 0000000000000000000000000000000000000000..a802869021c760e7716c609a20c415c30a1c8983
--- /dev/null
+++ "b/sig/Cloud Kernel/content/\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227/\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227\347\233\256\345\275\225.md"
@@ -0,0 +1,26 @@
+
+### [【1】Anolis OS环境搭建教程](https://openanolis.cn/sig/Cloud-Kernel/doc/721476209221304399)
+
+### [【2】订阅Cloud Kernel邮件列表](https://openanolis.cn/sig/Cloud-Kernel/doc/721476296169226335)
+
+### [【3-1】内核编译安装 - Make方式](https://openanolis.cn/sig/Cloud-Kernel/doc/721476224463405137)
+
+### [【3-2】内核编译安装 - RPM包方式](https://openanolis.cn/sig/Cloud-Kernel/doc/721476230897467475)
+
+### [【3-3】内核编译安装 - intree模块编译](https://openanolis.cn/sig/Cloud-Kernel/doc/796036400039221309)
+
+### [【4-0】Cloud Kernel开发基本流程](https://openanolis.cn/sig/Cloud-Kernel/doc/721476280021155931)
+
+### [【4-1】向Cloud Kernel报告BUG](https://openanolis.cn/sig/Cloud-Kernel/doc/721476248891031637)
+
+### [【4-2】Cloud Kernel补丁规范](https://openanolis.cn/sig/Cloud-Kernel/doc/721476251004960855)
+
+### [【4-3】PR(Pull Request)规范](https://openanolis.cn/sig/Cloud-Kernel/doc/721476253496377433)
+
+### [【4-4】Cloud Kernel 研发规约(必读)](https://openanolis.cn/sig/Cloud-Kernel/doc/860616877348361648)
+
+### [【5】向Cloud Kernel报告CVE](https://openanolis.cn/sig/Cloud-Kernel/doc/721476285859627101)
+
+### [【6】Cloud Kernel仓库代码管理](https://openanolis.cn/sig/Cloud-Kernel/doc/721476298165715041)
+
+### [【7】从Cloud Kernel cherry-pick补丁的要求](https://openanolis.cn/sig/Cloud-Kernel/doc/831592015795327880)
\ No newline at end of file
diff --git "a/sig/Cloud Kernel/content/\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227/\351\276\231\350\234\245 ANCK 5.10 \345\200\232\345\244\251\345\271\263\345\217\260 MPAM \346\265\213\350\257\225\346\212\245\345\221\212.md" "b/sig/Cloud Kernel/content/\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227/\351\276\231\350\234\245 ANCK 5.10 \345\200\232\345\244\251\345\271\263\345\217\260 MPAM \346\265\213\350\257\225\346\212\245\345\221\212.md"
index b3230c28ce258110ce76f3dd8cbfa7c1c036a7e2..13d6e53eabba74fc04fc32d6eb55a314bd236e13 100644
--- "a/sig/Cloud Kernel/content/\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227/\351\276\231\350\234\245 ANCK 5.10 \345\200\232\345\244\251\345\271\263\345\217\260 MPAM \346\265\213\350\257\225\346\212\245\345\221\212.md"
+++ "b/sig/Cloud Kernel/content/\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227/\351\276\231\350\234\245 ANCK 5.10 \345\200\232\345\244\251\345\271\263\345\217\260 MPAM \346\265\213\350\257\225\346\212\245\345\221\212.md"
@@ -998,4 +998,18 @@ RIS>1时无法写入
-Reserved
\ No newline at end of file
+Reserved
+
+---------------------------------------------------------------------
+
+
+333333333333333333333333333333
+
+
+T-One 系统的相关材料:
+
+部署手册(SIG):https://openanolis.cn/sig/t-one/doc/477143281756406096
+
+社区版系统链接:https://tone.openanolis.cn/
+
+T-One 帮助文档:https://tone.openanolis.cn/help_doc/2
\ No newline at end of file
diff --git a/sig/Cloud Kernel/sig-info.yaml b/sig/Cloud Kernel/sig-info.yaml
index cb917ea79940d89b2558af6f8aefd4923e61ddaa..f271c5c2b6b1f56fec139def68d4d9eb5e013b71 100644
--- a/sig/Cloud Kernel/sig-info.yaml
+++ b/sig/Cloud Kernel/sig-info.yaml
@@ -11,9 +11,9 @@ maintainers:
name:
organization:
email:
-- openanolis_id:
- gitee_id:
- name:
+- openanolis_id: ceshi001
+ gitee_id: ceshi001
+ name: ceshi001
- openanolis_id:
gitee_id:
name:
diff --git a/sig/T-One-copy2/README.en.md b/sig/T-One-copy2/README.en.md
new file mode 100644
index 0000000000000000000000000000000000000000..831cee37e721fa46cb1c71f1fdaf8fd244ac750e
--- /dev/null
+++ b/sig/T-One-copy2/README.en.md
@@ -0,0 +1,57 @@
+## SIG Home
+
+https://openanolis.cn/sig/t-one
+
+## SIG Mission
+T-One SIG focus on building a one station test system, to fully support OpenAnolis community test activities.
+
+The main activities of this SIG are:
+1. Explore excellent solutions, collect requirements by the community, design and plan direction on the test platform.
+2. Develop and maint T-One/Testfarm to support testing tasks by the community.
+3. Make T-One open-source, attract develpers by the community, provide testing services for community developers and cooperative enterprises此处有中文.
+
+## T-One Link
+T-One:https://tone.openanolis.cn/
+
+Testfarm:https://testfarm.openanolis.cn/
+
+## Members
+| Member | Role |
+| ------------ | ------------ |
+| [yongchao](https://gitee.com/zy_chao) | maintainer |
+| vosamowho | maintainer |
+| wjn740 | maintainer |
+| suqingming | maintainer |
+| jacob2021 | maintainer |
+| fuyong | maintainer |
+| wenlylinux | contributor |
+| zhangxuefeng | contributor |
+| wb-cy860729 | contributor |
+| jpt2021 | contributor |
+| woohello | contributor |
+| as461177513 | contributor |
+| vosamowho | contributor |
+
+## SIG Repositories
+
+Source code repositories:
+- https://gitee.com/anolis/testfarm
+- https://gitee.com/anolis/testfarm-front
+- https://gitee.com/anolis/tone-web
+- https://gitee.com/anolis/tone-runner
+- https://gitee.com/anolis/tone-agent
+- https://gitee.com/anolis/tone-agent-proxy
+- https://gitee.com/anolis/tone-agent-front
+- https://gitee.com/anolis/tone-front
+- https://gitee.com/anolis/tone-deploy
+- https://gitee.com/anolis/tone-cli
+- https://gitee.com/anolis/tone-storage
+
+
+## Meetings
+
+## Chat GROUP
+
+欢迎使用钉钉扫码入群
+
+
\ No newline at end of file
diff --git a/sig/T-One-copy2/README.md b/sig/T-One-copy2/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..9c662bcc3a1b4336f320a9478aecb1b010f88b98
--- /dev/null
+++ b/sig/T-One-copy2/README.md
@@ -0,0 +1,56 @@
+## SIG主页
+
+https://openanolis.cn/sig/t-one
+
+## SIG目标
+T-One兴趣组主要目标是建立OpenAnolis社区的质量保障基础设施(包括但不限于一站式的自动化测试平台T-One/Testfarm,Bisect缺陷定位工具等各类测试平台), 支持OpenAnolis社区的各类测试活动;此SIG组的主要活动有:
+1. 探索业界在测试工具方面的优秀方案,同时结合社区在测试方面的需求,设计规划测试工具的后续方向。
+2. 开发并维护相关测试工具,支撑社区的各类测试活动。....
+3. 开源相关测试工具,吸引社区的开发力量,并为社区开发者及合作企业提供测试服务。
+
+## 平台链接
+T-One:https://tone.openanolis.cn/
+
+Testfarm:https://testfarm.openanolis.cn/
+
+
+## 成员列表
+| 成员 | 角色 |
+| ------------ | ------------ |
+| [yongchao](https://gitee.com/zy_chao) | maintainer |
+| vosamowho | maintainer |
+| wjn740 | maintainer |
+| suqingming | maintainer |
+| jacob2021 | maintainer |
+| fuyong | maintainer |
+| wenlylinux | contributor |
+| zhangxuefeng | contributor |
+| wb-cy860729 | contributor |
+| jpt2021 | contributor |
+| woohello | contributor |
+| as461177513 | contributor |
+| vosamowho | contributor |
+
+## SIG仓库
+
+Source code repositories:
+- https://gitee.com/anolis/testfarm
+- https://gitee.com/anolis/testfarm-front
+- https://gitee.com/anolis/tone-web
+- https://gitee.com/anolis/tone-runner
+- https://gitee.com/anolis/tone-agent
+- https://gitee.com/anolis/tone-agent-proxy
+- https://gitee.com/anolis/tone-agent-front
+- https://gitee.com/anolis/tone-front
+- https://gitee.com/anolis/tone-deploy
+- https://gitee.com/anolis/tone-cli
+- https://gitee.com/anolis/tone-storage
+
+## 小组例会
+双周会,采用线上会议形式
+
+## 钉钉群
+
+欢迎使用钉钉扫码入群
+
+
\ No newline at end of file
diff --git a/sig/T-One-copy2/assets/Dingtalk_20240614165831.jpg b/sig/T-One-copy2/assets/Dingtalk_20240614165831.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..925bf2945891170613821e8e7dbc9e4206d17c8d
Binary files /dev/null and b/sig/T-One-copy2/assets/Dingtalk_20240614165831.jpg differ
diff --git a/sig/T-One-copy2/assets/dingding_group.jpeg b/sig/T-One-copy2/assets/dingding_group.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..f70925989bcb204f9f3c0bd32d79775df2a12bfd
Binary files /dev/null and b/sig/T-One-copy2/assets/dingding_group.jpeg differ
diff --git "a/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/1\346\234\210test" "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/1\346\234\210test"
new file mode 100644
index 0000000000000000000000000000000000000000..8c388782d43faeeb78831c1469913f99ec84787a
--- /dev/null
+++ "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/1\346\234\210test"
@@ -0,0 +1,2 @@
+test
+0228
\ No newline at end of file
diff --git "a/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/2\346\234\210test" "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/2\346\234\210test"
new file mode 100644
index 0000000000000000000000000000000000000000..479dbaffc47cd599a84dc580c53f191a8bb6a70f
--- /dev/null
+++ "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/2\346\234\210test"
@@ -0,0 +1,2 @@
+test
+顶顶顶顶顶
\ No newline at end of file
diff --git "a/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/3\346\234\210test" "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/3\346\234\210test"
new file mode 100644
index 0000000000000000000000000000000000000000..30d74d258442c7c65512eafab474568dd706c430
--- /dev/null
+++ "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/3\346\234\210test"
@@ -0,0 +1 @@
+test
\ No newline at end of file
diff --git "a/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202203-3).md" "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202203-3).md"
new file mode 100644
index 0000000000000000000000000000000000000000..3bf59177bf7eda2dd9c2b3d04d09318fc818ae5b
--- /dev/null
+++ "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202203-3).md"
@@ -0,0 +1,20 @@
+## 会议主题
+测试管理系统TestLib的方案讨论
+
+## 会议时间
+2022.03.16 10:00-11:00
+
+## 参会人
+
+- 参会方:来自电子五所(赛宝实验室)和阿里云的社区爱好者
+- 参会人:yongchao、qingming、wjn740、as461177513、VosAmoWho 等等
+
+## 会议记要
+
+1. 对齐五所提出的方案扩展需求,主要是字段的扩展以及流程上适当进行松耦合
+ - 设计对象:需要考虑测试用例套与测试需求的关系,测试结果与测试执行记录集的关系,测试方案的扩展等
+ - 评审相关:测试用例、测试方案、测试结果
+ - 流程上:主要对象之间需要进行适当的弱耦合
+ - 平台输出:需要考虑测试用例及测试用例执行记录集这两块内容
+2. 讨论后续社区合作、运营等方式
+3. 后续yongchao会结合这次新增扩展需求进行设计上的优化并与大家对齐
\ No newline at end of file
diff --git "a/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202204-1).md" "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202204-1).md"
new file mode 100644
index 0000000000000000000000000000000000000000..6bec3ab07a69029ad4674e49014d4cc7394c019d
--- /dev/null
+++ "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202204-1).md"
@@ -0,0 +1,22 @@
+## 会议主题
+测试管理系统TestLib演示及需求讨论
+
+## 会议时间
+2022.04.28 11:00-12:00
+
+## 参会人
+- 参会方:来自电子五所(赛宝实验室)和阿里云的社区爱好者
+- 参会人:yongchao、wjn740、as461177513、VosAmoWho 等等
+## 会议记要
+
+1. 我们演示了testlib目前全部功能,包括大纲,需求,方案,用例,任务,设备等等功能,强调通用性。
+ - 测试方案已经跟测试用例和测试任务打通。
+ - 测试用例跟t-one打通,测试任务结果跟t-one打通中。
+ - 测试设备状态跟t-one打通中。
+ - 介绍目前规划:用户权限,自定义字段,测试任务结果打通,测试方案维度的报告,还有系统配置等。
+2. 讨论下阶段主要需求,主要考虑两个方面:
+ - 希望演示的时候打通台式机的一个**完整测试流程打通**(大纲,需求,方案,任务,报告等)。
+ - 有一个台式机的**测试报告**可以看。
+3. 演示发现的主要问题:
+ - 方案关联的任务没限制,用例管理信息问题,任务结果问题,还有方案维度的报告结果。
+
diff --git "a/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202205-1).md" "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202205-1).md"
new file mode 100644
index 0000000000000000000000000000000000000000..8139fbeeb65e94b80649d1a9862546164e508212
--- /dev/null
+++ "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202205-1).md"
@@ -0,0 +1,36 @@
+## 会议主题
+测试管理系统TestLib开发进度同步、演示、以及问题交流
+## 会议时间
+2022.05.20 10:00-11:00
+## 参会人
+
+- 参会方:来自电子五所(赛宝实验室)和阿里云的社区爱好者
+- 参会人:yongchao、VosAmoWho、juexiao、wjn740、zhizhisheng、as461177513 等等
+## 会议记要
+
+1. yongchao和VosAmoWho 与五所同学演示了testlib相关功能,着重介绍了与上次demo的开发重点变化,主要是测试方案及报告,测试用例的优化,测试任务及结果录入,以及系统配置等模块的优化。
+1. 大家一起交流了 testlib 以及 t-one的相关问题:
+ - T-One相关问题:
+ - 文档指导类:
+ - 升级debian相关步骤,涉及toneagent, tone配置,tone-cli等。
+ - 同步本地用例出现故障, 以及系统同步用例相关的配置。
+ - 测试机器:内网集群与内网单机的区别,如何配置等
+ - 测试工具的管理问题:
+ - 不同的脚本都通过git进行管理出现的问题,离线模式介绍。
+ - 测试工具的管理,版本管理如何做。
+ - TestLib相关问题:
+ - 和tone的联动需要完善。
+ - 用例结果:测试用例 及 结果 通过excel 导入及导出;关联任务/跳过任务
+ - 测试报告:需要显示测试设备信息,后面考虑软硬件信息的提取及展示
+3. 目前系统已经发布上线,可以给五所同学配置权限即可进行试用。
+3. 五所提出的5月25日正式演示时间点不变,主要演示需求点还是:
+ - 希望演示的时候打通台式机的一个**完整测试流程打通**(大纲,需求,方案,任务,报告等)。
+ - 有一个台式机的**测试报告**可以看。
+5. 后续开发重点主要是:
+ - 权限管控体系完善,方便社区线上使用。
+ - 与t-one对接起来,固定ws、project、job类型等,自动执行并同步用例。
+ - 手动录入用例结果、及设备的优化。
+ - 测试方案报告及结果中设备等的展示优化。
+
+
+
diff --git "a/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202306-1).md" "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202306-1).md"
new file mode 100644
index 0000000000000000000000000000000000000000..4274bb1bf5ec4ed2977f3e2705795b6743c76f6d
--- /dev/null
+++ "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202306-1).md"
@@ -0,0 +1,24 @@
+
+### 会议主题
+项目例会
+
+### 会议时间
+2023.06.08 10:30-11:30
+
+### 参会人
+参会人:yongchao,fubing,ylsong, zhizhisheng,suchunyang,T-One项目小组
+
+### 会议纪要
+
+1. T-One最新进展同步
+- runner2 性能优化
+- toneagent新增日志自动拆分、自动清理功能
+- 同步用例逻辑变更,不依赖同步用例的机器
+- 用例管理批量编辑字段优化
+- 时序分析中性能分析、新建 Job 提交、消息通知相关慢接口优化。
+- 新增接口可查询某个产品下的 Job ID。
+
+2. 需求反馈和意见收集
+- 物理机迁移的方案:主要关心数据的可迁移
+- 版本升级原地升级的方案:升级的便捷性
+- 社区版和开源部署版的数据节点间的互相同步数据
diff --git "a/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202307-1).md" "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202307-1).md"
new file mode 100644
index 0000000000000000000000000000000000000000..e59dcd0f34c5345e035f92797bb28fe15875513e
--- /dev/null
+++ "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202307-1).md"
@@ -0,0 +1,26 @@
+
+### 会议主题
+项目例会
+
+### 会议时间
+2023.06.08 10:30-11:30
+
+### 参会人
+参会人:yongchao,fubing,ylsong, zhizhisheng,suchunyang,T-One项目小组
+
+### 会议纪要
+
+1. T-One最新进展同步
+- runner2 性能优化
+- toneagent新增日志自动拆分、自动清理功能
+- 同步用例逻辑变更,不依赖同步用例的机器
+- 用例管理批量编辑字段优化
+- 时序分析中性能分析、新建 Job 提交、消息通知相关慢接口优化。
+- 新增接口可查询某个产品下的 Job ID。
+- [这是一个链接]: http://www.z01.com/ "这里是链接的title内容
+这是一个链接 [这是逐浪软件官网链接](http://www.z01.com/ "欢迎访问逐浪软件官网")
+2. 需求反馈和意见收集
+- 物理机迁移的方案:主要关心数据的可迁移
+- 版本升级原地升级的方案:升级的便捷性
+- 社区版和开源部署版的数据节点间的互相同步数据
+- 测试验证
diff --git "a/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232\346\265\213\350\257\225\346\226\207\344\273\266.md" "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232\346\265\213\350\257\225\346\226\207\344\273\266.md"
new file mode 100644
index 0000000000000000000000000000000000000000..1732d3136c0736b3ee67555e8a44c3aba0370283
--- /dev/null
+++ "b/sig/T-One-copy2/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232\346\265\213\350\257\225\346\226\207\344\273\266.md"
@@ -0,0 +1,4 @@
+### 收尾验证
+这是收尾,验证同步作者信息
+### 验证history
+2023年11月16日10:49:13
\ No newline at end of file
diff --git "a/sig/T-One-copy2/content/\345\274\200\345\217\221\346\211\213\345\206\214/ToneAgent\347\274\226\350\257\221\346\211\223\345\214\205\346\211\213\345\206\214.md" "b/sig/T-One-copy2/content/\345\274\200\345\217\221\346\211\213\345\206\214/ToneAgent\347\274\226\350\257\221\346\211\223\345\214\205\346\211\213\345\206\214.md"
new file mode 100644
index 0000000000000000000000000000000000000000..0949b8e70e5300f1cf752ca0259c1d30317b932b
--- /dev/null
+++ "b/sig/T-One-copy2/content/\345\274\200\345\217\221\346\211\213\345\206\214/ToneAgent\347\274\226\350\257\221\346\211\223\345\214\205\346\211\213\345\206\214.md"
@@ -0,0 +1,63 @@
+# 1. ToneAgent编译
+
+## 1.1 环境准备
+Go 1.17 及以上版本([下载地址](https://go.dev/dl/))
+
+## 1.2 下载ToneAgent
+ git clone git@gitee.com:anolis/tone-agent.git
+ cd tone-agent
+
+## 1.3 编译
+`-o` 后面是二进制的名称
+
+### 1.3.1 编译 AMD64的二进制
+ GOOS=linux GOARCH=amd64 go build -o toneagent-amd64-v102
+
+### 1.3.2 编译 ARM 的二进制
+ GOOS=linux GOARCH=arm64 go build -o toneagent-amd64-v102
+
+# 2. Linux环境二进制打包
+
+## 2.1 RPM包制作
+
+### 2.1.1 RPM环境准备
+ sudo su -c bash # 使用bash
+ yum install rpmdevtools rpmdevtools # 安装rpm打包工具
+
+### 2.1.2 打包RPM包
+ rpmdev-setuptree # 创建目录,会在用户目录下创建rpmbuild文件夹 ~/rpmbuild
+ cd # 返回用户目录
+ vi rpmbuild/SPEC/toneagent.spec # 修改创建spec的模板文件
+ mkdir rpmbuild/BUILDROOT/toneagent-0.0.1-AMD
+ cp ${二进制路径} rpmbuild/BUILDROOT/toneagent-0.0.1-AMD/ # 拷贝二进制到RPM目录
+ cd rpmbuild/SPEC/
+ rpmbuild -bb toneagent.spec # 构建rpm包
+
+### 2.1.3 RPM安装及启动
+ sudo yum -y install ${toneagent包位置} # 安装
+ sudo systemctl start toneagent # 启动
+
+## 2.2 DEB包制作
+
+### 2.1.1 环境准备
+ sudo apt instsll -y dpkg # 使用二进制打包,只需要安装这个包
+ sudo apt install -y dpkg build-essential devscripts quilt dh-make git # 扩展安装
+
+### 2.1.2 打包DEB包
+ mkdir toneagent.work
+ cd toneagent.work
+ mkdir -pv toneagent_0.0.1_amd64/{DEBIAN,bin}
+ cp ${tone-agent二进制} toneagent_0.0.1_amd64/bin/
+ echo "Package: toneagent
+ Version: 1.0
+ Architecture: arm
+ Maintainer: alibaba
+ Installed-Size: 100
+ Depends:
+ Priority: optional
+ Description: toneagent for SUNXI devices (A10,A20 ...),example is Cubieboard.
+ " >> toneagent_0.0.1_amd64/DEBIAN/control
+ dpkg -b toneagent_0.0.1_amd64 toneagent_0.0.1_amd64.deb
+
+### 2.1.3 DEB安装
+ dpkg -i toneagent_0.0.1_amd64.deb
diff --git "a/sig/T-One-copy2/content/\345\274\200\345\217\221\346\211\213\345\206\214/test.md" "b/sig/T-One-copy2/content/\345\274\200\345\217\221\346\211\213\345\206\214/test.md"
new file mode 100644
index 0000000000000000000000000000000000000000..5e3440a90ea8c55b2ed07c689aef9fba6fb9c424
--- /dev/null
+++ "b/sig/T-One-copy2/content/\345\274\200\345\217\221\346\211\213\345\206\214/test.md"
@@ -0,0 +1,16 @@
+HCT密码计算套件的目录结构如下:
+阿斯顿法师打发斯蒂芬
+44444444444444444444444444444444444444444444444444444
+hygon-devkit/
+
+ ├─ hct
+ ├──pkg
+ │ ├── hct_1.0.0.20230224_rc
+ │ ├── hct_1.0.1.20230512_rc
+ │ └── hct_1.1.0.20230730_rc
+ │
+ └── README.md
+
+\* pkg目录:内含各版本hct密码计算套件。
+
+\* README.md文件:有关HCT的简单情况。
\ No newline at end of file
diff --git "a/sig/T-One-copy2/content/\345\274\200\345\217\221\346\211\213\345\206\214/\345\257\271\345\244\226\346\234\215\345\212\241API.md" "b/sig/T-One-copy2/content/\345\274\200\345\217\221\346\211\213\345\206\214/\345\257\271\345\244\226\346\234\215\345\212\241API.md"
new file mode 100644
index 0000000000000000000000000000000000000000..6be2fe13cbb6e50e1bf41c425b239231eda209e8
--- /dev/null
+++ "b/sig/T-One-copy2/content/\345\274\200\345\217\221\346\211\213\345\206\214/\345\257\271\345\244\226\346\234\215\345\212\241API.md"
@@ -0,0 +1 @@
+参考文档:https://tone.openanolis.cn/help_doc/7
\ No newline at end of file
diff --git "a/sig/T-One-copy2/content/\345\274\200\345\217\221\346\211\213\345\206\214/\346\265\213\350\257\225\345\245\227\344\273\266\351\233\206\346\210\220\346\211\213\345\206\214.md" "b/sig/T-One-copy2/content/\345\274\200\345\217\221\346\211\213\345\206\214/\346\265\213\350\257\225\345\245\227\344\273\266\351\233\206\346\210\220\346\211\213\345\206\214.md"
new file mode 100644
index 0000000000000000000000000000000000000000..67b07c6d8e8470eef075cf75048ba3f4036edeaa
--- /dev/null
+++ "b/sig/T-One-copy2/content/\345\274\200\345\217\221\346\211\213\345\206\214/\346\265\213\350\257\225\345\245\227\344\273\266\351\233\206\346\210\220\346\211\213\345\206\214.md"
@@ -0,0 +1,282 @@
+# tone-cli介绍
+tone-cli主要用于测试套件(testsuite)的调度及运行。
+
+# 代码仓库
+https://gitee.com/anolis/tone-cli
+
+# 测试套件构成
+测试套件主要由套件本身和集成脚本构成,其中:
+
+- 测试套件可以存放于gitee或其他代码仓库,也可以是一个系统中已经包含的命令
+- 集成脚本由两部分构成:
+ - 适配脚本
+ - 测试套配置文件
+
+# 测试套件集成
+
+## 测试配置文件
+测试配置文件位于`$TONE_ROOT/conf`目录下,与适配脚本一起为测试套件服务。
+
+为了便于组织,当前根据测试类别分为`functional`,`performance`和`stress`。
+
+测试配置文件主要用于描述测试的参数,以netperf为例:
+
+ test IP runtime send_size
+ TCP_RR ipv4 60s Na
+ TCP_RR ipv4 60s 16K
+ TCP_CC ipv4 60s Na
+ TCP_CRR ipv4 60s Na
+ ...
+
+第一行描述为变量名,后续行描述的是变量的值。tone-cli会将测试套配置文件按照配置进行执行:
+
+ $ tone list netperf
+ test IP runtime send_size testconf
+ TCP_RR ipv4 60 None netperf:test=TCP_RR,IP=ipv4,runtime=60s
+ TCP_RR ipv4 60 16K netperf:test=TCP_RR,IP=ipv4,runtime=60s,send_size=16K
+ TCP_CC ipv4 60 None netperf:test=TCP_CC,IP=ipv4,runtime=60s
+ TCP_CRR ipv4 60 None netperf:test=TCP_CRR,IP=ipv4,runtime=60s
+在后续的脚本中,conf中的变量会以参数形式传递给适配脚本。
+
+> 注:
+>
+> - 没有任何变量的测试套,仍然需要创建对应名称的配置文件,保持内容为空
+> - 对于某个参数,如netperf的send_size,在某些状况下不需要传入参数,则可以置为NA
+
+## 适配脚本
+
+测试套件适配脚本需要存放于`$TONE_ROOT/tests`目录下,创建工具对应的目录,如`$TONE_ROOT/tests/netperf`。
+
+tone-cli将测试定义为以下几个阶段,可以根据需要来决定是否需要对应的阶段:
+
+- 测试套件获取
+- 测试套件编译安装
+- 测试执行
+- 结果处理
+- 测试套件卸载
+
+适配脚本需要最少包含`install.sh`,`run.sh`和`README.md`,其中:
+
+- install.sh: 定义测试套件获取、依赖包、测试套件编译及安装
+- run.sh: 定义测试执行过程,结果处理方式
+- README.md: 测试套件必要说明
+
+其他脚本可以根据需要决定,如:将结果处理脚本单独编写,在run.sh中加以引用
+
+### 测试套件获取
+
+当前支持通过URL下载或git方式获取对应的测试套:
+
+| 方式| 参数 | 说明 |举例 |
+| :--:| :---: | :---: |:---: |
+|URL下载 |WEB_URL |测试套下载地址 |WEB_URL=“https://gitee.com/anolis/tone-cli/repository/archive/master.zip”|
+|GIT仓库 |GIT_URL |git仓库地址 |GIT_URL="https://gitee.com/mirrors_HewlettPackard/netperf.git"|
+| |BRANCH |git分支| BRANCH="netperf-2.7.0"|
+
+tone-cli将根据提供的`WEB_URL`,`GIT_URL`,`BRANCH`等信息拉取对应的源代码
+
+### 举例:
+
+`netperf/install.sh`
+
+ GIT_URL="https://gitee.com/mirrors_HewlettPackard/netperf.git"
+ BRANCH="netperf-2.7.0"
+
+### 测试套件编译安装
+
+tone-cli提供的标准安装方式由以下几步:
+
+- 执行安装前额外的操作:extract_src
+- 安装依赖包:install_pkg
+- 编译:build
+- 安装:install
+
+**extract_src**
+
+用于在安装依赖包之前进行必要的准备,如centos安装epel源:
+
+ extract_src()
+ {
+ logger yum install -y epel-release
+ }
+
+**install_pkg**
+
+绝大部分状况下,不需要重写install_pkg的方法,而仅通过设置DEP_PKG_LIST的变量,tone-cli将自动进行依赖包安装。如netperf/install.sh:
+
+ DEP_PKG_LIST="automake gcc texinfo"
+
+**build和install**
+
+通常状况,build和install都需要根据测试套件进行重写。以netperf为例:
+
+ build()
+ {
+ local configure_flags=(
+ --prefix="$TONE_BM_RUN_DIR"
+ )
+ if [ "$(/usr/bin/arch)" = aarch64 ]; then
+ configure_flags+=('--build=aarch64-unknown-linux-gnu')
+ fi
+
+ export CFLAGS="-fno-strict-aliasing -fcommon"
+
+ ./autogen.sh
+ ./configure "${configure_flags[@]}"
+ make
+ }
+
+ install()
+ {
+ make install-exec
+ }
+### 测试执行
+
+测试执行被定义在`run.sh`中,主要的步骤有:
+
+- 测试准备:setup
+- 测试执行:run
+- 测试拆除:teardown
+
+以netperf为例,netperf测试可以划分为:
+
+- 启动netserver
+- 使用netperf命令进行测试
+- 拆除netserver
+
+**setup**
+
+netperf测试中,netserver启动主要逻辑为:
+
+- 判断是否设置了$SERVER,如果已设置,则认为netserver将在对应的server上执行
+- 启动netserver,启动netserver的主要逻辑在netserver.sh中体现
+
+ setup()
+ {
+ [ -n "$SERVER" ] && server=${SERVER%% *} || server=localhost
+ echo "Run netserver on host: $server"
+
+ if [ "$server" = localhost ]; then
+ source "$TONE_BM_SUITE_DIR"/netserver.sh
+ else
+ ssh $server "TONE_ROOT=$TONE_ROOT TONE_BM_RUN_DIR=$TONE_BM_RUN_DIR IP=$IP server=$server $TONE_BM_SUITE_DIR/netserver.sh"
+ fi
+ }
+
+**run**
+
+netperf测试套的执行逻辑,主要根据测试套件配置中的参数组合,设置netperf命令行参数以执行测试
+
+> 注:
+>
+> 在执行命令时,使用logger方法将netperf命令行输出写入对应的日志文件中,以备后续进行结果处理
+
+ run()
+ {
+ export PATH="$TONE_BM_RUN_DIR"/bin:$PATH
+
+ [ -n "$send_size" ] && test_options="-- -m $send_size"
+
+ opt_ip=
+ [ "$IP" = 'ipv4' ] && opt_ip='-4'
+ [ "$IP" = 'ipv6' ] && opt_ip='-6'
+ base_cmd="netperf $opt_ip -t $test -c -C -l $runtime -H $server $test_options"
+
+ # check online cpus with cpu_affinity set on multi-processor machine
+ if [ "$server" = localhost ] && [ "$(nproc)" -gt 1 ]; then
+ check_oneline_cpu
+ # the last cpu is reservered for netserver if test on single node
+ cpu_online_num=$((cpu_online_num - 1))
+ cpu_online_tpy=$(echo "$cpu_online_tpy" | awk '{$NF=""; print $0}')
+ cpu_x=$((1 % cpu_online_num))
+ [ "$cpu_x" -eq 0 ] && cpu_x=$cpu_online_num
+ mycpu=$(echo "$cpu_online_tpy" | awk -v n=$cpu_x '{print $n}')
+ test_cmd="taskset -c $(echo "$mycpu" | cut -d- -f3) $base_cmd"
+ echo "run netperf on cpu: $(echo "$mycpu" | cut -d- -f3),"\
+ "socket: $(echo "$mycpu" | cut -d- -f1),"\
+ "core_id: $(echo "$mycpu" | cut -d- -f2)"
+ else
+ test_cmd="$base_cmd"
+ fi
+
+ logger $test_cmd &
+ logger wait
+ }
+
+**teardown**
+
+netperf的teardown阶段,主要通过执行pkill命令杀死netserver进程
+
+ teardown()
+ {
+ pkill netserver
+ }
+
+**结果处理**
+tone-cli当前规定的结果规范为`key: value`,所以只要符合这个输出规范,对应的结果会被收集并存储。
+
+以netperf为例,其结果处理的`parse()`调用了一个awk脚本:
+
+ #!/usr/bin/awk -f
+
+ /^Size.*Okay.*Throughput.*Demand$/ {
+ unit = "Mbps1"
+ next
+ }
+
+ /^Size.*Throughput.*remote$/ {
+ unit = "Mbps2"
+ next
+ }
+
+ /^bytes.*secs.\s+per sec/ {
+ unit = "tps"
+ next
+ }
+
+ $8 && $0 ~ /^[ \t0-9.]+$/ {
+ if ( unit == "Mbps1" ) {
+ printf("Throughput_Mbps: %s\n",$(NF-2))
+ }
+ else if ( unit == "Mbps2" ) {
+ printf("Throughput_Mbps: %s\n",$5)
+ }
+ else{
+ printf("Throughput_%s: %s\n",unit,$6)
+ }
+ }
+
+执行完毕后会输出:
+
+ Throughput_tps: 91336.30
+
+# 公共变量
+tone-cli提供了多个公共变量用于在测试集成时使用
+
+## 测试套配置文件
+
+|变量名称| 用途| 举例|
+|:--:|:--:|:--:|
+|nr_task |设置使用的线程数,可以使用百分比形式表示,当设置为百分比时,框架会根据当前测试机CPU数量进行计算 |nr_task=1, nr_task=50%|
+|cpu_affinity |设置CPU绑定| cpupin|
+
+## 测试套适配脚本
+
+|变量名称| 用途| 举例|
+|:--:|:--:|:--:|
+|$TONE_BM_CACHE_DIR |测试套件cache目录| /tmp/tone/cache/netperf|
+|$TONE_BM_BUILD_DIR| 测试套件build目录| /tmp/tone/build/netperf|
+|$TONE_BM_RUN_DIR |测试套件run目录,可以将测试套件安装于该目录中,而不用安装到系统目录下| /tmp/tone/run/netperf|
+|$TONE_BM_RESULT_DIR |测试套件结果存放目录 |/tmp/tone/result/netperf|
+|$TONE_CURRENT_RESULT_DIR |当次运行时的结果存放目录| /tmp/tone/result/netperf/1|
+|$TONE_BM_SUITE_DIR |测试套件脚本目录| /tmp/tone/tests/netperf|
+
+# 公共函数
+
+tone-cli提供一些公共函数已方便脚本编写,公共函数主要归档于$TONE_ROOT/lib目录下,在编写脚本时可以按需引入。常用的函数有:
+
+|函数名| 文件 |用途 |举例|
+|:--:|:--:|:--:|:--:|
+|logger |lib/common.sh |记录日志 |logger netperf -t TCP_RR|
+|set_cpu_affinity_server |lib/cpu_affinity.sh |设置服务端CPU绑核,会将server绑定在最后一个CPU核上,注意,需要通过server_cmd变量进行传递 |server_cmd="netserver" [ -n "$cpu_affinity" ] && set_cpu_affinity_client logger ${server_cmd}|
+|set_cpu_affinity_client |lib/cpu_affinity.sh| 设置客户端CPU绑核,会将client绑定在第一个CPU核上,注意,需要通过client_cmd进行传递 |client_cmd="netperf -t TCP_RR" [ -n "$cpu_affinity" ] && set_cpu_affinity_client logger ${client_cmd}|
\ No newline at end of file
diff --git "a/sig/T-One-copy2/content/\346\234\210\346\212\245/202212.md" "b/sig/T-One-copy2/content/\346\234\210\346\212\245/202212.md"
new file mode 100644
index 0000000000000000000000000000000000000000..88250c901b0988fd3ca405387b290d62c3ad6602
--- /dev/null
+++ "b/sig/T-One-copy2/content/\346\234\210\346\212\245/202212.md"
@@ -0,0 +1,82 @@
+# 整体进展
+- 发布 ANCK 4.19-027 版本。
+- 初步建立了龙蜥社区第三方驱动的研发流程,并试用该流程集成了国产化网迅网卡驱动。
+- ANCK-5.10 内核产品化。
+- 成立"浪潮信息龙蜥联合实验室"。
+
+# ANCK 4.19-027 版本
+## 内核更新
+- 版本更新至 4.19.91-27
+- 重要内核缺陷及安全漏洞(CVE)修复
+- 在 namespace_unlock 中使用 synchronize_rcu_expedited 加速 rcu 宽限期,使并发启动100个 busybox 容器的速度提升19%
+- 调整 Trusted Platform Module 驱动的缓冲区大小,避免上下文切换时因内存不足报错
+- 默认使能 mq-deadline IO 调度器
+- 提升 NVMe、megaraid_sas 和 mpt3sas 三个驱动的稳定性
+- 全面支持 Aero 系列 raid 卡
+- 修复了飞腾处理器 SMMU 的硬件缺陷导致的问题
+## 自研功能
+- 支持动态开启 Group Identity 特性
+- 支持稀疏文件映射使用系统零页,减少启动虚拟机时的内存消耗
+## CVE修复列表
+详情请参考:
+- [Anolis OS 7](https://anas.openanolis.cn/errata/detail/ANSA-2023:0002)
+- [Anolis OS 8](https://anas.openanolis.cn/errata/detail/ANSA-2023:0001)
+
+重要CVE列表:
+- CVE-2021-33656
+- CVE-2021-4037
+- CVE-2021-4159
+- CVE-2022-0001
+- CVE-2022-0002
+- CVE-2022-0494
+- CVE-2022-1012
+- CVE-2022-1048
+- CVE-2022-1184
+- CVE-2022-1198
+- CVE-2022-1462
+- CVE-2022-1679
+- CVE-2022-1729
+- CVE-2022-1734
+- CVE-2022-21125
+- CVE-2022-21166
+- CVE-2022-2153
+- CVE-2022-2318
+- CVE-2022-24958
+- CVE-2022-2503
+- CVE-2022-25258
+- CVE-2022-2586
+- CVE-2022-2588
+- CVE-2022-2602
+- CVE-2022-26365
+- CVE-2022-2639
+- CVE-2022-26490
+- CVE-2022-27223
+- CVE-2022-28388
+- CVE-2022-28389
+- CVE-2022-28390
+- CVE-2022-2978
+- CVE-2022-30594
+- CVE-2022-3176
+- CVE-2022-3202
+- CVE-2022-32250
+- CVE-2022-3542
+- CVE-2022-36879
+- CVE-2022-36946
+- CVE-2022-39188
+
+# 龙蜥社区第三方驱动
+建立第三方驱动的社区研发流程:https://openanolis.cn/sig/Cloud-Kernel/doc/721476448598622343
+
+网迅网卡已经按此流程合入 ANCK :
+- 支持ANCK-5.10 10GB 网迅网卡驱动: https://gitee.com/anolis/cloud-kernel/pulls/540
+- 支持ANCK-4.19 10GB 网迅网卡驱动: https://gitee.com/anolis/cloud-kernel/pulls/709
+- 支持ANCK-4.19 1GB 网迅网卡驱动: https://gitee.com/anolis/cloud-kernel/pulls/1043
+- 支持ANCK-5.10 1GB 网迅网卡驱动: https://gitee.com/anolis/cloud-kernel/pulls/1063
+
+# 重要议题
+- 讨论并决策了将 ANCK-5.10 作为 Anolis8 的默认产品化内核,详情请点击[这里](https://gitee.com/anolis/community/blob/master/proposals/Anolis8%E4%B8%8AANCK-5.10%E4%BA%A7%E5%93%81%E5%8C%96%E7%9A%84%E6%8F%90%E8%AE%AE.md)。
+- 讨论并决策了将 ANCK-5.10 作为 Anolis23 的当前默认内核,详情请点击[这里](https://gitee.com/anolis/community/blob/master/proposals/anck-5.10%E4%BD%9C%E4%B8%BAanolis23%E7%9A%84%E5%86%85%E6%A0%B8%E9%80%89%E5%9E%8B%E7%9A%84%E6%8F%90%E8%AE%AE.md)。
+
+# 运营活动
+- [浪潮信息正式发布基于龙蜥 Anolis OS 的服务器操作系统 Inspur KOS](https://openanolis.cn/news/726244284765327879)。
+- 于2022.12.24 举办了“[龙蜥走进系列活动之走进浪潮信息 MeetUp](https://mp.weixin.qq.com/s?__biz=Mzg4MTMyMTUwMQ==&mid=2247510368&idx=1&sn=95a1d511b32670f8388745682483046a&chksm=cf655a12f812d30494be938d7bf8a46b7244711c8fb75f44e8379ab261b1fd4aeb1c8bb0805e&scene=21#wechat_redirect)",并成立了浪潮信息龙蜥联合实验室,致力于共建龙蜥社区的软硬件兼容性生态、标准建设和技术创新等。
diff --git "a/sig/T-One-copy2/content/\346\234\210\346\212\245/202301.md" "b/sig/T-One-copy2/content/\346\234\210\346\212\245/202301.md"
new file mode 100644
index 0000000000000000000000000000000000000000..85bbb428461066b1774f93d5ede99390bf2bc702
--- /dev/null
+++ "b/sig/T-One-copy2/content/\346\234\210\346\212\245/202301.md"
@@ -0,0 +1,101 @@
+# 整体进展
+
+- 发布 ANCK 5.10-013 版本。
+- 确定KABI机制整体方案。
+- 浪潮信息龙蜥联合实验室的工作事项更新。
+
+# ANCK 5.10-013 版本
+
+## 内核更新
+
+- 版本更新至 5.10.134-13
+- 重要内核缺陷及安全漏洞(CVE)修复
+- 支持用户态/dev/ioasid
+- SWIOTLB机制性能优化
+- virtio-net 打开 napi.tx 优化 TCP Small Queue 性能
+- 支持AST2600 PCIe 2D VGA Driver
+- 支持FT2500处理器
+- 支持动态开启Group identity特性
+- arm64平台默认内核启动cmdline调整
+- 添加 Compact Numa Aware (CNA) spinlock 功能支持
+- 丰富arm64的perf mem和perf c2c功能
+- fsck.xfs 支持日志恢复
+- hugetext自适应按需大页
+- 支持SGX动态内存管理
+- 使能wireguard模块
+
+## CVE修复列表
+
+详情请参考:
+
+- [Anolis OS 7](https://anas.openanolis.cn/errata/detail/ANSA-2023:0002)
+- [Anolis OS 8](https://anas.openanolis.cn/errata/detail/ANSA-2023:0001)
+
+重要CVE列表:
+
+- CVE-2021-4037
+- CVE-2022-0171
+- CVE-2022-1679
+- CVE-2022-2585
+- CVE-2022-2586
+- CVE-2022-2588
+- CVE-2022-2602
+- CVE-2022-26373
+- CVE-2022-2663
+- CVE-2022-2905
+- CVE-2022-2978
+- CVE-2022-3028
+- CVE-2022-3061
+- CVE-2022-3169
+- CVE-2022-3176
+- CVE-2022-3435
+- CVE-2022-3521
+- CVE-2022-3524
+- CVE-2022-3534
+- CVE-2022-3535
+- CVE-2022-3542
+- CVE-2022-3545
+- CVE-2022-3564
+- CVE-2022-3565
+- CVE-2022-3566
+- CVE-2022-3567
+- CVE-2022-3586
+- CVE-2022-3594
+- CVE-2022-3621
+- CVE-2022-3623
+- CVE-2022-3625
+- CVE-2022-3628
+- CVE-2022-3629
+- CVE-2022-3633
+- CVE-2022-3635
+- CVE-2022-3646
+- CVE-2022-3649
+- CVE-2022-36946
+- CVE-2022-39189
+- CVE-2022-39190
+- CVE-2022-39842
+- CVE-2022-40307
+- CVE-2022-40768
+- CVE-2022-41222
+- CVE-2022-41674
+- CVE-2022-42719
+- CVE-2022-42720
+- CVE-2022-42721
+- CVE-2022-42722
+- CVE-2022-42895
+- CVE-2022-42896
+- CVE-2022-43750
+- CVE-2022-4378
+
+# 龙蜥社区第三方驱动
+
+* 提供主流GPU在AnolisOS的Driver、CUDA、cuDNN安装测试与卸载指导文档:https://openanolis.cn/sig/AI_SIG/doc/721423765456666646
+
+# 重要议题
+
+- 调研并讨论了KABI机制的整体方案与实现细节。
+- 基于浪潮信息龙蜥联合实验室,讨论了关于整机硬件兼容性的相关事项,后续长期共建 AnolisOS 硬件兼容性标准和生态。
+
+# 运营活动
+
+- 无
diff --git "a/sig/T-One-copy2/content/\346\234\210\346\212\245/\346\234\210\346\212\245\350\257\264\346\230\216.md" "b/sig/T-One-copy2/content/\346\234\210\346\212\245/\346\234\210\346\212\245\350\257\264\346\230\216.md"
new file mode 100644
index 0000000000000000000000000000000000000000..30020428d41c0b35e0eb225c6a3b4a4a06f385a6
--- /dev/null
+++ "b/sig/T-One-copy2/content/\346\234\210\346\212\245/\346\234\210\346\212\245\350\257\264\346\230\216.md"
@@ -0,0 +1,7 @@
+- 每月的月初总结发出上月的报告,并更新到 SIG 页面,如 2022.12
+
+- 月报包含内容:
+ + 整体进展:SIG 该月的亮点特性汇总。
+ + 具体进展:SIG 该月项目的详细进展,分别展开细节。
+ + 重要议题: SIG 该月讨论的重要议题。
+ + 运营活动: SIG 该月发生的运营活动。
diff --git "a/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/000000000130_anolis.jpg" "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/000000000130_anolis.jpg"
new file mode 100644
index 0000000000000000000000000000000000000000..25e606c9c5d28fccaf9f6caa351e3720570e4162
Binary files /dev/null and "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/000000000130_anolis.jpg" differ
diff --git "a/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/T-One\346\246\202\350\277\260.md" "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/T-One\346\246\202\350\277\260.md"
new file mode 100644
index 0000000000000000000000000000000000000000..74f3dbc4638e7e414a44eba81a927b219691bc3a
--- /dev/null
+++ "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/T-One\346\246\202\350\277\260.md"
@@ -0,0 +1,30 @@
+### T- One是什么
+ T-One是一站式的自动化质量协作平台;打通了测试计划、测试准备、测试执行、测试分析、测试报告、覆盖率检测、智能Bisect,环境服务等流程的闭环,为社区研发提供一站式质量服务。
+
+
+### 平台架构
+
+
+### 核心特点
+- 一站式质量平台:平台打通了测试准备、测试执行、测试分析、测试计划、测试报告、覆盖率检测、智能Bisect、智能巡检等流程全闭环,为社区研发提供一站式测试支撑。
+ - 支持多CPU混合架构(x86、arm、loogarch、risc-v)
+ - 支持多操作系统类型(龙蜥OS、centos、debian等)
+ - 支持复杂环境测试(企业内网、独立隔离、弹性云虚拟机/容器、应用集群及多种混合环境)
+
+- 质量协作能力:通过分布式的业务架构和独立租户空间能力,支持多企业、多团队的质量协作模式。
+- 数据分析能力:平台提供了时序分析、对比分析,以及聚合生成测试报告的能力,在大量测试之后对数据进行分析以发现软件问题。
+- 开源软件包CI服务:社区开发者可以将自己的软件包(可来自代码托管平台如github/gitee/codeup等)注册到Testfarm, 平台会监控软件包的代码变更,一旦有变更则会立即触发测试,并将测试结果通知开发者,方便开源软件包引入。
+- 开发者资源服务:社区开发者可以reserve测试环境并登陆,方便在测试环境中进行测试及debug。
+- 缺陷定位诊断服务:对于发现的软件缺陷,平台可以提供了缺陷的自动化定位诊断能力,可以发现引入缺陷的commit地址。
+
+
+### 应用场景
+- 场景1:OS发布测试,每次AnolisOS的发布,社区测试团队会根据发布测试策略进行大规模测试,保障产品发布质量,外部用户可以在Testfarm查看发布测试数据。
+- 场景2:开源软件包CI,社区开发者可以将软件包注册到平台,平台会自动监控软件包的变更,一旦发生变更会立即进行测试并推送测试结果。
+- 场景3:自定义测试,社区开发者根据自己的需求可以在T-One平台进行在线测试,或者使用命令行测试。
+- 场景4:离线测试,对于网络不可达的测试环境,用户可以使用离线测试模式测试并上传数据。
+- 场景5:独立部署,外部用户也可以在自己环境下独立部署平台,测试并上传数据到Testfarm。
+- 场景6:登陆测试环境,社区开发者可以根据需要reserve测试环境登陆进行测试及debug。
+- 场景7:缺陷定位诊断,一旦测试出缺陷,平台会自动诊断缺陷引入的commit。
+
+
diff --git "a/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/assets/Dingtalk_20240614165831.jpg" "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/assets/Dingtalk_20240614165831.jpg"
new file mode 100644
index 0000000000000000000000000000000000000000..925bf2945891170613821e8e7dbc9e4206d17c8d
Binary files /dev/null and "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/assets/Dingtalk_20240614165831.jpg" differ
diff --git "a/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/assets/jiagou.jpeg" "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/assets/jiagou.jpeg"
new file mode 100644
index 0000000000000000000000000000000000000000..392076fe21eafd908c238ff0e851862e84a05a2d
Binary files /dev/null and "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/assets/jiagou.jpeg" differ
diff --git "a/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/atone\351\203\250\347\275\262.md" "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/atone\351\203\250\347\275\262.md"
new file mode 100644
index 0000000000000000000000000000000000000000..12f85c9bb02d73ecf4fa31b8773d8b3743913cf7
--- /dev/null
+++ "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/atone\351\203\250\347\275\262.md"
@@ -0,0 +1,615 @@
+# 部署说明
+
+> 此文档以开源版本 T-One 最小单元部署举例说明,不保障系统的高可用及性能等
+>
+> 若期望大规模集群化部署可以联系SIG项目组进行具体讨论。
+> 若遇到问题请参照文未的 FAQ 文档,或进 SIG 群联系我们。
+
+**组件说明**: T-One 包含多个自研组件和几个开源组件,此文档以开源版本 T-One 最小单元部署举例说明。
+
+* 自研组件:tone-web、tone-agent-proxy、tone-agent、tone-runner等。
+* 开源组件:mysql、kafka、redis、zookeeper
+
+**机器要求**:
+
+* 硬件要求:推荐使用 8c16g 以上规格机器。
+* OS 要求:推荐使用 Anolis OS 系统进行部署( 暂不支持debian、ubuntu等)。
+
+**部署说明**:
+- 主要分为安装环境、项目构建、项目启动、数据初始化等几个步骤。
+- 该文档以x86_64机器为例, 如果您的部署机器为其他arch类型的机器,则需要将docker-compose.yaml中指定的第三方开源组件镜像更换成对应的镜像源。
+- 可以自己指定安装目录,该文档以 ~/tone目录为例(推荐)。
+
+# 部署步骤
+> 后续步骤以 Anolis OS 8.6 环境为示例进行行详细说明。
+
+## 1. 环境准备
+
+### a. 安装docker
+```
+ yum -y install yum-utils
+ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
+ yum install -y docker-ce # 若出错:yum install -y docker-ce --nobest --allowerasing
+
+ # 启动docker
+ systemctl enable docker
+ systemctl start docker
+ systemctl status docker
+```
+### b. 配置docker源
+```
+ vim /etc/docker/daemon.json
+ {
+ "registry-mirrors": [
+ "https://6kx4zyno.mirror.aliyuncs.com",
+ "https://docker.mirrors.ustc.edu.cn",
+ "http://hub-mirror.c.163.com",
+ "https://registry.docker-cn.com"]
+ }
+ systemctl restart docker
+ # 建议使用国内镜像源。 阿里云: https://6kx4zyno.mirror.aliyuncs.com,网易: http://hub-mirror.c.163.com
+```
+### c. 安装docker-compose
+```
+ pip3 install --upgrade pip
+ pip3 install docker-compose
+ docker-compose --version
+```
+
+## 2. 项目构建
+
+### a. 下载项目源码
+```shell
+yum install -y git
+
+git clone --single-branch --branch master https://gitee.com/anolis/tone-web.git ~/tone/code/tone-web
+git clone --single-branch --branch master https://gitee.com/anolis/tone-runner.git ~/tone/code/tone-runner
+git clone --single-branch --branch master https://gitee.com/anolis/tone-agent-proxy.git ~/tone/code/tone-agent-proxy
+git clone --single-branch --branch master https://gitee.com/anolis/tone-storage.git ~/tone/code/tone-storage
+```
+下载后的目录结构:
+```
+~/tone/code/
+ ├── tone-web
+ ├── tone-runner
+ ├── tone-agent-proxy
+ └── tone-storage
+```
+
+### b. 集成前端代码
+```shell
+# 下载前端代码包:
+wget https://anolis-service-pub.oss-cn-zhangjiakou.aliyuncs.com/biz-resource/tone/deploy/front/tone-front-latest.zip
+wget https://anolis-service-pub.oss-cn-zhangjiakou.aliyuncs.com/biz-resource/tone/deploy/front/toneagent-front-latest.zip
+# 安装unzip命令
+yum install -y unzip
+# 解压到指定目录
+unzip -j -o tone-front-latest.zip -d ~/tone/code/tone-web/static/front/
+unzip -j -o toneagent-front-latest.zip -d ~/tone/code/tone-agent-proxy/static/front/
+```
+
+## 3. 项目配置
+### a. 下载 docker-compose.yaml
+```shell
+cd ~/tone
+wget https://anolis-service-pub.oss-cn-zhangjiakou.aliyuncs.com/biz-resource/tone/deploy/docker-compose.yaml
+```
+
+### b. 设置并替换变量
+执行以下脚本(需手动替换`必填的`变量):
+```shell
+# 部署机外网IP地址(必填)
+server_ip=
+
+# 账号密码(必填)
+db_password=
+redis_password=
+tone_storage_password=
+
+# 镜像版本标签(非必改、默认latest)
+version_tag=latest
+
+# token(非必改、可自动生成)
+toneagent_access_key=$(uuidgen)
+toneagent_secret_key=$(uuidgen)
+admin_urls_token=$(uuidgen)
+pub_api_token=$(uuidgen)
+
+sed -i "s/var_db_password/${db_password}/g" docker-compose.yaml
+sed -i "s/var_redis_password/${redis_password}/g" docker-compose.yaml
+sed -i "s/var_tone_storage/${tone_storage_password}/g" docker-compose.yaml
+sed -i "s/var_toneagent_access_key/${toneagent_access_key}/g" docker-compose.yaml
+sed -i "s/var_toneagent_secret_key/${toneagent_secret_key}/g" docker-compose.yaml
+sed -i "s/var_admin_urls_token/${admin_urls_token}/g" docker-compose.yaml
+sed -i "s/var_pub_api_token/${pub_api_token}/g" docker-compose.yaml
+sed -i "s/var_version_tag/${version_tag}/g" docker-compose.yaml
+sed -i "s/var_server_ip/${server_ip}/g" docker-compose.yaml
+```
+
+### c. 启动docker-compose
+```shell
+docker-compose -f ~/tone/docker-compose.yaml up --build -d
+# 注:如代码有更新或首次部署,需要加 --build 参数才会自动重新打包镜像
+```
+
+## 4. 数据初始化
+### a.初始化db
+* 进入`mysql` docker 镜像中,`docker exec -it {数据库容器ID} bash`
+* 连接数据库:`mysql -h 127.0.0.1 -P 3306 -u root -p`
+* 创建 `T-One` 数据库 `tone-db`,`ToneAgent` 数据库 `toneagent-db`
+ ```
+ CREATE DATABASE `tone-db` CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+ CREATE DATABASE `toneagent-db` CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+ ```
+ 也可以直接通过 mysql 可视化界面初始化数据库
+
+### b.初始化 `T-One` 数据
+浏览器或者curl命令请求接口($admin_urls_token可在docker-compose配置里查看或更改)
+```shell
+curl -s "http://${server_ip}:8080/admin/migrate/?token=${admin_urls_token}"
+curl -s "http://${server_ip}:8080/admin/init_data/?token=${admin_urls_token}"
+curl -s "http://${server_ip}:8080/admin/create_superuser/?token=${admin_urls_token}&username=admin&password=admin123."
+curl -s "http://${server_ip}:8081/admin/migrate/?token=${admin_urls_token}"
+curl -s "http://${server_ip}:8081/admin/create_superuser/?token=${admin_urls_token}&username=admin&password=admin123."
+curl -s "http://${server_ip}:8081/admin/import_access_token/?token=${admin_urls_token}"
+```
+
+### c. `T-One` 关联依赖配置
+**系统执行任务还需对以下配置进行设置**
+
+- 配置 `T-One` 测试用例
+- 配置`T-One` 测试机器
+- 配置 `ToneAgent` `token`
+ - 在 ToneAgent 系统-账号管理中增加一组 token
+ - 更改 docker-compose 配置中的toneagent_access_key和toneagent_secret_key
+
+## 5. 验证
+使用浏览器打开链接查看: `T-One` 页面:`http://{host}:8080` `ToneAgent` 管理页面:`http://{host}:8081`
+
+## 6. T-One 多生态使用
+`T-One` + `TestLib`
+### a. 创建 `TestLib` 数据库
+- 进入 mysql docker 镜像,docker exec -it {数据库容器ID} bash
+- 连接数据库:mysql -h 127.0.0.1 -P 3306 -u root -p
+- 创建 TestLib 数据库 testlib
+
+ CREATE DATABASE \`test-lib\` CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+- 创建 TestLib 数据库表
+### testlib数据库初始化
+
+ 点击展开/折叠脚本
+
+```shell
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET NAMES utf8 */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+
+-- 表 test-lib.case 结构
+CREATE TABLE IF NOT EXISTS `case` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '测试用例名称',
+ `creator` varchar(64) NOT NULL COMMENT '负责人',
+ `type` enum('FUNCTIONAL','PERFORMANCE','STRESS','LOAD','SECURITY','COMPATIBILITY','OTHERS') NOT NULL COMMENT '测试用例类型',
+ `priority` enum('PRIORITY_0','PRIORITY_1','PRIORITY_2','PRIORITY_3') NOT NULL COMMENT '测试用例的优先级',
+ `suite_name` varchar(128) DEFAULT NULL COMMENT '测试套名称',
+ `run_method` enum('MANUAL','AUTO') NOT NULL COMMENT '测试用例执行方式,手动、自动',
+ `run_model` enum('SINGLE','CLUSTER') NOT NULL COMMENT '测试用例运行模式,单机、集群',
+ `is_available` tinyint(1) NOT NULL COMMENT '测试用例是否可用',
+ `tone_case` varchar(128) DEFAULT NULL COMMENT 'T-One测试用例,当run_method为自动的时候生效',
+ `device_type` varchar(128) DEFAULT 'unlimit' COMMENT '设备类型,可多选,默认支持所有设备',
+ `device_arch` varchar(256) NOT NULL COMMENT '设备架构类型,可多选,默认支撑所有类型',
+ `labels` varchar(256) DEFAULT NULL COMMENT '设备标签,多个用,隔开',
+ `desc` varchar(512) DEFAULT NULL COMMENT '用例描述',
+ `pre_condition` varchar(512) DEFAULT NULL COMMENT '前置条件',
+ `steps` json DEFAULT NULL COMMENT '操作步骤',
+ `custom_fields` json DEFAULT NULL COMMENT '测试用例扩展属性',
+ `parent` int(11) NOT NULL COMMENT '测试用例分类节点',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name` (`name`),
+ KEY `ix_case_suite_name` (`suite_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.case_label 结构
+CREATE TABLE IF NOT EXISTS `case_label` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '用例标签',
+ `creator` varchar(64) NOT NULL COMMENT '标签创建人',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.case_label_map 结构
+CREATE TABLE IF NOT EXISTS `case_label_map` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `label_name` varchar(64) NOT NULL COMMENT '用例名称',
+ `case_id` int(11) NOT NULL COMMENT '用例ID',
+ PRIMARY KEY (`id`),
+ KEY `ix_case_label_map_label_name` (`label_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.case_tree 结构
+CREATE TABLE IF NOT EXISTS `case_tree` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(16) NOT NULL COMMENT '用例结构树节点名称',
+ `parent` int(11) NOT NULL COMMENT '父节点id',
+ `level` int(11) NOT NULL COMMENT '树结构的深度',
+ `path` varchar(128) NOT NULL COMMENT '模块完整路径',
+ `children_nums` int(11) NOT NULL COMMENT '子节点数量',
+ PRIMARY KEY (`id`),
+ KEY `ix_case_tree_path` (`path`)
+) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.device 结构
+CREATE TABLE IF NOT EXISTS `device` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '设备名称',
+ `arch` enum('X86','ARCH64','RISCV','LOONGARCH','NOARCH','OTHERS') NOT NULL COMMENT '设备架构',
+ `ip` varchar(16) NOT NULL COMMENT '设备ip',
+ `type` enum('UNLIMIT','VM','DOCKER','PHYSICS') NOT NULL COMMENT '设备类型',
+ `sn` varchar(16) DEFAULT NULL COMMENT '设备序号',
+ `status` tinyint(1) NOT NULL COMMENT '设备是否可用',
+ `label` json DEFAULT NULL COMMENT '设备标签列表数组',
+ `owner` varchar(256) NOT NULL COMMENT '设备负责人',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.device_label 结构
+CREATE TABLE IF NOT EXISTS `device_label` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '设备标签名称',
+ `color` varchar(32) NOT NULL COMMENT '设备标签颜色',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `ix_device_label_name` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.device_label_relationship 结构
+CREATE TABLE IF NOT EXISTS `device_label_relationship` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `label_id` int(11) NOT NULL COMMENT '机器Label id',
+ `device_id` int(11) NOT NULL COMMENT '机器Label id',
+ `is_delete` tinyint(1) DEFAULT NULL COMMENT '对应关系是否删除',
+ PRIMARY KEY (`id`),
+ KEY `ix_device_label_relationship_device_id` (`device_id`),
+ KEY `ix_device_label_relationship_label_id` (`label_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.func_result 结构
+CREATE TABLE IF NOT EXISTS `func_result` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `sub_case_name` varchar(128) NOT NULL COMMENT 'tone job名称',
+ `sub_case_result` enum('SUCCESS','FAIL','SKIP') NOT NULL COMMENT '功能结果',
+ `tone_suite_id` int(11) NOT NULL COMMENT 'suite id',
+ `tone_case_id` int(11) NOT NULL COMMENT 'tone case id',
+ `tone_job_id` int(11) NOT NULL COMMENT 'tone job id',
+ `task_id` int(11) NOT NULL COMMENT '测试方案id',
+ `current` json DEFAULT NULL,
+ `expect` json DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `ix_func_result_tone_suite_id` (`tone_suite_id`),
+ KEY `ix_func_result_task_id` (`task_id`),
+ KEY `ix_func_result_tone_case_id` (`tone_case_id`),
+ KEY `ix_func_result_tone_job_id` (`tone_job_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=479 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.outline 结构
+CREATE TABLE IF NOT EXISTS `outline` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '测试大纲文件名',
+ `title` varchar(128) NOT NULL COMMENT '测试大纲的标题',
+ `owner` varchar(16) NOT NULL COMMENT '测试大纲负责人',
+ `tid` varchar(256) NOT NULL COMMENT 'oss文件地址',
+ `remark` varchar(64) DEFAULT NULL COMMENT '测试大纲备注描述信息',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.perf_result 结构
+CREATE TABLE IF NOT EXISTS `perf_result` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `metric` varchar(128) NOT NULL COMMENT '指标名称',
+ `test_value` varchar(64) DEFAULT NULL COMMENT '测试值',
+ `cv_value` varchar(64) DEFAULT NULL COMMENT 'cv值',
+ `max_value` varchar(64) DEFAULT NULL COMMENT '最大值',
+ `min_value` varchar(64) DEFAULT NULL COMMENT '最小值',
+ `unit` varchar(64) DEFAULT NULL COMMENT '测试单位',
+ `track_result` enum('NA','INVALID','NORMAL','DECLINE','INCREASE') NOT NULL COMMENT '跟踪结果',
+ `tone_suite_id` int(11) NOT NULL COMMENT 'suite id',
+ `tone_case_id` int(11) NOT NULL COMMENT 'tone case id',
+ `tone_job_id` int(11) NOT NULL COMMENT 'tone job id',
+ `task_id` int(11) NOT NULL COMMENT '测试方案id',
+ PRIMARY KEY (`id`),
+ KEY `ix_perf_result_task_id` (`task_id`),
+ KEY `ix_perf_result_tone_case_id` (`tone_case_id`),
+ KEY `ix_perf_result_tone_suite_id` (`tone_suite_id`),
+ KEY `ix_perf_result_tone_job_id` (`tone_job_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.plan 结构
+CREATE TABLE IF NOT EXISTS `plan` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `title` varchar(64) NOT NULL COMMENT '测试方案名称',
+ `req_id` int(11) DEFAULT NULL COMMENT '测试需求id',
+ `req_title` varchar(128) DEFAULT NULL COMMENT '测试需求标题',
+ `content` json DEFAULT NULL COMMENT '测试方案内容',
+ `status` varchar(16) NOT NULL COMMENT '测试方案阶段状态',
+ `cases` varchar(256) DEFAULT NULL COMMENT '测试用例,多个使用","隔开',
+ `tasks` varchar(256) DEFAULT NULL COMMENT '测试任务,多个使用","隔开',
+ `reviewers` varchar(256) NOT NULL COMMENT '方案评审人列表',
+ `owner` varchar(256) NOT NULL COMMENT '测试需求的负责人,多个以,隔开',
+ `report` tinyint(1) NOT NULL COMMENT '测试报告是否已生成',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `title` (`title`)
+) ENGINE=InnoDB AUTO_INCREMENT=63 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.plan_review 结构
+CREATE TABLE IF NOT EXISTS `plan_review` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `plan_id` int(11) NOT NULL COMMENT '测试方案id',
+ `reviewer` varchar(32) NOT NULL COMMENT '测试需方案的评审人',
+ `status` varchar(16) NOT NULL COMMENT '评审状态',
+ `desc` varchar(512) DEFAULT NULL COMMENT '评审内容',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.product_category 结构
+CREATE TABLE IF NOT EXISTS `product_category` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '大类名称',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.product_plan 结构
+CREATE TABLE IF NOT EXISTS `product_plan` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `test_product_id` int(11) NOT NULL COMMENT '测试产品id',
+ `plan_id` int(11) NOT NULL COMMENT '测试产品实际复制执行的plan id',
+ `executor` varchar(256) NOT NULL COMMENT '测试产品执行人',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.requirement 结构
+CREATE TABLE IF NOT EXISTS `requirement` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `title` varchar(128) NOT NULL COMMENT '测试需求标题',
+ `outline_id` int(11) DEFAULT NULL COMMENT '测试大纲id',
+ `outline_title` varchar(64) DEFAULT NULL COMMENT '测试大纲标题',
+ `content` json NOT NULL COMMENT '测试需求的描述内容',
+ `status` varchar(16) NOT NULL COMMENT '测试需求阶段',
+ `owner` varchar(16) NOT NULL COMMENT '测试需求的创建人',
+ `assignee` varchar(256) NOT NULL COMMENT '测试需求的指派人,多个以,隔开',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.task 结构
+CREATE TABLE IF NOT EXISTS `task` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '任务名称',
+ `status` varchar(16) NOT NULL COMMENT '任务执行状态',
+ `run_method` enum('MANUAL','AUTO') NOT NULL COMMENT '测试任务执行方式',
+ `owner` varchar(256) NOT NULL COMMENT '任务执行人',
+ `plan_id` int(11) NOT NULL COMMENT '测试方案id',
+ `plan_title` varchar(256) NOT NULL COMMENT '测试方案标题',
+ `cases` varchar(256) NOT NULL COMMENT '测试用例,多个使用,隔开',
+ `desc` varchar(256) DEFAULT NULL COMMENT '备注',
+ `run_result` json DEFAULT NULL COMMENT '手动用例执行结果',
+ `config` json DEFAULT NULL COMMENT '测试任务配置',
+ `device_id` int(11) DEFAULT NULL COMMENT '测试设备ID',
+ `device_ip` varchar(256) DEFAULT NULL COMMENT '测试机器IP',
+ `workspace` varchar(128) NOT NULL COMMENT 'tone workspace',
+ `project` varchar(128) NOT NULL COMMENT 'tone project',
+ `job_type` varchar(128) NOT NULL COMMENT 'tone job type',
+ `test_type` varchar(32) DEFAULT 'others' COMMENT '测试任务类型',
+ `cluster` varchar(256) DEFAULT NULL COMMENT '测试机器集群名称',
+ `tags` varchar(256) DEFAULT NULL COMMENT '测试机器标签',
+ `tsn` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `ix_task_plan_id` (`plan_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=90 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.test_product 结构
+CREATE TABLE IF NOT EXISTS `test_product` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '测试产品名称',
+ `category_id` int(11) NOT NULL COMMENT '大类id',
+ `origin_plan_id` int(11) NOT NULL COMMENT '测试产品对应的plan id',
+ `desc` varchar(256) DEFAULT NULL COMMENT '产品描述',
+ `test_method` varchar(256) DEFAULT NULL COMMENT '测试方法',
+ `test_requirement` varchar(256) DEFAULT NULL COMMENT '测试要求',
+ `need_config` tinyint(1) DEFAULT NULL COMMENT '是否扩展配置',
+ `owner` varchar(256) NOT NULL DEFAULT '' COMMENT '测试产品创建人',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.test_suite 结构
+CREATE TABLE IF NOT EXISTS `test_suite` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(128) NOT NULL COMMENT '测试套名称',
+ `creator` varchar(64) NOT NULL COMMENT '测试套的创建人员',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_case 结构
+CREATE TABLE IF NOT EXISTS `tone_case` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `tone_case_id` int(11) NOT NULL COMMENT 'tone用例ID',
+ `tone_case_name` varchar(256) NOT NULL COMMENT 'tone用例名称',
+ `suite_id` int(11) NOT NULL COMMENT 'suite ID',
+ `suite_name` varchar(256) NOT NULL COMMENT 'suite用例名称',
+ `test_type` varchar(64) DEFAULT NULL COMMENT '测试类型',
+ PRIMARY KEY (`id`),
+ KEY `ix_tone_case_tone_case_name` (`tone_case_name`),
+ KEY `ix_tone_case_suite_id` (`suite_id`),
+ KEY `ix_tone_case_suite_name` (`suite_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=603 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_job 结构
+CREATE TABLE IF NOT EXISTS `tone_job` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(100) NOT NULL COMMENT 'tone job名称',
+ `state` enum('PENDING','RUNNING','SUCCESS','FAIL','STOP','SKIP') NOT NULL COMMENT 'tone job状态',
+ `test_type` enum('FUNCTIONAL','PERFORMANCE') NOT NULL COMMENT '测试类型',
+ `tone_job_id` int(11) NOT NULL COMMENT 'tone job id',
+ `tone_job_link` varchar(100) DEFAULT '' COMMENT 'tone job链接',
+ `task_id` int(11) NOT NULL COMMENT '测试方案id',
+ `server_info` json DEFAULT NULL COMMENT '存储tone job的机器信息',
+ PRIMARY KEY (`id`),
+ KEY `ix_tone_job_tone_job_id` (`tone_job_id`),
+ KEY `ix_tone_job_task_id` (`task_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_sync_pull 结构
+CREATE TABLE IF NOT EXISTS `tone_sync_pull` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=76149 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_sync_push 结构
+CREATE TABLE IF NOT EXISTS `tone_sync_push` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.user 结构
+CREATE TABLE IF NOT EXISTS `user` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `user_name` varchar(256) DEFAULT NULL COMMENT '用户名称',
+ `nick_name` varchar(64) DEFAULT NULL COMMENT '用户昵称,具有唯一性',
+ `email` varchar(64) NOT NULL COMMENT '用户邮箱',
+ `avatar_url` varchar(512) DEFAULT NULL COMMENT '用户头像地址',
+ `role` enum('ADMIN','SENIOR','JUNIOR','COMMON') NOT NULL DEFAULT 'COMMON',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `nick_name` (`nick_name`),
+ KEY `ix_user_user_name` (`user_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.user_open_source 结构
+CREATE TABLE IF NOT EXISTS `user_open_source` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `user_name` varchar(256) DEFAULT NULL COMMENT '用户名称',
+ `nick_name` varchar(64) NOT NULL COMMENT '用户昵称,具有唯一性',
+ `email` varchar(64) NOT NULL COMMENT '用户邮箱',
+ `password` varchar(64) NOT NULL COMMENT '用户密码,前端对密码md5加密后的值',
+ `avatar_url` varchar(512) DEFAULT NULL COMMENT '用户头像地址',
+ `role` enum('ADMIN','SENIOR','JUNIOR','COMMON') NOT NULL DEFAULT 'COMMON',
+ `token` varchar(256) NOT NULL COMMENT 'api访问凭证',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `nick_name` (`nick_name`),
+ UNIQUE KEY `email` (`email`),
+ KEY `ix_user_open_source_token` (`token`(255))
+) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.user_role_op_record 结构
+CREATE TABLE IF NOT EXISTS `user_role_op_record` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `applicant` varchar(64) NOT NULL COMMENT '申请人name',
+ `applicant_id` int(11) NOT NULL COMMENT '申请人ID',
+ `apply_reason` varchar(512) DEFAULT NULL COMMENT '申请理由',
+ `signer` varchar(64) DEFAULT NULL COMMENT '评审人name',
+ `has_review` tinyint(1) NOT NULL COMMENT '是否已经审核',
+ `review_result` enum('INIT','PASS','FAIL') NOT NULL COMMENT '审核结果',
+ `review_reason` varchar(512) DEFAULT NULL COMMENT '评审意见',
+ `method` enum('APPROVE','UPGRADE','DOWNGRADE','DELETE') NOT NULL COMMENT '操作方式',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
+
+/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
+/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+
+
+```
+
+
+### b.TestLib 服务依赖
+### c. clone test-lib代码到~/tone/code目录下
+```shell
+git clone --single-branch --branch master https://gitee.com/anolis/testlib.git ~/tone/code/testlib
+```
+### d.增加docker-compose配置
+```yaml
+# docker-compose.yaml service下增加test-lib
+ test-lib:
+ build:
+ context: code/testlib/
+ dockerfile: Dockerfile
+ args:
+ APP_NAME: test-lib
+ ENV: daily
+ image: test-lib:latest
+ ports:
+ - "8005:8005"
+ depends_on:
+ - mysql
+ - redis
+ environment:
+ <<: *common-variables
+ # db
+ db_url: mysql+aiomysql://${db_user}:{db_password}@mysql:3306/test-lib
+ # redis
+ redis_url: redis://:${redis_password}@redis:6379/10
+ # app
+ tone_host: http://${server_ip}:8080/
+ tone_token: tone_token
+ tone_user_name: tone_user_name
+ main_domain: http://${server_ip}:8005
+ oss_url: http://${server_ip}:8005
+```
+#### e.重启服务
+```shell
+docker-compose -f ~/tone/docker-compose.yaml up --build -d
+```
+## 7. 独立部署 FAQ
+https://tone.openanolis.cn/help_doc/12
\ No newline at end of file
diff --git "a/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/test.md" "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/test.md"
new file mode 100644
index 0000000000000000000000000000000000000000..b09df7d02fee342106c45e78485a992609d67bdb
--- /dev/null
+++ "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/test.md"
@@ -0,0 +1,70 @@
+# 一级标题
+## 二级标题
+### 三级标题
+**粗体文本**
+
+__cuti__
+
+*斜体文本*
+
+_xieti_
+
+下划线
+
+~~删除线~~
+
+上标:Xy
+
+下标:An
+
+> 引用文本
+- 无序列表项1
+ - 第二层
+- 无序列表项2
+* * *
+1. 有序列表项1
+2. 有序列表项2
+---
+[链接文本](https://gitee.com/suli01/community/edit/master/sig/T-One/content/%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97/%E7%94%A8%E6%88%B7%E8%81%86%E5%90%AC/test.md)
+
+链接名称
+
+'''python
+def hello_world():
+ print("Hello, world!")
+
+
+
+| 列1 | 列2 | 列3 |
+| --- | --- | --- |
+| 单元格1 | 单元格2 | 单元格3 |
+| 单元格4 | 单元格5 | 单元格6 |
+
+
+| 左对齐 | 居中对齐 | 右对齐 |
+|:-----|:------:|------:|
+| 文本 | 文本 | 文本 |
+
+
+
+
+
+ 值班人员 |
+ 星期一 |
+ 星期二 |
+ 星期三 |
+
+
+ 张三 |
+ 李四 |
+ 王五 |
+
+
+
+- [ ] :待完成事项
+
+- [x] :已完成事项
+
+
+

+
diff --git "a/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md" "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md"
new file mode 100644
index 0000000000000000000000000000000000000000..d0a3a7f08baab2c20bc46fc52570530781997763
--- /dev/null
+++ "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md"
@@ -0,0 +1,2 @@
+# hello
+
\ No newline at end of file
diff --git "a/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/\350\201\206\345\220\254.md" "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/\350\201\206\345\220\254.md"
new file mode 100644
index 0000000000000000000000000000000000000000..e5d110a57b01266616a91010b0b0032dcff2c5c1
--- /dev/null
+++ "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-copy/\350\201\206\345\220\254.md"
@@ -0,0 +1,2 @@
+# hello, 欢迎来到聆听 .md
+## 阿斯顿发射点
\ No newline at end of file
diff --git "a/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/best.md" "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/best.md"
new file mode 100644
index 0000000000000000000000000000000000000000..e114af0d668a54cd7bf78c94a731b54bdca5d5d8
--- /dev/null
+++ "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/best.md"
@@ -0,0 +1,75 @@
+# 一级标题
+## 二级标题
+### 三级标题
+**粗体文本**
+
+__cuti__
+
+*斜体文本*
+
+_xieti_
+
+下划线
+
+~~删除线~~
+
+上标:Xy
+
+下标:An
+
+> 引用文本
+- 无序列表项1
+ - 第二层
+- 无序列表项2
+* * *
+1. 有序列表项1
+2. 有序列表项2
+---
+[链接文本](https://gitee.com/suli01/community/edit/master/sig/T-One/content/%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97/%E7%94%A8%E6%88%B7%E8%81%86%E5%90%AC/test.md)
+
+链接名称
+
+'''python
+def hello_world():
+ print("Hello, world!")
+
+
+
+| 列1 | 列2 | 列3 |
+| --- | --- | --- |
+| 单元格1 | 单元格2 | 单元格3 |
+| 单元格4 | 单元格5 | 单元格6 |
+
+
+| 左对齐 | 居中对齐 | 右对齐 |
+|:-----|:------:|------:|
+| 文本 | 文本 | 文本 |
+
+
+验证无空行表格
+| 左对齐 | 居中对齐 | 右对齐 |
+|:-----|:------:|------:|
+| 文本 | 文本 | 文本 |
+
+
+
+
+ 值班人员 |
+ 星期一 |
+ 星期二 |
+ 星期三 |
+
+
+ 张三 |
+ 李四 |
+ 王五 |
+
+
+
+- [ ] :待完成事项
+
+- [x] :已完成事项
+
+
+

+
diff --git "a/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/test1.md" "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/test1.md"
new file mode 100644
index 0000000000000000000000000000000000000000..bce7de8006c232d78a6c8052190ff0a3a60a8fa0
--- /dev/null
+++ "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/test1.md"
@@ -0,0 +1,73 @@
+*斜体文字*
+
+_斜体文字_
+
+**粗体文字**
+
+__粗体文字__
+
+***粗斜体文字***
+
+___粗斜体文字___
+
+***
+* * *
+******
+- - -
+------
+
+~~删除线~~
+
+带下划线文本
+
+# 一级标题
+
+## 二级标题
+
+### 三级标题
+
+#### 四级标题
+
+##### 五级标题
+
+###### 六级标题
+[链接](http://a.com)
+
+> 引用
+* 第一项
+* 第二项
+* 第三项
+
++ 第一项
++ 第二项
++ 第三项
+
+- 第一项
+- 第二项
+- 第三项
+1. 第一项
+2. 第二项
+3. 第三项
+
+1. 第一项:
+ - 第一项嵌套的第一个元素
+ - 第一项嵌套的第二个元素
+2. 第二项:
+ - 第二项嵌套的第一个元素
+ - 第二项嵌套的第二个元素
+水平线:
+
+---
+带反引号的“内联代码”
+```
+# 代码块
+print '3 个反引号或'
+print '缩进 4 个空格'
+```
+
+> 区块引用
+> Markdown教程
+> 学的不仅是技术更是梦想
+
+
+SDFGSDFGSDFGSDFG
\ No newline at end of file
diff --git "a/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/tone\351\203\250\347\275\262.md" "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/tone\351\203\250\347\275\262.md"
new file mode 100644
index 0000000000000000000000000000000000000000..12f85c9bb02d73ecf4fa31b8773d8b3743913cf7
--- /dev/null
+++ "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/tone\351\203\250\347\275\262.md"
@@ -0,0 +1,615 @@
+# 部署说明
+
+> 此文档以开源版本 T-One 最小单元部署举例说明,不保障系统的高可用及性能等
+>
+> 若期望大规模集群化部署可以联系SIG项目组进行具体讨论。
+> 若遇到问题请参照文未的 FAQ 文档,或进 SIG 群联系我们。
+
+**组件说明**: T-One 包含多个自研组件和几个开源组件,此文档以开源版本 T-One 最小单元部署举例说明。
+
+* 自研组件:tone-web、tone-agent-proxy、tone-agent、tone-runner等。
+* 开源组件:mysql、kafka、redis、zookeeper
+
+**机器要求**:
+
+* 硬件要求:推荐使用 8c16g 以上规格机器。
+* OS 要求:推荐使用 Anolis OS 系统进行部署( 暂不支持debian、ubuntu等)。
+
+**部署说明**:
+- 主要分为安装环境、项目构建、项目启动、数据初始化等几个步骤。
+- 该文档以x86_64机器为例, 如果您的部署机器为其他arch类型的机器,则需要将docker-compose.yaml中指定的第三方开源组件镜像更换成对应的镜像源。
+- 可以自己指定安装目录,该文档以 ~/tone目录为例(推荐)。
+
+# 部署步骤
+> 后续步骤以 Anolis OS 8.6 环境为示例进行行详细说明。
+
+## 1. 环境准备
+
+### a. 安装docker
+```
+ yum -y install yum-utils
+ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
+ yum install -y docker-ce # 若出错:yum install -y docker-ce --nobest --allowerasing
+
+ # 启动docker
+ systemctl enable docker
+ systemctl start docker
+ systemctl status docker
+```
+### b. 配置docker源
+```
+ vim /etc/docker/daemon.json
+ {
+ "registry-mirrors": [
+ "https://6kx4zyno.mirror.aliyuncs.com",
+ "https://docker.mirrors.ustc.edu.cn",
+ "http://hub-mirror.c.163.com",
+ "https://registry.docker-cn.com"]
+ }
+ systemctl restart docker
+ # 建议使用国内镜像源。 阿里云: https://6kx4zyno.mirror.aliyuncs.com,网易: http://hub-mirror.c.163.com
+```
+### c. 安装docker-compose
+```
+ pip3 install --upgrade pip
+ pip3 install docker-compose
+ docker-compose --version
+```
+
+## 2. 项目构建
+
+### a. 下载项目源码
+```shell
+yum install -y git
+
+git clone --single-branch --branch master https://gitee.com/anolis/tone-web.git ~/tone/code/tone-web
+git clone --single-branch --branch master https://gitee.com/anolis/tone-runner.git ~/tone/code/tone-runner
+git clone --single-branch --branch master https://gitee.com/anolis/tone-agent-proxy.git ~/tone/code/tone-agent-proxy
+git clone --single-branch --branch master https://gitee.com/anolis/tone-storage.git ~/tone/code/tone-storage
+```
+下载后的目录结构:
+```
+~/tone/code/
+ ├── tone-web
+ ├── tone-runner
+ ├── tone-agent-proxy
+ └── tone-storage
+```
+
+### b. 集成前端代码
+```shell
+# 下载前端代码包:
+wget https://anolis-service-pub.oss-cn-zhangjiakou.aliyuncs.com/biz-resource/tone/deploy/front/tone-front-latest.zip
+wget https://anolis-service-pub.oss-cn-zhangjiakou.aliyuncs.com/biz-resource/tone/deploy/front/toneagent-front-latest.zip
+# 安装unzip命令
+yum install -y unzip
+# 解压到指定目录
+unzip -j -o tone-front-latest.zip -d ~/tone/code/tone-web/static/front/
+unzip -j -o toneagent-front-latest.zip -d ~/tone/code/tone-agent-proxy/static/front/
+```
+
+## 3. 项目配置
+### a. 下载 docker-compose.yaml
+```shell
+cd ~/tone
+wget https://anolis-service-pub.oss-cn-zhangjiakou.aliyuncs.com/biz-resource/tone/deploy/docker-compose.yaml
+```
+
+### b. 设置并替换变量
+执行以下脚本(需手动替换`必填的`变量):
+```shell
+# 部署机外网IP地址(必填)
+server_ip=
+
+# 账号密码(必填)
+db_password=
+redis_password=
+tone_storage_password=
+
+# 镜像版本标签(非必改、默认latest)
+version_tag=latest
+
+# token(非必改、可自动生成)
+toneagent_access_key=$(uuidgen)
+toneagent_secret_key=$(uuidgen)
+admin_urls_token=$(uuidgen)
+pub_api_token=$(uuidgen)
+
+sed -i "s/var_db_password/${db_password}/g" docker-compose.yaml
+sed -i "s/var_redis_password/${redis_password}/g" docker-compose.yaml
+sed -i "s/var_tone_storage/${tone_storage_password}/g" docker-compose.yaml
+sed -i "s/var_toneagent_access_key/${toneagent_access_key}/g" docker-compose.yaml
+sed -i "s/var_toneagent_secret_key/${toneagent_secret_key}/g" docker-compose.yaml
+sed -i "s/var_admin_urls_token/${admin_urls_token}/g" docker-compose.yaml
+sed -i "s/var_pub_api_token/${pub_api_token}/g" docker-compose.yaml
+sed -i "s/var_version_tag/${version_tag}/g" docker-compose.yaml
+sed -i "s/var_server_ip/${server_ip}/g" docker-compose.yaml
+```
+
+### c. 启动docker-compose
+```shell
+docker-compose -f ~/tone/docker-compose.yaml up --build -d
+# 注:如代码有更新或首次部署,需要加 --build 参数才会自动重新打包镜像
+```
+
+## 4. 数据初始化
+### a.初始化db
+* 进入`mysql` docker 镜像中,`docker exec -it {数据库容器ID} bash`
+* 连接数据库:`mysql -h 127.0.0.1 -P 3306 -u root -p`
+* 创建 `T-One` 数据库 `tone-db`,`ToneAgent` 数据库 `toneagent-db`
+ ```
+ CREATE DATABASE `tone-db` CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+ CREATE DATABASE `toneagent-db` CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+ ```
+ 也可以直接通过 mysql 可视化界面初始化数据库
+
+### b.初始化 `T-One` 数据
+浏览器或者curl命令请求接口($admin_urls_token可在docker-compose配置里查看或更改)
+```shell
+curl -s "http://${server_ip}:8080/admin/migrate/?token=${admin_urls_token}"
+curl -s "http://${server_ip}:8080/admin/init_data/?token=${admin_urls_token}"
+curl -s "http://${server_ip}:8080/admin/create_superuser/?token=${admin_urls_token}&username=admin&password=admin123."
+curl -s "http://${server_ip}:8081/admin/migrate/?token=${admin_urls_token}"
+curl -s "http://${server_ip}:8081/admin/create_superuser/?token=${admin_urls_token}&username=admin&password=admin123."
+curl -s "http://${server_ip}:8081/admin/import_access_token/?token=${admin_urls_token}"
+```
+
+### c. `T-One` 关联依赖配置
+**系统执行任务还需对以下配置进行设置**
+
+- 配置 `T-One` 测试用例
+- 配置`T-One` 测试机器
+- 配置 `ToneAgent` `token`
+ - 在 ToneAgent 系统-账号管理中增加一组 token
+ - 更改 docker-compose 配置中的toneagent_access_key和toneagent_secret_key
+
+## 5. 验证
+使用浏览器打开链接查看: `T-One` 页面:`http://{host}:8080` `ToneAgent` 管理页面:`http://{host}:8081`
+
+## 6. T-One 多生态使用
+`T-One` + `TestLib`
+### a. 创建 `TestLib` 数据库
+- 进入 mysql docker 镜像,docker exec -it {数据库容器ID} bash
+- 连接数据库:mysql -h 127.0.0.1 -P 3306 -u root -p
+- 创建 TestLib 数据库 testlib
+
+ CREATE DATABASE \`test-lib\` CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+- 创建 TestLib 数据库表
+### testlib数据库初始化
+
+ 点击展开/折叠脚本
+
+```shell
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET NAMES utf8 */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+
+-- 表 test-lib.case 结构
+CREATE TABLE IF NOT EXISTS `case` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '测试用例名称',
+ `creator` varchar(64) NOT NULL COMMENT '负责人',
+ `type` enum('FUNCTIONAL','PERFORMANCE','STRESS','LOAD','SECURITY','COMPATIBILITY','OTHERS') NOT NULL COMMENT '测试用例类型',
+ `priority` enum('PRIORITY_0','PRIORITY_1','PRIORITY_2','PRIORITY_3') NOT NULL COMMENT '测试用例的优先级',
+ `suite_name` varchar(128) DEFAULT NULL COMMENT '测试套名称',
+ `run_method` enum('MANUAL','AUTO') NOT NULL COMMENT '测试用例执行方式,手动、自动',
+ `run_model` enum('SINGLE','CLUSTER') NOT NULL COMMENT '测试用例运行模式,单机、集群',
+ `is_available` tinyint(1) NOT NULL COMMENT '测试用例是否可用',
+ `tone_case` varchar(128) DEFAULT NULL COMMENT 'T-One测试用例,当run_method为自动的时候生效',
+ `device_type` varchar(128) DEFAULT 'unlimit' COMMENT '设备类型,可多选,默认支持所有设备',
+ `device_arch` varchar(256) NOT NULL COMMENT '设备架构类型,可多选,默认支撑所有类型',
+ `labels` varchar(256) DEFAULT NULL COMMENT '设备标签,多个用,隔开',
+ `desc` varchar(512) DEFAULT NULL COMMENT '用例描述',
+ `pre_condition` varchar(512) DEFAULT NULL COMMENT '前置条件',
+ `steps` json DEFAULT NULL COMMENT '操作步骤',
+ `custom_fields` json DEFAULT NULL COMMENT '测试用例扩展属性',
+ `parent` int(11) NOT NULL COMMENT '测试用例分类节点',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name` (`name`),
+ KEY `ix_case_suite_name` (`suite_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.case_label 结构
+CREATE TABLE IF NOT EXISTS `case_label` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '用例标签',
+ `creator` varchar(64) NOT NULL COMMENT '标签创建人',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.case_label_map 结构
+CREATE TABLE IF NOT EXISTS `case_label_map` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `label_name` varchar(64) NOT NULL COMMENT '用例名称',
+ `case_id` int(11) NOT NULL COMMENT '用例ID',
+ PRIMARY KEY (`id`),
+ KEY `ix_case_label_map_label_name` (`label_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.case_tree 结构
+CREATE TABLE IF NOT EXISTS `case_tree` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(16) NOT NULL COMMENT '用例结构树节点名称',
+ `parent` int(11) NOT NULL COMMENT '父节点id',
+ `level` int(11) NOT NULL COMMENT '树结构的深度',
+ `path` varchar(128) NOT NULL COMMENT '模块完整路径',
+ `children_nums` int(11) NOT NULL COMMENT '子节点数量',
+ PRIMARY KEY (`id`),
+ KEY `ix_case_tree_path` (`path`)
+) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.device 结构
+CREATE TABLE IF NOT EXISTS `device` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '设备名称',
+ `arch` enum('X86','ARCH64','RISCV','LOONGARCH','NOARCH','OTHERS') NOT NULL COMMENT '设备架构',
+ `ip` varchar(16) NOT NULL COMMENT '设备ip',
+ `type` enum('UNLIMIT','VM','DOCKER','PHYSICS') NOT NULL COMMENT '设备类型',
+ `sn` varchar(16) DEFAULT NULL COMMENT '设备序号',
+ `status` tinyint(1) NOT NULL COMMENT '设备是否可用',
+ `label` json DEFAULT NULL COMMENT '设备标签列表数组',
+ `owner` varchar(256) NOT NULL COMMENT '设备负责人',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.device_label 结构
+CREATE TABLE IF NOT EXISTS `device_label` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '设备标签名称',
+ `color` varchar(32) NOT NULL COMMENT '设备标签颜色',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `ix_device_label_name` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.device_label_relationship 结构
+CREATE TABLE IF NOT EXISTS `device_label_relationship` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `label_id` int(11) NOT NULL COMMENT '机器Label id',
+ `device_id` int(11) NOT NULL COMMENT '机器Label id',
+ `is_delete` tinyint(1) DEFAULT NULL COMMENT '对应关系是否删除',
+ PRIMARY KEY (`id`),
+ KEY `ix_device_label_relationship_device_id` (`device_id`),
+ KEY `ix_device_label_relationship_label_id` (`label_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.func_result 结构
+CREATE TABLE IF NOT EXISTS `func_result` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `sub_case_name` varchar(128) NOT NULL COMMENT 'tone job名称',
+ `sub_case_result` enum('SUCCESS','FAIL','SKIP') NOT NULL COMMENT '功能结果',
+ `tone_suite_id` int(11) NOT NULL COMMENT 'suite id',
+ `tone_case_id` int(11) NOT NULL COMMENT 'tone case id',
+ `tone_job_id` int(11) NOT NULL COMMENT 'tone job id',
+ `task_id` int(11) NOT NULL COMMENT '测试方案id',
+ `current` json DEFAULT NULL,
+ `expect` json DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `ix_func_result_tone_suite_id` (`tone_suite_id`),
+ KEY `ix_func_result_task_id` (`task_id`),
+ KEY `ix_func_result_tone_case_id` (`tone_case_id`),
+ KEY `ix_func_result_tone_job_id` (`tone_job_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=479 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.outline 结构
+CREATE TABLE IF NOT EXISTS `outline` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '测试大纲文件名',
+ `title` varchar(128) NOT NULL COMMENT '测试大纲的标题',
+ `owner` varchar(16) NOT NULL COMMENT '测试大纲负责人',
+ `tid` varchar(256) NOT NULL COMMENT 'oss文件地址',
+ `remark` varchar(64) DEFAULT NULL COMMENT '测试大纲备注描述信息',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.perf_result 结构
+CREATE TABLE IF NOT EXISTS `perf_result` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `metric` varchar(128) NOT NULL COMMENT '指标名称',
+ `test_value` varchar(64) DEFAULT NULL COMMENT '测试值',
+ `cv_value` varchar(64) DEFAULT NULL COMMENT 'cv值',
+ `max_value` varchar(64) DEFAULT NULL COMMENT '最大值',
+ `min_value` varchar(64) DEFAULT NULL COMMENT '最小值',
+ `unit` varchar(64) DEFAULT NULL COMMENT '测试单位',
+ `track_result` enum('NA','INVALID','NORMAL','DECLINE','INCREASE') NOT NULL COMMENT '跟踪结果',
+ `tone_suite_id` int(11) NOT NULL COMMENT 'suite id',
+ `tone_case_id` int(11) NOT NULL COMMENT 'tone case id',
+ `tone_job_id` int(11) NOT NULL COMMENT 'tone job id',
+ `task_id` int(11) NOT NULL COMMENT '测试方案id',
+ PRIMARY KEY (`id`),
+ KEY `ix_perf_result_task_id` (`task_id`),
+ KEY `ix_perf_result_tone_case_id` (`tone_case_id`),
+ KEY `ix_perf_result_tone_suite_id` (`tone_suite_id`),
+ KEY `ix_perf_result_tone_job_id` (`tone_job_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.plan 结构
+CREATE TABLE IF NOT EXISTS `plan` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `title` varchar(64) NOT NULL COMMENT '测试方案名称',
+ `req_id` int(11) DEFAULT NULL COMMENT '测试需求id',
+ `req_title` varchar(128) DEFAULT NULL COMMENT '测试需求标题',
+ `content` json DEFAULT NULL COMMENT '测试方案内容',
+ `status` varchar(16) NOT NULL COMMENT '测试方案阶段状态',
+ `cases` varchar(256) DEFAULT NULL COMMENT '测试用例,多个使用","隔开',
+ `tasks` varchar(256) DEFAULT NULL COMMENT '测试任务,多个使用","隔开',
+ `reviewers` varchar(256) NOT NULL COMMENT '方案评审人列表',
+ `owner` varchar(256) NOT NULL COMMENT '测试需求的负责人,多个以,隔开',
+ `report` tinyint(1) NOT NULL COMMENT '测试报告是否已生成',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `title` (`title`)
+) ENGINE=InnoDB AUTO_INCREMENT=63 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.plan_review 结构
+CREATE TABLE IF NOT EXISTS `plan_review` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `plan_id` int(11) NOT NULL COMMENT '测试方案id',
+ `reviewer` varchar(32) NOT NULL COMMENT '测试需方案的评审人',
+ `status` varchar(16) NOT NULL COMMENT '评审状态',
+ `desc` varchar(512) DEFAULT NULL COMMENT '评审内容',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.product_category 结构
+CREATE TABLE IF NOT EXISTS `product_category` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '大类名称',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.product_plan 结构
+CREATE TABLE IF NOT EXISTS `product_plan` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `test_product_id` int(11) NOT NULL COMMENT '测试产品id',
+ `plan_id` int(11) NOT NULL COMMENT '测试产品实际复制执行的plan id',
+ `executor` varchar(256) NOT NULL COMMENT '测试产品执行人',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.requirement 结构
+CREATE TABLE IF NOT EXISTS `requirement` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `title` varchar(128) NOT NULL COMMENT '测试需求标题',
+ `outline_id` int(11) DEFAULT NULL COMMENT '测试大纲id',
+ `outline_title` varchar(64) DEFAULT NULL COMMENT '测试大纲标题',
+ `content` json NOT NULL COMMENT '测试需求的描述内容',
+ `status` varchar(16) NOT NULL COMMENT '测试需求阶段',
+ `owner` varchar(16) NOT NULL COMMENT '测试需求的创建人',
+ `assignee` varchar(256) NOT NULL COMMENT '测试需求的指派人,多个以,隔开',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.task 结构
+CREATE TABLE IF NOT EXISTS `task` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '任务名称',
+ `status` varchar(16) NOT NULL COMMENT '任务执行状态',
+ `run_method` enum('MANUAL','AUTO') NOT NULL COMMENT '测试任务执行方式',
+ `owner` varchar(256) NOT NULL COMMENT '任务执行人',
+ `plan_id` int(11) NOT NULL COMMENT '测试方案id',
+ `plan_title` varchar(256) NOT NULL COMMENT '测试方案标题',
+ `cases` varchar(256) NOT NULL COMMENT '测试用例,多个使用,隔开',
+ `desc` varchar(256) DEFAULT NULL COMMENT '备注',
+ `run_result` json DEFAULT NULL COMMENT '手动用例执行结果',
+ `config` json DEFAULT NULL COMMENT '测试任务配置',
+ `device_id` int(11) DEFAULT NULL COMMENT '测试设备ID',
+ `device_ip` varchar(256) DEFAULT NULL COMMENT '测试机器IP',
+ `workspace` varchar(128) NOT NULL COMMENT 'tone workspace',
+ `project` varchar(128) NOT NULL COMMENT 'tone project',
+ `job_type` varchar(128) NOT NULL COMMENT 'tone job type',
+ `test_type` varchar(32) DEFAULT 'others' COMMENT '测试任务类型',
+ `cluster` varchar(256) DEFAULT NULL COMMENT '测试机器集群名称',
+ `tags` varchar(256) DEFAULT NULL COMMENT '测试机器标签',
+ `tsn` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `ix_task_plan_id` (`plan_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=90 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.test_product 结构
+CREATE TABLE IF NOT EXISTS `test_product` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '测试产品名称',
+ `category_id` int(11) NOT NULL COMMENT '大类id',
+ `origin_plan_id` int(11) NOT NULL COMMENT '测试产品对应的plan id',
+ `desc` varchar(256) DEFAULT NULL COMMENT '产品描述',
+ `test_method` varchar(256) DEFAULT NULL COMMENT '测试方法',
+ `test_requirement` varchar(256) DEFAULT NULL COMMENT '测试要求',
+ `need_config` tinyint(1) DEFAULT NULL COMMENT '是否扩展配置',
+ `owner` varchar(256) NOT NULL DEFAULT '' COMMENT '测试产品创建人',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.test_suite 结构
+CREATE TABLE IF NOT EXISTS `test_suite` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(128) NOT NULL COMMENT '测试套名称',
+ `creator` varchar(64) NOT NULL COMMENT '测试套的创建人员',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_case 结构
+CREATE TABLE IF NOT EXISTS `tone_case` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `tone_case_id` int(11) NOT NULL COMMENT 'tone用例ID',
+ `tone_case_name` varchar(256) NOT NULL COMMENT 'tone用例名称',
+ `suite_id` int(11) NOT NULL COMMENT 'suite ID',
+ `suite_name` varchar(256) NOT NULL COMMENT 'suite用例名称',
+ `test_type` varchar(64) DEFAULT NULL COMMENT '测试类型',
+ PRIMARY KEY (`id`),
+ KEY `ix_tone_case_tone_case_name` (`tone_case_name`),
+ KEY `ix_tone_case_suite_id` (`suite_id`),
+ KEY `ix_tone_case_suite_name` (`suite_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=603 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_job 结构
+CREATE TABLE IF NOT EXISTS `tone_job` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(100) NOT NULL COMMENT 'tone job名称',
+ `state` enum('PENDING','RUNNING','SUCCESS','FAIL','STOP','SKIP') NOT NULL COMMENT 'tone job状态',
+ `test_type` enum('FUNCTIONAL','PERFORMANCE') NOT NULL COMMENT '测试类型',
+ `tone_job_id` int(11) NOT NULL COMMENT 'tone job id',
+ `tone_job_link` varchar(100) DEFAULT '' COMMENT 'tone job链接',
+ `task_id` int(11) NOT NULL COMMENT '测试方案id',
+ `server_info` json DEFAULT NULL COMMENT '存储tone job的机器信息',
+ PRIMARY KEY (`id`),
+ KEY `ix_tone_job_tone_job_id` (`tone_job_id`),
+ KEY `ix_tone_job_task_id` (`task_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_sync_pull 结构
+CREATE TABLE IF NOT EXISTS `tone_sync_pull` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=76149 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_sync_push 结构
+CREATE TABLE IF NOT EXISTS `tone_sync_push` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.user 结构
+CREATE TABLE IF NOT EXISTS `user` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `user_name` varchar(256) DEFAULT NULL COMMENT '用户名称',
+ `nick_name` varchar(64) DEFAULT NULL COMMENT '用户昵称,具有唯一性',
+ `email` varchar(64) NOT NULL COMMENT '用户邮箱',
+ `avatar_url` varchar(512) DEFAULT NULL COMMENT '用户头像地址',
+ `role` enum('ADMIN','SENIOR','JUNIOR','COMMON') NOT NULL DEFAULT 'COMMON',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `nick_name` (`nick_name`),
+ KEY `ix_user_user_name` (`user_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.user_open_source 结构
+CREATE TABLE IF NOT EXISTS `user_open_source` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `user_name` varchar(256) DEFAULT NULL COMMENT '用户名称',
+ `nick_name` varchar(64) NOT NULL COMMENT '用户昵称,具有唯一性',
+ `email` varchar(64) NOT NULL COMMENT '用户邮箱',
+ `password` varchar(64) NOT NULL COMMENT '用户密码,前端对密码md5加密后的值',
+ `avatar_url` varchar(512) DEFAULT NULL COMMENT '用户头像地址',
+ `role` enum('ADMIN','SENIOR','JUNIOR','COMMON') NOT NULL DEFAULT 'COMMON',
+ `token` varchar(256) NOT NULL COMMENT 'api访问凭证',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `nick_name` (`nick_name`),
+ UNIQUE KEY `email` (`email`),
+ KEY `ix_user_open_source_token` (`token`(255))
+) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.user_role_op_record 结构
+CREATE TABLE IF NOT EXISTS `user_role_op_record` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `applicant` varchar(64) NOT NULL COMMENT '申请人name',
+ `applicant_id` int(11) NOT NULL COMMENT '申请人ID',
+ `apply_reason` varchar(512) DEFAULT NULL COMMENT '申请理由',
+ `signer` varchar(64) DEFAULT NULL COMMENT '评审人name',
+ `has_review` tinyint(1) NOT NULL COMMENT '是否已经审核',
+ `review_result` enum('INIT','PASS','FAIL') NOT NULL COMMENT '审核结果',
+ `review_reason` varchar(512) DEFAULT NULL COMMENT '评审意见',
+ `method` enum('APPROVE','UPGRADE','DOWNGRADE','DELETE') NOT NULL COMMENT '操作方式',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
+
+/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
+/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+
+
+```
+
+
+### b.TestLib 服务依赖
+### c. clone test-lib代码到~/tone/code目录下
+```shell
+git clone --single-branch --branch master https://gitee.com/anolis/testlib.git ~/tone/code/testlib
+```
+### d.增加docker-compose配置
+```yaml
+# docker-compose.yaml service下增加test-lib
+ test-lib:
+ build:
+ context: code/testlib/
+ dockerfile: Dockerfile
+ args:
+ APP_NAME: test-lib
+ ENV: daily
+ image: test-lib:latest
+ ports:
+ - "8005:8005"
+ depends_on:
+ - mysql
+ - redis
+ environment:
+ <<: *common-variables
+ # db
+ db_url: mysql+aiomysql://${db_user}:{db_password}@mysql:3306/test-lib
+ # redis
+ redis_url: redis://:${redis_password}@redis:6379/10
+ # app
+ tone_host: http://${server_ip}:8080/
+ tone_token: tone_token
+ tone_user_name: tone_user_name
+ main_domain: http://${server_ip}:8005
+ oss_url: http://${server_ip}:8005
+```
+#### e.重启服务
+```shell
+docker-compose -f ~/tone/docker-compose.yaml up --build -d
+```
+## 7. 独立部署 FAQ
+https://tone.openanolis.cn/help_doc/12
\ No newline at end of file
diff --git "a/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/test.md" "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/test.md"
new file mode 100644
index 0000000000000000000000000000000000000000..b09df7d02fee342106c45e78485a992609d67bdb
--- /dev/null
+++ "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/test.md"
@@ -0,0 +1,70 @@
+# 一级标题
+## 二级标题
+### 三级标题
+**粗体文本**
+
+__cuti__
+
+*斜体文本*
+
+_xieti_
+
+下划线
+
+~~删除线~~
+
+上标:Xy
+
+下标:An
+
+> 引用文本
+- 无序列表项1
+ - 第二层
+- 无序列表项2
+* * *
+1. 有序列表项1
+2. 有序列表项2
+---
+[链接文本](https://gitee.com/suli01/community/edit/master/sig/T-One/content/%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97/%E7%94%A8%E6%88%B7%E8%81%86%E5%90%AC/test.md)
+
+链接名称
+
+'''python
+def hello_world():
+ print("Hello, world!")
+
+
+
+| 列1 | 列2 | 列3 |
+| --- | --- | --- |
+| 单元格1 | 单元格2 | 单元格3 |
+| 单元格4 | 单元格5 | 单元格6 |
+
+
+| 左对齐 | 居中对齐 | 右对齐 |
+|:-----|:------:|------:|
+| 文本 | 文本 | 文本 |
+
+
+
+
+
+ 值班人员 |
+ 星期一 |
+ 星期二 |
+ 星期三 |
+
+
+ 张三 |
+ 李四 |
+ 王五 |
+
+
+
+- [ ] :待完成事项
+
+- [x] :已完成事项
+
+
+

+
diff --git "a/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md" "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md"
new file mode 100644
index 0000000000000000000000000000000000000000..5dbae354a9c89bf5df55c9e8fe90c982caec7b1c
--- /dev/null
+++ "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md"
@@ -0,0 +1,2 @@
+# hello
+
\ No newline at end of file
diff --git "a/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/\350\201\206\345\220\254.md" "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/\350\201\206\345\220\254.md"
new file mode 100644
index 0000000000000000000000000000000000000000..e5d110a57b01266616a91010b0b0032dcff2c5c1
--- /dev/null
+++ "b/sig/T-One-copy2/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/\350\201\206\345\220\254.md"
@@ -0,0 +1,2 @@
+# hello, 欢迎来到聆听 .md
+## 阿斯顿发射点
\ No newline at end of file
diff --git a/sig/T-One-copy2/sig-info.yaml b/sig/T-One-copy2/sig-info.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..2386d80d61b40da42857b7c5416be358419aee1a
--- /dev/null
+++ b/sig/T-One-copy2/sig-info.yaml
@@ -0,0 +1,40 @@
+name: T-One-copy2
+en_name: T-One-copy2
+home_page: https://openanolis.cn/sig/t-one
+description: T-One兴趣组主要目标是建立OpenAnolis社区的质量保障基础设施(包括但不限于一站式的自动化测试平台T-One/Testfarm,Bisect缺陷定位工具等各类测试平台), 支持OpenAnolis社区的各类测试活动。
+en_description: The main goal of the T-One interest group is to establish the quality assurance infrastructure of the OpenAnolis community (including but not limited to the one-stop automated test platform T-One/Testfarm, Bisect defect location tool and other test platforms),
+to support various test platforms in the OpenAnolis community Class testing activities.
+mailing_list: t-one@lists.openanolis.cn
+meeting_minutes_url: https://etherpad.openanolis.cn/p/t-one
+maintainers:
+- openanolis_id: yongchao
+ gitee_id: yongchao
+ name: yongchao Zhang
+ organization: AlibabaCloud
+ email: yongchao@linux.alibaba.com
+- openanolis_id: sULI01
+ gitee_id: SULI01
+- openanolis_id: jacob2021
+ gitee_id: jacob2021
+- openanolis_id: eeeeeeee
+ gitee_id: suli01
+contributors:
+- openanolis_id: fuyong
+ gitee_id: fuyong
+- openanolis_id: woohello
+ gitee_id: woohello
+- openanolis_id: maozzi4
+ gitee_id: maozzi
+repositories:
+- repo:
+ - anolis/testfarm
+ - anolis/testfarm-front
+ - anolis/tone-web
+ - anolis/tone-runner
+ - anolis/tone-agent
+ - anolis/tone-agent-proxy
+ - anolis/tone-agent-front
+ - anolis/tone-front
+ - anolis/tone-deploy
+ - anolis/tone-cli
+ - anolis/tone-storage
\ No newline at end of file
diff --git a/sig/T-One-copy3/README.en.md b/sig/T-One-copy3/README.en.md
new file mode 100644
index 0000000000000000000000000000000000000000..831cee37e721fa46cb1c71f1fdaf8fd244ac750e
--- /dev/null
+++ b/sig/T-One-copy3/README.en.md
@@ -0,0 +1,57 @@
+## SIG Home
+
+https://openanolis.cn/sig/t-one
+
+## SIG Mission
+T-One SIG focus on building a one station test system, to fully support OpenAnolis community test activities.
+
+The main activities of this SIG are:
+1. Explore excellent solutions, collect requirements by the community, design and plan direction on the test platform.
+2. Develop and maint T-One/Testfarm to support testing tasks by the community.
+3. Make T-One open-source, attract develpers by the community, provide testing services for community developers and cooperative enterprises此处有中文.
+
+## T-One Link
+T-One:https://tone.openanolis.cn/
+
+Testfarm:https://testfarm.openanolis.cn/
+
+## Members
+| Member | Role |
+| ------------ | ------------ |
+| [yongchao](https://gitee.com/zy_chao) | maintainer |
+| vosamowho | maintainer |
+| wjn740 | maintainer |
+| suqingming | maintainer |
+| jacob2021 | maintainer |
+| fuyong | maintainer |
+| wenlylinux | contributor |
+| zhangxuefeng | contributor |
+| wb-cy860729 | contributor |
+| jpt2021 | contributor |
+| woohello | contributor |
+| as461177513 | contributor |
+| vosamowho | contributor |
+
+## SIG Repositories
+
+Source code repositories:
+- https://gitee.com/anolis/testfarm
+- https://gitee.com/anolis/testfarm-front
+- https://gitee.com/anolis/tone-web
+- https://gitee.com/anolis/tone-runner
+- https://gitee.com/anolis/tone-agent
+- https://gitee.com/anolis/tone-agent-proxy
+- https://gitee.com/anolis/tone-agent-front
+- https://gitee.com/anolis/tone-front
+- https://gitee.com/anolis/tone-deploy
+- https://gitee.com/anolis/tone-cli
+- https://gitee.com/anolis/tone-storage
+
+
+## Meetings
+
+## Chat GROUP
+
+欢迎使用钉钉扫码入群
+
+
\ No newline at end of file
diff --git a/sig/T-One-copy3/README.md b/sig/T-One-copy3/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..9c662bcc3a1b4336f320a9478aecb1b010f88b98
--- /dev/null
+++ b/sig/T-One-copy3/README.md
@@ -0,0 +1,56 @@
+## SIG主页
+
+https://openanolis.cn/sig/t-one
+
+## SIG目标
+T-One兴趣组主要目标是建立OpenAnolis社区的质量保障基础设施(包括但不限于一站式的自动化测试平台T-One/Testfarm,Bisect缺陷定位工具等各类测试平台), 支持OpenAnolis社区的各类测试活动;此SIG组的主要活动有:
+1. 探索业界在测试工具方面的优秀方案,同时结合社区在测试方面的需求,设计规划测试工具的后续方向。
+2. 开发并维护相关测试工具,支撑社区的各类测试活动。....
+3. 开源相关测试工具,吸引社区的开发力量,并为社区开发者及合作企业提供测试服务。
+
+## 平台链接
+T-One:https://tone.openanolis.cn/
+
+Testfarm:https://testfarm.openanolis.cn/
+
+
+## 成员列表
+| 成员 | 角色 |
+| ------------ | ------------ |
+| [yongchao](https://gitee.com/zy_chao) | maintainer |
+| vosamowho | maintainer |
+| wjn740 | maintainer |
+| suqingming | maintainer |
+| jacob2021 | maintainer |
+| fuyong | maintainer |
+| wenlylinux | contributor |
+| zhangxuefeng | contributor |
+| wb-cy860729 | contributor |
+| jpt2021 | contributor |
+| woohello | contributor |
+| as461177513 | contributor |
+| vosamowho | contributor |
+
+## SIG仓库
+
+Source code repositories:
+- https://gitee.com/anolis/testfarm
+- https://gitee.com/anolis/testfarm-front
+- https://gitee.com/anolis/tone-web
+- https://gitee.com/anolis/tone-runner
+- https://gitee.com/anolis/tone-agent
+- https://gitee.com/anolis/tone-agent-proxy
+- https://gitee.com/anolis/tone-agent-front
+- https://gitee.com/anolis/tone-front
+- https://gitee.com/anolis/tone-deploy
+- https://gitee.com/anolis/tone-cli
+- https://gitee.com/anolis/tone-storage
+
+## 小组例会
+双周会,采用线上会议形式
+
+## 钉钉群
+
+欢迎使用钉钉扫码入群
+
+
\ No newline at end of file
diff --git a/sig/T-One-copy3/assets/Dingtalk_20240614165831.jpg b/sig/T-One-copy3/assets/Dingtalk_20240614165831.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..925bf2945891170613821e8e7dbc9e4206d17c8d
Binary files /dev/null and b/sig/T-One-copy3/assets/Dingtalk_20240614165831.jpg differ
diff --git a/sig/T-One-copy3/assets/dingding_group.jpeg b/sig/T-One-copy3/assets/dingding_group.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..f70925989bcb204f9f3c0bd32d79775df2a12bfd
Binary files /dev/null and b/sig/T-One-copy3/assets/dingding_group.jpeg differ
diff --git "a/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/1\346\234\210test" "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/1\346\234\210test"
new file mode 100644
index 0000000000000000000000000000000000000000..8c388782d43faeeb78831c1469913f99ec84787a
--- /dev/null
+++ "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/1\346\234\210test"
@@ -0,0 +1,2 @@
+test
+0228
\ No newline at end of file
diff --git "a/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/2\346\234\210test" "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/2\346\234\210test"
new file mode 100644
index 0000000000000000000000000000000000000000..479dbaffc47cd599a84dc580c53f191a8bb6a70f
--- /dev/null
+++ "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/2\346\234\210test"
@@ -0,0 +1,2 @@
+test
+顶顶顶顶顶
\ No newline at end of file
diff --git "a/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/3\346\234\210test" "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/3\346\234\210test"
new file mode 100644
index 0000000000000000000000000000000000000000..30d74d258442c7c65512eafab474568dd706c430
--- /dev/null
+++ "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/3\346\234\210test"
@@ -0,0 +1 @@
+test
\ No newline at end of file
diff --git "a/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202203-3).md" "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202203-3).md"
new file mode 100644
index 0000000000000000000000000000000000000000..3bf59177bf7eda2dd9c2b3d04d09318fc818ae5b
--- /dev/null
+++ "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202203-3).md"
@@ -0,0 +1,20 @@
+## 会议主题
+测试管理系统TestLib的方案讨论
+
+## 会议时间
+2022.03.16 10:00-11:00
+
+## 参会人
+
+- 参会方:来自电子五所(赛宝实验室)和阿里云的社区爱好者
+- 参会人:yongchao、qingming、wjn740、as461177513、VosAmoWho 等等
+
+## 会议记要
+
+1. 对齐五所提出的方案扩展需求,主要是字段的扩展以及流程上适当进行松耦合
+ - 设计对象:需要考虑测试用例套与测试需求的关系,测试结果与测试执行记录集的关系,测试方案的扩展等
+ - 评审相关:测试用例、测试方案、测试结果
+ - 流程上:主要对象之间需要进行适当的弱耦合
+ - 平台输出:需要考虑测试用例及测试用例执行记录集这两块内容
+2. 讨论后续社区合作、运营等方式
+3. 后续yongchao会结合这次新增扩展需求进行设计上的优化并与大家对齐
\ No newline at end of file
diff --git "a/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202204-1).md" "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202204-1).md"
new file mode 100644
index 0000000000000000000000000000000000000000..6bec3ab07a69029ad4674e49014d4cc7394c019d
--- /dev/null
+++ "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202204-1).md"
@@ -0,0 +1,22 @@
+## 会议主题
+测试管理系统TestLib演示及需求讨论
+
+## 会议时间
+2022.04.28 11:00-12:00
+
+## 参会人
+- 参会方:来自电子五所(赛宝实验室)和阿里云的社区爱好者
+- 参会人:yongchao、wjn740、as461177513、VosAmoWho 等等
+## 会议记要
+
+1. 我们演示了testlib目前全部功能,包括大纲,需求,方案,用例,任务,设备等等功能,强调通用性。
+ - 测试方案已经跟测试用例和测试任务打通。
+ - 测试用例跟t-one打通,测试任务结果跟t-one打通中。
+ - 测试设备状态跟t-one打通中。
+ - 介绍目前规划:用户权限,自定义字段,测试任务结果打通,测试方案维度的报告,还有系统配置等。
+2. 讨论下阶段主要需求,主要考虑两个方面:
+ - 希望演示的时候打通台式机的一个**完整测试流程打通**(大纲,需求,方案,任务,报告等)。
+ - 有一个台式机的**测试报告**可以看。
+3. 演示发现的主要问题:
+ - 方案关联的任务没限制,用例管理信息问题,任务结果问题,还有方案维度的报告结果。
+
diff --git "a/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202205-1).md" "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202205-1).md"
new file mode 100644
index 0000000000000000000000000000000000000000..8139fbeeb65e94b80649d1a9862546164e508212
--- /dev/null
+++ "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202205-1).md"
@@ -0,0 +1,36 @@
+## 会议主题
+测试管理系统TestLib开发进度同步、演示、以及问题交流
+## 会议时间
+2022.05.20 10:00-11:00
+## 参会人
+
+- 参会方:来自电子五所(赛宝实验室)和阿里云的社区爱好者
+- 参会人:yongchao、VosAmoWho、juexiao、wjn740、zhizhisheng、as461177513 等等
+## 会议记要
+
+1. yongchao和VosAmoWho 与五所同学演示了testlib相关功能,着重介绍了与上次demo的开发重点变化,主要是测试方案及报告,测试用例的优化,测试任务及结果录入,以及系统配置等模块的优化。
+1. 大家一起交流了 testlib 以及 t-one的相关问题:
+ - T-One相关问题:
+ - 文档指导类:
+ - 升级debian相关步骤,涉及toneagent, tone配置,tone-cli等。
+ - 同步本地用例出现故障, 以及系统同步用例相关的配置。
+ - 测试机器:内网集群与内网单机的区别,如何配置等
+ - 测试工具的管理问题:
+ - 不同的脚本都通过git进行管理出现的问题,离线模式介绍。
+ - 测试工具的管理,版本管理如何做。
+ - TestLib相关问题:
+ - 和tone的联动需要完善。
+ - 用例结果:测试用例 及 结果 通过excel 导入及导出;关联任务/跳过任务
+ - 测试报告:需要显示测试设备信息,后面考虑软硬件信息的提取及展示
+3. 目前系统已经发布上线,可以给五所同学配置权限即可进行试用。
+3. 五所提出的5月25日正式演示时间点不变,主要演示需求点还是:
+ - 希望演示的时候打通台式机的一个**完整测试流程打通**(大纲,需求,方案,任务,报告等)。
+ - 有一个台式机的**测试报告**可以看。
+5. 后续开发重点主要是:
+ - 权限管控体系完善,方便社区线上使用。
+ - 与t-one对接起来,固定ws、project、job类型等,自动执行并同步用例。
+ - 手动录入用例结果、及设备的优化。
+ - 测试方案报告及结果中设备等的展示优化。
+
+
+
diff --git "a/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202306-1).md" "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202306-1).md"
new file mode 100644
index 0000000000000000000000000000000000000000..4274bb1bf5ec4ed2977f3e2705795b6743c76f6d
--- /dev/null
+++ "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202306-1).md"
@@ -0,0 +1,24 @@
+
+### 会议主题
+项目例会
+
+### 会议时间
+2023.06.08 10:30-11:30
+
+### 参会人
+参会人:yongchao,fubing,ylsong, zhizhisheng,suchunyang,T-One项目小组
+
+### 会议纪要
+
+1. T-One最新进展同步
+- runner2 性能优化
+- toneagent新增日志自动拆分、自动清理功能
+- 同步用例逻辑变更,不依赖同步用例的机器
+- 用例管理批量编辑字段优化
+- 时序分析中性能分析、新建 Job 提交、消息通知相关慢接口优化。
+- 新增接口可查询某个产品下的 Job ID。
+
+2. 需求反馈和意见收集
+- 物理机迁移的方案:主要关心数据的可迁移
+- 版本升级原地升级的方案:升级的便捷性
+- 社区版和开源部署版的数据节点间的互相同步数据
diff --git "a/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202307-1).md" "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202307-1).md"
new file mode 100644
index 0000000000000000000000000000000000000000..e59dcd0f34c5345e035f92797bb28fe15875513e
--- /dev/null
+++ "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202307-1).md"
@@ -0,0 +1,26 @@
+
+### 会议主题
+项目例会
+
+### 会议时间
+2023.06.08 10:30-11:30
+
+### 参会人
+参会人:yongchao,fubing,ylsong, zhizhisheng,suchunyang,T-One项目小组
+
+### 会议纪要
+
+1. T-One最新进展同步
+- runner2 性能优化
+- toneagent新增日志自动拆分、自动清理功能
+- 同步用例逻辑变更,不依赖同步用例的机器
+- 用例管理批量编辑字段优化
+- 时序分析中性能分析、新建 Job 提交、消息通知相关慢接口优化。
+- 新增接口可查询某个产品下的 Job ID。
+- [这是一个链接]: http://www.z01.com/ "这里是链接的title内容
+这是一个链接 [这是逐浪软件官网链接](http://www.z01.com/ "欢迎访问逐浪软件官网")
+2. 需求反馈和意见收集
+- 物理机迁移的方案:主要关心数据的可迁移
+- 版本升级原地升级的方案:升级的便捷性
+- 社区版和开源部署版的数据节点间的互相同步数据
+- 测试验证
diff --git "a/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232\346\265\213\350\257\225\346\226\207\344\273\266.md" "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232\346\265\213\350\257\225\346\226\207\344\273\266.md"
new file mode 100644
index 0000000000000000000000000000000000000000..1732d3136c0736b3ee67555e8a44c3aba0370283
--- /dev/null
+++ "b/sig/T-One-copy3/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232\346\265\213\350\257\225\346\226\207\344\273\266.md"
@@ -0,0 +1,4 @@
+### 收尾验证
+这是收尾,验证同步作者信息
+### 验证history
+2023年11月16日10:49:13
\ No newline at end of file
diff --git "a/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/ToneAgent\347\274\226\350\257\221\346\211\223\345\214\205\346\211\213\345\206\214.md" "b/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/ToneAgent\347\274\226\350\257\221\346\211\223\345\214\205\346\211\213\345\206\214.md"
new file mode 100644
index 0000000000000000000000000000000000000000..0949b8e70e5300f1cf752ca0259c1d30317b932b
--- /dev/null
+++ "b/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/ToneAgent\347\274\226\350\257\221\346\211\223\345\214\205\346\211\213\345\206\214.md"
@@ -0,0 +1,63 @@
+# 1. ToneAgent编译
+
+## 1.1 环境准备
+Go 1.17 及以上版本([下载地址](https://go.dev/dl/))
+
+## 1.2 下载ToneAgent
+ git clone git@gitee.com:anolis/tone-agent.git
+ cd tone-agent
+
+## 1.3 编译
+`-o` 后面是二进制的名称
+
+### 1.3.1 编译 AMD64的二进制
+ GOOS=linux GOARCH=amd64 go build -o toneagent-amd64-v102
+
+### 1.3.2 编译 ARM 的二进制
+ GOOS=linux GOARCH=arm64 go build -o toneagent-amd64-v102
+
+# 2. Linux环境二进制打包
+
+## 2.1 RPM包制作
+
+### 2.1.1 RPM环境准备
+ sudo su -c bash # 使用bash
+ yum install rpmdevtools rpmdevtools # 安装rpm打包工具
+
+### 2.1.2 打包RPM包
+ rpmdev-setuptree # 创建目录,会在用户目录下创建rpmbuild文件夹 ~/rpmbuild
+ cd # 返回用户目录
+ vi rpmbuild/SPEC/toneagent.spec # 修改创建spec的模板文件
+ mkdir rpmbuild/BUILDROOT/toneagent-0.0.1-AMD
+ cp ${二进制路径} rpmbuild/BUILDROOT/toneagent-0.0.1-AMD/ # 拷贝二进制到RPM目录
+ cd rpmbuild/SPEC/
+ rpmbuild -bb toneagent.spec # 构建rpm包
+
+### 2.1.3 RPM安装及启动
+ sudo yum -y install ${toneagent包位置} # 安装
+ sudo systemctl start toneagent # 启动
+
+## 2.2 DEB包制作
+
+### 2.1.1 环境准备
+ sudo apt instsll -y dpkg # 使用二进制打包,只需要安装这个包
+ sudo apt install -y dpkg build-essential devscripts quilt dh-make git # 扩展安装
+
+### 2.1.2 打包DEB包
+ mkdir toneagent.work
+ cd toneagent.work
+ mkdir -pv toneagent_0.0.1_amd64/{DEBIAN,bin}
+ cp ${tone-agent二进制} toneagent_0.0.1_amd64/bin/
+ echo "Package: toneagent
+ Version: 1.0
+ Architecture: arm
+ Maintainer: alibaba
+ Installed-Size: 100
+ Depends:
+ Priority: optional
+ Description: toneagent for SUNXI devices (A10,A20 ...),example is Cubieboard.
+ " >> toneagent_0.0.1_amd64/DEBIAN/control
+ dpkg -b toneagent_0.0.1_amd64 toneagent_0.0.1_amd64.deb
+
+### 2.1.3 DEB安装
+ dpkg -i toneagent_0.0.1_amd64.deb
diff --git "a/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/aest.md" "b/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/aest.md"
new file mode 100644
index 0000000000000000000000000000000000000000..9dca95d406a94bcd351308487dead32fe19c01a1
--- /dev/null
+++ "b/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/aest.md"
@@ -0,0 +1,16 @@
+HCT密码计算套件的目录结构如下:
+阿斯顿法师打发斯蒂芬
+44444444444444444444444444444444444444444444444444444
+hygon-devkit/
+
+ ├─ hct
+ ├──pkg
+ │ ├── hct_1.0.0.20230224_rc
+ │ ├── hct_1.0.1.20230512_rc
+ │ └── hct_1.1.0.20230730_rc
+ │
+ └── README.md
+
+\* pkg目录:内含各版本hct密码计算套件。
+
+\* README.md文件:有关HCT的简单情况。
\ No newline at end of file
diff --git "a/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/test.md" "b/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/test.md"
new file mode 100644
index 0000000000000000000000000000000000000000..d177268c2520cfbc84c7cae1240402235bb88bee
--- /dev/null
+++ "b/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/test.md"
@@ -0,0 +1,19 @@
+HCT密码计算套件的目录结构如下:
+阿斯顿法师打发斯蒂芬
+44444444444444444444444444444444444444444444444444444
+hygon-devkit/
+
+ ├─ hct
+ ├──pkg
+ │ ├── hct_1.0.0.20230224_rc
+ │ ├── hct_1.0.1.20230512_rc
+ │ └── hct_1.1.0.20230730_rc
+ │
+ └── README.md
+
+\* pkg目录:内含各版本hct密码计算套件。
+
+\* README.md文件:有关HCT的简单情况。
+
+
+hhhhh\njjjjjjjjj \t9009090
\ No newline at end of file
diff --git "a/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/test2.md" "b/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/test2.md"
new file mode 100644
index 0000000000000000000000000000000000000000..9dca95d406a94bcd351308487dead32fe19c01a1
--- /dev/null
+++ "b/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/test2.md"
@@ -0,0 +1,16 @@
+HCT密码计算套件的目录结构如下:
+阿斯顿法师打发斯蒂芬
+44444444444444444444444444444444444444444444444444444
+hygon-devkit/
+
+ ├─ hct
+ ├──pkg
+ │ ├── hct_1.0.0.20230224_rc
+ │ ├── hct_1.0.1.20230512_rc
+ │ └── hct_1.1.0.20230730_rc
+ │
+ └── README.md
+
+\* pkg目录:内含各版本hct密码计算套件。
+
+\* README.md文件:有关HCT的简单情况。
\ No newline at end of file
diff --git "a/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/\345\257\271\345\244\226\346\234\215\345\212\241API.md" "b/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/\345\257\271\345\244\226\346\234\215\345\212\241API.md"
new file mode 100644
index 0000000000000000000000000000000000000000..6be2fe13cbb6e50e1bf41c425b239231eda209e8
--- /dev/null
+++ "b/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/\345\257\271\345\244\226\346\234\215\345\212\241API.md"
@@ -0,0 +1 @@
+参考文档:https://tone.openanolis.cn/help_doc/7
\ No newline at end of file
diff --git "a/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/\346\265\213\350\257\225\345\245\227\344\273\266\351\233\206\346\210\220\346\211\213\345\206\214.md" "b/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/\346\265\213\350\257\225\345\245\227\344\273\266\351\233\206\346\210\220\346\211\213\345\206\214.md"
new file mode 100644
index 0000000000000000000000000000000000000000..67b07c6d8e8470eef075cf75048ba3f4036edeaa
--- /dev/null
+++ "b/sig/T-One-copy3/content/\345\274\200\345\217\221\346\211\213\345\206\214/\346\265\213\350\257\225\345\245\227\344\273\266\351\233\206\346\210\220\346\211\213\345\206\214.md"
@@ -0,0 +1,282 @@
+# tone-cli介绍
+tone-cli主要用于测试套件(testsuite)的调度及运行。
+
+# 代码仓库
+https://gitee.com/anolis/tone-cli
+
+# 测试套件构成
+测试套件主要由套件本身和集成脚本构成,其中:
+
+- 测试套件可以存放于gitee或其他代码仓库,也可以是一个系统中已经包含的命令
+- 集成脚本由两部分构成:
+ - 适配脚本
+ - 测试套配置文件
+
+# 测试套件集成
+
+## 测试配置文件
+测试配置文件位于`$TONE_ROOT/conf`目录下,与适配脚本一起为测试套件服务。
+
+为了便于组织,当前根据测试类别分为`functional`,`performance`和`stress`。
+
+测试配置文件主要用于描述测试的参数,以netperf为例:
+
+ test IP runtime send_size
+ TCP_RR ipv4 60s Na
+ TCP_RR ipv4 60s 16K
+ TCP_CC ipv4 60s Na
+ TCP_CRR ipv4 60s Na
+ ...
+
+第一行描述为变量名,后续行描述的是变量的值。tone-cli会将测试套配置文件按照配置进行执行:
+
+ $ tone list netperf
+ test IP runtime send_size testconf
+ TCP_RR ipv4 60 None netperf:test=TCP_RR,IP=ipv4,runtime=60s
+ TCP_RR ipv4 60 16K netperf:test=TCP_RR,IP=ipv4,runtime=60s,send_size=16K
+ TCP_CC ipv4 60 None netperf:test=TCP_CC,IP=ipv4,runtime=60s
+ TCP_CRR ipv4 60 None netperf:test=TCP_CRR,IP=ipv4,runtime=60s
+在后续的脚本中,conf中的变量会以参数形式传递给适配脚本。
+
+> 注:
+>
+> - 没有任何变量的测试套,仍然需要创建对应名称的配置文件,保持内容为空
+> - 对于某个参数,如netperf的send_size,在某些状况下不需要传入参数,则可以置为NA
+
+## 适配脚本
+
+测试套件适配脚本需要存放于`$TONE_ROOT/tests`目录下,创建工具对应的目录,如`$TONE_ROOT/tests/netperf`。
+
+tone-cli将测试定义为以下几个阶段,可以根据需要来决定是否需要对应的阶段:
+
+- 测试套件获取
+- 测试套件编译安装
+- 测试执行
+- 结果处理
+- 测试套件卸载
+
+适配脚本需要最少包含`install.sh`,`run.sh`和`README.md`,其中:
+
+- install.sh: 定义测试套件获取、依赖包、测试套件编译及安装
+- run.sh: 定义测试执行过程,结果处理方式
+- README.md: 测试套件必要说明
+
+其他脚本可以根据需要决定,如:将结果处理脚本单独编写,在run.sh中加以引用
+
+### 测试套件获取
+
+当前支持通过URL下载或git方式获取对应的测试套:
+
+| 方式| 参数 | 说明 |举例 |
+| :--:| :---: | :---: |:---: |
+|URL下载 |WEB_URL |测试套下载地址 |WEB_URL=“https://gitee.com/anolis/tone-cli/repository/archive/master.zip”|
+|GIT仓库 |GIT_URL |git仓库地址 |GIT_URL="https://gitee.com/mirrors_HewlettPackard/netperf.git"|
+| |BRANCH |git分支| BRANCH="netperf-2.7.0"|
+
+tone-cli将根据提供的`WEB_URL`,`GIT_URL`,`BRANCH`等信息拉取对应的源代码
+
+### 举例:
+
+`netperf/install.sh`
+
+ GIT_URL="https://gitee.com/mirrors_HewlettPackard/netperf.git"
+ BRANCH="netperf-2.7.0"
+
+### 测试套件编译安装
+
+tone-cli提供的标准安装方式由以下几步:
+
+- 执行安装前额外的操作:extract_src
+- 安装依赖包:install_pkg
+- 编译:build
+- 安装:install
+
+**extract_src**
+
+用于在安装依赖包之前进行必要的准备,如centos安装epel源:
+
+ extract_src()
+ {
+ logger yum install -y epel-release
+ }
+
+**install_pkg**
+
+绝大部分状况下,不需要重写install_pkg的方法,而仅通过设置DEP_PKG_LIST的变量,tone-cli将自动进行依赖包安装。如netperf/install.sh:
+
+ DEP_PKG_LIST="automake gcc texinfo"
+
+**build和install**
+
+通常状况,build和install都需要根据测试套件进行重写。以netperf为例:
+
+ build()
+ {
+ local configure_flags=(
+ --prefix="$TONE_BM_RUN_DIR"
+ )
+ if [ "$(/usr/bin/arch)" = aarch64 ]; then
+ configure_flags+=('--build=aarch64-unknown-linux-gnu')
+ fi
+
+ export CFLAGS="-fno-strict-aliasing -fcommon"
+
+ ./autogen.sh
+ ./configure "${configure_flags[@]}"
+ make
+ }
+
+ install()
+ {
+ make install-exec
+ }
+### 测试执行
+
+测试执行被定义在`run.sh`中,主要的步骤有:
+
+- 测试准备:setup
+- 测试执行:run
+- 测试拆除:teardown
+
+以netperf为例,netperf测试可以划分为:
+
+- 启动netserver
+- 使用netperf命令进行测试
+- 拆除netserver
+
+**setup**
+
+netperf测试中,netserver启动主要逻辑为:
+
+- 判断是否设置了$SERVER,如果已设置,则认为netserver将在对应的server上执行
+- 启动netserver,启动netserver的主要逻辑在netserver.sh中体现
+
+ setup()
+ {
+ [ -n "$SERVER" ] && server=${SERVER%% *} || server=localhost
+ echo "Run netserver on host: $server"
+
+ if [ "$server" = localhost ]; then
+ source "$TONE_BM_SUITE_DIR"/netserver.sh
+ else
+ ssh $server "TONE_ROOT=$TONE_ROOT TONE_BM_RUN_DIR=$TONE_BM_RUN_DIR IP=$IP server=$server $TONE_BM_SUITE_DIR/netserver.sh"
+ fi
+ }
+
+**run**
+
+netperf测试套的执行逻辑,主要根据测试套件配置中的参数组合,设置netperf命令行参数以执行测试
+
+> 注:
+>
+> 在执行命令时,使用logger方法将netperf命令行输出写入对应的日志文件中,以备后续进行结果处理
+
+ run()
+ {
+ export PATH="$TONE_BM_RUN_DIR"/bin:$PATH
+
+ [ -n "$send_size" ] && test_options="-- -m $send_size"
+
+ opt_ip=
+ [ "$IP" = 'ipv4' ] && opt_ip='-4'
+ [ "$IP" = 'ipv6' ] && opt_ip='-6'
+ base_cmd="netperf $opt_ip -t $test -c -C -l $runtime -H $server $test_options"
+
+ # check online cpus with cpu_affinity set on multi-processor machine
+ if [ "$server" = localhost ] && [ "$(nproc)" -gt 1 ]; then
+ check_oneline_cpu
+ # the last cpu is reservered for netserver if test on single node
+ cpu_online_num=$((cpu_online_num - 1))
+ cpu_online_tpy=$(echo "$cpu_online_tpy" | awk '{$NF=""; print $0}')
+ cpu_x=$((1 % cpu_online_num))
+ [ "$cpu_x" -eq 0 ] && cpu_x=$cpu_online_num
+ mycpu=$(echo "$cpu_online_tpy" | awk -v n=$cpu_x '{print $n}')
+ test_cmd="taskset -c $(echo "$mycpu" | cut -d- -f3) $base_cmd"
+ echo "run netperf on cpu: $(echo "$mycpu" | cut -d- -f3),"\
+ "socket: $(echo "$mycpu" | cut -d- -f1),"\
+ "core_id: $(echo "$mycpu" | cut -d- -f2)"
+ else
+ test_cmd="$base_cmd"
+ fi
+
+ logger $test_cmd &
+ logger wait
+ }
+
+**teardown**
+
+netperf的teardown阶段,主要通过执行pkill命令杀死netserver进程
+
+ teardown()
+ {
+ pkill netserver
+ }
+
+**结果处理**
+tone-cli当前规定的结果规范为`key: value`,所以只要符合这个输出规范,对应的结果会被收集并存储。
+
+以netperf为例,其结果处理的`parse()`调用了一个awk脚本:
+
+ #!/usr/bin/awk -f
+
+ /^Size.*Okay.*Throughput.*Demand$/ {
+ unit = "Mbps1"
+ next
+ }
+
+ /^Size.*Throughput.*remote$/ {
+ unit = "Mbps2"
+ next
+ }
+
+ /^bytes.*secs.\s+per sec/ {
+ unit = "tps"
+ next
+ }
+
+ $8 && $0 ~ /^[ \t0-9.]+$/ {
+ if ( unit == "Mbps1" ) {
+ printf("Throughput_Mbps: %s\n",$(NF-2))
+ }
+ else if ( unit == "Mbps2" ) {
+ printf("Throughput_Mbps: %s\n",$5)
+ }
+ else{
+ printf("Throughput_%s: %s\n",unit,$6)
+ }
+ }
+
+执行完毕后会输出:
+
+ Throughput_tps: 91336.30
+
+# 公共变量
+tone-cli提供了多个公共变量用于在测试集成时使用
+
+## 测试套配置文件
+
+|变量名称| 用途| 举例|
+|:--:|:--:|:--:|
+|nr_task |设置使用的线程数,可以使用百分比形式表示,当设置为百分比时,框架会根据当前测试机CPU数量进行计算 |nr_task=1, nr_task=50%|
+|cpu_affinity |设置CPU绑定| cpupin|
+
+## 测试套适配脚本
+
+|变量名称| 用途| 举例|
+|:--:|:--:|:--:|
+|$TONE_BM_CACHE_DIR |测试套件cache目录| /tmp/tone/cache/netperf|
+|$TONE_BM_BUILD_DIR| 测试套件build目录| /tmp/tone/build/netperf|
+|$TONE_BM_RUN_DIR |测试套件run目录,可以将测试套件安装于该目录中,而不用安装到系统目录下| /tmp/tone/run/netperf|
+|$TONE_BM_RESULT_DIR |测试套件结果存放目录 |/tmp/tone/result/netperf|
+|$TONE_CURRENT_RESULT_DIR |当次运行时的结果存放目录| /tmp/tone/result/netperf/1|
+|$TONE_BM_SUITE_DIR |测试套件脚本目录| /tmp/tone/tests/netperf|
+
+# 公共函数
+
+tone-cli提供一些公共函数已方便脚本编写,公共函数主要归档于$TONE_ROOT/lib目录下,在编写脚本时可以按需引入。常用的函数有:
+
+|函数名| 文件 |用途 |举例|
+|:--:|:--:|:--:|:--:|
+|logger |lib/common.sh |记录日志 |logger netperf -t TCP_RR|
+|set_cpu_affinity_server |lib/cpu_affinity.sh |设置服务端CPU绑核,会将server绑定在最后一个CPU核上,注意,需要通过server_cmd变量进行传递 |server_cmd="netserver" [ -n "$cpu_affinity" ] && set_cpu_affinity_client logger ${server_cmd}|
+|set_cpu_affinity_client |lib/cpu_affinity.sh| 设置客户端CPU绑核,会将client绑定在第一个CPU核上,注意,需要通过client_cmd进行传递 |client_cmd="netperf -t TCP_RR" [ -n "$cpu_affinity" ] && set_cpu_affinity_client logger ${client_cmd}|
\ No newline at end of file
diff --git "a/sig/T-One-copy3/content/\346\234\210\346\212\245/202212.md" "b/sig/T-One-copy3/content/\346\234\210\346\212\245/202212.md"
new file mode 100644
index 0000000000000000000000000000000000000000..88250c901b0988fd3ca405387b290d62c3ad6602
--- /dev/null
+++ "b/sig/T-One-copy3/content/\346\234\210\346\212\245/202212.md"
@@ -0,0 +1,82 @@
+# 整体进展
+- 发布 ANCK 4.19-027 版本。
+- 初步建立了龙蜥社区第三方驱动的研发流程,并试用该流程集成了国产化网迅网卡驱动。
+- ANCK-5.10 内核产品化。
+- 成立"浪潮信息龙蜥联合实验室"。
+
+# ANCK 4.19-027 版本
+## 内核更新
+- 版本更新至 4.19.91-27
+- 重要内核缺陷及安全漏洞(CVE)修复
+- 在 namespace_unlock 中使用 synchronize_rcu_expedited 加速 rcu 宽限期,使并发启动100个 busybox 容器的速度提升19%
+- 调整 Trusted Platform Module 驱动的缓冲区大小,避免上下文切换时因内存不足报错
+- 默认使能 mq-deadline IO 调度器
+- 提升 NVMe、megaraid_sas 和 mpt3sas 三个驱动的稳定性
+- 全面支持 Aero 系列 raid 卡
+- 修复了飞腾处理器 SMMU 的硬件缺陷导致的问题
+## 自研功能
+- 支持动态开启 Group Identity 特性
+- 支持稀疏文件映射使用系统零页,减少启动虚拟机时的内存消耗
+## CVE修复列表
+详情请参考:
+- [Anolis OS 7](https://anas.openanolis.cn/errata/detail/ANSA-2023:0002)
+- [Anolis OS 8](https://anas.openanolis.cn/errata/detail/ANSA-2023:0001)
+
+重要CVE列表:
+- CVE-2021-33656
+- CVE-2021-4037
+- CVE-2021-4159
+- CVE-2022-0001
+- CVE-2022-0002
+- CVE-2022-0494
+- CVE-2022-1012
+- CVE-2022-1048
+- CVE-2022-1184
+- CVE-2022-1198
+- CVE-2022-1462
+- CVE-2022-1679
+- CVE-2022-1729
+- CVE-2022-1734
+- CVE-2022-21125
+- CVE-2022-21166
+- CVE-2022-2153
+- CVE-2022-2318
+- CVE-2022-24958
+- CVE-2022-2503
+- CVE-2022-25258
+- CVE-2022-2586
+- CVE-2022-2588
+- CVE-2022-2602
+- CVE-2022-26365
+- CVE-2022-2639
+- CVE-2022-26490
+- CVE-2022-27223
+- CVE-2022-28388
+- CVE-2022-28389
+- CVE-2022-28390
+- CVE-2022-2978
+- CVE-2022-30594
+- CVE-2022-3176
+- CVE-2022-3202
+- CVE-2022-32250
+- CVE-2022-3542
+- CVE-2022-36879
+- CVE-2022-36946
+- CVE-2022-39188
+
+# 龙蜥社区第三方驱动
+建立第三方驱动的社区研发流程:https://openanolis.cn/sig/Cloud-Kernel/doc/721476448598622343
+
+网迅网卡已经按此流程合入 ANCK :
+- 支持ANCK-5.10 10GB 网迅网卡驱动: https://gitee.com/anolis/cloud-kernel/pulls/540
+- 支持ANCK-4.19 10GB 网迅网卡驱动: https://gitee.com/anolis/cloud-kernel/pulls/709
+- 支持ANCK-4.19 1GB 网迅网卡驱动: https://gitee.com/anolis/cloud-kernel/pulls/1043
+- 支持ANCK-5.10 1GB 网迅网卡驱动: https://gitee.com/anolis/cloud-kernel/pulls/1063
+
+# 重要议题
+- 讨论并决策了将 ANCK-5.10 作为 Anolis8 的默认产品化内核,详情请点击[这里](https://gitee.com/anolis/community/blob/master/proposals/Anolis8%E4%B8%8AANCK-5.10%E4%BA%A7%E5%93%81%E5%8C%96%E7%9A%84%E6%8F%90%E8%AE%AE.md)。
+- 讨论并决策了将 ANCK-5.10 作为 Anolis23 的当前默认内核,详情请点击[这里](https://gitee.com/anolis/community/blob/master/proposals/anck-5.10%E4%BD%9C%E4%B8%BAanolis23%E7%9A%84%E5%86%85%E6%A0%B8%E9%80%89%E5%9E%8B%E7%9A%84%E6%8F%90%E8%AE%AE.md)。
+
+# 运营活动
+- [浪潮信息正式发布基于龙蜥 Anolis OS 的服务器操作系统 Inspur KOS](https://openanolis.cn/news/726244284765327879)。
+- 于2022.12.24 举办了“[龙蜥走进系列活动之走进浪潮信息 MeetUp](https://mp.weixin.qq.com/s?__biz=Mzg4MTMyMTUwMQ==&mid=2247510368&idx=1&sn=95a1d511b32670f8388745682483046a&chksm=cf655a12f812d30494be938d7bf8a46b7244711c8fb75f44e8379ab261b1fd4aeb1c8bb0805e&scene=21#wechat_redirect)",并成立了浪潮信息龙蜥联合实验室,致力于共建龙蜥社区的软硬件兼容性生态、标准建设和技术创新等。
diff --git "a/sig/T-One-copy3/content/\346\234\210\346\212\245/202301.md" "b/sig/T-One-copy3/content/\346\234\210\346\212\245/202301.md"
new file mode 100644
index 0000000000000000000000000000000000000000..85bbb428461066b1774f93d5ede99390bf2bc702
--- /dev/null
+++ "b/sig/T-One-copy3/content/\346\234\210\346\212\245/202301.md"
@@ -0,0 +1,101 @@
+# 整体进展
+
+- 发布 ANCK 5.10-013 版本。
+- 确定KABI机制整体方案。
+- 浪潮信息龙蜥联合实验室的工作事项更新。
+
+# ANCK 5.10-013 版本
+
+## 内核更新
+
+- 版本更新至 5.10.134-13
+- 重要内核缺陷及安全漏洞(CVE)修复
+- 支持用户态/dev/ioasid
+- SWIOTLB机制性能优化
+- virtio-net 打开 napi.tx 优化 TCP Small Queue 性能
+- 支持AST2600 PCIe 2D VGA Driver
+- 支持FT2500处理器
+- 支持动态开启Group identity特性
+- arm64平台默认内核启动cmdline调整
+- 添加 Compact Numa Aware (CNA) spinlock 功能支持
+- 丰富arm64的perf mem和perf c2c功能
+- fsck.xfs 支持日志恢复
+- hugetext自适应按需大页
+- 支持SGX动态内存管理
+- 使能wireguard模块
+
+## CVE修复列表
+
+详情请参考:
+
+- [Anolis OS 7](https://anas.openanolis.cn/errata/detail/ANSA-2023:0002)
+- [Anolis OS 8](https://anas.openanolis.cn/errata/detail/ANSA-2023:0001)
+
+重要CVE列表:
+
+- CVE-2021-4037
+- CVE-2022-0171
+- CVE-2022-1679
+- CVE-2022-2585
+- CVE-2022-2586
+- CVE-2022-2588
+- CVE-2022-2602
+- CVE-2022-26373
+- CVE-2022-2663
+- CVE-2022-2905
+- CVE-2022-2978
+- CVE-2022-3028
+- CVE-2022-3061
+- CVE-2022-3169
+- CVE-2022-3176
+- CVE-2022-3435
+- CVE-2022-3521
+- CVE-2022-3524
+- CVE-2022-3534
+- CVE-2022-3535
+- CVE-2022-3542
+- CVE-2022-3545
+- CVE-2022-3564
+- CVE-2022-3565
+- CVE-2022-3566
+- CVE-2022-3567
+- CVE-2022-3586
+- CVE-2022-3594
+- CVE-2022-3621
+- CVE-2022-3623
+- CVE-2022-3625
+- CVE-2022-3628
+- CVE-2022-3629
+- CVE-2022-3633
+- CVE-2022-3635
+- CVE-2022-3646
+- CVE-2022-3649
+- CVE-2022-36946
+- CVE-2022-39189
+- CVE-2022-39190
+- CVE-2022-39842
+- CVE-2022-40307
+- CVE-2022-40768
+- CVE-2022-41222
+- CVE-2022-41674
+- CVE-2022-42719
+- CVE-2022-42720
+- CVE-2022-42721
+- CVE-2022-42722
+- CVE-2022-42895
+- CVE-2022-42896
+- CVE-2022-43750
+- CVE-2022-4378
+
+# 龙蜥社区第三方驱动
+
+* 提供主流GPU在AnolisOS的Driver、CUDA、cuDNN安装测试与卸载指导文档:https://openanolis.cn/sig/AI_SIG/doc/721423765456666646
+
+# 重要议题
+
+- 调研并讨论了KABI机制的整体方案与实现细节。
+- 基于浪潮信息龙蜥联合实验室,讨论了关于整机硬件兼容性的相关事项,后续长期共建 AnolisOS 硬件兼容性标准和生态。
+
+# 运营活动
+
+- 无
diff --git "a/sig/T-One-copy3/content/\346\234\210\346\212\245/\346\234\210\346\212\245\350\257\264\346\230\216.md" "b/sig/T-One-copy3/content/\346\234\210\346\212\245/\346\234\210\346\212\245\350\257\264\346\230\216.md"
new file mode 100644
index 0000000000000000000000000000000000000000..30020428d41c0b35e0eb225c6a3b4a4a06f385a6
--- /dev/null
+++ "b/sig/T-One-copy3/content/\346\234\210\346\212\245/\346\234\210\346\212\245\350\257\264\346\230\216.md"
@@ -0,0 +1,7 @@
+- 每月的月初总结发出上月的报告,并更新到 SIG 页面,如 2022.12
+
+- 月报包含内容:
+ + 整体进展:SIG 该月的亮点特性汇总。
+ + 具体进展:SIG 该月项目的详细进展,分别展开细节。
+ + 重要议题: SIG 该月讨论的重要议题。
+ + 运营活动: SIG 该月发生的运营活动。
diff --git "a/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/000000000130_anolis.jpg" "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/000000000130_anolis.jpg"
new file mode 100644
index 0000000000000000000000000000000000000000..25e606c9c5d28fccaf9f6caa351e3720570e4162
Binary files /dev/null and "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/000000000130_anolis.jpg" differ
diff --git "a/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/T-One\346\246\202\350\277\260.md" "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/T-One\346\246\202\350\277\260.md"
new file mode 100644
index 0000000000000000000000000000000000000000..74f3dbc4638e7e414a44eba81a927b219691bc3a
--- /dev/null
+++ "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/T-One\346\246\202\350\277\260.md"
@@ -0,0 +1,30 @@
+### T- One是什么
+ T-One是一站式的自动化质量协作平台;打通了测试计划、测试准备、测试执行、测试分析、测试报告、覆盖率检测、智能Bisect,环境服务等流程的闭环,为社区研发提供一站式质量服务。
+
+
+### 平台架构
+
+
+### 核心特点
+- 一站式质量平台:平台打通了测试准备、测试执行、测试分析、测试计划、测试报告、覆盖率检测、智能Bisect、智能巡检等流程全闭环,为社区研发提供一站式测试支撑。
+ - 支持多CPU混合架构(x86、arm、loogarch、risc-v)
+ - 支持多操作系统类型(龙蜥OS、centos、debian等)
+ - 支持复杂环境测试(企业内网、独立隔离、弹性云虚拟机/容器、应用集群及多种混合环境)
+
+- 质量协作能力:通过分布式的业务架构和独立租户空间能力,支持多企业、多团队的质量协作模式。
+- 数据分析能力:平台提供了时序分析、对比分析,以及聚合生成测试报告的能力,在大量测试之后对数据进行分析以发现软件问题。
+- 开源软件包CI服务:社区开发者可以将自己的软件包(可来自代码托管平台如github/gitee/codeup等)注册到Testfarm, 平台会监控软件包的代码变更,一旦有变更则会立即触发测试,并将测试结果通知开发者,方便开源软件包引入。
+- 开发者资源服务:社区开发者可以reserve测试环境并登陆,方便在测试环境中进行测试及debug。
+- 缺陷定位诊断服务:对于发现的软件缺陷,平台可以提供了缺陷的自动化定位诊断能力,可以发现引入缺陷的commit地址。
+
+
+### 应用场景
+- 场景1:OS发布测试,每次AnolisOS的发布,社区测试团队会根据发布测试策略进行大规模测试,保障产品发布质量,外部用户可以在Testfarm查看发布测试数据。
+- 场景2:开源软件包CI,社区开发者可以将软件包注册到平台,平台会自动监控软件包的变更,一旦发生变更会立即进行测试并推送测试结果。
+- 场景3:自定义测试,社区开发者根据自己的需求可以在T-One平台进行在线测试,或者使用命令行测试。
+- 场景4:离线测试,对于网络不可达的测试环境,用户可以使用离线测试模式测试并上传数据。
+- 场景5:独立部署,外部用户也可以在自己环境下独立部署平台,测试并上传数据到Testfarm。
+- 场景6:登陆测试环境,社区开发者可以根据需要reserve测试环境登陆进行测试及debug。
+- 场景7:缺陷定位诊断,一旦测试出缺陷,平台会自动诊断缺陷引入的commit。
+
+
diff --git "a/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/assets/Dingtalk_20240614165831.jpg" "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/assets/Dingtalk_20240614165831.jpg"
new file mode 100644
index 0000000000000000000000000000000000000000..925bf2945891170613821e8e7dbc9e4206d17c8d
Binary files /dev/null and "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/assets/Dingtalk_20240614165831.jpg" differ
diff --git "a/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/assets/jiagou.jpeg" "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/assets/jiagou.jpeg"
new file mode 100644
index 0000000000000000000000000000000000000000..392076fe21eafd908c238ff0e851862e84a05a2d
Binary files /dev/null and "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/assets/jiagou.jpeg" differ
diff --git "a/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-cpoy/test.md" "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-cpoy/test.md"
new file mode 100644
index 0000000000000000000000000000000000000000..b09df7d02fee342106c45e78485a992609d67bdb
--- /dev/null
+++ "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-cpoy/test.md"
@@ -0,0 +1,70 @@
+# 一级标题
+## 二级标题
+### 三级标题
+**粗体文本**
+
+__cuti__
+
+*斜体文本*
+
+_xieti_
+
+下划线
+
+~~删除线~~
+
+上标:Xy
+
+下标:An
+
+> 引用文本
+- 无序列表项1
+ - 第二层
+- 无序列表项2
+* * *
+1. 有序列表项1
+2. 有序列表项2
+---
+[链接文本](https://gitee.com/suli01/community/edit/master/sig/T-One/content/%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97/%E7%94%A8%E6%88%B7%E8%81%86%E5%90%AC/test.md)
+
+链接名称
+
+'''python
+def hello_world():
+ print("Hello, world!")
+
+
+
+| 列1 | 列2 | 列3 |
+| --- | --- | --- |
+| 单元格1 | 单元格2 | 单元格3 |
+| 单元格4 | 单元格5 | 单元格6 |
+
+
+| 左对齐 | 居中对齐 | 右对齐 |
+|:-----|:------:|------:|
+| 文本 | 文本 | 文本 |
+
+
+
+
+
+ 值班人员 |
+ 星期一 |
+ 星期二 |
+ 星期三 |
+
+
+ 张三 |
+ 李四 |
+ 王五 |
+
+
+
+- [ ] :待完成事项
+
+- [x] :已完成事项
+
+
+

+
diff --git "a/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-cpoy/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md" "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-cpoy/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md"
new file mode 100644
index 0000000000000000000000000000000000000000..c91d73c9b304cb8a81e665beffcbc1c4c080eb48
--- /dev/null
+++ "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-cpoy/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md"
@@ -0,0 +1,2 @@
+# hello
+
\ No newline at end of file
diff --git "a/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-cpoy/\350\201\206\345\220\254.md" "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-cpoy/\350\201\206\345\220\254.md"
new file mode 100644
index 0000000000000000000000000000000000000000..e5d110a57b01266616a91010b0b0032dcff2c5c1
--- /dev/null
+++ "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/a\347\224\250\346\210\267\350\201\206\345\220\254-cpoy/\350\201\206\345\220\254.md"
@@ -0,0 +1,2 @@
+# hello, 欢迎来到聆听 .md
+## 阿斯顿发射点
\ No newline at end of file
diff --git "a/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/bbbb.md" "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/bbbb.md"
new file mode 100644
index 0000000000000000000000000000000000000000..bce7de8006c232d78a6c8052190ff0a3a60a8fa0
--- /dev/null
+++ "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/bbbb.md"
@@ -0,0 +1,73 @@
+*斜体文字*
+
+_斜体文字_
+
+**粗体文字**
+
+__粗体文字__
+
+***粗斜体文字***
+
+___粗斜体文字___
+
+***
+* * *
+******
+- - -
+------
+
+~~删除线~~
+
+带下划线文本
+
+# 一级标题
+
+## 二级标题
+
+### 三级标题
+
+#### 四级标题
+
+##### 五级标题
+
+###### 六级标题
+[链接](http://a.com)
+
+> 引用
+* 第一项
+* 第二项
+* 第三项
+
++ 第一项
++ 第二项
++ 第三项
+
+- 第一项
+- 第二项
+- 第三项
+1. 第一项
+2. 第二项
+3. 第三项
+
+1. 第一项:
+ - 第一项嵌套的第一个元素
+ - 第一项嵌套的第二个元素
+2. 第二项:
+ - 第二项嵌套的第一个元素
+ - 第二项嵌套的第二个元素
+水平线:
+
+---
+带反引号的“内联代码”
+```
+# 代码块
+print '3 个反引号或'
+print '缩进 4 个空格'
+```
+
+> 区块引用
+> Markdown教程
+> 学的不仅是技术更是梦想
+
+
+SDFGSDFGSDFGSDFG
\ No newline at end of file
diff --git "a/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/test1.md" "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/test1.md"
new file mode 100644
index 0000000000000000000000000000000000000000..bce7de8006c232d78a6c8052190ff0a3a60a8fa0
--- /dev/null
+++ "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/test1.md"
@@ -0,0 +1,73 @@
+*斜体文字*
+
+_斜体文字_
+
+**粗体文字**
+
+__粗体文字__
+
+***粗斜体文字***
+
+___粗斜体文字___
+
+***
+* * *
+******
+- - -
+------
+
+~~删除线~~
+
+带下划线文本
+
+# 一级标题
+
+## 二级标题
+
+### 三级标题
+
+#### 四级标题
+
+##### 五级标题
+
+###### 六级标题
+[链接](http://a.com)
+
+> 引用
+* 第一项
+* 第二项
+* 第三项
+
++ 第一项
++ 第二项
++ 第三项
+
+- 第一项
+- 第二项
+- 第三项
+1. 第一项
+2. 第二项
+3. 第三项
+
+1. 第一项:
+ - 第一项嵌套的第一个元素
+ - 第一项嵌套的第二个元素
+2. 第二项:
+ - 第二项嵌套的第一个元素
+ - 第二项嵌套的第二个元素
+水平线:
+
+---
+带反引号的“内联代码”
+```
+# 代码块
+print '3 个反引号或'
+print '缩进 4 个空格'
+```
+
+> 区块引用
+> Markdown教程
+> 学的不仅是技术更是梦想
+
+
+SDFGSDFGSDFGSDFG
\ No newline at end of file
diff --git "a/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/tone\351\203\250\347\275\262.md" "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/tone\351\203\250\347\275\262.md"
new file mode 100644
index 0000000000000000000000000000000000000000..12f85c9bb02d73ecf4fa31b8773d8b3743913cf7
--- /dev/null
+++ "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/tone\351\203\250\347\275\262.md"
@@ -0,0 +1,615 @@
+# 部署说明
+
+> 此文档以开源版本 T-One 最小单元部署举例说明,不保障系统的高可用及性能等
+>
+> 若期望大规模集群化部署可以联系SIG项目组进行具体讨论。
+> 若遇到问题请参照文未的 FAQ 文档,或进 SIG 群联系我们。
+
+**组件说明**: T-One 包含多个自研组件和几个开源组件,此文档以开源版本 T-One 最小单元部署举例说明。
+
+* 自研组件:tone-web、tone-agent-proxy、tone-agent、tone-runner等。
+* 开源组件:mysql、kafka、redis、zookeeper
+
+**机器要求**:
+
+* 硬件要求:推荐使用 8c16g 以上规格机器。
+* OS 要求:推荐使用 Anolis OS 系统进行部署( 暂不支持debian、ubuntu等)。
+
+**部署说明**:
+- 主要分为安装环境、项目构建、项目启动、数据初始化等几个步骤。
+- 该文档以x86_64机器为例, 如果您的部署机器为其他arch类型的机器,则需要将docker-compose.yaml中指定的第三方开源组件镜像更换成对应的镜像源。
+- 可以自己指定安装目录,该文档以 ~/tone目录为例(推荐)。
+
+# 部署步骤
+> 后续步骤以 Anolis OS 8.6 环境为示例进行行详细说明。
+
+## 1. 环境准备
+
+### a. 安装docker
+```
+ yum -y install yum-utils
+ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
+ yum install -y docker-ce # 若出错:yum install -y docker-ce --nobest --allowerasing
+
+ # 启动docker
+ systemctl enable docker
+ systemctl start docker
+ systemctl status docker
+```
+### b. 配置docker源
+```
+ vim /etc/docker/daemon.json
+ {
+ "registry-mirrors": [
+ "https://6kx4zyno.mirror.aliyuncs.com",
+ "https://docker.mirrors.ustc.edu.cn",
+ "http://hub-mirror.c.163.com",
+ "https://registry.docker-cn.com"]
+ }
+ systemctl restart docker
+ # 建议使用国内镜像源。 阿里云: https://6kx4zyno.mirror.aliyuncs.com,网易: http://hub-mirror.c.163.com
+```
+### c. 安装docker-compose
+```
+ pip3 install --upgrade pip
+ pip3 install docker-compose
+ docker-compose --version
+```
+
+## 2. 项目构建
+
+### a. 下载项目源码
+```shell
+yum install -y git
+
+git clone --single-branch --branch master https://gitee.com/anolis/tone-web.git ~/tone/code/tone-web
+git clone --single-branch --branch master https://gitee.com/anolis/tone-runner.git ~/tone/code/tone-runner
+git clone --single-branch --branch master https://gitee.com/anolis/tone-agent-proxy.git ~/tone/code/tone-agent-proxy
+git clone --single-branch --branch master https://gitee.com/anolis/tone-storage.git ~/tone/code/tone-storage
+```
+下载后的目录结构:
+```
+~/tone/code/
+ ├── tone-web
+ ├── tone-runner
+ ├── tone-agent-proxy
+ └── tone-storage
+```
+
+### b. 集成前端代码
+```shell
+# 下载前端代码包:
+wget https://anolis-service-pub.oss-cn-zhangjiakou.aliyuncs.com/biz-resource/tone/deploy/front/tone-front-latest.zip
+wget https://anolis-service-pub.oss-cn-zhangjiakou.aliyuncs.com/biz-resource/tone/deploy/front/toneagent-front-latest.zip
+# 安装unzip命令
+yum install -y unzip
+# 解压到指定目录
+unzip -j -o tone-front-latest.zip -d ~/tone/code/tone-web/static/front/
+unzip -j -o toneagent-front-latest.zip -d ~/tone/code/tone-agent-proxy/static/front/
+```
+
+## 3. 项目配置
+### a. 下载 docker-compose.yaml
+```shell
+cd ~/tone
+wget https://anolis-service-pub.oss-cn-zhangjiakou.aliyuncs.com/biz-resource/tone/deploy/docker-compose.yaml
+```
+
+### b. 设置并替换变量
+执行以下脚本(需手动替换`必填的`变量):
+```shell
+# 部署机外网IP地址(必填)
+server_ip=
+
+# 账号密码(必填)
+db_password=
+redis_password=
+tone_storage_password=
+
+# 镜像版本标签(非必改、默认latest)
+version_tag=latest
+
+# token(非必改、可自动生成)
+toneagent_access_key=$(uuidgen)
+toneagent_secret_key=$(uuidgen)
+admin_urls_token=$(uuidgen)
+pub_api_token=$(uuidgen)
+
+sed -i "s/var_db_password/${db_password}/g" docker-compose.yaml
+sed -i "s/var_redis_password/${redis_password}/g" docker-compose.yaml
+sed -i "s/var_tone_storage/${tone_storage_password}/g" docker-compose.yaml
+sed -i "s/var_toneagent_access_key/${toneagent_access_key}/g" docker-compose.yaml
+sed -i "s/var_toneagent_secret_key/${toneagent_secret_key}/g" docker-compose.yaml
+sed -i "s/var_admin_urls_token/${admin_urls_token}/g" docker-compose.yaml
+sed -i "s/var_pub_api_token/${pub_api_token}/g" docker-compose.yaml
+sed -i "s/var_version_tag/${version_tag}/g" docker-compose.yaml
+sed -i "s/var_server_ip/${server_ip}/g" docker-compose.yaml
+```
+
+### c. 启动docker-compose
+```shell
+docker-compose -f ~/tone/docker-compose.yaml up --build -d
+# 注:如代码有更新或首次部署,需要加 --build 参数才会自动重新打包镜像
+```
+
+## 4. 数据初始化
+### a.初始化db
+* 进入`mysql` docker 镜像中,`docker exec -it {数据库容器ID} bash`
+* 连接数据库:`mysql -h 127.0.0.1 -P 3306 -u root -p`
+* 创建 `T-One` 数据库 `tone-db`,`ToneAgent` 数据库 `toneagent-db`
+ ```
+ CREATE DATABASE `tone-db` CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+ CREATE DATABASE `toneagent-db` CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+ ```
+ 也可以直接通过 mysql 可视化界面初始化数据库
+
+### b.初始化 `T-One` 数据
+浏览器或者curl命令请求接口($admin_urls_token可在docker-compose配置里查看或更改)
+```shell
+curl -s "http://${server_ip}:8080/admin/migrate/?token=${admin_urls_token}"
+curl -s "http://${server_ip}:8080/admin/init_data/?token=${admin_urls_token}"
+curl -s "http://${server_ip}:8080/admin/create_superuser/?token=${admin_urls_token}&username=admin&password=admin123."
+curl -s "http://${server_ip}:8081/admin/migrate/?token=${admin_urls_token}"
+curl -s "http://${server_ip}:8081/admin/create_superuser/?token=${admin_urls_token}&username=admin&password=admin123."
+curl -s "http://${server_ip}:8081/admin/import_access_token/?token=${admin_urls_token}"
+```
+
+### c. `T-One` 关联依赖配置
+**系统执行任务还需对以下配置进行设置**
+
+- 配置 `T-One` 测试用例
+- 配置`T-One` 测试机器
+- 配置 `ToneAgent` `token`
+ - 在 ToneAgent 系统-账号管理中增加一组 token
+ - 更改 docker-compose 配置中的toneagent_access_key和toneagent_secret_key
+
+## 5. 验证
+使用浏览器打开链接查看: `T-One` 页面:`http://{host}:8080` `ToneAgent` 管理页面:`http://{host}:8081`
+
+## 6. T-One 多生态使用
+`T-One` + `TestLib`
+### a. 创建 `TestLib` 数据库
+- 进入 mysql docker 镜像,docker exec -it {数据库容器ID} bash
+- 连接数据库:mysql -h 127.0.0.1 -P 3306 -u root -p
+- 创建 TestLib 数据库 testlib
+
+ CREATE DATABASE \`test-lib\` CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+- 创建 TestLib 数据库表
+### testlib数据库初始化
+
+ 点击展开/折叠脚本
+
+```shell
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET NAMES utf8 */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+
+-- 表 test-lib.case 结构
+CREATE TABLE IF NOT EXISTS `case` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '测试用例名称',
+ `creator` varchar(64) NOT NULL COMMENT '负责人',
+ `type` enum('FUNCTIONAL','PERFORMANCE','STRESS','LOAD','SECURITY','COMPATIBILITY','OTHERS') NOT NULL COMMENT '测试用例类型',
+ `priority` enum('PRIORITY_0','PRIORITY_1','PRIORITY_2','PRIORITY_3') NOT NULL COMMENT '测试用例的优先级',
+ `suite_name` varchar(128) DEFAULT NULL COMMENT '测试套名称',
+ `run_method` enum('MANUAL','AUTO') NOT NULL COMMENT '测试用例执行方式,手动、自动',
+ `run_model` enum('SINGLE','CLUSTER') NOT NULL COMMENT '测试用例运行模式,单机、集群',
+ `is_available` tinyint(1) NOT NULL COMMENT '测试用例是否可用',
+ `tone_case` varchar(128) DEFAULT NULL COMMENT 'T-One测试用例,当run_method为自动的时候生效',
+ `device_type` varchar(128) DEFAULT 'unlimit' COMMENT '设备类型,可多选,默认支持所有设备',
+ `device_arch` varchar(256) NOT NULL COMMENT '设备架构类型,可多选,默认支撑所有类型',
+ `labels` varchar(256) DEFAULT NULL COMMENT '设备标签,多个用,隔开',
+ `desc` varchar(512) DEFAULT NULL COMMENT '用例描述',
+ `pre_condition` varchar(512) DEFAULT NULL COMMENT '前置条件',
+ `steps` json DEFAULT NULL COMMENT '操作步骤',
+ `custom_fields` json DEFAULT NULL COMMENT '测试用例扩展属性',
+ `parent` int(11) NOT NULL COMMENT '测试用例分类节点',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name` (`name`),
+ KEY `ix_case_suite_name` (`suite_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.case_label 结构
+CREATE TABLE IF NOT EXISTS `case_label` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '用例标签',
+ `creator` varchar(64) NOT NULL COMMENT '标签创建人',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.case_label_map 结构
+CREATE TABLE IF NOT EXISTS `case_label_map` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `label_name` varchar(64) NOT NULL COMMENT '用例名称',
+ `case_id` int(11) NOT NULL COMMENT '用例ID',
+ PRIMARY KEY (`id`),
+ KEY `ix_case_label_map_label_name` (`label_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.case_tree 结构
+CREATE TABLE IF NOT EXISTS `case_tree` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(16) NOT NULL COMMENT '用例结构树节点名称',
+ `parent` int(11) NOT NULL COMMENT '父节点id',
+ `level` int(11) NOT NULL COMMENT '树结构的深度',
+ `path` varchar(128) NOT NULL COMMENT '模块完整路径',
+ `children_nums` int(11) NOT NULL COMMENT '子节点数量',
+ PRIMARY KEY (`id`),
+ KEY `ix_case_tree_path` (`path`)
+) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.device 结构
+CREATE TABLE IF NOT EXISTS `device` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '设备名称',
+ `arch` enum('X86','ARCH64','RISCV','LOONGARCH','NOARCH','OTHERS') NOT NULL COMMENT '设备架构',
+ `ip` varchar(16) NOT NULL COMMENT '设备ip',
+ `type` enum('UNLIMIT','VM','DOCKER','PHYSICS') NOT NULL COMMENT '设备类型',
+ `sn` varchar(16) DEFAULT NULL COMMENT '设备序号',
+ `status` tinyint(1) NOT NULL COMMENT '设备是否可用',
+ `label` json DEFAULT NULL COMMENT '设备标签列表数组',
+ `owner` varchar(256) NOT NULL COMMENT '设备负责人',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.device_label 结构
+CREATE TABLE IF NOT EXISTS `device_label` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '设备标签名称',
+ `color` varchar(32) NOT NULL COMMENT '设备标签颜色',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `ix_device_label_name` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.device_label_relationship 结构
+CREATE TABLE IF NOT EXISTS `device_label_relationship` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `label_id` int(11) NOT NULL COMMENT '机器Label id',
+ `device_id` int(11) NOT NULL COMMENT '机器Label id',
+ `is_delete` tinyint(1) DEFAULT NULL COMMENT '对应关系是否删除',
+ PRIMARY KEY (`id`),
+ KEY `ix_device_label_relationship_device_id` (`device_id`),
+ KEY `ix_device_label_relationship_label_id` (`label_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.func_result 结构
+CREATE TABLE IF NOT EXISTS `func_result` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `sub_case_name` varchar(128) NOT NULL COMMENT 'tone job名称',
+ `sub_case_result` enum('SUCCESS','FAIL','SKIP') NOT NULL COMMENT '功能结果',
+ `tone_suite_id` int(11) NOT NULL COMMENT 'suite id',
+ `tone_case_id` int(11) NOT NULL COMMENT 'tone case id',
+ `tone_job_id` int(11) NOT NULL COMMENT 'tone job id',
+ `task_id` int(11) NOT NULL COMMENT '测试方案id',
+ `current` json DEFAULT NULL,
+ `expect` json DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `ix_func_result_tone_suite_id` (`tone_suite_id`),
+ KEY `ix_func_result_task_id` (`task_id`),
+ KEY `ix_func_result_tone_case_id` (`tone_case_id`),
+ KEY `ix_func_result_tone_job_id` (`tone_job_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=479 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.outline 结构
+CREATE TABLE IF NOT EXISTS `outline` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '测试大纲文件名',
+ `title` varchar(128) NOT NULL COMMENT '测试大纲的标题',
+ `owner` varchar(16) NOT NULL COMMENT '测试大纲负责人',
+ `tid` varchar(256) NOT NULL COMMENT 'oss文件地址',
+ `remark` varchar(64) DEFAULT NULL COMMENT '测试大纲备注描述信息',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.perf_result 结构
+CREATE TABLE IF NOT EXISTS `perf_result` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `metric` varchar(128) NOT NULL COMMENT '指标名称',
+ `test_value` varchar(64) DEFAULT NULL COMMENT '测试值',
+ `cv_value` varchar(64) DEFAULT NULL COMMENT 'cv值',
+ `max_value` varchar(64) DEFAULT NULL COMMENT '最大值',
+ `min_value` varchar(64) DEFAULT NULL COMMENT '最小值',
+ `unit` varchar(64) DEFAULT NULL COMMENT '测试单位',
+ `track_result` enum('NA','INVALID','NORMAL','DECLINE','INCREASE') NOT NULL COMMENT '跟踪结果',
+ `tone_suite_id` int(11) NOT NULL COMMENT 'suite id',
+ `tone_case_id` int(11) NOT NULL COMMENT 'tone case id',
+ `tone_job_id` int(11) NOT NULL COMMENT 'tone job id',
+ `task_id` int(11) NOT NULL COMMENT '测试方案id',
+ PRIMARY KEY (`id`),
+ KEY `ix_perf_result_task_id` (`task_id`),
+ KEY `ix_perf_result_tone_case_id` (`tone_case_id`),
+ KEY `ix_perf_result_tone_suite_id` (`tone_suite_id`),
+ KEY `ix_perf_result_tone_job_id` (`tone_job_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.plan 结构
+CREATE TABLE IF NOT EXISTS `plan` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `title` varchar(64) NOT NULL COMMENT '测试方案名称',
+ `req_id` int(11) DEFAULT NULL COMMENT '测试需求id',
+ `req_title` varchar(128) DEFAULT NULL COMMENT '测试需求标题',
+ `content` json DEFAULT NULL COMMENT '测试方案内容',
+ `status` varchar(16) NOT NULL COMMENT '测试方案阶段状态',
+ `cases` varchar(256) DEFAULT NULL COMMENT '测试用例,多个使用","隔开',
+ `tasks` varchar(256) DEFAULT NULL COMMENT '测试任务,多个使用","隔开',
+ `reviewers` varchar(256) NOT NULL COMMENT '方案评审人列表',
+ `owner` varchar(256) NOT NULL COMMENT '测试需求的负责人,多个以,隔开',
+ `report` tinyint(1) NOT NULL COMMENT '测试报告是否已生成',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `title` (`title`)
+) ENGINE=InnoDB AUTO_INCREMENT=63 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.plan_review 结构
+CREATE TABLE IF NOT EXISTS `plan_review` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `plan_id` int(11) NOT NULL COMMENT '测试方案id',
+ `reviewer` varchar(32) NOT NULL COMMENT '测试需方案的评审人',
+ `status` varchar(16) NOT NULL COMMENT '评审状态',
+ `desc` varchar(512) DEFAULT NULL COMMENT '评审内容',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.product_category 结构
+CREATE TABLE IF NOT EXISTS `product_category` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '大类名称',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.product_plan 结构
+CREATE TABLE IF NOT EXISTS `product_plan` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `test_product_id` int(11) NOT NULL COMMENT '测试产品id',
+ `plan_id` int(11) NOT NULL COMMENT '测试产品实际复制执行的plan id',
+ `executor` varchar(256) NOT NULL COMMENT '测试产品执行人',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.requirement 结构
+CREATE TABLE IF NOT EXISTS `requirement` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `title` varchar(128) NOT NULL COMMENT '测试需求标题',
+ `outline_id` int(11) DEFAULT NULL COMMENT '测试大纲id',
+ `outline_title` varchar(64) DEFAULT NULL COMMENT '测试大纲标题',
+ `content` json NOT NULL COMMENT '测试需求的描述内容',
+ `status` varchar(16) NOT NULL COMMENT '测试需求阶段',
+ `owner` varchar(16) NOT NULL COMMENT '测试需求的创建人',
+ `assignee` varchar(256) NOT NULL COMMENT '测试需求的指派人,多个以,隔开',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.task 结构
+CREATE TABLE IF NOT EXISTS `task` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '任务名称',
+ `status` varchar(16) NOT NULL COMMENT '任务执行状态',
+ `run_method` enum('MANUAL','AUTO') NOT NULL COMMENT '测试任务执行方式',
+ `owner` varchar(256) NOT NULL COMMENT '任务执行人',
+ `plan_id` int(11) NOT NULL COMMENT '测试方案id',
+ `plan_title` varchar(256) NOT NULL COMMENT '测试方案标题',
+ `cases` varchar(256) NOT NULL COMMENT '测试用例,多个使用,隔开',
+ `desc` varchar(256) DEFAULT NULL COMMENT '备注',
+ `run_result` json DEFAULT NULL COMMENT '手动用例执行结果',
+ `config` json DEFAULT NULL COMMENT '测试任务配置',
+ `device_id` int(11) DEFAULT NULL COMMENT '测试设备ID',
+ `device_ip` varchar(256) DEFAULT NULL COMMENT '测试机器IP',
+ `workspace` varchar(128) NOT NULL COMMENT 'tone workspace',
+ `project` varchar(128) NOT NULL COMMENT 'tone project',
+ `job_type` varchar(128) NOT NULL COMMENT 'tone job type',
+ `test_type` varchar(32) DEFAULT 'others' COMMENT '测试任务类型',
+ `cluster` varchar(256) DEFAULT NULL COMMENT '测试机器集群名称',
+ `tags` varchar(256) DEFAULT NULL COMMENT '测试机器标签',
+ `tsn` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `ix_task_plan_id` (`plan_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=90 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.test_product 结构
+CREATE TABLE IF NOT EXISTS `test_product` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(64) NOT NULL COMMENT '测试产品名称',
+ `category_id` int(11) NOT NULL COMMENT '大类id',
+ `origin_plan_id` int(11) NOT NULL COMMENT '测试产品对应的plan id',
+ `desc` varchar(256) DEFAULT NULL COMMENT '产品描述',
+ `test_method` varchar(256) DEFAULT NULL COMMENT '测试方法',
+ `test_requirement` varchar(256) DEFAULT NULL COMMENT '测试要求',
+ `need_config` tinyint(1) DEFAULT NULL COMMENT '是否扩展配置',
+ `owner` varchar(256) NOT NULL DEFAULT '' COMMENT '测试产品创建人',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.test_suite 结构
+CREATE TABLE IF NOT EXISTS `test_suite` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(128) NOT NULL COMMENT '测试套名称',
+ `creator` varchar(64) NOT NULL COMMENT '测试套的创建人员',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_case 结构
+CREATE TABLE IF NOT EXISTS `tone_case` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `tone_case_id` int(11) NOT NULL COMMENT 'tone用例ID',
+ `tone_case_name` varchar(256) NOT NULL COMMENT 'tone用例名称',
+ `suite_id` int(11) NOT NULL COMMENT 'suite ID',
+ `suite_name` varchar(256) NOT NULL COMMENT 'suite用例名称',
+ `test_type` varchar(64) DEFAULT NULL COMMENT '测试类型',
+ PRIMARY KEY (`id`),
+ KEY `ix_tone_case_tone_case_name` (`tone_case_name`),
+ KEY `ix_tone_case_suite_id` (`suite_id`),
+ KEY `ix_tone_case_suite_name` (`suite_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=603 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_job 结构
+CREATE TABLE IF NOT EXISTS `tone_job` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `name` varchar(100) NOT NULL COMMENT 'tone job名称',
+ `state` enum('PENDING','RUNNING','SUCCESS','FAIL','STOP','SKIP') NOT NULL COMMENT 'tone job状态',
+ `test_type` enum('FUNCTIONAL','PERFORMANCE') NOT NULL COMMENT '测试类型',
+ `tone_job_id` int(11) NOT NULL COMMENT 'tone job id',
+ `tone_job_link` varchar(100) DEFAULT '' COMMENT 'tone job链接',
+ `task_id` int(11) NOT NULL COMMENT '测试方案id',
+ `server_info` json DEFAULT NULL COMMENT '存储tone job的机器信息',
+ PRIMARY KEY (`id`),
+ KEY `ix_tone_job_tone_job_id` (`tone_job_id`),
+ KEY `ix_tone_job_task_id` (`task_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_sync_pull 结构
+CREATE TABLE IF NOT EXISTS `tone_sync_pull` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=76149 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.tone_sync_push 结构
+CREATE TABLE IF NOT EXISTS `tone_sync_push` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.user 结构
+CREATE TABLE IF NOT EXISTS `user` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `user_name` varchar(256) DEFAULT NULL COMMENT '用户名称',
+ `nick_name` varchar(64) DEFAULT NULL COMMENT '用户昵称,具有唯一性',
+ `email` varchar(64) NOT NULL COMMENT '用户邮箱',
+ `avatar_url` varchar(512) DEFAULT NULL COMMENT '用户头像地址',
+ `role` enum('ADMIN','SENIOR','JUNIOR','COMMON') NOT NULL DEFAULT 'COMMON',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `nick_name` (`nick_name`),
+ KEY `ix_user_user_name` (`user_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.user_open_source 结构
+CREATE TABLE IF NOT EXISTS `user_open_source` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `user_name` varchar(256) DEFAULT NULL COMMENT '用户名称',
+ `nick_name` varchar(64) NOT NULL COMMENT '用户昵称,具有唯一性',
+ `email` varchar(64) NOT NULL COMMENT '用户邮箱',
+ `password` varchar(64) NOT NULL COMMENT '用户密码,前端对密码md5加密后的值',
+ `avatar_url` varchar(512) DEFAULT NULL COMMENT '用户头像地址',
+ `role` enum('ADMIN','SENIOR','JUNIOR','COMMON') NOT NULL DEFAULT 'COMMON',
+ `token` varchar(256) NOT NULL COMMENT 'api访问凭证',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `nick_name` (`nick_name`),
+ UNIQUE KEY `email` (`email`),
+ KEY `ix_user_open_source_token` (`token`(255))
+) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
+
+-- 表 test-lib.user_role_op_record 结构
+CREATE TABLE IF NOT EXISTS `user_role_op_record` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+ `gmt_created` datetime DEFAULT NULL COMMENT '创建时间',
+ `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+ `applicant` varchar(64) NOT NULL COMMENT '申请人name',
+ `applicant_id` int(11) NOT NULL COMMENT '申请人ID',
+ `apply_reason` varchar(512) DEFAULT NULL COMMENT '申请理由',
+ `signer` varchar(64) DEFAULT NULL COMMENT '评审人name',
+ `has_review` tinyint(1) NOT NULL COMMENT '是否已经审核',
+ `review_result` enum('INIT','PASS','FAIL') NOT NULL COMMENT '审核结果',
+ `review_reason` varchar(512) DEFAULT NULL COMMENT '评审意见',
+ `method` enum('APPROVE','UPGRADE','DOWNGRADE','DELETE') NOT NULL COMMENT '操作方式',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
+
+/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
+/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+
+
+```
+
+
+### b.TestLib 服务依赖
+### c. clone test-lib代码到~/tone/code目录下
+```shell
+git clone --single-branch --branch master https://gitee.com/anolis/testlib.git ~/tone/code/testlib
+```
+### d.增加docker-compose配置
+```yaml
+# docker-compose.yaml service下增加test-lib
+ test-lib:
+ build:
+ context: code/testlib/
+ dockerfile: Dockerfile
+ args:
+ APP_NAME: test-lib
+ ENV: daily
+ image: test-lib:latest
+ ports:
+ - "8005:8005"
+ depends_on:
+ - mysql
+ - redis
+ environment:
+ <<: *common-variables
+ # db
+ db_url: mysql+aiomysql://${db_user}:{db_password}@mysql:3306/test-lib
+ # redis
+ redis_url: redis://:${redis_password}@redis:6379/10
+ # app
+ tone_host: http://${server_ip}:8080/
+ tone_token: tone_token
+ tone_user_name: tone_user_name
+ main_domain: http://${server_ip}:8005
+ oss_url: http://${server_ip}:8005
+```
+#### e.重启服务
+```shell
+docker-compose -f ~/tone/docker-compose.yaml up --build -d
+```
+## 7. 独立部署 FAQ
+https://tone.openanolis.cn/help_doc/12
\ No newline at end of file
diff --git "a/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/zzzz.md" "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/zzzz.md"
new file mode 100644
index 0000000000000000000000000000000000000000..bce7de8006c232d78a6c8052190ff0a3a60a8fa0
--- /dev/null
+++ "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/zzzz.md"
@@ -0,0 +1,73 @@
+*斜体文字*
+
+_斜体文字_
+
+**粗体文字**
+
+__粗体文字__
+
+***粗斜体文字***
+
+___粗斜体文字___
+
+***
+* * *
+******
+- - -
+------
+
+~~删除线~~
+
+带下划线文本
+
+# 一级标题
+
+## 二级标题
+
+### 三级标题
+
+#### 四级标题
+
+##### 五级标题
+
+###### 六级标题
+[链接](http://a.com)
+
+> 引用
+* 第一项
+* 第二项
+* 第三项
+
++ 第一项
++ 第二项
++ 第三项
+
+- 第一项
+- 第二项
+- 第三项
+1. 第一项
+2. 第二项
+3. 第三项
+
+1. 第一项:
+ - 第一项嵌套的第一个元素
+ - 第一项嵌套的第二个元素
+2. 第二项:
+ - 第二项嵌套的第一个元素
+ - 第二项嵌套的第二个元素
+水平线:
+
+---
+带反引号的“内联代码”
+```
+# 代码块
+print '3 个反引号或'
+print '缩进 4 个空格'
+```
+
+> 区块引用
+> Markdown教程
+> 学的不仅是技术更是梦想
+
+
+SDFGSDFGSDFGSDFG
\ No newline at end of file
diff --git "a/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/test.md" "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/test.md"
new file mode 100644
index 0000000000000000000000000000000000000000..b09df7d02fee342106c45e78485a992609d67bdb
--- /dev/null
+++ "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/test.md"
@@ -0,0 +1,70 @@
+# 一级标题
+## 二级标题
+### 三级标题
+**粗体文本**
+
+__cuti__
+
+*斜体文本*
+
+_xieti_
+
+下划线
+
+~~删除线~~
+
+上标:Xy
+
+下标:An
+
+> 引用文本
+- 无序列表项1
+ - 第二层
+- 无序列表项2
+* * *
+1. 有序列表项1
+2. 有序列表项2
+---
+[链接文本](https://gitee.com/suli01/community/edit/master/sig/T-One/content/%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97/%E7%94%A8%E6%88%B7%E8%81%86%E5%90%AC/test.md)
+
+链接名称
+
+'''python
+def hello_world():
+ print("Hello, world!")
+
+
+
+| 列1 | 列2 | 列3 |
+| --- | --- | --- |
+| 单元格1 | 单元格2 | 单元格3 |
+| 单元格4 | 单元格5 | 单元格6 |
+
+
+| 左对齐 | 居中对齐 | 右对齐 |
+|:-----|:------:|------:|
+| 文本 | 文本 | 文本 |
+
+
+
+
+
+ 值班人员 |
+ 星期一 |
+ 星期二 |
+ 星期三 |
+
+
+ 张三 |
+ 李四 |
+ 王五 |
+
+
+
+- [ ] :待完成事项
+
+- [x] :已完成事项
+
+
+

+
diff --git "a/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md" "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md"
new file mode 100644
index 0000000000000000000000000000000000000000..d0a3a7f08baab2c20bc46fc52570530781997763
--- /dev/null
+++ "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/\346\265\213\350\257\225\345\244\226\351\223\276\345\233\276\347\211\207.md"
@@ -0,0 +1,2 @@
+# hello
+
\ No newline at end of file
diff --git "a/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/\350\201\206\345\220\254.md" "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/\350\201\206\345\220\254.md"
new file mode 100644
index 0000000000000000000000000000000000000000..e5d110a57b01266616a91010b0b0032dcff2c5c1
--- /dev/null
+++ "b/sig/T-One-copy3/content/\347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\350\201\206\345\220\254/\350\201\206\345\220\254.md"
@@ -0,0 +1,2 @@
+# hello, 欢迎来到聆听 .md
+## 阿斯顿发射点
\ No newline at end of file
diff --git a/sig/T-One-copy3/sig-info.yaml b/sig/T-One-copy3/sig-info.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..5031512b3e7aa525104cb18fab3a3b275f44a8f6
--- /dev/null
+++ b/sig/T-One-copy3/sig-info.yaml
@@ -0,0 +1,40 @@
+name: T-One-copy3
+en_name: T-One-copy3
+home_page: https://openanolis.cn/sig/T-One-copy3
+description: T-One兴趣组主要目标是建立OpenAnolis社区的质量保障基础设施(包括但不限于一站式的自动化测试平台T-One/Testfarm,Bisect缺陷定位工具等各类测试平台), 支持OpenAnolis社区的各类测试活动。
+en_description: The main goal of the T-One interest group is to establish the quality assurance infrastructure of the OpenAnolis community (including but not limited to the one-stop automated test platform T-One/Testfarm, Bisect defect location tool and other test platforms),
+to support various test platforms in the OpenAnolis community Class testing activities.
+mailing_list: t-one@lists.openanolis.cn
+meeting_minutes_url: https://etherpad.openanolis.cn/p/t-one
+maintainers:
+- openanolis_id: yongchao
+ gitee_id: yongchao
+ name: yongchao Zhang
+ organization: AlibabaCloud
+ email: yongchao@linux.alibaba.com
+- openanolis_id: sULI01
+ gitee_id: SULI01
+- openanolis_id: jacob2021
+ gitee_id: jacob2021
+- openanolis_id: eeeeeeee
+ gitee_id: suli01
+contributors:
+- openanolis_id: fuyong
+ gitee_id: fuyong
+- openanolis_id: woohello
+ gitee_id: woohello
+- openanolis_id: maozzi4
+ gitee_id: maozzi
+repositories:
+- repo:
+ - anolis/testfarm
+ - anolis/testfarm-front
+ - anolis/tone-web
+ - anolis/tone-runner
+ - anolis/tone-agent
+ - anolis/tone-agent-proxy
+ - anolis/tone-agent-front
+ - anolis/tone-front
+ - anolis/tone-deploy
+ - anolis/tone-cli
+ - anolis/tone-storage
\ No newline at end of file
diff --git "a/sig/T-One/content/\345\274\200\345\217\221\346\211\213\345\206\214/test.md" "b/sig/T-One/content/\345\274\200\345\217\221\346\211\213\345\206\214/test.md"
index 954bbfe2de11ff0b67f3711309c02db06d6472e6..693ed7092daf7f2bacb25f5b62b74bf3c1d1633b 100644
--- "a/sig/T-One/content/\345\274\200\345\217\221\346\211\213\345\206\214/test.md"
+++ "b/sig/T-One/content/\345\274\200\345\217\221\346\211\213\345\206\214/test.md"
@@ -1,5 +1,6 @@
HCT密码计算套件的目录结构如下:
-
+阿斯顿法师打发斯蒂芬
+44444444444444444444444444444444444444444444444444444
hygon-devkit/
├─ hct
diff --git "a/sig/T-One/content/\347\224\250\346\210\267\346\214\207\345\215\227/test1.md" "b/sig/T-One/content/\347\224\250\346\210\267\346\214\207\345\215\227/test1.md"
index 6d1884c069d427fddd99a9ac603084a64c588828..f9c99ee0c9b3b467ae09bdc4f3a33166498120f1 100644
--- "a/sig/T-One/content/\347\224\250\346\210\267\346\214\207\345\215\227/test1.md"
+++ "b/sig/T-One/content/\347\224\250\346\210\267\346\214\207\345\215\227/test1.md"
@@ -67,4 +67,7 @@ print '缩进 4 个空格'
> 区块引用
> Markdown教程
-> 学的不仅是技术更是梦想
\ No newline at end of file
+> 学的不仅是技术更是梦想
+
+
+SDFGSDFGSDFGSDFG
\ No newline at end of file
diff --git "a/sig/T-One/content/\347\224\250\346\210\267\346\214\207\345\215\227/tone\351\203\250\347\275\262.md" "b/sig/T-One/content/\347\224\250\346\210\267\346\214\207\345\215\227/tone\351\203\250\347\275\262.md"
index 34e5806fb66e25940a0795430a94886ad6d54157..c7cdfb90611317e0f36b13d4b042b11f5450cd80 100644
--- "a/sig/T-One/content/\347\224\250\346\210\267\346\214\207\345\215\227/tone\351\203\250\347\275\262.md"
+++ "b/sig/T-One/content/\347\224\250\346\210\267\346\214\207\345\215\227/tone\351\203\250\347\275\262.md"
@@ -13,12 +13,12 @@
**机器要求**:
* 硬件要求:推荐使用 8c16g 以上规格机器。
-* OS 要求:推荐使用 Anolis OS 系统进行部署。
+* OS 要求:推荐使用 Anolis OS 系统进行部署( 暂不支持debian、ubuntu等)。
**部署说明**:
- 主要分为安装环境、项目构建、项目启动、数据初始化等几个步骤。
-- 该文档以x86_64机器为例,如果您的部署机器为其他arch类型的机器,则需要将更改指定的第三方开源组件镜像
-- 可以自己指定安装目录,该文档以 ~/tone目录为例
+- 该文档以x86_64机器为例, 如果您的部署机器为其他arch类型的机器,则需要将docker-compose.yaml中指定的第三方开源组件镜像更换成对应的镜像源。
+- 可以自己指定安装目录,该文档以 ~/tone目录为例(推荐)。
# 部署步骤
> 后续步骤以 Anolis OS 8.6 环境为示例进行行详细说明。
@@ -36,7 +36,6 @@
systemctl start docker
systemctl status docker
```
-> [更多docker安装配置](https://yeasy.gitbook.io/docker_practice/install)
### b. 配置docker源
```
vim /etc/docker/daemon.json
@@ -56,6 +55,7 @@
pip3 install docker-compose
docker-compose --version
```
+
## 2. 项目构建
### a. 下载项目源码
@@ -68,14 +68,21 @@ git clone --single-branch --branch master https://gitee.com/anolis/tone-agent-pr
git clone --single-branch --branch master https://gitee.com/anolis/tone-storage.git ~/tone/code/tone-storage
```
下载后的目录结构:
-
+```
+~/tone/code/
+ ├── tone-web
+ ├── tone-runner
+ ├── tone-agent-proxy
+ └── tone-storage
+```
### b. 集成前端代码
```shell
# 下载前端代码包:
wget https://anolis-service-pub.oss-cn-zhangjiakou.aliyuncs.com/biz-resource/tone/deploy/front/tone-front-latest.zip
wget https://anolis-service-pub.oss-cn-zhangjiakou.aliyuncs.com/biz-resource/tone/deploy/front/toneagent-front-latest.zip
-
+# 安装unzip命令
+yum install -y unzip
# 解压到指定目录
unzip -j -o tone-front-latest.zip -d ~/tone/code/tone-web/static/front/
unzip -j -o toneagent-front-latest.zip -d ~/tone/code/tone-agent-proxy/static/front/
@@ -594,10 +601,11 @@ git clone --single-branch --branch master https://gitee.com/anolis/testlib.git ~
# redis
redis_url: redis://:${redis_password}@redis:6379/10
# app
- tone_host: http://${server_ip}:8080
+ tone_host: http://${server_ip}:8080/
tone_token: tone_token
tone_user_name: tone_user_name
main_domain: http://${server_ip}:8005
+ oss_url: http://${server_ip}:8005
```
#### e.重启服务
```shell
diff --git a/sig/T-One/sig-info.yaml b/sig/T-One/sig-info.yaml
index 09451c60383a3d8dd86226baf1aabca771791359..316584cdfc61e5ba2d800fc9fbf1ae4903f7b209 100644
--- a/sig/T-One/sig-info.yaml
+++ b/sig/T-One/sig-info.yaml
@@ -5,7 +5,7 @@ description: T-One兴趣组主要目标是建立OpenAnolis社区的质量保障
en_description: The main goal of the T-One interest group is to establish the quality assurance infrastructure of the OpenAnolis community (including but not limited to the one-stop automated test platform T-One/Testfarm, Bisect defect location tool and other test platforms),
to support various test platforms in the OpenAnolis community Class testing activities.
mailing_list: t-one@lists.openanolis.cn
-meeting_url: https://etherpad.openanolis.cn/p/t-one
+meeting_minutes_url: https://etherpad.openanolis.cn/p/t-one
maintainers:
- openanolis_id: yongchao
gitee_id: yongchao
@@ -16,6 +16,8 @@ maintainers:
gitee_id: suqingming
- openanolis_id: jacob2021
gitee_id: jacob2021
+- openanolis_id: eeeeeeee
+ gitee_id: suli01
contributors:
- openanolis_id: fuyong
gitee_id: fuyong
diff --git a/sig/beautiful-sig/sig-info.yaml b/sig/beautiful-sig/sig-info.yaml
index 0f6d830d1f5173d683acb76e55c34a3ef9fd92db..177e06d65ace17bcc5baeb7752394ae2024cf034 100644
--- a/sig/beautiful-sig/sig-info.yaml
+++ b/sig/beautiful-sig/sig-info.yaml
@@ -1,7 +1,89 @@
name: 漂亮
en_name: beautiful
home_page: https://openanolis.cn/sig/beautiful
-description: 看月亮爬上来,你也...
+description: # 安装说明
+1)下载anolis GA镜像并使用最小化安装
+
+2)配置anolis dde仓库源
+
+命令行执行如下命令:
+
+sudo yum install yum-utils
+
+sudo yum-config-manager --enable DDE
+
+sudo yum-config-manager --enable Plus
+
+sudo yum install epel-release
+
+sudo yum clean all && yum makecache
+
+3)dde相关软件包安装
+
+命令行执行sudo yum groupinstall dde
+
+4)命令行执行reboot 重启计算机
+
+重启完成后即可进入dde桌面环境
+
+注:如果您已经安装了图形化界面,需要在软件包安装完成后执行以下命令:
+
+· 1)sudo systemctl disable gdm
+
+· 2)sudo systemctl enable lightdm
+
+· 然后重启计算机
+
+# 简介
+DDE桌面环境是一款美观易用、安全可靠的图形化操作界面。桌面环境主要由桌面、任务栏、启动器、控制中心等组成,是您使用该操作系统的基础。
+
+# 第一章 桌面模块
+## 1.1. 桌面
+桌面是您登录后看到的主屏幕区域。在桌面上,您可以新建文件/文件夹、排列文件、打开终端、设置壁纸和屏保等,还可以通过启动器向桌面添加应用的快捷方式。
+
+## 1.2. 任务栏
+任务栏是指位于桌面底部的长条,主要由启动器、应用程序图标、托盘区、系统插件等组成。在任务栏,您可以打开启动器、显示桌面,对其上的应用程序进行打开、新建、关闭、强制退出等操作,还可以设置输入法,调节音量,连接网络,查看日历,进入关机界面等。
+
+## 1.3. 启动器
+启动器有全屏和小窗口两种模式。单击启动器界面右上角的图标来切换模式。两种模式均支持搜索应用、设置快捷方式等操作。
+
+小窗口模式还支持快速打开文件管理器,控制中心和进入关机界面等功能。
+
+## 1.4. 控制中心
+DDE桌面操作系统通过控制中心来管理系统的基本设置,包括帐户管理、网络设置、日期和时间、个性化设置、显示设置、系统信息查看等。
+
+# 第二章 应用模块
+## 2.1. 设备管理器
+设备管理器是一款可以查看和管理系统硬件设备的软件。
+
+## 2.2. 文件管理器
+文件管理器是一款功能强大的文件管理工具,包括搜索、复制、回收站、压缩/解压缩,文件属性等管理功能。
+
+## 2.3. 日历
+日历是一款查看日期、管理日程的工具。
+
+## 2.4. 截图
+截图是一款精巧截图应用,它具有智能窗口识别、快捷键支持、图片编辑、延迟截图、社交分享、智能保存、调节图像分辨率等功能。
+
+## 2.5. 系统监视器
+系统监视器是一款直观易用的系统监视器应用,它可以实时监控处理器状态、内存占用率、网络上传下载速度;还可以管理您的系统进程和应用进程,支持搜索进程和强制结束进程。
+
+## 2.6. 看图
+看图是一款图片查看器,外观时尚、性能流畅,支持多种图片格式。
+
+## 2.7. 文档查看器
+文档查看器是一个支持多种格式的文件浏览器,可以用来阅读如PDF、Postscript、djvu、tiff、dvi等格式的文件。
+
+## 2.8. 终端
+终端是一款终端模拟器。它拥有简单的界面,丰富而强大的功能。
+
+## 2.9. 字体管理器
+字体管理器是一款字体安装和卸载工具,简化字体安装和卸载的操作,支持批量安装、字体信息识别等功能。
+
+## 2.10. 文本编辑器
+文本编辑器是一款简单易用、可灵活定制部分功能的轻量级文本编辑器。
+
+
en_description: Watching the moon climb up into the sky, you too...
mailing_list: t-one@lists.openanolis.cn
meeting_url: https://etherpad.openanolis.cn/p/beautiful
diff --git "a/sig/maozzi003/content/\346\226\207\344\273\266\346\240\274\345\274\217.md" "b/sig/maozzi003/content/\346\226\207\344\273\266\346\240\274\345\274\217.md"
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git "a/sig/maozzi003/content/\346\226\260\345\273\272\346\226\207\344\273\266" "b/sig/maozzi003/content/\346\226\260\345\273\272\346\226\207\344\273\266"
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git "a/sig/maozzi003/content/\347\250\213\345\272\217\350\247\204\345\210\231.md" "b/sig/maozzi003/content/\347\250\213\345\272\217\350\247\204\345\210\231.md"
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git "a/sig/sig-test-0419/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202201-2022-5).md" "b/sig/sig-test-0419/content/\347\224\250\346\210\267\346\214\207\345\215\227/\345\237\272\346\234\254\350\246\201\346\261\202.md"
similarity index 100%
rename from "sig/sig-test-0419/content/SIG\344\276\213\344\274\232/SIG\344\276\213\344\274\232(202201-2022-5).md"
rename to "sig/sig-test-0419/content/\347\224\250\346\210\267\346\214\207\345\215\227/\345\237\272\346\234\254\350\246\201\346\261\202.md"
diff --git "a/sig/\345\237\272\347\241\200\350\256\276\346\226\275SIG/content/CI\345\217\212\344\273\243\347\240\201\351\227\250\347\246\201/CI-META\344\273\223\345\272\223\351\205\215\347\275\256\350\247\204\350\214\203.md" "b/sig/\345\237\272\347\241\200\350\256\276\346\226\275SIG/content/CI\345\217\212\344\273\243\347\240\201\351\227\250\347\246\201/CI-META\344\273\223\345\272\223\351\205\215\347\275\256\350\247\204\350\214\203.md"
index f110f613b50fcd45be8590b38f1e26a60e053d7c..b8c3d40bd8e2359b5f54d5c4eb0a131f9f19655a 100644
--- "a/sig/\345\237\272\347\241\200\350\256\276\346\226\275SIG/content/CI\345\217\212\344\273\243\347\240\201\351\227\250\347\246\201/CI-META\344\273\223\345\272\223\351\205\215\347\275\256\350\247\204\350\214\203.md"
+++ "b/sig/\345\237\272\347\241\200\350\256\276\346\226\275SIG/content/CI\345\217\212\344\273\243\347\240\201\351\227\250\347\246\201/CI-META\344\273\223\345\272\223\351\205\215\347\275\256\350\247\204\350\214\203.md"
@@ -1,3 +1,5 @@
+修改内容 20240711
+
# 简介
[CI-META仓库](https://gitee.com/anolis/ci-meta)做为OpenAnolis社区PackageCI测试流程的配置中心,提供了全局配置和自定义配置,全局配置默认对Gitee上的OpenAnolis企业账户下的所有仓库生效,自定义配置允许开发者通过自定义形式接入社区测试流程,本文主要介绍CI-META仓库配置规范。
diff --git "a/sig/\351\222\237\346\235\26023/README.md" "b/sig/\351\222\237\346\235\26023/README.md"
index f73dd741ecdc217c5cf895de14264e2d870350ad..ee6063bdc12c3eb70ff8781ce86f740f0e188bd1 100644
--- "a/sig/\351\222\237\346\235\26023/README.md"
+++ "b/sig/\351\222\237\346\235\26023/README.md"
@@ -1 +1,2 @@
-1212
\ No newline at end of file
+1212
+232323
diff --git "a/sig/\351\222\237\346\235\26023/content/13/222.md" "b/sig/\351\222\237\346\235\26023/content/13/222.md"
new file mode 100644
index 0000000000000000000000000000000000000000..85972fc6266dd0986631bdfecbeda441155294c9
--- /dev/null
+++ "b/sig/\351\222\237\346\235\26023/content/13/222.md"
@@ -0,0 +1 @@
+2323
\ No newline at end of file
diff --git "a/sig/\351\222\237\346\235\26023/content/13/aaaa.md" "b/sig/\351\222\237\346\235\26023/content/13/aaaa.md"
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git "a/sig/\351\222\237\346\235\26023/content/13/bbbb.md" "b/sig/\351\222\237\346\235\26023/content/13/bbbb.md"
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git "a/sig/\351\222\237\346\235\26023/content/13/zzzzz.md" "b/sig/\351\222\237\346\235\26023/content/13/zzzzz.md"
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git "a/sig/\351\222\237\346\235\26023/sig-info.yaml" "b/sig/\351\222\237\346\235\26023/sig-info.yaml"
index 96fdc31b9438b2dd954ac597c57e4f8435104900..589f4d5406a58cd470b753265d70c32f65d3bafb 100644
--- "a/sig/\351\222\237\346\235\26023/sig-info.yaml"
+++ "b/sig/\351\222\237\346\235\26023/sig-info.yaml"
@@ -6,8 +6,11 @@ en_description: hello!
mailing_list:
meeting_url:
maintainers:
+- openanolis_id: hgj_admin
+ gitee_id: logic_jie
-
+- openanolis_id:
+ gitee_id:
contributors:
diff --git "a/\343\200\2200\343\200\221\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227\347\233\256\345\275\225.md" "b/\343\200\2200\343\200\221\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227\347\233\256\345\275\225.md"
new file mode 100644
index 0000000000000000000000000000000000000000..a802869021c760e7716c609a20c415c30a1c8983
--- /dev/null
+++ "b/\343\200\2200\343\200\221\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227\347\233\256\345\275\225.md"
@@ -0,0 +1,26 @@
+
+### [【1】Anolis OS环境搭建教程](https://openanolis.cn/sig/Cloud-Kernel/doc/721476209221304399)
+
+### [【2】订阅Cloud Kernel邮件列表](https://openanolis.cn/sig/Cloud-Kernel/doc/721476296169226335)
+
+### [【3-1】内核编译安装 - Make方式](https://openanolis.cn/sig/Cloud-Kernel/doc/721476224463405137)
+
+### [【3-2】内核编译安装 - RPM包方式](https://openanolis.cn/sig/Cloud-Kernel/doc/721476230897467475)
+
+### [【3-3】内核编译安装 - intree模块编译](https://openanolis.cn/sig/Cloud-Kernel/doc/796036400039221309)
+
+### [【4-0】Cloud Kernel开发基本流程](https://openanolis.cn/sig/Cloud-Kernel/doc/721476280021155931)
+
+### [【4-1】向Cloud Kernel报告BUG](https://openanolis.cn/sig/Cloud-Kernel/doc/721476248891031637)
+
+### [【4-2】Cloud Kernel补丁规范](https://openanolis.cn/sig/Cloud-Kernel/doc/721476251004960855)
+
+### [【4-3】PR(Pull Request)规范](https://openanolis.cn/sig/Cloud-Kernel/doc/721476253496377433)
+
+### [【4-4】Cloud Kernel 研发规约(必读)](https://openanolis.cn/sig/Cloud-Kernel/doc/860616877348361648)
+
+### [【5】向Cloud Kernel报告CVE](https://openanolis.cn/sig/Cloud-Kernel/doc/721476285859627101)
+
+### [【6】Cloud Kernel仓库代码管理](https://openanolis.cn/sig/Cloud-Kernel/doc/721476298165715041)
+
+### [【7】从Cloud Kernel cherry-pick补丁的要求](https://openanolis.cn/sig/Cloud-Kernel/doc/831592015795327880)
\ No newline at end of file