gazelle/0053-update-README.md.patch
jiangheng14 46ab1e1590 backport upstream patches:
update README
    fix some bugs
    refactor pkt read send to improve performance
    refactor kernle event toimproveperformance

(cherry picked from commit a8c66704608ca83c799adab88be6214bccdcfa44)
2022-07-07 22:46:16 +08:00

333 lines
12 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From 5249ab9e033d2f02ca78eca1b96db540f9990641 Mon Sep 17 00:00:00 2001
From: xiusailong <xiusailong@huawei.com>
Date: Wed, 29 Jun 2022 11:28:10 +0800
Subject: [PATCH 4/6] update README.md
---
README.md | 10 +-
...50\346\210\267\346\214\207\345\215\227.md" | 159 +++++++-----------
2 files changed, 62 insertions(+), 107 deletions(-)
diff --git a/README.md b/README.md
index 61f298c..3c1487c 100644
--- a/README.md
+++ b/README.md
@@ -75,12 +75,12 @@ mkdir -p /mnt/hugepages
mkdir -p /mnt/hugepages-2M
chmod -R 700 /mnt/hugepages
chmod -R 700 /mnt/hugepages-2M
-mount -t hugetlbfs nodev /mnt/hugepages
-mount -t hugetlbfs nodev /mnt/hugepages-2M
+mount -t hugetlbfs nodev /mnt/hugepages -o pagesize=2M
+mount -t hugetlbfs nodev /mnt/hugepages-2M -o pagesize=2M
```
### 5. 应用程序使用Gazelle
-有两种使能Gazelle方法根据需要选择其一
+有两种使用Gazelle方法根据需要选择其一
- 重新编译应用程序链接Gazelle的库
修改应用makefile文件链接liblstack.so示例如下
```
@@ -256,8 +256,8 @@ Gazelle可能存在如下安全风险用户需要根据使用场景评估风
- 风险点
属于同一用户的恶意进程模仿DPDK实现逻辑通过大页文件共享大页内存写破坏大页内存导致Gazelle程序crash。建议用户下的进程属于同一信任域。
-**流量限制**
+**流量限制**
Gazelle没有做流量限制用户有能力发送最大网卡线速流量的报文到网络可能导致网络流量拥塞。
-**进程仿冒**
+**进程仿冒**
合法注册到ltran的两个lstack进程进程A可仿冒进程B发送仿冒消息给ltran修改ltran的转发控制信息造成进程B通讯异常进程B报文转发给进程A信息泄露等问题。建议lstack进程都为可信任进程。
diff --git "a/doc/gazelle-\347\224\250\346\210\267\346\214\207\345\215\227.md" "b/doc/gazelle-\347\224\250\346\210\267\346\214\207\345\215\227.md"
index bfe0f7c..3f40bf1 100644
--- "a/doc/gazelle-\347\224\250\346\210\267\346\214\207\345\215\227.md"
+++ "b/doc/gazelle-\347\224\250\346\210\267\346\214\207\345\215\227.md"
@@ -1,54 +1,52 @@
-[toc]
+# gazelle-用户指南
-# 1 简介
+## 1 简介
EulerOS提供了利用Gazelle runtime优化数据库服务性能的完整解决方案Gazelle
runtime基于bypass内核的架构设计能够提供更高性能运行环境优化服务软件性
能,可以很好地满足产品的性能需求。
本文主要介绍Gazelle软件如何安装使用。
-# 2 安装软件包编译应用程序以redis 为例)
+## 2 安装软件包编译应用程序以redis 为例)
-1. 在使用之前需要安装Gazelle软件包。
+在使用之前需要安装Gazelle软件包。
-#### 操作步骤
+### 操作步骤
- Gazelle是高性能用户态协议栈软件包使用如下命令安装Gazelle软件包
+Gazelle是高性能用户态协议栈软件包使用如下命令安装Gazelle软件包
```
- yum install gazelle
+yum install gazelle
```
-#### 安装正确性验证
+### 安装正确性验证
- 1. 安装完成后使用“rpm -qa | grep -E gazelle”命令确认是否已经正确安装。示例如下
+1. 安装完成后使用“rpm -qa | grep -E gazelle”命令确认是否已经正确安装。示例如下
- 如果已正确安装则结果显示如下:
+如果已正确安装则结果显示如下:
```
- gazelle-1.0.0-h1.eulerosv2r10.aarch64
+gazelle-1.0.0-h1.eulerosv2r10.aarch64
```
2. 确认以下dpdk组件是否存在
```
-
- /lib/modules/4.19.90-vhulk2007.2.0.h188.eulerosv2r10.aarch64/extra/dpdk/igb_uio.ko
- /usr/share/dpdk
- /usr/share/dpdk/usertools/dpdk-devbind.py
+rpm -ql dpdk | grep igb_uio
+/usr/share/dpdk
+/usr/share/dpdk/usertools/dpdk-devbind.py
```
3. 确认以下Gazelle组件是否存在
-
-```
- /usr/bin/gazellectl
- /usr/bin/ltran
- /usr/lib64/liblstack.so
- /etc/gazelle/ltran.conf
- /etc/gazelle/lstack.conf
- /etc/gazelle/lstack.Makefile
+```
+/usr/bin/gazellectl
+/usr/bin/ltran
+/usr/lib64/liblstack.so
+/etc/gazelle/ltran.conf
+/etc/gazelle/lstack.conf
+/etc/gazelle/lstack.Makefile
```
-#### 链接Gazelle编译redis-server
+### 链接Gazelle编译redis-server
1. 获取开源redis代码更改redis/src/Makefile文件使其链接lstack示例如下
@@ -78,10 +76,10 @@ index 4b2a31c..92fa17d 100644
2. 编译redis
- ```
- localhost:/euler/zyk/serverless/lredis/src # make distclean
- localhost:/euler/zyk/serverless/lredis/src # make USE_GAZELLE=1 -j32
- ```
+ ```
+ localhost:/euler/zyk/serverless/lredis/src # make distclean
+ localhost:/euler/zyk/serverless/lredis/src # make USE_GAZELLE=1 -j32
+ ```
#### 注意
@@ -89,7 +87,7 @@ index 4b2a31c..92fa17d 100644
支持LD_PRELOAD方式免编译使用gazelle可跳过编译应用程序步骤。
-#3 设置配置文件以redis为例
+## 3 设置配置文件以redis为例
安装完软件包后运行Gazelle服务需要设置必要的配置文件。
@@ -168,13 +166,13 @@ tcp_conn_scan_interval=10
redis.conf为redis服务的配置文件可以参考开源的配置文件需要注意的是redis.conf侦听的ip必须和其使用的lstack.conf里面的host_addr值保持一致。
-# 4 环境初始化
+## 4 环境初始化
配置文件完成后需要配置大页、插入igb_uio.ko、绑定dpdk网卡等环境初始化工作才可以运行Gazelle服务。
**说明igb_uio.ko依赖于uio.ko需要用户先确保已安装uio.ko模块。**
-#### 操作步骤
+### 操作步骤
1. **配置大页内存**
@@ -203,68 +201,24 @@ tcp_conn_scan_interval=10
将需要通信的网卡绑定到dpdk示例如下
```
- [root@ARM159server usertools]# ./dpdk-devbind.py --bind=igb_uio eth4
+[root@ARM159server usertools]# dpdk-devbind.py --bind=igb_uio eth4
```
如果是1822网卡必须绑定vfio-pci驱动
-```
- [root@ARM159server usertools]# ./dpdk-devbind.py --bind=vfio-pci eth4
-```
-
-4. **一键部署脚本使用**
-
- 提供gazelle_setup脚本用于快速自动化部署gazelle运行环境。
-
- 一键部署脚本执行示例:
-
-```
- gazelle_setup.sh i/--nic eth0 n/--numa 1024,1024 d/--daemon 1/0 k/--kni 1/0 l/--lowpower 1/0 --ltrancore 0,1 --lstackcore 2-3
-```
-
- 参数描述:
-
- -i/--nic设置待绑定网卡此参数必须配置且网卡需要有ip、路由和网关等必须参数否则会读取配置失败必选。
-
- -n/--numalstack大页内存不包括ltran的ltran默认为1024Msetup脚本不对其做修改根据numa节点配置并用","(英文的逗号)分离这里需要根据系统环境内存配置对应的大小默认为1024 可选。
-
- -d/--daemon是否开启deamon模式开启为1关闭为0默认为1可选。
-
- -k/--kni是否开启kni开启为1关闭为0默认为0可选。
-
- -l/--lowpower是否开启低功耗模式开启为1关闭为0默认为0可选。
-
- --ltrancoreltran的绑核参数参考dpdk的参数配置此处不做参数校验默认为0,1可选。
-
- --lstackcorelstack的绑核参数同--ltrancore默认为2可选。
-
- **说明**
-
- 1. gazelle_setup.sh支持非root用户启动即执行脚本对应的用户及用户组
- 2. 默认配置文件的目录为:/etc/gazelle。
- 3. gazelle_setup.sh会按照启动参数生成lstack.conf对于lstack多进程场景若多进程要使用不同配置文件则需要自己拷贝修改每个进程的lstack.conf。
- 4. 部署脚本会启动ltran进程。
-
- 一键退出脚本执行实例:
```
- gazelle_exit.sh
+[root@ARM159server usertools]# dpdk-devbind.py --bind=vfio-pci eth4
```
- **说明**
-
- 若启动了ltran的守护任务gazelle_setup.sh指定了 -d/--daemon 1那么在杀死ltran之后守护任务仍会将ltran拉起所以此时若要完全退出ltran需要执行gazelle_exit.sh。
-
-
+## 5 运行Gazelle
-# 5 运行Gazelle
-
-#### 前提条件
+### 前提条件
- 已完成软件包的安装。
- 已设置完配置文件。
- 已初始化环境。
-#### 操作步骤
+### 操作步骤
1. **启动ltran**
@@ -275,21 +229,22 @@ tcp_conn_scan_interval=10
**说明一键部署脚本已启动ltran若使用一键部署脚本无需此步骤。**
```
- [root@localhost deploy_open_source]# ltran --config-file /usr/share/gazelle/ltran.confEAL: Detected 96 lcore(s)
- EAL: Detected 4 NUMA nodes
- EAL: Multi-process socket /var/run/dpdk/(null)/mp_socket
- EAL: Selected IOVA mode 'PA'
- EAL: No free hugepages reported in hugepages-2048kB
- EAL: No free hugepages reported in hugepages-2048kB
- EAL: No free hugepages reported in hugepages-2048kB
- EAL: No available hugepages reported in hugepages-1048576kB
- EAL: Probing VFIO support...
- EAL: VFIO support initialized
- EAL: PCI device 0000:03:00.0 on NUMA socket 0......
- EAL: Finished Process ltran_core_init.
- EAL: Finished Process ctrl_thread_fn.
- EAL: Finished Process client_rx_buf_init.
- EAL: Runing Process forward.
+[root@localhost deploy_open_source]# ltran --config-file /usr/share/gazelle/ltran.conf
+EAL: Detected 96 lcore(s)
+EAL: Detected 4 NUMA nodes
+EAL: Multi-process socket /var/run/dpdk/(null)/mp_socket
+EAL: Selected IOVA mode 'PA'
+EAL: No free hugepages reported in hugepages-2048kB
+EAL: No free hugepages reported in hugepages-2048kB
+EAL: No free hugepages reported in hugepages-2048kB
+EAL: No available hugepages reported in hugepages-1048576kB
+EAL: Probing VFIO support...
+EAL: VFIO support initialized
+EAL: PCI device 0000:03:00.0 on NUMA socket 0......
+EAL: Finished Process ltran_core_init.
+EAL: Finished Process ctrl_thread_fn.
+EAL: Finished Process client_rx_buf_init.
+EAL: Runing Process forward.
```
2. **启动redis**
@@ -367,7 +322,7 @@ GAZELLE_BIND_PROCNAME=benchmark_ker GAZELLE_BIND_THREADNAME=disp LD_PRELOAD=/lib
1. 不支持使用export方式单独声明LD_PRELOAD环境变量。
2. GAZELLE_BIND_PROCNAME指定lstack绑定的进程名称GAZELLE_BIND_THREADNAME指定lstack绑定的进程中的具体线程名且支持字串匹配如设置disp表示进程中所有线程名包含disp 字串的线程都会绑定lstack。
-# 6 最佳性能配置
+## 6 最佳性能配置
为获得最佳的性能Gazelle在启动时对cpu和内存配置有一定要求。最佳性能配置如下
@@ -377,7 +332,7 @@ GAZELLE_BIND_PROCNAME=benchmark_ker GAZELLE_BIND_THREADNAME=disp LD_PRELOAD=/lib
4. 应用进程绑核可提高性能与网卡同一个numa节点对应的核如果有空闲应当优先绑定。
5. Gazelle的网络高性能只有在远程访问的时候才有保证本机的tcp连接功能也支持但如果本机有频繁的数据访问会导致实例整体性能下降不建议这么部署。
-# 7 使用约束
+## 7 使用约束
1. Gazelle提供的命令行及配置文件仅root权限开源执行或修改。配置大页内存需要root用户执行操作。
2. 在将网卡绑定到igb_uio后禁止将网卡绑回ixgbe。
@@ -408,7 +363,7 @@ GAZELLE_BIND_PROCNAME=benchmark_ker GAZELLE_BIND_THREADNAME=disp LD_PRELOAD=/lib
-# 8 升级说明
+## 8 升级说明
后续升级需要变更的组件包括ltran、liblstack.so、gazellectl、lstack.Makefile、lstack.conf、ltran.conf、gazelle_setup.sh、gazelle_exit.sh、gazelle_crontab.sh、gazelle_common.sh。
@@ -436,9 +391,9 @@ GAZELLE_BIND_PROCNAME=benchmark_ker GAZELLE_BIND_THREADNAME=disp LD_PRELOAD=/lib
-#9 调测工具
+## 9 调测工具
-##9.1 获取ltran统计数据说明
+### 9.1 获取ltran统计数据说明
#### 概述
@@ -501,7 +456,7 @@ GAZELLE_BIND_PROCNAME=benchmark_ker GAZELLE_BIND_THREADNAME=disp LD_PRELOAD=/lib
-## 9.2 获取Lstack统计数据说明
+### 9.2 获取Lstack统计数据说明
#### 概述
@@ -553,4 +508,4 @@ lstack作为网络协议栈底座使用时必须指定需要获取的lstack
```
gazellectl lstack set {client_ip} lowpower {0 | 1}1:enable lowpower mode
-```
\ No newline at end of file
+```
--
2.23.0