From b9d414e9c9670d831665504553658eb2115d27dc Mon Sep 17 00:00:00 2001 From: chopupu Date: Mon, 4 Aug 2025 20:28:45 +0800 Subject: [PATCH] add user manual update --- docs/en/dpu_offload/_toc.yaml | 14 + docs/en/dpu_offload/config/client.json | 5 + docs/en/dpu_offload/config/prepare.sh | 58 +++ docs/en/dpu_offload/config/rexec.service | 13 + docs/en/dpu_offload/config/server.json | 5 + docs/en/dpu_offload/config/server_start.sh | 44 +++ docs/en/dpu_offload/config/whitelist | 8 + docs/en/dpu_offload/figures/arch.png | Bin 0 -> 27836 bytes docs/en/dpu_offload/figures/offload-arch.png | Bin 0 -> 34387 bytes docs/en/dpu_offload/figures/qtfs-arch.png | Bin 0 -> 34711 bytes ...ible_container_management_plane_offload.md | 35 ++ ...n_aggregation_environment_establishment.md | 360 +++++++++++++++++ .../dpu_offload/offload_deployment_guide.md | 167 ++++++++ docs/en/dpu_offload/overview.md | 11 + .../qtfs_architecture_and_usage.md | 77 ++++ docs/en/dpu_offload/scripts/qemu-kvm | 3 + docs/en/dpu_offload/scripts/virt_start.sh | 48 +++ docs/en/dpu_offload/scripts/virt_umount.sh | 20 + docs/en/dpu_os/_toc.yaml | 11 + .../dpu_os_background_and_requirements.md | 67 ++++ docs/en/dpu_os/dpu_os_tailoring_guide.md | 65 +++ docs/en/dpu_os/figures/dpuos-arch.png | Bin 0 -> 63987 bytes docs/en/dpu_os/overview.md | 11 + docs/en/dpu_os/verification_and_deployment.md | 38 ++ docs/zh/dpu_offload/_toc.yaml | 15 + docs/zh/dpu_offload/config/rexec.service | 13 + docs/zh/dpu_offload/figures/arch.png | Bin 0 -> 27836 bytes docs/zh/dpu_offload/figures/offload-arch.png | Bin 0 -> 39249 bytes docs/zh/dpu_offload/figures/qtfs-arch.png | Bin 0 -> 49089 bytes ...ible_container_management_plane_offload.md | 31 ++ ...n_aggregation_environment_establishment.md | 369 ++++++++++++++++++ .../dpu_offload/offload_deployment_guide.md | 166 ++++++++ docs/zh/dpu_offload/overview.md | 11 + .../qtfs_architecture_and_usage.md | 67 ++++ docs/zh/dpu_offload/scripts/qemu-kvm | 3 + docs/zh/dpu_offload/scripts/virt_start.sh | 48 +++ docs/zh/dpu_offload/scripts/virt_umount.sh | 20 + docs/zh/dpu_os/_toc.yaml | 10 + .../dpu_os_background_and_requirements.md | 67 ++++ docs/zh/dpu_os/dpu_os_tailoring_guide.md | 65 +++ docs/zh/dpu_os/figures/dpuos-arch.png | Bin 0 -> 63987 bytes docs/zh/dpu_os/verification_and_deployment.md | 38 ++ 42 files changed, 1983 insertions(+) create mode 100644 docs/en/dpu_offload/_toc.yaml create mode 100644 docs/en/dpu_offload/config/client.json create mode 100644 docs/en/dpu_offload/config/prepare.sh create mode 100644 docs/en/dpu_offload/config/rexec.service create mode 100644 docs/en/dpu_offload/config/server.json create mode 100644 docs/en/dpu_offload/config/server_start.sh create mode 100644 docs/en/dpu_offload/config/whitelist create mode 100644 docs/en/dpu_offload/figures/arch.png create mode 100644 docs/en/dpu_offload/figures/offload-arch.png create mode 100644 docs/en/dpu_offload/figures/qtfs-arch.png create mode 100644 docs/en/dpu_offload/imperceptible_container_management_plane_offload.md create mode 100644 docs/en/dpu_offload/libvirt_direct_connection_aggregation_environment_establishment.md create mode 100644 docs/en/dpu_offload/offload_deployment_guide.md create mode 100644 docs/en/dpu_offload/overview.md create mode 100644 docs/en/dpu_offload/qtfs_architecture_and_usage.md create mode 100644 docs/en/dpu_offload/scripts/qemu-kvm create mode 100644 docs/en/dpu_offload/scripts/virt_start.sh create mode 100644 docs/en/dpu_offload/scripts/virt_umount.sh create mode 100644 docs/en/dpu_os/_toc.yaml create mode 100644 docs/en/dpu_os/dpu_os_background_and_requirements.md create mode 100644 docs/en/dpu_os/dpu_os_tailoring_guide.md create mode 100644 docs/en/dpu_os/figures/dpuos-arch.png create mode 100644 docs/en/dpu_os/overview.md create mode 100644 docs/en/dpu_os/verification_and_deployment.md create mode 100644 docs/zh/dpu_offload/_toc.yaml create mode 100644 docs/zh/dpu_offload/config/rexec.service create mode 100644 docs/zh/dpu_offload/figures/arch.png create mode 100644 docs/zh/dpu_offload/figures/offload-arch.png create mode 100644 docs/zh/dpu_offload/figures/qtfs-arch.png create mode 100644 docs/zh/dpu_offload/imperceptible_container_management_plane_offload.md create mode 100644 docs/zh/dpu_offload/libvirt_direct_connection_aggregation_environment_establishment.md create mode 100644 docs/zh/dpu_offload/offload_deployment_guide.md create mode 100644 docs/zh/dpu_offload/overview.md create mode 100644 docs/zh/dpu_offload/qtfs_architecture_and_usage.md create mode 100644 docs/zh/dpu_offload/scripts/qemu-kvm create mode 100644 docs/zh/dpu_offload/scripts/virt_start.sh create mode 100644 docs/zh/dpu_offload/scripts/virt_umount.sh create mode 100644 docs/zh/dpu_os/_toc.yaml create mode 100644 docs/zh/dpu_os/dpu_os_background_and_requirements.md create mode 100644 docs/zh/dpu_os/dpu_os_tailoring_guide.md create mode 100644 docs/zh/dpu_os/figures/dpuos-arch.png create mode 100644 docs/zh/dpu_os/verification_and_deployment.md diff --git a/docs/en/dpu_offload/_toc.yaml b/docs/en/dpu_offload/_toc.yaml new file mode 100644 index 0000000..f4b81c3 --- /dev/null +++ b/docs/en/dpu_offload/_toc.yaml @@ -0,0 +1,14 @@ +label: libvirt Direct Connection Aggregation Environment Establishment +isManual: true +href: ./libvirt_direct_connection_aggregation_environment_establishment.md +description: DPU offloading feature for container management and its installation and deployment method on openEuler +sections: + - label: qtfs Shared File System + href: ./qtfs_architecture_and_usage.md + - label: Imperceptible DPU Offload User Guide + href: ./overview.md + sections: + - label: Imperceptible Container Management Plane Offload + href: ./imperceptible_container_management_plane_offload.md + - label: Imperceptible Container Management Plane Offload Deployment Guide + href: ./offload_deployment_guide.md diff --git a/docs/en/dpu_offload/config/client.json b/docs/en/dpu_offload/config/client.json new file mode 100644 index 0000000..4aedf4c --- /dev/null +++ b/docs/en/dpu_offload/config/client.json @@ -0,0 +1,5 @@ +{ + "Protocol": "tcp", + "Ipaddr" : "192.168.10.11", + "Port" : "7777" +} diff --git a/docs/en/dpu_offload/config/prepare.sh b/docs/en/dpu_offload/config/prepare.sh new file mode 100644 index 0000000..ccfe940 --- /dev/null +++ b/docs/en/dpu_offload/config/prepare.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +mkdir -p /another_rootfs/var/run/docker/containerd +iptables -t nat -N DOCKER + +echo "---------insmod qtfs ko----------" +# TEST_MODE: IP +insmod ${YOUR_PATH}/qtfs.ko qtfs_server_ip=${YOUR_SERVER_IP} qtfs_log_level=INFO # Enter the .ko file path and IP address. +nohup ${YOUR_PATH}/udsproxyd 1 ${YOUR_CLIENT_IP} 12121 ${YOUR_SERVER_IP} 12121 2>&1 & + +# TEST_MODE: vsock +# insmod ${YOUR_PATH}/qtfs.ko qtfs_server_vsock_cid=${YOUR_SERVER_VSOCK_CID} qtfs_log_level=INFO # Enter the .ko file path and IP address. +# nohup ${YOUR_PATH}/udsproxyd 1 ${YOUR_CLIENT_VSOCK_CID} 12121 ${YOUR_SERVER_VSOCK_CID} 12121 2>&1 & + +qtcfg -w udsconnect -x /var/run/rexec +qtcfg -w udsconnect -x /run/rexec + +mkdir /another_rootfs/local_proc/ +mount -t proc proc /another_rootfs/local_proc/ +mount --bind /var/run/ /another_rootfs/var/run/ +mount --bind /var/lib/ /another_rootfs/var/lib/ +mount --bind /etc /another_rootfs/etc +mount -t devtmpfs devtmpfs /another_rootfs/dev/ +mount -t sysfs sysfs /another_rootfs/sys +mkdir -p /another_rootfs/sys/fs/cgroup +mount -t tmpfs tmpfs /another_rootfs/sys/fs/cgroup +list="perf_event freezer files net_cls,net_prio hugetlb pids rdma cpu,cpuacct memory devices blkio cpuset" +for i in $list +do + echo $i + mkdir -p /another_rootfs/sys/fs/cgroup/$i + mount -t cgroup cgroup -o rw,nosuid,nodev,noexec,relatime,$i /another_rootfs/sys/fs/cgroup/$i +done + +mount -t qtfs -o proc /proc /another_rootfs/proc +echo "proc" +mount -t qtfs /sys /another_rootfs/sys +echo "cgroup" + +mkdir -p /another_rootfs/var/lib/docker/containers +mkdir -p /another_rootfs/var/lib/docker/containerd +mkdir -p /another_rootfs/var/lib/docker/overlay2 +mkdir -p /another_rootfs/var/lib/docker/image +mkdir -p /another_rootfs/var/lib/docker/tmp +mount -t qtfs /var/lib/docker/containers /another_rootfs/var/lib/docker/containers +mount -t qtfs /var/lib/docker/containerd /another_rootfs/var/lib/docker/containerd +mount -t qtfs /var/lib/docker/overlay2 /another_rootfs/var/lib/docker/overlay2 +mount -t qtfs /var/lib/docker/image /another_rootfs/var/lib/docker/image +mount -t qtfs /var/lib/docker/tmp /another_rootfs/var/lib/docker/tmp +mkdir -p /another_rootfs/run/containerd/io.containerd.runtime.v1.linux/ +mount -t qtfs /run/containerd/io.containerd.runtime.v1.linux/ /another_rootfs/run/containerd/io.containerd.runtime.v1.linux/ +mkdir -p /another_rootfs/var/run/docker/containerd +mount -t qtfs /run/docker/containerd /another_rootfs/run/docker/containerd +mkdir -p /another_rootfs/var/lib/containerd/io.containerd.runtime.v1.linux +mount -t qtfs /var/lib/containerd/io.containerd.runtime.v1.linux /another_rootfs/var/lib/containerd/io.containerd.runtime.v1.linux + +qtcfg -w udsconnect -x /another_rootfs/var/run/rexec +qtcfg -w udsconnect -x /another_rootfs/run/rexec diff --git a/docs/en/dpu_offload/config/rexec.service b/docs/en/dpu_offload/config/rexec.service new file mode 100644 index 0000000..ee9e5e4 --- /dev/null +++ b/docs/en/dpu_offload/config/rexec.service @@ -0,0 +1,13 @@ +[Unit] +Description=Rexec_server Service +After=network.target + +[Service] +Type=simple +Environment=CMD_NET_ADDR=tcp://0.0.0.0:7777 +ExecStart=/usr/bin/rexec_server +ExecReload=/bin/kill -s HUP $MAINPID +KillMode=process + +[Install] +WantedBy=multi-user.target diff --git a/docs/en/dpu_offload/config/server.json b/docs/en/dpu_offload/config/server.json new file mode 100644 index 0000000..1d4a7bb --- /dev/null +++ b/docs/en/dpu_offload/config/server.json @@ -0,0 +1,5 @@ +{ + "Protocol": "tcp", + "Ipaddr" : "0.0.0.0", + "Port" : "7777" +} diff --git a/docs/en/dpu_offload/config/server_start.sh b/docs/en/dpu_offload/config/server_start.sh new file mode 100644 index 0000000..fd36551 --- /dev/null +++ b/docs/en/dpu_offload/config/server_start.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +modprobe overlay +mkdir /var/lib/docker/containers +mkdir -p /var/lib/docker/containers +mkdir -p /var/lib/docker/containerd +mkdir -p /var/lib/docker/overlay2 +mkdir -p /var/lib/docker/tmp +mkdir -p /var/lib/docker/image +mkdir -p /var/run/docker/containerd +mkdir -p /run/containerd/io.containerd.runtime.v1.linux/ +mkdir -p /var/run/docker/netns +mkdir -p /var/lib/containerd/io.containerd.runtime.v1.linux/ +mkdir -p /run/user/0 +touch /var/run/docker/netns/default +# this should be done once +mount --bind /proc/1/ns/net /var/run/docker/netns/default + +function TaskClean() +{ + echo "Now do task clean..." + pkill engine + rmmod qtfs_server + echo "TaskClean done" +} + +trap "TaskClean exit" SIGINT + +mkdir -p /var/run/docker/containerd +mkdir -p /run/containerd/io.containerd.runtime.v1.linux/ + +# TEST_MODE: IP +insmod ${YOUR_PATH}/qtfs_server.ko qtfs_server_ip=${YOUR_SERVER_IP} qtfs_log_level=ERROR +nohup ${YOUR_PATH}/engine 16 1 ${YOUR_SERVER_IP} 12121 ${YOUR_CLIENT_IP} 12121 2>&1 & + +# TEST_MODE: vsock +# insmod ${YOUR_PATH}/qtfs_server.ko qtfs_server_vsock_cid=${YOUR_SERVER_VSOCK_CID} qtfs_log_level=ERROR +# nohup ${YOUR_PATH}/engine 16 1 ${YOUR_SERVER_VSOCK_CID} 12121 ${YOUR_CLIENT_VSOCK_CID} 12121 2>&1 & + +sleep 2 + +qtcfg -w udsconnect -x /var/run/rexec +qtcfg -w udsconnect -x /run/rexec +qtcfg -w udsconnect -x /var/run/containerd diff --git a/docs/en/dpu_offload/config/whitelist b/docs/en/dpu_offload/config/whitelist new file mode 100644 index 0000000..b0be45f --- /dev/null +++ b/docs/en/dpu_offload/config/whitelist @@ -0,0 +1,8 @@ +kill +taskset +qemu-kvm +rexec_shim +/usr/bin/taskset +/usr/bin/kill +/usr/bin/qemu-kvm +/usr/bin/rexec_shim diff --git a/docs/en/dpu_offload/figures/arch.png b/docs/en/dpu_offload/figures/arch.png new file mode 100644 index 0000000000000000000000000000000000000000..b6a7836fd6fab75009e781ac1ed96c73c352f75b GIT binary patch literal 27836 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

yoraFEQ;P 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

u$vWdQXKol2M-0_1z8f4bc>T2$Jo z1l!JxaiErQovIR|v7fWFAo)96h`+p%TZ7hz_i;Lh=U;_u{@Q#(hX>$xme7PAkGa6L zUP$~$epg{D#^?Y5{&{mTn^ruaD+XZ-vxtn@gJmx%OpbIku-I!SVrVimC-5M&WOqm9 zGIG5V$bcSwbPvF_n7FtOzkNN972kh+pz`Oi&Wh#Gh>hI~7kSqg z6b(mD*CWP`z*0}dsFM$99S%J?th>GsH&;JQVfey~!=X`9CgbfdQ;1IS5kR4(Mup+W z0>|c{E{KjtCz!9U2{fDZ{G;a|nRoW8gFgnYBWR7!@<_18bzSlsHOh~a$t@L7vC73E|c1JqeV z4|4>F2I6ovoUE-w@_BSxX;K?OKF0=~yoN-j6`6iPJ_{77y`}QuFMp<dSs-uZ-m|7B}?*2jhTRf2@f2#|dv)Uu;6vrOl}T zI%Y%Lbytk8Asu&;rwnC{m}~_iGdo{T7e6qJuFwFRJv9NUfxcdu)<*O^QtLz&+H=#R zEQbNeQ~OWTA-k3Irabl^I!LX2Vb_~piyr4 UjoYa88z7*6+5K5%>3jEo0cRtJ9smFU literal 0 HcmV?d00001 diff --git a/docs/en/dpu_offload/imperceptible_container_management_plane_offload.md b/docs/en/dpu_offload/imperceptible_container_management_plane_offload.md new file mode 100644 index 0000000..b6b5f36 --- /dev/null +++ b/docs/en/dpu_offload/imperceptible_container_management_plane_offload.md @@ -0,0 +1,35 @@ +# Imperceptible Container Management Plane Offload + +## Overview + +Moore's law ceases to apply in data center and cloud scenarios. The CPU computing power growth rate of general processing units is slowing down, while the network I/O speed and performance keep increasing. As a result, the processing capability of current general-purpose processors cannot meet the I/O processing requirements of the network and drives. In traditional data centers, more and more general-purpose CPU computing power is occupied by I/O and management planes. This part of resource loss is called data center tax. According to AWS statistics, the data center tax may account for more than 30% of the computing power of the data center. + +The data processing unit (DPU) is developed to release the computing resources from the host CPU. The management plane, network, storage, and security capabilities are offloaded to DPUs for acceleration, reducing costs and improving efficiency. Mainstream cloud vendors, such as AWS, Alibaba Cloud, and Huawei Cloud, use self-developed processors to offload the management plane and related data plane, achieving 100% utilization of data center computing resources. + +The management plane processes can be offloaded to the DPU by splitting the component source code. The source code is split into two parts that run independently on the host and DPU based on the function logic. In this way, the component is offloaded. However, this method has the following problems: + +1. The software compatibility of the component is affected. You need to maintain the component and related patches in subsequent version upgrades, which increases the maintenance workload. +2. The offload cannot be inherited by other components. You need to split each component based on code logic analysis. + +To solve these problems, openEuler introduces imperceptible DPU offload. The abstraction layer provided by the OS shields the cross-host access differences between the host and DPU, and enables service processes to be offloaded to the DPU with virtually zero modification. This part of work at the common layer of the OS and is irrelevant to upper-layer services. Other services can also inherit the offload to DPU. + +## Architecture + +### Imperceptible Container Management Plane DPU Offload Architecture + +**Figure 1** Imperceptible Container Management Plane DPU Offload Architecture + +![offload-arch](./figures/offload-arch.png) + +As shown in Figure 1, after the container management plane is offloaded, management processes such as dockerd and kubelet run on the DPU side, and container processes run on the host. The interaction between processes is ensured by the system layer. + +* Communication layer: DPUs and hosts can communicate with each other through PCIe interfaces or networks. A communication interface layer is provided based on underlying physical connections to provide communication interfaces for upper-layer services. + +* qtfs kernel shared file system: The container management plane components kubelet and dockerd interact with container processes through file systems. Management plane tools need to prepare data plane paths to rootfs and volume for container processes. In addition, the proc and cgroup file systems need to be used to control and monitor the resources and status of container processes. For details about qtfs, see [qtfs Shared File System Introduction and Usage](./qtfs-architecture-and-usage.md). + +* User-mode offload environment: You need to use qtfs to prepare the runtime environment for the offloaded management plane, and remotely mount the container management and runtime directories of the host to the DPU. System management file systems such as proc, sys, and cgroup need to be mounted. To prevent damage to the native system functions of the DPU, the preceding mounting operations are performed in the chroot environment. In addition, the management plane (running on the DPU) and container processes (running on the host) have invoking relationships. The rexec remote binary execution tool needs to be used to provide corresponding functions. + +For details about how to offload container management plane, see the [Deployment Guide](./offload-deployment-guide.md). + +> [!NOTE]NOTE +> In this user guide, modifications are performed to the container management plane components and the rexec tool of a specific version. You can modify other versions based on the actual execution environment. The patch provided in this document is for verification only and is not for commercial use. diff --git a/docs/en/dpu_offload/libvirt_direct_connection_aggregation_environment_establishment.md b/docs/en/dpu_offload/libvirt_direct_connection_aggregation_environment_establishment.md new file mode 100644 index 0000000..90280c4 --- /dev/null +++ b/docs/en/dpu_offload/libvirt_direct_connection_aggregation_environment_establishment.md @@ -0,0 +1,360 @@ +# Libvirt Direct Connection Aggregation Environment Establishment + +## 1 Hardware Preparation + +### Test Mode + +Prepare two physical machines (VMs have not been tested) that can communicate with each other. + +One physical machine functions as the DPU, and the other functions as the host. In this document, DPU and HOST refer to the two physical machines. + +> [!NOTE]NOTE +> In the test mode, network ports are exposed without connection authentication, which is risky and should be used only for internal tests and verification. Do not use this mode in the production environment. + +### vsock mode + +The DPU and HOST are required. The DPU must be able to provide vsock communication through virtio. + +This document describes only the test mode usage. + +## 2 libvirt offload architecture + +![arch](./figures/arch.png) + +## 3 Environment Setup + +### 3.1 qtfs File System Deployment + +For details, visit . + +To establish a qtfs connection, you need to disable the firewall. + +### 3.2 Deploying the udsproxyd Service + +#### 3.2.1 Introduction + +udsproxyd is a cross-host Unix domain socket (UDS) proxy service, which needs to be deployed on both the host and DPU. The udsproxyd components on the host and dpu are peers. They implement seamless UDS communication between the host and DPU, which means that if two processes can communicate with each other through UDSs on the same host, they can do the same between the host and DPU. The code of the processes does not need to be modified, only that the client process needs to run with the **LD_PRELOAD=libudsproxy.so** environment variable. As a cross-host Unix socket service, udsproxyd can be used by running with `LD_PRELOAD=libudsproxy.so`. With the support of qtfs, udsproxyd can also be used transparently. You need to configure the allowlist in advance. The specific operations are described later. + +#### 3.2.2 Deploying udsproxyd + +Build udsproxyd in the dpu-utilities project: + +```bash +cd qtfs/ipc +make -j UDS_TEST_MODE=1 && make install +``` + +The engine service on the qtfs server has incorporated the udsproxyd feature. You do not need to manually start udsproxyd if the qtfs server is deployed. However, you need to start udsproxyd on the client by running the following command: + +```bash +nohup /usr/bin/udsproxyd 2>&1 & +``` + +Parameters: + +```bash +thread num: number of threads. Currently, only one thread is supported. +addr: IP address of the host. +port: Port used on the host. +peer addr: IP address of the udsproxyd peer. +peer port: port used on the udsproxyd peer. +``` + +Example: + +```bash +nohup /usr/bin/udsproxyd 1 192.168.10.10 12121 192.168.10.11 12121 2>&1 & +``` + +If the qtfs engine service is not started, you can start udsproxyd on the server to test udsproxyd separately. Run the following command: + +```bash +nohup /usr/bin/udsproxyd 1 192.168.10.11 12121 192.168.10.10 12121 2>&1 & +``` + +#### 3.2.3 Using udsproxyd + +##### 3.2.3.1 Using udsproxyd Independently + +When starting the client process of the Unix socket application that uses the UDS service, add the **LD_PRELOAD=libudsproxy.so** environment variable to intercept the **connect** API of glibc for UDS interconnection. In the libvirt offload scenario, you can copy **libudsproxy.so**, which will be used by the libvirtd service, to the **/usr/lib64** directory in the chroot directory of libvirt. + +##### 3.2.3.2 Using the udsproxyd Service Transparently + +Configure the UDS service allowlist for qtfs. The allowlist is the sock file address bound to the Unix socket server. For example, the files of the Unix socket server created by the libvirt VM are in the **/var/lib/libvirt** directory. In this case, add the directory path to the allowlist in either of the following ways: + +* Load the allowlist by using the `qtcfg` utility. First compile the utility in **qtfs/qtinfo**. + +Run the following command on the qtfs client: + +```bash +make role=client +make install +``` + +Run the following command on the qtfs server: + +```bash +make role=server +make install +``` + +After `qtcfg` is installed automatically, run `qtcfg` to configure the allowlist. Assume that **/var/lib/libvirt** needs to be added to the allowlist: + +```bash +qtcfg -x /var/lib/libvirt/ +``` + +Query the allowlist: + +```bash +qtcfg -z +``` + +Delete an allowlist entry: + +```bash +qtcfg -y 0 +``` + +The parameter is the index number listed when you query the allowlist. + +* Add an allowlist entry through the configuration file. The configuration file needs to be set before the qtfs or qtfs_server kernel module is loaded. The allowlist is loaded when the kernel modules are initialized. + +> [!NOTE]NOTE +> The allowlist prevents irrelevant Unix sockets from establishing remote connections, causing errors or wasting resources. You are advised to set the allowlist as precisely as possible. For example, in this document, **/var/lib/libvirt** is set in the libvirt scenario. It would be risky to directly add **/var/lib**, **/var**, or the root directory. + +### 3.3 rexec Service Deployment + +#### 3.3.1 Introduction + +rexec is a remote execution component developed using the C language. It consists of the rexec client and rexec server. The server is a daemon process, and the client is a binary file. After being started, the client establishes a UDS connection with the server using the udsproxyd service, and the server daemon process starts a specified program on the server machine. During libvirt virtualization offload, libvirtd is offloaded to the DPU. When libvirtd needs to start the QEMU process on the HOST, the rexec client is invoked to remotely start the process. + +#### 3.3.2 Deploying rexec + +##### 3.3.2.1 Configuring the Environment Variables and Allowlist + +Configure the rexec server allowlist on the host. Put the **whitelist** file in the **/etc/rexec** directory, and change the file permission to read-only. + +```bash +chmod 400 /etc/rexec/whitelist +``` + +In the test environment, the allowlist is not mandatory. You can disable the allowlist by deleting the **whitelist** file and restarting the rexec_server process. + +After downloading the dpu-utilities code, go to the **qtfs/rexec** directory and run `make && make install` to install all binary files required by rexec (**rexec** and **rexec_server**) to the **/usr/bin** directory. + +Before starting the rexec_server service on the server, check whether the **/var/run/rexec** directory exists. If not, create it. + +```bash +mkdir /var/run/rexec +``` + +##### 3.3.2.2 Starting the Service + +You can start the rexec_server service on the server in either of the following ways. + +* Method 1: + + Configure rexec as a systemd service. + + Add the **[rexec.service](./config/rexec.service)** file to **/usr/lib/systemd/system**. + + Then, use `systemctl` to manage the rexec service. + + Start the service for the first time: + + ```bash + systemctl daemon-reload + + systemctl enable --now rexec + ``` + + Restart the service: + + ```bash + systemctl stop rexec + + systemctl start rexec + ``` + +* Method 2: + + Manually start the service in the background. + + ```bash + nohup /usr/bin/rexec_server 2>&1 & + ``` + +### 3.4 libvirt Service Deployment + +#### 3.4.1 Deploying on the HOST + +Install the VM runtime and libvirt. (libvirt is installed to create related directories.) + +```bash +yum install -y qemu libvirt edk2-aarch64 # (required for starting VMs in the Arm environment) +``` + +Put the VM image on the HOST. The VM image will be mounted to the client through qtfs and shared with libvirt. + +#### 3.4.2 Deploying on the DPU + +##### 3.4.2.1 Creating the Chroot Environment + +(a) Download the QCOW image from the openEuler official website, for example, openEuler 23.09: . + +(b) Mount the QCOW2 image. + +```bash +cd /root/ + +mkdir p2 new_root_origin new_root + +modprobe nbd maxport=8 + +qemu-nbd -c /dev/nbd0 xxx.qcow2 + +mount /dev/nbd0p2 /root/p2 + +cp -rf /root/p2/* /root/new_root_origin/ + +umount /root/p2 + +qemu-nbd -d /dev/nbd0 +``` + +(c) Now, the root directory of the image is decompressed in **new_root_origin**. Bind mount **new_root** to **new_root_origin** as the mount point for chroot. + +```bash +mount --bind /root/new_root_origin /root/new_root +``` + +##### 3.4.2.2 Installing libvirt + +Compile the source code with a patch. + +(a) Go to the chroot environment and install the compilation environment and common tools. + +```bash +yum groupinstall "Development tools" -y +yum install -y vim meson qemu qemu-img strace edk2-aarch64 tar +``` + +**edk2-aarch64** is required for starting VMs in the Arm environment. + +(b) Install the dependency packages required for libvirt compilation. + +```bash + yum install -y rpcgen python3-docutils glib2-devel gnutls-devel libxml2-devel libpciaccess-devel libtirpc-devel yajl-devel systemd-devel dmidecode glusterfs-api numactl +``` + +(c) Download the libvirt-x.x.x source code package . + +(d) Obtain the libvirt patch: + +. + +(e) Decompress the source code package to a directory in the chroot environment, for example, **/home**, and apply the patch. + +(f) Go to the **libvirt-x.x.x** directory and run the following command: + +```bash +meson build --prefix=/usr -Ddriver_remote=enabled -Ddriver_network=enabled -Ddriver_qemu=enabled -Dtests=disabled -Ddocs=enabled -Ddriver_libxl=disabled -Ddriver_esx=disabled -Dsecdriver_selinux=disabled -Dselinux=disabled +``` + +(g) Complete the installation. + +```bash +ninja -C build install +``` + +##### 3.4.2.3 Starting the libvirtd Service + +To use libvirt direct connection aggregation, you need to start the libvirtd service in the chroot environment, which requires the libvirtd service outside the chroot environment to be stopped. + +(a) Put the [VM jumper script](./scripts/qemu-kvm) in **/usr/bin** and **/usr/libexec** in the chroot environment to replace the **qemu-kvm** binary file. The jumper script will call rexec to start a remote VM. +> [!NOTE]NOTE +> In the XML file of virsh, set **\** under **\** to **qemu-kvm**. If you set **\** to another value, change it to **qemu-kvm** or replace the binary file specified by **\** with the jumper script. The content of the jumper script also needs to be modified accordingly. + +(b) Copy the **libudsproxy.so** file generated during udsproxyd compilation to the **/usr/lib64** directory in the chroot directory. If the udsproxyd service is used by configuring the UDS allowlist of qtfs, you do not need to copy the **libudsproxy.so** file. + +(c) Save the **rexec** binary file generated during rexec compilation to the **/usr/bin** directory of the chroot environment. + +(d) To configure the chroot mounting environment, you need to mount some directories. Use the following scripts: + +* [virt_start.sh](./scripts/virt_start.sh) is the configuration script. In the script, you need to manually change the **qtfs.ko** path to the path of the compiled **.ko** file and set the correct HOST IP address. +* [virt_umount.sh](./scripts/virt_umount.sh) is the configuration revert script. + +(e) The mount directories in the script are based on the examples in this document. You can modify the paths in the script as required. + +(f) After the chroot environment is configured, enter the chroot environment and manually start libvirtd. + +If qtfs is not configured to use the udsproxyd allowlist, run the following commands: + +```bash +LD_PRELOAD=/usr/lib64/libudsproxy.so virtlogd -d +LD_PRELOAD=/usr/lib64/libudsproxy.so libvirtd -d +``` + +If qtfs is configured to use the udsproxyd allowlist, the LD_PRELOAD prefix is not required: + +```bash +virtlogd -d +libvirtd -d +``` + +To check whether the allowlist is configured, run the following command in another terminal that is not in the chroot environment: + +```bash +qtcfg -z +``` + +Check whether the allowlist contains **/var/lib/libvirt**. + +### 3.5 VM Startup + +After the service is deployed, you can manage the VM life cycle from the DPU. + +#### 3.5.1 Defining the VM + +(a) Place the VM boot image in a directory on the HOST, for example: + +```bash +/home/VMs/Domain_name +``` + +(b) Use qtfs to mount the directory to the DPU. + +```bash +mount -t qtfs /home/VMs /home/VMs +``` + +(c) In the XML file, **/home/VMs/Domain_name** is used as the boot image. In this way, the same image file is presented to the DPU and HOST (**Domain_name** is the VM **domain**). + +(d) Check whether **\** in the XML file points to the jumper script. + +(e) Define the VM. + +```bash +virsh define xxx.xml +``` + +#### 3.5.2 Starting the VM + +```bash +virsh start domain +``` + +# 4 Environment Reset + +Some libvirt directories are shared between the DPU and the HOST. Therefore, you need to unmount these directories before uninstalling the environment. Generally, stop the libvirtd and virtlogd processes and run the **virt_umount.sh** script. If a VM is running on the HOST, stop the VM before unmounting the directories. + +## 5 Common Errors + +1. libvirt compilation failure: Check whether the dependency packages are installed. If an external directory or HOST directory is mounted to the chroot environment, the compilation may fail. In this case, unmount the directory first. + +2. qtfs mounting failure: The engine process on the server is not started or the firewall is not disabled. As a result, the qtfs connection fails. + +3. VM definition failure: Check whether the emulator in the XML file points to the jumper script, whether the VM image has been mounted to the DPU through qtfs, and whether the path is the same as that on the HOST. + +4. VM startup failure: Check whether the libvirtd and virtlogd services are started, whether the rexec service is started, whether the jumper process is started, and whether an error is reported when qemu-kvm is started. diff --git a/docs/en/dpu_offload/offload_deployment_guide.md b/docs/en/dpu_offload/offload_deployment_guide.md new file mode 100644 index 0000000..f566958 --- /dev/null +++ b/docs/en/dpu_offload/offload_deployment_guide.md @@ -0,0 +1,167 @@ +# Imperceptible Container Management Plane Offload Deployment Guide + +> [!NOTE]NOTE +> +> In this user guide, modifications are performed to the container management plane components and the rexec tool of a specific version. You can modify other versions based on the actual execution environment. The patch provided in this document is for verification only and is not for commercial use. +> [!NOTE]NOTE +> +> The communication between shared file systems is implemented through the network. You can perform a simulated offload using two physical machines or VMs connected through the network. +> +> Before the verification, you are advised to set up a Kubernetes cluster and container running environment that can be used properly and offload the management plane process of a single node. You can use a physical machine or VM that is connected to the network as an emulated DPU. + +## Introduction + +Container management plane, that is, management tools of containers such as Kubernetes, dockerd, containerd, and isulad. Container management plane offload is to offload the container management plane from the host where the container is located to another host, that is, the DPU, a set of hardware that has an independent running environment. + +By mounting directories related to container running on the host to the DPU through qtfs, the container management plane tool running on the DPU can access these directories and prepare the running environment for the containers running on the host. To remotely mount the special file systems such as proc and sys, a dedicated rootfs is created as the running environment of Kubernetes and dockerd (referred to as **/another_rootfs**). + +In addition, rexec is used to start and delete containers so that the container management plane and containers can run on two different hosts for remote container management. + +## Related Component Patches + +### rexec + +rexec is a remote execution tool written in the Go language based on the [rexec](https://github.com/docker/libchan/tree/master/examples/rexec) example tool of Docker/libchan. rexec is used to remotely invoke binary files. For ease of use, capabilities such as transferring environment variables and monitoring the exit of original processes are added to rexec. + +To use the rexec tool, run the `CMD_NET_ADDR=tcp://0.0.0.0: rexec_server` command on the server to start the rexec service process, and then run the `CMD_NET_ADDR=tcp://: rexec [command]` on the client`. This instructs rexec_server to execute the command. + +### dockerd + +The changes to dockerd are based on version 18.09. + +In containerd, the part that invokes libnetwork-setkey through hook is commented out. This does not affect container startup. In addition, to ensure the normal use of `docker load`, an error in the `mount` function in **mounter_linux.go** is commented out. + +In the running environment of the container management plane, **/proc** is mounted to the proc file system on the server, and the local proc file system is mounted to **/local_proc**. In dockerd and containerd, **/proc** is changed to **/local_proc** for accessing **/proc/self/xxx**, **/proc/getpid()/xxx**, or related file systems. + +### containerd + +The changes to containerd are based on containerd-1.2-rc.1. + +When obtaining mounting information, **/proc/self/mountinfo** can obtain only the local mounting information of dockerd but cannot obtain that on the server. Therefore, **/proc/self/mountinfo** is changed to **/proc/1/mountinfo** to obtain the mounting information on the server by obtaining the mounting information of process 1 on the server. + +In containerd-shim, the Unix socket that communicates with containerd is changed to TCP. containerd obtains the IP address of the running environment of containerd-shim through the **SHIM_HOST** environment variable, that is, the IP address of the server. The has value of shim is used to generate a port number, which is used as the communication port to start containerd-shim. + +In addition, the original method of sending signals to containerd-shim is changed to the method of remotely invoking the `kill` command to send signals to shim, ensuring that Docker can correctly kill containers. + +### Kubernetes + +kubelet is not modified. The container QoS manager may fail to be configured for the first time. This error does not affect the subsequent pod startup process. + +## Container Management Plane Offload Operation Guide + +Start rexec_server on both the server and client. rexec_server on the server is used to invoke rexec to stat containerd-shim. rexec_server on the client is used to execute invoking of dockerd and containerd by containerd-shim. + +### Server + +Create a folder required by the container management plane, insert **qtfs_server.ko**, and start the engine process. + +In addition, you need to create the rexec script **/usr/bin/dockerd** on the server. + +``` shell +#!/bin/bash +CMD_NET_ADDR=tcp://: rexec /usr/bin/dockerd $* +``` + +### Client + +Prepare a rootfs as the running environment of dockerd and containerd. Use the following script to mount the server directories required by dockerd and containerd to the client. Ensure that the remote directories mounted in the script exist on both the server and client. + +``` shell +#!/bin/bash +mkdir -p /another_rootfs/var/run/docker/containerd +iptables -t nat -N DOCKER +echo "---------insmod qtfs ko----------" +insmod /YOUR/QTFS/PATH/qtfs.ko qtfs_server_ip= qtfs_log_level=INFO + +# The proc file system in the chroot environment is replaced by the proc shared file system of the DPU. The actual proc file system of the local host needs to be mounted to **/local_proc**. +mount -t proc proc /another_rootfs/local_proc/ + +# Bind the chroot internal environment to the external environment to facilitate configuration and running. +mount --bind /var/run/ /another_rootfs/var/run/ +mount --bind /var/lib/ /another_rootfs/var/lib/ +mount --bind /etc /another_rootfs/etc + +mkdir -p /another_rootfs/var/lib/isulad + +# Create and mount the dev, sys, and cgroup file systems in the chroot environment. +mount -t devtmpfs devtmpfs /another_rootfs/dev/ +mount -t sysfs sysfs /another_rootfs/sys +mkdir -p /another_rootfs/sys/fs/cgroup +mount -t tmpfs tmpfs /another_rootfs/sys/fs/cgroup +list="perf_event freezer files net_cls,net_prio hugetlb pids rdma cpu,cpuacct memory devices blkio cpuset" +for i in $list +do + echo $i + mkdir -p /another_rootfs/sys/fs/cgroup/$i + mount -t cgroup cgroup -o rw,nosuid,nodev,noexec,relatime,$i /another_rootfs/sys/fs/cgroup/$i +done + +## common system dir +mount -t qtfs -o proc /proc /another_rootfs/proc +echo "proc" +mount -t qtfs /sys /another_rootfs/sys +echo "cgroup" + +# Mount the shared directory required by the container management plane. +mount -t qtfs /var/lib/docker/containers /another_rootfs/var/lib/docker/containers +mount -t qtfs /var/lib/docker/containerd /another_rootfs/var/lib/docker/containerd +mount -t qtfs /var/lib/docker/overlay2 /another_rootfs/var/lib/docker/overlay2 +mount -t qtfs /var/lib/docker/image /another_rootfs/var/lib/docker/image +mount -t qtfs /var/lib/docker/tmp /another_rootfs/var/lib/docker/tmp +mkdir -p /another_rootfs/run/containerd/io.containerd.runtime.v1.linux/ +mount -t qtfs /run/containerd/io.containerd.runtime.v1.linux/ /another_rootfs/run/containerd/io.containerd.runtime.v1.linux/ +mkdir -p /another_rootfs/var/run/docker/containerd +mount -t qtfs /var/run/docker/containerd /another_rootfs/var/run/docker/containerd +mount -t qtfs /var/lib/kubelet/pods /another_rootfs/var/lib/kubelet/pods +``` + +In**/another_rootfs**, create the following script to support cross-host operations: + +* /another_rootfs/usr/local/bin/containerd-shim + +``` shell +#!/bin/bash +CMD_NET_ADDR=tcp://: /usr/bin/rexec /usr/bin/containerd-shim $* +``` + +* /another_rootfs/usr/local/bin/remote_kill + +``` shell +#!/bin/bash +CMD_NET_ADDR=tcp://: /usr/bin/rexec /usr/bin/kill $* +``` + +* /another_rootfs/usr/sbin/modprobe + +``` shell +#!/bin/bash +CMD_NET_ADDR=tcp://: /usr/bin/rexec /usr/sbin/modprobe $* +``` + +After changing the root directories of dockerd and containerd to the required rootfs, run the following command to start dockerd and containerd: + +* containerd + +``` shell +#!/bin/bash +SHIM_HOST= containerd --config /var/run/docker/containerd/containerd.toml --address /var/run/containerd/containerd.sock +``` + +* dockerd + +``` shell +#!/bin/bash +SHIM_HOST=CMD_NET_ADDR=tcp://: /usr/bin/dockerd --containerd /var/run/containerd/containerd.sock +``` + +* kubelet + +Use the original parameters to start kubelet in the chroot environment. + +Because **/var/run/** is bound to **/another_rootfs/var/run/**, you can use Docker to access the **docker.sock** interface for container management in the regular rootfs. + +The container management plane is offloaded to the DPU. You can run `docker` commands to create and delete containers, or use `kubectl` on the current node to schedule and destroy pods. The actual container service process runs on the host. + +> [!NOTE]NOTE +> +> This guide describes only the container management plane offload. The offload of container network and data volumes requires additional offload capabilities, which are not included. You can perform cross-node startup of containers that are not configured with network and storage by referring to this guide. diff --git a/docs/en/dpu_offload/overview.md b/docs/en/dpu_offload/overview.md new file mode 100644 index 0000000..53ef828 --- /dev/null +++ b/docs/en/dpu_offload/overview.md @@ -0,0 +1,11 @@ +# Imperceptible DPU Offload User Guide + +This document describes the container management plane DPU offload function of openEuler, as well as how to install and deploy it. Through the unified abstraction layer provided by the OS, this function masks the differences in how the container management plane accesses resources across hosts. This makes it possible to offload services from the container management plane to the DPU. + +This document is intended for community developers, open source enthusiasts, and partners who use the openEuler OS and want to learn and use the OS kernel and containers. Users must: + +- Know basic Linux operations. + +- Be familiar with the fundamental mechanisms of the Linux kernel file system. + +- Understand Kubernetes and Docker, as well as how to deploy and use them. diff --git a/docs/en/dpu_offload/qtfs_architecture_and_usage.md b/docs/en/dpu_offload/qtfs_architecture_and_usage.md new file mode 100644 index 0000000..7fe0544 --- /dev/null +++ b/docs/en/dpu_offload/qtfs_architecture_and_usage.md @@ -0,0 +1,77 @@ +# qtfs Shared File System Architecture and Usage + +## Introduction + +qtfs is a shared file system project. It can be deployed on either a host-DPU hardware architecture or on two hosts. qtfs works in client-server mode, allowing the client to access specified file systems on the server in the same way that local files are accessed. + +qtfs provides the following features: + ++ Mount point propagation + ++ Sharing of special file systems such as proc, sys, and cgroup + ++ Shared read and write of remote files + ++ Remote mounting of server file systems on the client + ++ Customized processing of special files + ++ Remote FIFO, Unix sockets, and epoll that allow the client and server to access the files as if they were like local + ++ Bottom-layer host-DPU communication over the PCIe protocol, outperforming the network + ++ Kernel module development, preventing intrusive modification to the kernel + +## Software Architecture + +![qtfs-arch](./figures/qtfs-arch.png) + +## Installation + +Perform operations in the following qtfs-related directories: + ++ **qtfs**: code of the client kernel module. Compile the client **.ko** file in this directory. + ++ **qtfs_server**: code of the server kernel module. Compile the server **.ko** files and related programs in this directory. + ++ **qtinfo**: diagnosis tool that is used to check the status of file systems and change the log level. + ++ **demo**, **test**, and **doc**: demo programs, test programs, and project documents. + ++ Root directory: code of common modules used by the client and server. + +Configure the kernel compilation environment on two servers (or VMs). + +1. The kernel version must be 5.10 or later. +2. Install the kernel development package by running `yum install kernel-devel`. +3. Assume that the host IP address is 192.168.10.10 and the DPU IP address is 192.168.10.11. + +Install the qtfs server. + +```bash + 1. cd qtfs_server + 2. make clean && make + 3. insmod qtfs_server.ko qtfs_server_ip=192.168.10.10 qtfs_server_port=12345 qtfs_log_level=WARN + 4. nohup ./engine 16 1 192.168.10.10 12121 192.168.10.11 12121 2>&1 & +``` + +Install the qtfs client. + +```bash + 1. cd qtfs + 2. make clean && make + 3. insmod qtfs.ko qtfs_server_ip=192.168.10.10 qtfs_server_port=12345 qtfs_log_level=WARN + 4. cd ../ipc/ + 5. make clean && make && make install + 6. nohup udsproxyd 1 192.168.10.11 12121 192.168.10.10 12121 2>&1 & +``` + +## Usage + +After the installation is complete, mount the server file system to the client. For example: + +```bash + mount -t qtfs / /root/mnt/ +``` + +The file system is visible to the client. Access **/root/mnt** on the client to view and operate files on the server. diff --git a/docs/en/dpu_offload/scripts/qemu-kvm b/docs/en/dpu_offload/scripts/qemu-kvm new file mode 100644 index 0000000..e869371 --- /dev/null +++ b/docs/en/dpu_offload/scripts/qemu-kvm @@ -0,0 +1,3 @@ +#!/bin/bash + +exec /usr/bin/rexec /usr/bin/qemu-kvm $* diff --git a/docs/en/dpu_offload/scripts/virt_start.sh b/docs/en/dpu_offload/scripts/virt_start.sh new file mode 100644 index 0000000..06ca194 --- /dev/null +++ b/docs/en/dpu_offload/scripts/virt_start.sh @@ -0,0 +1,48 @@ +#!/bin/bash +insmod ./qtfs.ko qtfs_server_ip=192.168.10.11 qtfs_log_level=NONE + +systemctl stop libvirtd + +if [ ! -d "/root/new_root/local_proc" ]; then + mkdir -p /root/new_root/local_proc +fi +if [ ! -d "/root/new_root/local" ]; then + mkdir -p /root/new_root/local +fi +mount -t proc proc /root/new_root/local_proc/ +mount -t proc proc /root/new_root/local/proc +mount -t sysfs sysfs /root/new_root/local/sys +mount --bind /var/run/ /root/new_root/var/run/ +mount --bind /var/lib/ /root/new_root/var/lib/ +mount --bind /var/cache/ /root/new_root/var/cache +mount --bind /etc /root/new_root/etc + +mkdir -p /root/new_root/home/VMs/ +mount -t qtfs /home/VMs/ /root/new_root/home/VMs/ + +mount -t qtfs /var/lib/libvirt /root/new_root/var/lib/libvirt + +mount -t devtmpfs devtmpfs /root/new_root/dev/ +mount -t hugetlbfs hugetlbfs /root/new_root/dev/hugepages/ +mount -t mqueue mqueue /root/new_root/dev/mqueue/ +mount -t tmpfs tmpfs /root/new_root/dev/shm + +mount -t sysfs sysfs /root/new_root/sys +mkdir -p /root/new_root/sys/fs/cgroup +mount -t tmpfs tmpfs /root/new_root/sys/fs/cgroup +list="perf_event freezer files net_cls,net_prio hugetlb pids rdma cpu,cpuacct memory devices blkio cpuset" +for i in $list +do + echo $i + mkdir -p /root/new_root/sys/fs/cgroup/$i + mount -t cgroup cgroup -o rw,nosuid,nodev,noexec,relatime,$i /root/new_root/sys/fs/cgroup/$i +done + +## common system dir +mount -t qtfs -o proc /proc /root/new_root/proc +echo "proc" + +mount -t qtfs /sys /root/new_root/sys +echo "cgroup" +mount -t qtfs /dev/pts /root/new_root/dev/pts +mount -t qtfs /dev/vfio /root/new_root/dev/vfio diff --git a/docs/en/dpu_offload/scripts/virt_umount.sh b/docs/en/dpu_offload/scripts/virt_umount.sh new file mode 100644 index 0000000..4adddec --- /dev/null +++ b/docs/en/dpu_offload/scripts/virt_umount.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +umount /root/new_root/dev/hugepages +umount /root/new_root/etc +umount /root/new_root/home/VMs +umount /root/new_root/local_proc +umount /root/new_root/local/proc +umount /root/new_root/var/lib/libvirt +umount /root/new_root/var/lib +umount /root/new_root/* +umount /root/new_root/dev/pts +umount /root/new_root/dev/mqueue +umount /root/new_root/dev/shm +umount /root/new_root/dev/vfio +umount /root/new_root/dev +rmmod qtfs + +umount /root/new_root/sys/fs/cgroup/* +umount /root/new_root/sys/fs/cgroup +umount /root/new_root/sys diff --git a/docs/en/dpu_os/_toc.yaml b/docs/en/dpu_os/_toc.yaml new file mode 100644 index 0000000..040400f --- /dev/null +++ b/docs/en/dpu_os/_toc.yaml @@ -0,0 +1,11 @@ +label: DPU_OS +isManual: true +href: ./overview.md +description: This guide outlines the process of creating a DPU_OS image through openEuler OS customization, including deployment and validation procedures. +sections: + - label: DPU_OS Background and Requirements + href: ./dpu_os_background_and_requirements.md + - label: DPU_OS Tailoring Guide + href: ./dpu_os_tailoring_guide.md + - label: Verification and Deployment + href: ./verification_and_deployment.md diff --git a/docs/en/dpu_os/dpu_os_background_and_requirements.md b/docs/en/dpu_os/dpu_os_background_and_requirements.md new file mode 100644 index 0000000..6c2e1aa --- /dev/null +++ b/docs/en/dpu_os/dpu_os_background_and_requirements.md @@ -0,0 +1,67 @@ +# DPU-OS Background and Requirements + +## Overview + +In data center and cloud environments, Moore's Law has reached its limits, leading to a slowdown in the growth of general-purpose CPU computing power. At the same time, network I/O speeds and performance continue to rise, creating a growing disparity between the two. This gap highlights the inability of current general-purpose processors to meet the demands of network, disk, and other I/O processing. In traditional data centers, a significant portion of general-purpose CPU resources is consumed by I/O and management tasks, a phenomenon known as the "Datacenter Tax." AWS estimates that this tax can consume over 30% of a data center's computing power, and in some cases, even more. + +The DPU was introduced to address this issue by offloading management, network, storage, and security tasks from the host CPU to dedicated processor chips. This offloading accelerates processing, reduces costs, and improves efficiency. Leading cloud providers like AWS, Alibaba Cloud, and Huawei Cloud have developed custom chips to handle these offloaded tasks, ensuring that 100% of data center computing resources are available for customer use. + +The DPU market is experiencing rapid growth, driven by strong demand from cloud providers and big data applications. Numerous Chinese DPU startups have also entered the market with innovative products. This growth presents challenges for cloud and big data providers, who must integrate diverse DPU products, and for DPU manufacturers, who must adapt device drivers to customer-specified operating systems. openEuler, a leading open-source operating system in China, addresses these challenges by offering DPU-OS, a solution built on openEuler that bridges the gap between DPU manufacturers and customers. Furthermore, since DPUs rely on their OS to support service acceleration, DPU-OS requires performance optimization. By leveraging openEuler, DPU-related acceleration capabilities can be embedded into DPU-OS, fostering a robust DPU software ecosystem. + +## DPU-OS Requirements Analysis and Design + +### Current State of DPUs and OS Requirements + +DPUs exhibit several key characteristics and challenges: + +- Limited general-purpose processing resources + + DPUs are in the early stages of development, with hardware continuously evolving. Power constraints result in modest hardware specifications. Mainstream DPUs typically feature 8 to 24 CPU cores with limited single-core performance. Memory capacity ranges from 16 to 32GB, and local storage varies from tens to hundreds of gigabytes. The operating system running on DPUs must accommodate these constraints. + +- Varied DPU-OS installation methods + + The diversity of DPU manufacturers and products has led to multiple installation and deployment methods. These include PXE network installation, USB installation, and custom methods such as host-delivered installation images. + +- High performance requirements + + DPU application scenarios demand high performance. Compared to general-purpose server operating systems, DPU-OS may require specific kernel features or functional components. Examples include vDPA for device passthrough and live migration, vendor-specific driver support, seamless DPU process offloading, customized user-space data plane acceleration tools like DPDK/SPDK/OVS, and DPU management and monitoring tools. + +Based on these characteristics, the following requirements for DPU-OS are proposed: + +- Ultra-lightweight DPU-OS installation package + + Trim the openEuler system image to eliminate unnecessary packages and optimize system services to reduce resource overhead. + +- Customization support and tools + + Provide customization configurations and tools to enable customers or DPU manufacturers to tailor the system. openEuler offers an ISO reference implementation. + +- Customized kernel and system for peak performance + + Customize the kernel and drivers to deliver competitive features for DPUs. Enable hardware acceleration through tailored components and optimize system configurations for superior performance. Include DPU-related management and control tools for unified administration. + +### DPU-OS Design + +**Figure 1** Overall Design of DPU-OS + +![dpuos-arch](./figures/dpuos-arch.png) + +As illustrated in Figure 1, DPU-OS is structured into five layers: + +- **Kernel layer**: Customize the kernel configuration to remove non-essential features and modules, creating a lightweight kernel. Enable specific kernel features to deliver high-performance DPU capabilities. + +- **Driver layer**: Trim and customize openEuler native drivers, selecting the minimal required set. Integrate DPU vendor-specific drivers to natively support certain DPU hardware products. + +- **System configuration layer**: Optimize system settings through sysctl and proc configurations to ensure peak performance for DPU-related services. + +- **Peripheral package layer**: Customize and trim openEuler peripheral packages, selecting the minimal set. Provide a suite of DPU-related custom tools. + +- **System service layer**: Streamline native system service startup items to eliminate unnecessary services, minimizing runtime overhead. + +This five-layer design achieves the goal of a lightweight, high-performance DPU-OS. While this is a long-term design heavily reliant on the DPU software and hardware ecosystem, the current phase focuses on trimming using openEuler's imageTailor tool. + +For detailed steps on DPU-OS trimming, refer to the [DPU-OS Tailoring Guide](./dpu-os-tailoring-guide.md). For verification and deployment, consult the [DPU-OS Deployment and Verification Guide](./verification-and-deployment.md). + +> [!NOTE]NOTE +> +> Currently, DPU-OS leverages openEuler's existing kernel and peripheral packages, trimmed using the imageTailor tool to produce a lightweight OS installation image. Future development will integrate additional kernel and peripheral package features based on specific needs. diff --git a/docs/en/dpu_os/dpu_os_tailoring_guide.md b/docs/en/dpu_os/dpu_os_tailoring_guide.md new file mode 100644 index 0000000..489ec52 --- /dev/null +++ b/docs/en/dpu_os/dpu_os_tailoring_guide.md @@ -0,0 +1,65 @@ +# DPU-OS Tailoring Guide + +This document explains how to use imageTailor to trim the DPU-OS installation image using configuration files from the [dpu-utilities repository](https://gitee.com/openeuler/dpu-utilities/tree/master/dpuos). Follow these steps: + +## Prepare imageTailor and Required RPM Packages + +Install the imageTailor tool by referring to the [imageTailor User Guide](https://docs.openeuler.org/zh/docs/22.03_LTS/docs/TailorCustom/imageTailor%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97.html) and prepare the necessary RPM packages for tailoring. + +You can use the openEuler installation image as the RPM source. While **openEuler-22.03-LTS-everything-debug-aarch64-dvd.iso** contains a complete set of RPMs, it is large. Alternatively, use the RPMs from **openEuler-22.03-LTS-aarch64-dvd.iso** along with the install-scripts.noarch package. + +Obtain the `install-scripts.noarch` package from the everything repository or download it using yum: + +```bash +yum install -y --downloadonly --downloaddir=./ install-scripts +``` + +## Copy DPUOS Configuration Files + +The imageTailor tool is installed in **/opt/imageTailor** by default. Copy the DPU-OS configuration files to the appropriate paths, selecting the correct architecture directory. The DPU-OS tailoring configuration repository supports x86_64 and aarch64 architectures. + +```bash +cp -rf custom/cfg_dpuos /opt/imageTailor/custom +cp -rf kiwi/minios/cfg_dpuos /opt/imageTailor/kiwi/minios/cfg_dpuos +``` + +## Modify Other Configuration Files + +- Add a line for `dpuos` configuration in **kiwi/eulerkiwi/product.conf**: + +```bash +dpuos PANGEA EMBEDDED DISK GRUB2 install_mode=install install_media=CD install_repo=CD selinux=0 +``` + +- Add a line for `dpuos` configuration in **kiwi/eulerkiwi/minios.conf**: + +```bash +dpuos kiwi/minios/cfg_dpuos yes +``` + +- Add a line for `dpuos` configuration in **repos/RepositoryRule.conf**: + +```bash +dpuos 1 rpm-dir euler_base +``` + +## Set Passwords + +Navigate to **/opt/imageTailor** and update the passwords in the following files: + +- **custom/cfg_dpuos/usr_file/etc/default/grub** + +- **custom/cfg_dpuos/rpm.conf** + +- **kiwi/minios/cfg_dpuos/rpm.conf** + +For password generation and modification, refer to the openEuler imageTailor manual section on [Configuring Initial Passwords](../../../tools/community_tools/image_custom/image_tailor/imagetailor_user_guide.md#configuring-initial-passwords). + +## Execute the Tailoring Command + +Run the following command to perform the tailoring. The resulting ISO will be saved in **/opt/imageTailor/result**: + +```bash +cd /opt/imageTailor +./mkdliso -p dpuos -c custom/cfg_dpuos --sec --minios force +``` diff --git a/docs/en/dpu_os/figures/dpuos-arch.png b/docs/en/dpu_os/figures/dpuos-arch.png new file mode 100644 index 0000000000000000000000000000000000000000..453370ab07858a13a6c40f8d22e3f608e9ec6b4c GIT binary patch literal 63987 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

yoraFEQ;P z(>HUJV>H6P>;_@)Bc|1c3L?MNlzhj=Hc19mYl)drU$1$obUW7AePuuG^b`_uknyYC z8bj>wQ?^BMBo9`R5^k6Xx3$Gi8o~cQDY8&d3p3rVFX^DIewcD~5To*DIw_8m2d9&* z%!RqsvO8e$S~GaSHO3dll2_M1I&(LM6 z;pduC3;Kf;1WZ9wDf*w|N7(B=9Z5G4>|NZ{d-B%4cyVKTx@?A~C~4FYqdl-p<^Rfs zGDdLZF1$jEjq)G#<|^I{{NYesIDbB}rR$LH@jl{i(gb>ey(w37A%(4#F3;0vi8^#AuphJf$#=>BC|PciGW6l26-=D*Y>_Eep(rgXA7V>2D?Ynw zxSGhX4|CtCC*vOzMu1l-@)a{dm;RKhBR()^fb|gYO@eV(ciDpRgi?6pscT$u(nf+! z$jGJkGbM37^We==T}jr$*k=d+VMcV9ZoO7b)#(}*5(^vqBY0WzXS2%AGUk)T>HI)f zgQ^dw8~&a%tB5#`BzzZUF_|d+u6j^FBPhEdL(IVf;tt zIUSK~vT^hGZ9&;dHZIf$8fAV42JlPIV?d!1JIqv0oxw1&px&?Ckv4#*rz=lS3SkR2 zz5H5SrplqbLq}I>DqNCTqLTcB*&p4H&WPG>$2b|W&|c$?$U+Ka9ebLuZ?3a~7_uXh zzeP9W__$Mo9q&CvYYcB^Cj;ylNeh9jZtOd%8pFbWm^fjG_C_eOKOxS$~*g>t7ViupTb_+ zeb5zrwx<}cO*~t;AJDh1*g&Wu&Sc(y{XV@)vrIEB)?kqV^~yYCjllGH&lY7}sU)XB z^P*Gyr*97asE}3S^{P8`H-(Hs{4YhLA2OR1A4?~~m@kxEkrepI+ea6OmE9+u#gOPtbEGUjF836UkLd| zUwn|NCa<2sq}W)vRybw6uK+Y2c+ivL=h#hK6leA6hK*ZyXW>dNc~p*?DdEN%0$*y1 z6e%aXRQpTt-6PmX(QBTULHRwyyGQO;35%GUfu^v>s)X?9k4I`Iv8f9L{ry!EwA@@j zjt@Wve69E&hLn-)vvw(}@v;t4GDNa!9V5mp7<-bk;LKoi>ulQsIhrcLA(Orv$FI7)dC>7t^lp>!x(NVKx9P83Zz$p zn`ccNJEln{cDy%$eak^XPn)rqM>=d!`*!auVE7tNVFLv6XSokoQ{~$1RCth$VWz)u zU?1;By+qFvQ_T1T)BmkgC^NlVMLciU9_m}45SC7xPFpM&>!?~G3$sp9llVODS6`lQ z+)f%y0P3m59EuIlp@2TXP(lD-$+`sGHagDhP_$Q_BzKWskDDjUoJWAI;AeOnphnJ? zs@qM;r-@#4Mpj?0~4 zp~oNw+bO_Q?Ue5P zp%vi4Xv%*Iy1T?#n3=&L_9!Hw();92xhaVXeF=D_C>ItMh=c+OZ(i*^r1oV6p>QW< zkGs(Y&f;Ih-f(Y)PJUqxb$A2YI9mqs+dSgg<~TA&+Q%!Qse}mlQthnKWHS?qfVU+H>nE_FFL^M*4u&gVtB%2FSxaP z8yKI$tkG}c3{w~WjtRn(1@LT*^1o;mJJ8BO5X0)Vz*Q4=biI2f{*ka7*55ZZ%EIe! zwSkTAy@qAt?EGAJ>4Rw;{uZAnxC8o3LV4V9590hS60ct(t@;H(Y>xu0qSPq~G4bQ+ zv=1hgKN#Y1+gM1Eu?2MskJE`9|5GkRNlDwpB-Gz3V)=OukXR2U@puV592I zRqDSwLm>RJvx$*dd&&P@WeEsRjJtL4aBDQD6_;JWbGJo`1=ts(K?a6~3KyG^{Fv$) z-T(e@*eeCd<8Xj39~cYZzBdmTQ2r%> zoRfgokRWe9+b!I2npbjWWpX&^E&lfnz*9OJb~exYKX1eVZ$xf58XC$3hF5<7-UJtZ zyf7EbLQ6^Mn10uLefTIXg68W>jy~(bX z71i?hl&Iw*w`dMGj|oDMp*zfx(@aU{{!w%kkUTCl`IfhND1Le0KphCAvGzHc{9Zc$ zGMusr1+V<(@_~VFE+?>D9B4M2OSU7U!ync@o-b6HDo_ipBplSS|Cc0d95WP4Hq#fm zI~bY@Xvn*CXwUz#1Qmb46`+!8$FiH7KhjVCSW4^_E?PS&?@=cscs0_KtIhTh`a@|q z_p|lfCnkPL;{mGqdHv60es$GU|Jfr?#e!o;FIyeO|o&^?ROL}v$&;T4BrS=zK9-WPNaN*696i_tx^7txt_bm%`#`> z^S+839D{7KBX?ycy={y}Et8AhOK?&VPyivY_40)5W_QrT zpL`eZZs+zAl+b)VKy8t*F!1%HGTSf#4I6_}DKv)<{DzI22{A9m<5AF8~V+I&*Fs#|(a^R>#D>`Bzz}rQjoK!lx`{ZDo*97qd zuh5iK@|PykdwyI&7552i=YrM|G$#ydASWG@Oiq2Fh4(4)jj)bOs3ZghlS1ET%#r($ zhP|3Nyak+{IW^|1O(LNeE~?4-0E26)Rii|)LZNS{qIuP?|Iy%V@(};uydBjKq0UY} zCmg#O^!JvI7c5i1EZB#;@V3?HE*}LAT%xSY?)1V!YTY0ac5@>(RC=7)5bd z@Kwev!hrnsf4)(K_+KtdVslo-&kvOa%Y2xJx5LnczOP?BfyqwG-%2#uRZ(_=(v%=V z+YB|}l?oQ10F^f$6a#jtSFf_zH(VmZbC9H@r2H*lHb&7Ep``j>?XyE$MAg=b3Ajv1 zegt)=kb^d?K~6f zjZX*~#m4E~-JKC}3|QTlQq6iRzzA#D6ON+Zt?^a`P>35wg?PE!xuC>U`hZm;!dq8l zBUUP@y!5oxDr{Chc7Ln^!sD5eL&uv(mgdeQJDc05{kuR9hg)MiJ4<8Fd*QN$lp$;9 zM)fY?+H}1^q|{v+WBkQDN~&;>xWG6F-(?F$I*(Sj7URnvOo*&<2x zsVpYnc)<#T50E<|*bKn_QOLd|)AIvo)$e4=>c3V-#l_Or<~AkiTXJSA2dMkO2h) z&jSPBc337#-A9x6!!WL?v=po33UwqeG25{9#`J zaZ+oV@~>fn<#Apy;GrFMJ=8}0XI_bSll(Ve2y1|2C=PJ8J#RC3*%Fb268n_HD66RG z=dtK;*<{87>Xf$=Y*%-8GoV(#IS1?=hi=>tiKyd$Vn55O8z(WkQN! z*b)JEX4>YAeIwXp`?k6)VHwKL0;w~uw zn|hdbJBw4B6KDJdz3t@jxz< z5*HJbJ??zG=LeKVMC?K^uh%}T^xhCbRglgw9sz}n%GWK5BqcSqV7a5D08ISRU*c`G zAe-2i>-yGocFTqDAN{mw=4&VX`{WJ~!h)bhEhSP|+1UYans_lW!$s^ka!s~~HzDM* z4xCpTteqSGXTX@+v95bcFlRwvVPfRH$7(M zM$3ST7>Ty_1>l1Li}N5**|a`4-$7cVBrH?>+7ZHJxNhdaGbll;bv)}S9Lu)I)!(yU7Frc*%j<2*Ty;MlHtzxOUox^eVLa z$>ze6uCYPTsFn(J6a#9#n~YzZ)w`|sRk8*bNF35K3Lh|HK*sjwPR)<;HisR`_<+;! zmhcj|0^?X_B#9;=K=@)ZNcICR49E*0P5=gjpMbGug0_%vU(3{&ryG928B{pb`C|*& zUK`JcKmUpG&S|R;WfnG{6aYsruPBxOAzn4w`vHcK<3mDX^LY=BIDx#j_HnX>{s~L( zESVp_D>zkG<(gc@>0}@seEjA~dMM_**ViZR zRXqlM{E=a;kN7uy-90fSVBvl_@e`Fd2EK{(3b~2KECNA~-eBx!#5}xTXAE6dHLaVs zS7GlxN?OOTjE#*W`JXuv>BaD8U#;{ldHl72=lty5tMV)~94Ouv1p5g1Ksnz~laN5N zzZ${;-@~f=;An)q=67FD6`W9QSis%qME1O^2?<>HvIYhuYc-B{-cYTu zfyR{Pd_OoGDCfH3b6DXjeQ0_^lNaT!`+AEFYgwE`ybS^Le395Xl*9z-`&#A!A+8|{ zYFC6k*%32WCL#m|z5|1umE6V3r`?ERriO3jv5CIomRJhz*MNw2qM9|yxDjPiDlW^^ zgw9yo9xRI;`!p-3b&wnB8srnO(c$N%ua5BB;v^yXB!I$8&Jib`9K0U&7BGGGL=v>x z?@s_uOpAq@{Sb-_8*@A6fXvbn>;l+H<2W{vymD#=j=0_7Z)Qs=C}`}AF4{6mC1ZLK zd~T+Whh9{!kM7c;!*ah<>Y51@VC6KV>YhX@U@`sKjz>a6LM1%&h@FjM)H~dtjM=(P z0nRHnES%ZW#;q1`>9*YMq<(O_?y4cU{|)di4sNj)00a}52fhCP8f2!Ne+@&^Us#Dl zN^(Q3sI@dTHC0psgx^@j$W@UNhJXp?0oRpOxx&`-rIUU4xg|J`UfsqO{%$uX2uMf_ z^z=QMh_Hk~Fzm4gmqDbRK>UaASL9Iq8=?x8d$Rk-Ln^*7JH_X{a8HSLzUk!k7(z7^ zR1jGgmVq9osrJog0o0?>*}4aeoyTmfE)0CYOfehZ&;#+*w$=FiB0agW?oDcOW*7l` z6Kzp0-^;W7F74Og`Emh(CUJM?t>nL&QbIKM1iaRi;oV+9l{d&Z`yYuVT5da>nE}U7WLRQ1nxRA_%1_|dD&uTSO3FbMW|NtC@FU;j zStoE6EKK3eu7H5$FG+nDf)2$qE-tS5`FR+$suBTdm#m??%iVJd1LJcQdDL-? zvy2sX9(OIB--ET?vD|@93CLyKdB3Z*JXRflqz6ArlZEJ?i{Rz-kPB&uORqnMHU?L$utr-2CO!gasZ6t8$Njwf78EWZ|JIRLyt2A?-A_22@+STc zh=O2592~PAGV;u@edLV5&C2j7z%QOa_t9O1=)!Hy2f9)2*LI1Wr?{pKaE&d4+X2oL zzVdu5mZ|oZPp==0)cebuQ&O0^gTq56yTG;nCS=m#J0e14z9WM|jfSsz&ch%0c5j5n z{VTh)_qThbwFeW`c#KmWa|4#*NrpP-HP?l=3W|r|!baYyt2Gg28CFu&WY2N&fBYbw zNQ}in|A?nur`HYuePUY={BW#e79TaU7 zHSp=fg?#QX@ccg+ZR{r1AKr!q+(NZnI~K@Jf4vk_yo&Ols_n*LbBMsRPqdC!h8rGE z(hp!JWN0bI*0!s@vfwzH6>W9W^#HCWeu2^ple_A^0sHnC!i~|>hp&Kcw zk&tfb5Tv`i1f)y45hMiZl13EikQSu7yBp~kKyX07Z_oWMYyP0t%sywGv)_82-$CK) z$nR1tYumP%NDUmx8k3%tpJQ;LI@(*?MKt$c|7AFkf(!g7@~lJ zuh(6FN34$#GOy?r$;XyP4J5`N`5h{ocR$9&U@8-}d?L{s5_RS|`}&w_&iX@U&_@eq zSj1#dR@DmzkA=-)aO8-MW7i&RD3(3TbVB>h6~2zykk>Zw^I)s#q-`az zHGrJ&J20|fAj`#3Jniuk_X`Bs7o~t>#}I0(<;_=!_VO8|Luj+mRlBK7I`(RC0Iy#Q z#Y|B#Mw(U=hj3pWsguS=u{xEIl_+JTxV6=|c-ms}@k5UuW%9`e-O#eUXC~YtOrQWe!OUoEMERhKl*&BT2=3Ro0xzkN-YM) zzamhMJmWniF&W6u$@;IzfUQAkh2KZ=~Ejt=A}}#cVIqSDfk^ZPk^QGD*NF zl`m5{DM^5#r59HVV0~a3|FFlb$XL$eu(ITtrNIwRf=4>%*V4Cz^R7iSiPt4+P|f_w z8kTzwM}*tQZefluuKHqA!dr*9Z|bcTwAj$I2dd?t3DeUmJIX1_|h zs!N3>3>5S*mphgnXGd?AfE*g}Kjzctz}^@a877YbTsgT+A!pCP&tfmFM2T0HS|qA2 zyXQ!Z#{#fyO$cE~$aDmc9)3w0neb1J3QIukN&E5vOR3Vtv*hT`Fl}9-ZaP}W%`;-V zW`m=xwdRtMvN4Nnu7||a7@avd$87dl&dbz^gQ>2Vh$x9s2h^NudHV0WHhNcyS3dEo z=|f;ac>~tvNt?AOkfs!*xnc{Miw-}7VAH+5xrEFvg^n|bxd_xt%96$7KNj{5`8n$#YP zqoV)5;Ey2_eb%+KJE-_ z1)X-9#uaxgQh$qs8crTe>a35v3MM>4+(&I`>TEtcBe7D}(H4{EM1(|wr9^4PUh=zp zDFp?ehz4KPzx>WK_C`^sB((;QI@c9=&VGPY&wItKzn>*s9v+VH;7NNy*IW4@Wkc@$Sv)V_$w7-q z9C;ploj6Q|<7w%nIhJd$W~A`-&3-|1(3-bC(vcl}!Abd5Mb#)R`5T+nZc`MOils(g z(bi{(I3+yu56zKn0wG>WLCr8adW|_vp^G0{JtOeGD1$7+>Lr^L%7YYAp7(j;Z{SlM z*fP@B-@kl$6|K0aZe%+!gRZwX5*0n!Tf|lc$x1de)k+j=qTQX_xlZ;_rKF`JzE;uTIv7wQQfTIr~WvI zmfbJZPY0RuUNsQ+x9W$X1|UcUG{<}qUt2|nv$f0l$JudP``cqaH0d{kMz62Y(=Xee zHJA^yxMt@G9o7^1Qo#I_F?NogOtpY-uiDx;*Vx|SSC+LwH#<8E1`K24<9U2`NsTk+ z-@&!z3~GpR6?2w364Zwr5^=uCi49DRQ1*YAJbL>2f-VM`G&D3qRl?@p(*uW8bZwZ|PJT@54b5pE_wy*|X6v}Ms1a6IVwwTNEBGqYt#FU#!-Sxsz)0cP zqD=U)pW~qT>L9U2)ApWTKzbTd@o`|0+jfj9n}skR<8=cu%HZH2EY0lxP!F^%G!JXo zKpKsQNM{#Sy9zXS>)rVIkCGU=!onWOF;$h=5o&XhU)c0~41P>ZEWqalkW8c8u)adb zF3tGL)Wnz5&O#aDIUAi^$NNQtWQ(683k6|OQ48e0Y2^)Gdefae4y*&piS;FYFD-4E zRVjwcc?wPnlPaIRsU55G4`drg{pM9h@nB-E8aG+$@$;ONe*~qT9N+}PZqnz_B63f- zBkfBb#$pR_i@d;rCWW*J<{7yd}JC_mpE zG(}+KJ|AcveZmXQAqg(eu28Rb5rtUco-t;IQ&oFCw)RUdV~2sD)Xbx6i4#s(gGW; zvX1=F$rH>s0Sgs=2N32!Jt?DG&w@5Fq3*CS%Xx#~l?wgT!8^Web?r-8soEQhNG~iy znnJ|`TbhaOx*mtEo@kp!UJ4Vxx@bNNalj?n?0TN6DEP8U_b6%CwpeZ6mSSX2jbGQs z@B`WGesQra=csDV;}0w5hZ>nAOooGxu}0s|&X)XSmnh-SGyObequcPr%o9OxlI_Vz z`Sp2m(SwkU{*4pbQe#ps-%xgl^7rb(_e9knvreqPs7+_GV!OVZ%*lw5G_S_?7#^O z1-s%nvKL4xC~iT;`z_1pFX$l?qQ9HQs3_8v3L-bwbQpY%p)x@)=^BNb=eHDO>t?O9#JMOs#8-!OZ-kVY=%c)T)8Lo?*4 zv6z80wiYrRJ}K37QcTYLOx8DKH_;RQnyVZ>PR`{SE^EOFwaxqk-&~}{y*OvJ zRd;Ovl-h{#1oXy`n1s5`W>&Ah{oSkOe7{f#Ob3R}3M37`3`cjG+bXFbP{vv>LM_|2keO{ovOoyh1H8ad1XGyQ#2pIC|5a zVtJ(I$X>CWFtKEO6ko7MTj6XM0XtiowF$lbtm8z4&UF1VE7dXZ@7XU4y_`5Yar@?< z5PIXTwJJf{j9H+*JgxkeBm|Uqqm)N_Ai4p1M|OMbmiOTw0tA3Fm(P9A>10I_sX)m zF;J6=Lje74;=v*o*cZY^^Vzo`nyJ*$iU-%pR#&}Rd`pvyB(}mD20mUr_5P-HBy||E zBMs3TZ0%)y4i!XSpu+wOnR&F=B$SQCOQH`lQBKi!ODa??wdpH#N_L4f^EVKe=G?Y- zatlw`biOg+jn1Di4{+z9Ti;hzceRF$tKUcH2zstugb{ms&K<`pdP=Wtg$vM`X=ll1 zV54~vx?_50l7&9Lp4(8{Ub9@eoqTZ;Ul*fXA$hSJodXmV`AfzYJ6wO(Wk2hlvYI(f zzbW34*=Lw}PeDa`XmIU_gX$Wx3|eO%V5Hv$+BeU;f5Y9f&}2}F%~2=*2W}tR~S>zW+PI%fVNVSC+{);PEtHn8?^^_LUWJpcuhRo;#9P zK|?JqjXBACE|m2V6bq_=W!@OoeRa2IXloXeeBQp*EsdTSbx&m1e zOAW>{}d4aWNJ-lB!}k18Y~B^lfn!d!zWzU`RD1F*cWB z%x2BFz%AU=`_J#mf)|low9lR84|^ErZxo)|=$U39$uZk_7+k-M`uN>>CDr+X3*XKZ zJ2I0v5=vRfT?0ZyX9JNdd>n#{eE+4sw8dyNitm()+_f7$)6X_94Yzm7Sj zNkpUO2pu0BBzQSaW)?8{OzUud4b)*vdhg67ripfB{iOTP=I7L1fcw-0vN>;h?n9k^ z{OU%rUq{R&njlR|PFD6~Wbkqh`G-7O&tCod;*Z*nLfh(Fo?mJjTIyV7?Yr=Y%Qjqx z$xJt;Z2m5`w5@;>kj4WaattEfWYISZgK7zwwe&_g-7Gm&p1w$*0#&)d_>t|4Pg|pt z*j*~xnzh3jd;{0Rr8SZ?InyZ_ZFENQ-fVzUN|~oaooQObI|v`>=o#e2s{5?a73(b# zXVAm=*3B>}C(5&CayW~SjLbG3XBInJujHciI!n8~HgmX>b$$YSyKZGFB2ABD*+D&} zS=uvBfy7#?px~9gPhV%z%4lYbb4SdC-1#aYGbW%#`EPWD4qW~QSdSp!7aJG*o$Wa6 zeY(O@athjW>OX+;CCMJlSJe>h7;UtOnu@E7Va{}IrI#;A)!K2_76 z;O%~+xsl5Y6y$oFuZHzC6Y7~Il-9hD1j%{$2HzQJT?!Oq6rb{)3`7}eQ}efXam{8F zDJW-a_{hxNC{|$WWqj&({rOhm*YMmCiXy{$ywSZkM3DdeQgu^midvW^D;> zoqCSOH@0DJfyks-hxA59-iqa9!sC%yDHQx3V?cox=@B&Auc)42nrd91hKc+Yc3umZKOtQIgISj^ zc9^2So}EVS4=Jk|Y8%H!G(98t2-;r<8ZLBCx0H2I)~y7lyN#(ODTy$z9OOqjdF^(J zesfx8ucgY6vq_z6LD%(pxlzAf`&VxPY5Ae?n#Iu2U8+u8%CK}{7e@F5-wBUEWHq9# z!%IYT?0A@Zx9v`>cXBS~i2~;k{ytlvksdmZk!siGD#wr)_B>zHUcf{OBT;z6S&~ET)zV z<+Y4a%&v8$We4c5g$DTV9>3j%$d>7@?p=C(jn5cRgUc7pF(8v%-VAz3M4I_mSW;3@ zBpi~rR<&I()z!k&4f{kadX$A0Js0UWoDgDOKNvHV&?C}h(h7OE@W&- zgxauksdYr!C|=YOeOKM$L*?mqD?2&=q$~mZi~Ab-i2>F;&)pHtHf3 zL;coqVYWuKZO7nCqhz7H5>~TBLP2Br+WTJvnZ0@SG>epRpBJ^>>_W$xxkXvN6;&jT zL2|ybn|v%H()FpEF8worx79K)r@Rx{s_USI%IL+CPdt_NVFp$pBvHl!yqlzdHKcsy zuIuk}6Z1NxHxt)E%Pf2hI21`1n`7@}!U%QBkN9-1@wYs zsGqu6>}OmK7F0_}v%k`D&@y_0ze_yY{ByPHk4R0GkHyi3i*G)$ZbO-Rdli(|E(Ip4 z5gD&C$iG0m4@fxD+#dV$z5<=jy*$9N%XDaCMMnrDL^g}P3&CXahMaeTZlr9I)lTu< zz!{hf;J1)`Zi|a!)ZX&ageMgPRBs=6b5?4xa2&qfYwlcCU&g{_X!PuxIJifG{uCdy$k{tO6fjr zQ)vDxl#7eoXFc>qegwOb3B!UsJQrXJsug9a{X#SpWODcE?RQUqEYLgPX*yxaUEfSc z*dmW?Zg=F}&Tu*r{NMB~PJTm2b`7T2-3-Mk88-n#JqxkT4*4P2Z_AIdc8d=*jYnB0g_J*Tik(6oOYXYr@nDE^z%jd~X zn_Us|GsgP*uUD&1JS&VVLlQD3T5K18Ua%w}fXS{JohGTSH?MXC9p>1S|5%7@0);~= zQlfBzqzDSepM*=Qo2hECIlK+pjqY@_BEN@ziHA^GtLKN^c(E6HL_Ywo?ia!JKCQ+j zKo}7bjtFtzU$p>L3c+^Q2Iqoucu z2o$~SHGWHjX?ob(Wg7d1KoT{>U%Oc@4`4>z&jbgp8Ke3xyz`JyqP5_^_wZ-#V3@M> zjIF!yKi~VC0HoHL2Uio{SG4_F8(_jtCH#ijRO9yd*_rSnkTt0iJP&|#JsJU$$>WA) zXTZeBLPtpj0~`yizdM7;)S`ajGoQAqdU|9MBzN|%M#S=kypHvYTOv{wI>b=%1*~mt z{qLWIqI8iziMs1q-)8pxwLe)ow7p%`fnAVWA6t!z5B%u5_}!aHAg;Q>GiIKx8qK8E zf$K`%X&{-@;(=sDYONHy7-0yI zs)%{SV-z>iT^t1+V}=PNjeO*@n<}gNad-tbnX&r%deCTMQp-(wg$9(bSs3Qx*ha!B z-x}01E|dMb5qaj)wWGI)A?FWxVFD5ES?FUNSUO^6s~;FTy$mHk9VD+kWj~xDf2GXf zH&qCr9&osidA};|e*7#NoZ@XeAT@m{Dry>{Z{@`XhWtT~AYCQy8w4_lM#O7GrBR?a zDMTA3;|-t+hNFMEEsueC1buMPFL7gj0)4#=7Mf(3_!9`QMAalSiX_~3qKdv89kxi! zmyi$Zh7;2Po=5jG**FXaM6w(4rjlmnR~~kDc7oJ_x4-NZoI|?0h*4VQ?PU?%9RLp7 zoXFYP**VQhYwg|!^on=JV>JqK_XfGB0LnrGpQv`e8KRN{8e;NR?9oRN};+jaqA^X7$EnI@RpcmKn_Ln zBDcbd5D^EkrfwVzewcf7Rbf{)4d*x!k}piIaJRO$76x-oXGI!6Sp2pJVCsABgTw$} z4iI6|j*LBatHwzT?bX#>QQiFv=?==Fpv%X>6w*d9Z|o5_+>43A*$R{1DUmKT7aT0s z=SB?&tHa`suucj6>)Mgt8K)!PaS2dCvzr;5LKoedgaf_0!Q)vyq~JtC2|C{Ku)%wU z9Fy!7*kffn7mQ$8>vxYLTNNsXFKQt&a&ipO(ddNy-N75O01}z(sAG@_1P#2X;S0)9 z(=E+VxgdDYKW=%!56!kC=B!|4wGfQ{{^o54bCJ{pj>jdrtLG{P4JV=M1h!>9v>M+w zBnApeFy!qRAaFippeDgpC6f!1*M3(-0t9q5YSRT5P<#y3@IS=1La1Rib(1QnK>&Os z&C?$sxcOP1(3K9^@w%&c&Dq@@;-rv!`634a$~3C2_5~Qggb+&zZ5#O;t+7O@7&O^l zfGylchZ%LI`+(*qa~e`1Pd0@+fD}BR0iY@-stIjV(^GX}ED%+|KWMUADUqtyUligx zF3m$a!12PKnhA#ACWizQ;RDH|?$LxY09Ao*ARSqWF}0#CLNo6|u+Zi&xc2w7^-|S^ z1wq|F!tILyh_AaodJ1Wj2RQ)7s$Lu`uyd!EpxX5SjdF6z=-Zw!!VsJ_ zS*pXIn_i3A?S%LN3NThv@Ru0+5P9tL$N#RFIGOxL>W!iz=EL3c`UB&CFtx|XRGYVB zB4_4HdEfoS`c}>;!~Xqb7)QHc+M^^Opv9-J0f^5iZIONObO`$Qn7#k*-ESk>CEy!x z^)LSbKLUfexM>nTDPn#=gM17iiwdO=ti+ss@)DH?pef4uk&f2vH6 z^E{@WGOS0hNcLi4@p=;Y8@T`i2nZ@4Kq5h?mirWOvJ{al9$Qv7H8lZS1_@3y`O&}P zf`gfVD`a}@lFG^_0*;T@(7-*Qr63I+f*{|af(pQV#VT3X2vFy+xTA~yIXl=RBMml| z6_O_tS_jl#zEDpk9rSqT75EE?lK^Qb*zB8)io1KQkGG`)xO#pQbg+m-b-MaRx*8{E z)TlnpoAQO&AoPdXdvH)seII|O2o4ipVFT#>07`NPl=dA)now@iWSI?+OmtD5wEA9t zppoDxp~phxId75P`Gp5Y^+0o`4zzdBdDGYo+<`;m?^RWBAPBoF79`d{8ym$0+mrZ9 z9=`*SNH##-x#ds;g+xK~Ctv3VUK_NUBWRt31`!Aa|B4Kf8(ASI6!rqjSOT$SXvYG3 zP4iyvi{$BIwSH+D1*d;GjaZO!<7Pq@fh)gzaMDef(+cG~(vVuQ#2*1ZVj?!UF&i-u z8lEmdkUNuvGAiKMGDz?VfLN&faJKs0dnkqFKTe|_0XWotpj)`TKKX7x`%G`Jh>CDO zMbgyti73v)HGqQ=5rDVT1Kd9Lxh1+=X>3LvWHOnc*F3DOM}TSa;@xjhlPb=JAi_j8 z6b2-bSP)Ur-|z=oKp~d6S%rLm6n!NmwHM?*)B*8L;21@fk!nc)LqGDJd>p{Tu@X5) zFl|A0$!=ID|L#dS;HS~XOFB8RUtd}s=r}u9#->a7#?|VE5QP+Xt^;AN5j=PDHMT1S zkYkA|AZd_Vvdb6)PHs%AmkH^O36M0%AA19dBb$CTk`nGuyKV$dG6@6xo($ajzz9Ur zheFpZ%!$Ca!6{pDe?(dbn+4r`wxzIUh2n3Z;+xS8NtZ`Nl>vLk#p@=vix-#hk#Gi? zuI}!d(Z~MSKUsPZ???}!HMz|3UW?wqvyyuG^4)+T7`Rr_BUQZxAX6(#%Z<27LM0*a zk2!>ruOi@>8gpsvM%e}n+d~6*F}M_b7_6h8K79gv`3)isAGwkF{S;Y{phKE9d)5sk zCO?PMw@D^cD%9B^Z`6=}pyP$pbWzR&n58jzOMv%D7OF1AOH9=Tw#L9eK(&%%*V~&& zqYcLT4hS|XP!@yDk9@s=8*4u{2xNWGi4RC0bUGp%ii)7wUoLNtsu&`f2ok{)X*v+t z)jmM9?BX5I5!sWqUf_ekX^?v~z>9V#Jrs3~fq%PttZ(rnEEKrsP}W4;)6dS3+5P>I&$eGKx{@`275Qd>gL> zR%D{S7?

p22jDxm{k9;h7v+-Pp~N4kj@`B*@Cd3nmS$e#+d`4}6yfFMM}Z=d4Y zz3#Q_B)`g%3gC34Dl@aQzWH>q*iE7n`0RwV!>*4O1M5Jj0&*-9R}(mw=nVilCM?YZ z-x9Jck{dzcr(w=^<0d!!o59C1z1k2IU4_tBR#ptU7mB4}Xa~&ky}|1H021hj0Uus8&(vd(TgfnTL59!kyu z@Y(^%gGJzKTTSqMaN2LPPnEVi$wfr@yxQP!QjP`(2Pc)nIhyK7l;Xy~ANMHu{rmUaR5SDQSQ0%S z%!|H~KX;{-mPBm@G7k+P5xcK1wj+b+LpEld$|E`qFo2GE6sV`%a6iGydn1Y&=9DZ> z?tn5kK3Mn$JFO=>F;8y`8hpYaI?ja#2S_db_B+c|;W;#V-d+&K{bzOb?vHIHlKpmC zp}JtHm~1%+k`*e=^|$Aa-|#VR{a2S>Q_BPLG;@?DvmpmzRwk8VDLoY zqmcNy*M)NNs&mAavKWGw5## zhI8-0a4sQqjOmsc_yE1n)-qsC7elPv-Rt)s(Z_C@|A;lMHqmWIWCcP?;uHP?q_{jh z9$;*PZXsAkLVkaa^qCF{j)^`sioS<&6Xo&MEF%xwJ;Ht*((cV5*M|@F8XHeOx`QUV z=Z#XWi+G{t=_lptpCDZPmMBh;#`^OLuqg zbKm#-W_Q1x*`3+hSq5jA>y7{aobx>ASLX&jQFWl~ET-&C3d#e=PQEKzUtxdn>ajaiAUmMx9btU8}km7trBOnp9 z>?r}xU{IB z>)&!|ClIK=(p;Lw5(D9f0f)ql03Uwdp@^z`z<^$HC`EE4fJ82^?D5 zgm(*Fi2>_l`UdF#hIP?4pnpVe?FTzk@FQUt6mk?^1k2olABmf z(WFwSOCZGayBc46<+%XIMA9vMg_xbkDT`F_rcVYGc#1ji{oh~r|8(=pZ`VglZ(#X1 zuCAV}B4u8@pcx$DB+6~uaj>ZdvbBCFE%G@86G}-Y-&pH=I;J{*WJy{Vfam@ZgzII7(6B|BZG#} zDA2uDQQr~A)^U11OLfV&JS;A0j#I*D=37M5eyk*VUb4Xh*ANjEmEK-sY-&2QoRxAA zFZ?Y(U&_?1ju(aZ0Ro=w(!@-e}yZy7`l7zSq6hAi{9r68aZM8dC(;_4! zL?EiFt6vn4%r$7qRVtdB=hP^=yPtk2O$z)?Vy4=QZXyxATdEZc_XeMmmYsc-HBOEj zSzS%mBYG(m%c>VF5rF$`VSa8dH7yN&Vqzj^p6TJkqiJzTyB=eXFZuZjcPz054&&wN zg-+LscQ&zc$*)?F1^wd18YOf}Pf!0oVrl=q#&y?p@9^-YhX?uj`FZxYZ)nsLIW?CT zr}Lc$UnBzNQfpFE5h)%!*Wj}I`ufmv2d^X86T9q*UU_)vP7)!0|Nfo55Z|>B?=d1N zNwa&l+tVQ`nAGjl!KV40`g0de8ug>zuiq_fY~uXa{QS^sPF8YdpFBZBWMpI*cEqy$ zsd42*F#fSNH%CX*98S9L@ObS+rBKt*pdr4Sc9D{cc#x3sT7Pbfg8_WR$jF#uA0g&- zc{-IlbU*DERLhI3&N`vvxu~iR2LA=#DUSgQFF856B{FGALJ1-kZNlI7Nl8gLZ>;R> z>?#r@CDGX7VpL5H5*3{F@nM%uhKFO<)_(c&#i!$_3gd}n<4ftpuabgk zt+1RFKl9MX3?-Ohv8OADtH!=wGBJqWjbqkI zOMtEv2(u})|65gGi!gUECo$i3e^8?ks_%KIv$^?09-GMz8ynUWmSshHQ|BAb54KlO z8^GfZcFJZKF)V-a3s;UNYaI(b(vcJ`A*ZX5TtYe{(S~U#vlhy z_y|+(*s!DCfdK;cPl|GKy9u$MJ_XXrguTtxdX$--j^R{2vB}}q+H1*^{_Pv1Zdbyc zoSdBR=7SIUk`(_~mdWx4z*VXnrBe8`&R%mH2@AvhJv4YS+7lBhKD zwK2n6{cSu~b!6q_B%VLNQ@5XQ(>S|rxH^;%k2FDN*5pZpOAUcRfftlpPh5u=go|E~ zz!caDB*`i%1+>mK<~+}hh>gX{9c(X(e4U+>vy;A90V>b1n^Br-yiZ1Xd?1|TxpRmWa_7ORwMRO0s_`!HFu(8F} zhgjxmdKKLr6-%>Pst?24pMY)=ZMV7c?ebZzI2Ty7Q^a3z9hyo z3O0Od#jiwOMKk=pM8vG^39D;smNkUTJ81IZQ{`;Gnrsm_X zP%B^gb5WE>`~8|szEd9dXggxe09(lJbCX@)?H=EcNs&ZE2r8y#V~{hK%QdEQT+JZTVQ92pt;)!8{0z=f}j7%R64cOYO;v~>}s zr44?VnVAU<^iQb;F~V@TKrd(Nm7qQ|K?|;Fi9g{|tcQ`&3{L4io||}h*h243i(TJq zOAt-~6e@JtHtK}N?|m|mGPewyre>iL=Jo5>dxwUI8j0QyH#8s+e+QIA2hT;u*8ddx zH#&XVCQ;31@5NPN=N_HYNtG$w?OPpKT(w&zbT81YL`PIOEPvcM0~i%xEL!cf{^P4c z;xkoMf7syO8YfC>!*#mM1U-oO_z{{%bM)uWv?5(Y)#qaiLxQmtHVsFw4}6d9ph`*SXijfrsL#% z)88u8|3^8T!3l-!gN)om;QTbC?^&l z5b`rMwJQjC3n_r;Jv?)OQ%g$J9L39Ff|2vlr`yhUBE%sh7sV*_n=;`wrX-2^EzL)DR-|%NOy|HOFDS09Zu2 z6}EsGO*)A9%?iGKYXoG}Y07#1#*ODxW$m4u2+e%;&mx}M8#O3IG_y8R3~$o7 z2!m3wcK*)0kiYho>|9*;*rE~=9%2W;+S_Srhd0AGz%T>Ep`!A!CLd74bM{IYGRw&t ztz-jL)pYmmyVp7GhEbp&PxS2jnH%8OGpwF8N*!iVcJ|b&?|ZFNr&naf&(owr=8mEF z>4gK?FIjo3)3Oh`-YTRI!2y`C7%&rSb|2H&Lu2IQV+T*RNPf zn5qw9?*tfourU$R5<*M|^K*gVAq}-(ZoA1l{&&~EzM=w!r1aMb>JDo+X#fDhZYwJ* zyHzd!_%S-A*U<}vN>b(3m3;MFa=xsLjK8N-mv!cz#UmeJ)cH>@Z7vUNqJ(bu(deeX zU`YAvzL?~U{;7fwEhFS%?V-j9{w4|^vnA6radSVv^I`b+@4sEVQ_Fe!HJ#~Xs*E=UzMyvZS_l!tn5~UsnO4J1hoS-h2Ys!XcdC@9ELO-kxN|pk$#q4%5k~1@fEuS2V+o z@k#_Ds_pGSmeMRN9nC5SMi}!N>vFuCH_;-@3&%!B)f#Ktj2}OK>~|(!51_6>m$jt4 z{H38GqO!8G!gkv4v+rI^DDK>Z^AslapyFw6A0-7v3p5|#1>DCZX9J?=1PDfp2l_fT zHf&yp)l+DQg4zS^<39{zB)O&Cf=+8!JDiA_HUDxekn7wxp=Q`%e(R_IE%4)@xss*|H+iEG#TJuI;lOGJZ;-lP$r&TuffQ za_^d5qT8ku6x3l2M|For!w3r_6f_aLuK!d{?)eB4zDw{MbqNU!94vp0%7AA8d;zY* zV06s788}Zk?wrAjCc(jiC8k(~Fv#dTx4DF(2)AEx7LW=r>_C9o51d7?^6Uwa!_dd7ST4hkP!J7b?I`{ zlSu9m6Xz~4hTEiKk4D(Q0PM5`UoE*3&_vVohL0TIoJQgO)wfdW+7{iP`4K*E-(ERe z;H`%m@fBi&HOkF;uriq2H#GDfYDgDY9du>5UPOkN-j!^i4l#$h(5;-m0EGuG>9X6! ziy{DXi;Hltn4zJe_JYu1bIe0TjVPc-P}k#}I~WWS4r0ZSGNSuFEoWRpLa@Qv46%KD zTe7hGcX+j{Ac~WKj#K!mhZ50HW;JHJ+<)J4qUsJ*ru`F1AuRJgd4BY6HFOhYR$B8C zGH4b~MIWTxoQV*>&Y3)vo$e()O=WJEk_;{Dn4h_nxoS(kj)2|?yC(ucM@N@qsB?OY z$n^R?Tyoppq2y%B=il>%>csv&u>B~qj`@M(PubY|_p$Yz&6?fY=fJG3Ju^lu4-%|7 z;sHD?aB`jk1wP4}mzR~jYMwV4O2%shJBxUaYMGSH>F6*u$HM6Pbs$cWY~&>!aLw1e z404^4CksE^DOB4@yGbg+&$AcHqO%3X*p{hOxR75ysWNC5qVk{?x5|0aHA}airJcVd zi3T{2$`06E-fuRGeIjA5EOjA z8xwDBg5}KfMj*+H>RLh9kB7x0zRC8o1SO^GKofvci90!!d9>bVVNtlKo@=4T?;?EE zFZVAs6q^5F@$_l%II*~p*|muFAdiXpPhs&D7S!*b5w_u*w8bUgAZGpbQZHm4BPQyK z1&BGo7`d6vQV*Wl0tFZsRK>NVTrVH(P7$Rlvx$>L9(W%CO#lLFi?Pif}lkhP5*fJV(ituurH!tgz9Eo6r~u#-TA`p zn3KHE9+BWYn(zvy92I;==r%3#(@1{pS&UnAjwTzagyLiOLzCC3X zujys7x!rXCI%PPvu&}VW!5%PG<)!bO#t3p5_Y=M_CzrW}1vd)LN4jbD@-v{^B!x+a&KbYA6hRe4W_;D>p(BE;$*LiV*nYh0s;R92;!{Wq2!rv%xeW z+hU5Qji^+(>+V9R%~YMQqyGGMBd=ovX6-*Q~X-BtF zFR74vD#;ZEkN@h&|3|TA`2VJ5hd5w7UI)SsL|PVf3I)zOB}xgnhP367YOzFy(U!4y zI1M3p;Su3~^kY+5A$_yfkA_j`9w|Rw^3aMhYA7 zs4TB-Z1D^x z7XI!u3^57^{PE;TP|q>UJCuEVBN0A+OFgXo`V<3IWfhf~Lk~)GV0ggg6AI7q-`&8l zN+Vg=^keI7p+$)-#DWrveUWrBv=eVXEpEHePFz6^!}k}`i42PK3ky4b5oSd2+Q-`3 zq@d1tOt!2nEk(pVk(2WuSjMUNP_GgRJsf!+`r*TooHYotirC4SW}Qc6%_KYv#mwD42h!fp@I46kK6}ZmU2+wu;f}`Z*Npb|_RqAnSGa|N zKmd&+p`f^F!bvZ6#cPI2*Hs1oatWFPv_q6WRG9?(E*CFv)9f}i=m0QBJDXBcQajh~ zQ}QP%4nFBOEpFR|h8`Ioe+_Obpvm{-#4Tm)TW)St`6D5r4<#jB$Iitgd5OO9ERqMm zhTkPlVm^_P30RR()V;#U78pI2)E1^lND~?^XE5OS*Tisw+)(xB-0(y+P5x`j*E>4;Fh#DJ z19pJuxNR39{l#~Yk@)<-)RR{e6A~gmeacQyhsM&~t%y|I1Uz_A3E~>`_M9Gl(-Owy zwi?o=+TB zP`0AvW5Az6!c0szP#56c)7ja~=6&2@TlXO_LDXAhWn~5Q!5K&K7d(lPiHSE5pjsU! zW}=iOZ~ZzCevlaErizP-wi>ai-d4;Pz6A9P)`ha?v+GXPdNIQG0!cY|f|&&cto$!a z0J4FW=&JYV`iDso2Heko@W?MtFBh#keC`}RZ8WE@?na+d{OI?Wb0cV3R2WBBRB3c0 z#EZ3`gSp}0e88f*Uq+(gXG?z%8L`~Dg@^70Pkw7+#xU6{P_GaTtKLq>JM%85>*Z)- zxb~bJzlo&)yQ6>&;19IalNvHg%Ge&V(Kns2p7RA>g*Xxr5ZEnr-hECMGbZGD!qsV7 zyx}IfO+AxDgRI`D3f%B+`*?rLMabS1nVlV|F%T6ES{}%um32yq%c;w9^74{)c8|z$ z13ac_`N(mP7sZJ0fkJ_x7x~q^>Eod60Mg{G^3Q2MgWY|VL=awede=YLXrq(Yke{8< zYN}(6Pbs2zUkdBQtD;-F*%=*+p&hB2l{2!UKfe2`=P{M{nccGv(0S-!6+=a%ph!{( z6p6BiMwa`cGtYx3fsfS%I7Uv^%%&X#9)a8m+GJ{Grc^ijv#sWLPpqw3$#Jo(s;X$m z(~bt9*nlS(T#$IOtoHV?YiECN+j`KjbhP|y|>%~Vj>LE^QjD-zK;zQf?!;$|8As@Ur{ zeqz^q&|PU*SZ=nowB%^>UJonc{5D~|Na4$VtF`3Yw`-=wT8`CmW-4Wy*w)95o!H;T z4&@rRYmAo<^WSK8_i)ERlo0s1LDa9JZ%-r7a+l-n=2};j^uj!|c8D zalw`ImKW!a>>xEWyozh#Z(Me0zfbwt)s-JADk3tH273_dW3XJ7`DLm0{A-|iB$Sjx z6!gERZ5yo1XOrDG8b98bgQgb@800w>z8&SE^F?=8mz1ZcFd(|Q9yEFjhUB+Gy%!gU z^~jaIs|eP(8_rXnlUM3#+dT^xgGpvjZ$oU`rqD*mmCy3RZaDbj z-*z6?0I!T0EE}=>1g#-BBxL^eXdRbPJj{37faJG8N_=W!Vq)mLhEO>u>GSM00Q%0P}5HD6*hHGc2y;?J4o?_n5xrb{Nqt^M*3lkX~ct{yr% zt8T@x_l~IxO}01)B<--5MXIT&_yIvk>B)k6MoZDdUmm_ChjQ<`OpTaV$gFW{^2)g8 z+Q`2-NE)|FQ6qUXQm%Tv!?|JWTqv+LjCGoFCVqZe>71dg8ff-3dNz&8-(-9IdabM5 zE~5(#UI`nRhHpU5lq`<@C2b(ub7?;#&U=^WbrQ5EYW`0MiU^L5ME%bUFGlv#)S~jq zdrn(!|IH^l-xnoKV9=qV4aTRrQKFPAbWO|+ank~#14ce1rF2cSn6;x1Sa?KOW8TaO zKkQNs!?JG*RcZU_8&`{A_(-0Ly)V9>c>b1`kzS_4-TsqB_Y5oH(FUKyv{)CRTG%+2 zo)ghMm3<4yzn$XQzj!np9E0@I(&wdKU|4AD=*;i$Q5r4S#Df6m%CG=?-=Np|3m$j3 z$2>Jty%7$6b-Uey5~WWdxDXfqp1z&uVt-S~WH9VxyDvg5XS?rKgjbf@%9ohKY(iVA znl)khsm6{Ae@n3(&=TENS`+EtZ>f&jA)}9ROIXsb0*(=bj;XD!J@=>?%|-a9zR;K9 z+3f~Po|jGUZ{{4Q(Pg*JM*6S8#Q@4^Uo9;uLE#7r3W^;!-&p*nrr-zY*aXG{d+(Tg zy?}h9App^Q8HJ?6yATFU*P162%G*HyaDfKB){jVxw}A@^}$ImV=X1TBb=_ zo;fUMQ2ri!dV2PDEaCSw^j_qBMjmovvfcAN0A(E{Ka>z~@7}$)Mp5AInbZ2S2;8Tv zS)&kQ;{1)xru1R-3kCN*Ldk2g@1<(b$6}vMNwu~bO4Idm4(??BBD%w4!S|4|DIuNUwUT^lQ-6$pe)CqVUsv#5vG=AWRcFLINgDPTnNb-|1IH2CKc-zyTVE;6!XXR+`aJ0Q4^>oD zY8Fr`5Ca24LzUyIAx~o8*jNatC6#n@MJ63z#{kP-pG&7R8?2Fuzn{Til@~17m$#8&V>l$vKvrmoKC7F@ zp2W-UOO)pFhvpmD+$;&gvA|z{UwS4wIt(ARfPChg{IK2MCLk!Zo&J#;i@%N&?TJTd z%y~8C^K0x;i=n*61a1qD?jCTbpFX{w>@stWKU+~&w&6{WFzfjaoDRF%sG@fHN*1_{z9W{gRL*#^XpR;ZOysySy&YF*SCDsQ1JwVd;Anw~ z0&-Y-e*Vq+lR+d5VN0ek_3&NVchBDkRxc1j?WIo*Myb|wB=3$O;n?d%FQ zvZS$wr(c5lO@&tx(MWwsZnh1f0A!>LXyt{@oBBXfvWuqNI&QaA?=JSpR9&MX?q;4a z?iTIqG-N-rx{P7cK(}r>8q)Y;c^mWf+C~G0gP!|(DQEBP1jcQbjFRkM&&(RK!rxgh8sFp>Y7}U{OcPBX=tQ1`aitu zmz2=IA*o=Qe-lJ$pOLL8yM;@AEOXqWpxGlbXiOB7g_hq`0#tqLHY_P=$MUIEvHPd+CD^fi?gz}MXi9*?nB=|6^|CS8rG58The0-f(BDNvn-H_dG16%%lkzXa zLij**#s@F$QM^3O*k+u8R}i=nw?VCUSu1Saf-J@C*F@_dgBk`DMV`0tx8my0Fc*7L zTB|qfLKG5tre#D=@bz7$F?HW`aYtH{D$9Rj!FwE}UU)=~Ve(b`^pk_h_bzHdfp=WJ z7gLw#1_&__DH(Xldcn^C+Tstw87d<&@nIv;jHePpIVcJ2!v`FQd(0HJQa06Jp4QLq z4;zF#48YxgyqX;2TY@aY7tt0zdCS#130f^8H6!C*bmIOh+&xefkW9Fm3hGYGYj)b1 zz?*DFdY@aIEy;)mJ4AuikBQY=NN4Qp1nwC$J7rkH(b3V*ta!4|MGpSF#3>4*{Yy4= zgq7^NaCdF8HW5;9eKl`1f$sP##hHJ6EtxH39cW+eeU=9diqwfC*FL2cbPCAVjWbZlBqH|wdEO>g0M z3Er|>c5NjltYsP#$aY)apSPypH=e|Y=(yo>S15=)mlJeAy@8Z#G+(pPr{CDY}vx#>Bj&53 zTqz{C82!QVL`n)?Vi!GfYH$z}k)4-!1)-*)K_@Co z<>L^BKY&?2mM@@j^XAP)GcF@rTlTle4-92TIW49K0w>U(iNdw1$jEjRhR4QkAeJ^a zTZ?-{auZ&0k#6_Pu}y2#pWGp0)?}YBeMWNc!2{IpPC`nW(0>B%x0$u|d(bi5$RMJy zI*i0--$og_5~Xnqb)Jo$!Mv? zyw&nLBnt5}?~PLH2)))^ZMcQl`mL%oeY}{`it1Qzw1UYagLdu< z3r{Sf<^glCZ*Z6=Au(~jLES?(WU3mXe}$S65I3?tH8C;K_bvVv9CV{j>>(2q1S=4- z@jUof7+!OF5QSi(f_vttl7&Bw3aOcx7AIESoop|Yw%L} z<;!$)E%8lqhn3%qohhOQ-NwAUyt&<&?S{!d07nRkiPQg$v&8rFNJ~rq6Q&`@1^H7k zR~VoWNGbfl4gB=8AhYnQ`*Y-GV1$UbmZfP$x{@qaW5K;-!q=tR+v9I~zQ7YuX7hI9 z)Y*H-YMQUageTXNV+N!ma-DgNIGRr+BqV_7%NQ7>^!)t;i`dU1GfB`nt*T1zd8Gi*(c`;mi%!cw})!GCrKvw{9Asl+a+3mqlORP@Ojr*}`Lr4T0Jp`#-(jA^NbsU)Y1C6NNzv5+YJ(^7 zCT;)*s*c2=On;Es)ZnXqO=8f;tP<0ReUDICcXW5J9==2(cdxPAb%SqzHjOu6#)7YG z{MO@lB&6=f!6rHaViu0F`vEQyn_F0*A#Cc7=~Yx!K}HDyn|(0*9wCLK@K+?8RYXpy z{rppKCS{x_>pV|AV*S>}D^>U1!FPXHO%Yhsq-JklG_F67T7Hjsc;26#c|12&82>?3 zIu17pm+Dkafvmr%(zx~AYK$i%D@&=;DTzTHq8joST4V8=W8UK9u0~TettfDK>Wfxr~!08$RWLl92P>w3R(8X;>nY1C@pY62pCVl z{>4&?DI%c>38bh9V^i=QCRA!OIyQEv%p)3{K`%iC|VE!L{cj&$)ERr;dw>`Q~RfUl#3L z4hw?*@^f->K{bvm(?7|x2SSuR8LRoLD=WSI{phgu#>NssgMUuF?jQhC3@SeLV|M#5 z_!!W1!C(csMwxQ4vZhA&j%CQ`35wPi_?OA)l_V#vmST}WbA_#(Xia@Im zp`ndNg-f{jvV=Xjea51sOPeLy=(Z~{fZu>eG136M5WxjKX<*mV#v^GwDA%E>Myl($0ix_AUd zM`K<*2<9Cq=;Mi(*B7@3t8XY@Cjj!;gi0dE_sXm%a;m^?W%pSvsAl~;JI46^;J|5u z`3-v#jc<^EoQc&N_A|^M&}v;EfAgYzY+hgy%(|5HH)a^leeufSWtD09U&53Z%Ke0HznQcC}DB+^8TmG^krR-9v+=?>lTQH z0WbYp1DYt#;3lv!lxz#Cw8+KLOT?Cd%qwH#R9Nt!=h`D!fl!c|7LQn*K+3*vaIi&L znxWub9_JjC0LlUfU}y-LTa+VCN=7!{9|`8n^xpCS!Utj{RPav}b+bB8#Tq+$dJf0< z*)=bUez#Ne{K2b+-T@ebU*}OgURz!s^ThnQcKEwjDjX|> zugnE9y!e|poG6W7KlTews+4EhLB}x3Bxr%ou0tMAg<1|F)^~vvkYOV_sQk5 z>go_nPFD#H+|Ww0qx387Glf)wmW=Nz&XfYiS=CpA&6NtusA^qZL`&tAuttW`Rnpm; z-1X?qx-maY`!CvJjz0eEoZ0_+P1nY#mFEWKJ8rv>37V9n2-J@Y|j9$>ILf_3-bVT@O#Ri-0p#C$8TjE4s#kQa?4XRMw&IEoUQ<0fXj{<9ZChNJGI< zMdkL#j~}0@t7FA=VCD`!bRI|HLE&UQa;4nCm3=OOOgxbzv5RU5rO~Gqe<{L9gXrUA zt^52`l46#1YCcXc6eh}b5G8vFjxY!teiPOjn4m{efF7c6LYKyZP!o5AgcjH&^Xs=; zazSa>oT{e+W37>;d>kF|2@aGXAiwmu^fLqg^2Wwb2$-RQhQSj(ZnU;Ucv{<;d3iXn z3q%F{>UYmcOFrIRJpG)tRC2j5Pj|~i{ z`UeIIVF4h!HD{hAx@B_kBq|JElNBmT3S<~XS*uD-r6ZPR=H@D)FZA^F3!a8u!wryl z?w{|O=MI_{z|K@CBkJ+eE9YZ%BETy7?Su|qcySePmCMYmaf+H5#326sS-N9pA+vca-R;)#OD z5nlNrHK5eL{*zLhe&;4MpTV`J29AgKM($S%N+8IdKN5KtaBzezz$Wd#?1lA?r8k+e zSQuj2;9+9COr@A2F>A%b8ja*8!&r|H^-DsLj=;x!VQ^+hLGSxrWyph4JWA=i_{m%6 zi#jvX-$jk0&niL3VyD$p=d9fj_yiu*rHx{i5UnCdks^Glq)&JyHr4AqNZ;KcvxU9= z{YNNX-H*TP>jX{L>!3Jg8Y~{UjKs%Ws~*SmaW2#Eh`)QCpUCpQgHuf_%^s;qQBnQ? zQG|fo5e+d5^0UAtXp-wkZ1>*-^=rpea??ZS)uNbqZ*5XN-TbUeq~WLgL}=Le4~v{?~T(vw8)QN#cC{-d<$ENlUVhjG7o@I{h7Oo|7 zWSHy?2_7oiuIuq)ADNlWyfQEd4aY989a$I`JlQOFu@NEtxIp2;zg5;O&{*dTd#et+ zx3}QN^ZLynG7NIQZ$8gzMr zynGBBA%vXqL6v9^xlf?=)39i+k?$}}Aj0StH$UwznS8AG$Y{`wti;WTIw}{f%K~5U zmoASlM(?Aaq}XU6s~IH{>a4q)Imn1HQaq^7&lrlGxNO=> zI5<2^$HvCCw0r@80_Uc}dBK3^;RJU1SSYxqsly;!Rdqo8QK4EG`o46!@`bsLjYikz z%F0e08S{# zkYzmVc!Y5D$-VDKA=a+VWHYrXz=Wv~kmyq#Qae1cH#1d#LAez2mtnInX#HZ3eXEVC zrUSh$>0a0Arhwt8*X!fzkj&1n9M6V#2bvmKM7QcYEnj#(6VSiZ<9(!XoP52#9@~JJ zhxQi{@e9ZmjBT9e?@?mTHu(m5vgt5c4NOg?e4o+(d-&i1>$ubSjWdhNlgHNdPvaR< zr!Ef4K|k$+y^R$j()ArM*%Qm4fq)u|Q&CrM1z|R06B9JV!TK0>NDD1?6=)94&|3&? z#}I#Q`QW$a;B}#<-$T7+VDMw>u^4s+>l5E!_>vs|Ih&lsNrRyd8<2(LA=OHK4DU|B3^kRr_GP7)#S>_Ysgv{QQ zztYnFa*?e%52rJx)ny>0e=3xLrtSL`V%r|MSXRV^gYrqDTj3SH)7Z;uq8XcKV~Tyr z;NT1wt>!sIN=u4!#>6W}=X@>iXq&Lyg}Luy^Nk z>$oAA0rLs^N`KPS!~_dl);^rc%l1Mdks77tAU+~`hljJ=ZfZjfck`{5POLjM&D&2m z;fY2M7mlsNVNG!_uR0HMNns~_{p5$gC`n2E+Kl_X=@?8c$I4jx6#_|2OV0VXiU>!;IO&7Aw11`O7e6bK5|!enx+a`;u1ka8N%o6ZdzY{lonkLVHj_ zOfwS2@Cg~JDY6OTTZ|e(@^J897Ir^qfCDWG#3PoO?d?yWI|<%0x%Qz*S5m7wKkf-O z0y^&yI=C>l&%a+^AwQAN9{F9FC25B$Tuhz8a5sUM;2YxDFU2EpT8d09^ z7W5}CikwkNwRB3w4G0(7xe9$|_!mVQ)=8uc<+k=KI0KzsP!Q{FV`CH0V$^pt*c1Og zJIp$t?O(*o>gxPKFf$)w!m^}-&ahB(E@2fqFb*y*O1IVbc5@Q|P2>?DAK$XFE`u9L zL!78t!y0vy%;FZSQb5W$h}7^c3BEZ}57|_vltd88CzY7V&E91+?2qNHsd1(KQ}z1E z-}T74H=FX&6K4KH5K%f5$dVKo+Wk04EM#;Z;y*cJy?ywl^I1qe(>l);E8EYi9EHgh zTeNAPGI7)}JdbmqD?WYd*Jav-(i{@%UJuX%k#Y}RdITj166o`QA7^K0jN!E`@3&Af zn=z&XemIl}3+$$JdS7l$CU~t(8U@i~c7GetKz#U8S$P*0HLUq4&NZWI>+-Qz@iDBIj%)YVfD|A!^zhC3QNLYuU6(Z$JCLJOt?z~jPKE1;b zwQ9?!Hv1}s)U39TAGLM(nXg;ijyD!t!TI)?^?=4aSL&x;Vi3{Tt^F~GYn57?nB0f? zn>UHMdmK%8-os^;B&f`67+MzV#B3aCN2D}5K*so(yGZgqp&DaWms0#vC&T+Kf)g($ z%(({#?!$8%6&l($`bAX=Mm4V@`IF?|t2!*rV#w_+56Xw!_=4>u??9<*hjeJ2Sscs6 z9va`lczy5IBPAjBg))MKQcyeauf-mr0o|9tWngkmb)G6JkCE?B;q;4`J%?xt zgBN=`g?Z?!n&Lk*hoK?0tCkQO`s>+Jt8$B8nxu^}68!|{#&?ND$=uIG*^q>9eyr@B zSFW(*^poZ0ew^xz=jZaxI9AQ%&d3dBu4LtKPu%PjL{1H7zl*e65BwMUECyR{>%x%8 zvhuizE61y}=q1~M<|M-TsoU(2(1Uk2<(&g@yRv+ zLQ5XJ&DIZ2-_JtP@dFR8`9+NcAnjs3tyFEQCJAn|iLU>mtUDreH079$Ryq{!-w08{ zx_@0Tav#&j9~-Y->jgd+X{a<3I}gZh?$2*Svkn5DPJX{TXhR}JK)sDjNePF%AxfeZ zC>GYD-7Q$t{8j?Or6w~GY~9Gt3K9by9LB3+tSsC6_kK-JPv5FXPhc!|brD6OZQ8)5 z(-wLYc0oWdgO#?h$AeTI6BCp3!3MN}9>ws{Zf`dOzoKqI2#rB|vG;j+K;x%tb<=?X zG)u65&|n+XH+eu?%vvq&jv|zYKoA9YpP`snHSnN)6Inbg? zw`}46pXfPW2(*qXrJuL+kw3<7@0hG@{Fsv!lU;YPkpL>Y$irRKdkuc#G1bI}Zo#!16#`*~ANNJtOGj&J}qwWvi z3?IL*^HY~E4=RX*8gTIYkrlapVGimsv;mvKkPzOB?}B;ITfT}fMFnB@Iw^B@5_-K& z`2GO7x{G}zeCfnCRqfYehqsX24sJSCuIUvq7a0wb=?QRKYJ%22_~_Otz^&`cUJN|{ z93D&++=P{{Kn*r^+daHK;_iUCXO^RtZ(hN%?nnQa;bz*PZx!0lx6AU;Uj#Sk({3iG=5e7eXq&~$m{VfH#Y&o{TnQN$ncUOZCr_Vn~)2%rPq82}?etI8+ zXqXPn%Z@|g2NeJW=I3xd6X!v0n%nb8R`u$EC+ksphJLyUv}NJn8}Kot>bZlf zHWpyuwuVz3>PRHV#Rb4+Rp=I^CU?VksBDy80*X5F=qZ5>rx2_l*lJtO2gF|OZh7I9 z%tnl@gY~MW0JplE@Ks2QlFt?ayD);=it~RA0I+9+DZ71|@B2cigjJcs#?bHxMNa4RRZEGq5*Io zkuBAXOUR)Lc{mt}*|({z%XKzv8U5_n?Vgn>#nTK6^89G@#|FV8XklR?_0sF>PV#bT z)C?8II$uU-FZ#2I0s<2}TFyKnEmISdws-@4<`B!Psdew-l9O?v4-GG%sYK*=$}%9= zAU{6G^IA@#IUs`X1uooLj1>dM@=Y?HU%OJLms)u^vaqio_~Wm+KX_kC;EZ+dNKy-v zId>xwDyYMml!fTOb@moeRc>9l@TOG|M3j&Q6_gT?Zb@kjQaU9C+;oZx2#AQ3fP_*~ z(j7`mOGzUk&89o0;FD9X2mX#iYlAx?LsB6WwX}?nZJv0C9n?85UOE~%o1*cXo zXI)%Pj~QN8;-aQZ+>duitp9xRWtgsaU1AYt!^?cP?T{txkRNg zf1fBED4m3h4LHBid;jxSL|bU=y}MU8#H;BUPU@Zls+5L?=O5DT>O;=`wxQBXbh?|U2>_a5gx#2Qq-5BPcu^96Z<^u@4w5=C`@b}e8{6A zks-<$l2f|b2>7Jz(OzjCGL}LS-G}bCHJzP{#^?-3cOKVe&8Gy?{W_s~r#e>4Gn7(3 zu6S2(*p{D0!siK^bbM%t;(4=%kaFVw*Sx&lYk#B?l0LKt`>g}c^4pDkQ7mO0a;_RTn4bbICgW$%)cN$E|D~a!**+xd z6-kGs`OxQrDSQ{M3j1Mz;?%xpw}KtS_m=+)e6n%c*m3S>RM1LHP&x)Us)?JGz0Xe1 z;{|+A9`yP*TfM*yA zy6PX~p=a2zdEf-6mwemRM?oFsrM5Q)(XOsXx$YVJpNTXrso_VgE3v)1i4_N%?OYp> z@s~}O0rYAEwbzHh<#&w!#7!sB)vc&znj>U#jzQ2a%I{^kIbPJojw4GB&Ju$2?Rc}jQcnDe2bVK~57 zg%<3@4;MbOvayAP*sZ}}Bc;87iN81`qJGHSahAHTPf1m8G*e4CI72#1yUbqyi7kSi z6?9qA?iq!*_6?#xT@U1~?JTnFMkG4mi$H5Eu&Hp91((K5h%SRm&JYf@Dc>% z%76a_I)Wpxwvx+)EW2o6E-ahN?#o;uyh&>nI0ApivLi*>(I%`}3O~J@HDv`0)v*Y< zyb072r5v_k9#rd5{FMf@9EWx*o zCIL}(a*Y`+M6oUYAE}r$c+`_$J^b(ej6J1q%H(XGW{eiObbp%N6sVimFvn(b#ql z`OYBRLzlY+>k~~~Uuv1Swr?Ua>9wU2KD5Z0b%}MEot>R12>o|%Zs#`|Uy&#H{MS!$ z$rnDDz0X*-&F3V6b7xR%rR4pa+)@L)WRLvcD_eI9k2cIm9svm6VB8-ld}Wr7x7lLI zaLf|{3jO>@O1+|LmReysf!p+T+8i$14P5_1RW$>p?Div*MBv?QFYr3dRS^6XW@cil zK8+*!fX2tebKj0DbIRFj5)KZ+{;ndxF4JYLUs{ILNwwUL8GjLe5cV+4;Z<)I-Zx1+ z<*{!b7d}bpXoz2aR5Y=AKx_iaj6Pv4AQ-uHoA!j*#1qtu;6rcp9|_D^od24j*MB82 zBS`)$fw_tGUpp56uLNc*!GCo$4^aOp(*FOsh(Eo{4)G;YGy&8mWwkKaCw%}5oZA+! zRXc4O@SL;r!r-V``iOhILfq2-$#WT)6%Ajar43tH0J$E}f6&p*K0vtCSPBD#5O^a*56b%Xwm$$OYTr>q} z6*u^aaXXM$=*?w;ybdIVSUEWdIVj*M0dfLhVl33==B7GuoKBAROn-j3|u&1^*#*0hd!a~iw>{3Z>VtSSPI*RNhJ`jC*2%%c>T=uHtbo0SGoAS(w4Ub1-( zNN2(!a(0s&2cPI!xm{1Pl=!g3COvG^J_BnJ!fz2F)(8@FfN?=^0oWfHLOH-#OS=p& z0P%#lOuzh@)LxZD3I58O42t~}@7{@riAn0B&xkDosEij+2Sf`9XmaL1zkc)Pk^!OX z8TOx&%^Ux0Sv(qKJwUeU^OrBUfW1lXo0AKr#6p1@r(=0O$jHHrRWj5R6lj!%W}e-| z+z009!-tVH3P8XL>FMbqzNoxP)ZG30DjeQm-dz{WOh0`5_|;P^;UpwH+yS%ZN{ux- z5gwFT^sND-xPTRQ}3k!Kbk|~x`OHYr@m!Fe@j_xgl%|f<%Cx+&Lw@XUO*UK38 zaldEBJ(MW6KNWyb_F$N4bx*QDOvg@7+(d0b!=rl4>JH4?Hw-zJ*&0EGyCOsvHW z1=aaW--67;Aj(htbTiqShV5C59PDh@bn1EN&TKC;Qqj= zjGKa79inC6s19gYPPJGiMa5Zogs8j1!q*`FNjxLREU()al-gRh}a!gHV z)b|vOYW13*ofSM`BGP_TT91lE`I#ygW}Qb`vZYk~y5fkJZO-1sjgW zw(>pY@dk=KjOYt+@_{&!t*EaA;b3Kb0ryQzm~JY^GLWRh1_B9r*U=@`cX0FvU^I_3 zDM|(;tt-f>xJ`3Q5OuT+!w%p#Wdg|`NY5P>LPw(%bIjKI`3tI3*3>d$pr*_LXiyDp z?aU*(3b&2ahV$QsjTG5%*vmj1Ai%Pyu6OsC7S~W?7{;#4(zMxpeWo=+fPm7pSF+nF;m;84uAxT*dow5_h8Ksgw>tZ>SG*(KXGNKR%4s z&Ogu*Frc{~)ZLNVs9bbIvqer=&&& z9yhOA(r%pDo-F18NRZB%?}LvWpT)Xeq7q(Sef{P;^&vKFq%Q29)w06l0ExzG+%KQ( z-preTvyX`Q)05sZ-e2c`o1dQ??6z`V+rYrS;^N2FH{D4RlXEhRnvWknG8!vKOeYHC zPdRp(f`Vo8h?H55ft_91XRY53SlXr8&&`3Wv$>V{>C;=d6%bBLCu2JPgKFV=C zvb9=yKY0+>1b!11DuU!}#%s2V%Qfx%$mcZny2>t7tF-^TZ9)@KYIVm2hZ_Xgk2CtM zh6V=E%@*uO03=+x!;!iFuEM(S;p4|?*=9xuLpdKWBgctLsE87f{F4UFw$NUMSV)!%h@@_^JQ-la0p%Kag4 z4*SoO-P~Sap!RE6zNMO(+m&hwaVI@}IHZUVw0WE3j%41&BqW4Fc+UWeQfndE+yY$| zSa;v*Xhibf?zKzLAU)6J3VRPn6grEgK+d{{Ef%j;v-C!@`MITzZ@^K-=tsj#i~68qPPY>l*o>2O$ZFMc(NYt+MHRsG-5g)dc>KK|o+=b$6^}v8}6X zkR!izvEcHP;P#4U2618Gk;UY?wcDU`1}>wuwe_7jvjqW;R(?BxH)bi`Z}8m}xf4uA zY1&+GJ1A1Lx3!#K7oBuVW0@r=`R9`5cUuu00%F`LQC_K2F1Q9*DBVt%CUAX>VJ3-n zgxIiB4&%sa-BEUarA1sLFgxS-ebg9u!Y!~q#3svJ?2vt6d3Jh&+LnqCeDUqw!~cl| zIMo*NL7@4?#r?&_8o15l+y(bO@e+0=;vHj4h|tatNLGPj9^=CmWhEs-alrBeZ>Vnl zFQ@i{Cr?6wfe|-wSA=(Yg-H#6U+H7NSy7VSPrun-? z5hEgR`F1JB7#z{c(!E)wH6H8LHhZe9mJcw_`nyU<47Ik!`NH0`-k$ICDDBPfcRqQE z*qpBfw8VIuJ;?dMo~qK`94h4kmtd#9!~BAg+e*`$Yry-ml$eIR+hwn*~#WESKaYt)H67Jk8dIwQ$#=_E-o0-<8C$r>}2#G00SjNsc<6sO-0S< za!nv?i;2-;Zug$(ucP_3bB=&A>R7&n^;_*23ID{MKlN)}7BVI8s3M#gH*csE;Y)t3 z#@SzKSu_Lz>wQ&oE;=s!oOu0U8g3KZ3GY39eI0+@+g8;dZ%rtf%8d@!3tG0(6=6t< z*w8Yw32KV+(d;@*zT$w)hX?!i?9aW9c!BOeE|z>x6J@t!$z@NhHlnIgDFpdO==1*tZg3tLh z^>6!;hXRXk`BXFU;@zwMxkdF9e#gYOI5}N(o$ZL;HDS8&(+cF`TV1^-Ce+M|^~3Bj zw$0PW;Cyv9fAEX>a{-eK!X|qHcPhkOAw(w5El$RUnCcmDjw zu7#M%oKX|M*ju-EH<=2ZT}*8G>-@|0i*>F<+6ZO;sRasz*a(HAmnJ>S;Of#oXP#dn zjHy61omKcXz6*ZQotz+?3i-7Hv$o4#@HPk)7{OjZZ;OV}_*KW>>48D566H%5QVonB z;W+QO<+#vdO%-$8O2+FivgrIpdnOz69<~7Fs5v?yIlN;1g;oA8ak^O;f5hH?PPmJv zCON1Uzvzq?z(FCrY9yClT}>0oqShSCZR%C>bQ1-kDrrd)r7~CLYs$2Y3}#TMfie+s zi(ZLXs&HhsFlt1Bww2wYcD&4i9%9wmmvX6k5!~whZ?{OpEq%S2CO7UUpFoB<1+EKv zEtTTKV4L;uQjkBs3M8*aig#EEnK~ivi#4npcU0F+JD$zY%`x7+dj&S92z^Oht%qeH_sjdKtio1};NGxA ztc3?#eq*aY|9zS2nQK6P7>+nqESdY?bdXdSdsfw>BG8ru(HM|+jiF`$1&|*gOF3rm zHd6c)SePv!=*-c5GwX0VgiF+i=pYbek=j>zynIh$qV~Gub7*{zu_TI48wM;tU?P1N zJ7&&L9@X~^PYPHFAJWcliNmQ7K4KBw_|n(@E9L?9DFUOURuH5QY8^Ue6j2mY%P=pN zzIX2%SO!#VW}wb+PhX!FI5Q)U`R^gWpT$&1_Y#wkv_SUDangIQ;)(r4wL3VFCLqV5 zY40QW{-8>-{EM$~i%We1iD`d?Qt{q#m=Fy-0@!bGiOrDkbLOWc#MbAY&=67m7NmS1 z6y$NC?i$g-YT0CJaq*Q5)kLRq2T%kRbecUU_m(CYh))jo(a2?6G5cnB%<6njXzU5k zpZ^XTTI!D;z0B6i|2YcPX40!y=Qj8SGgCZgj+Ed@{ktsnKZ7SgIAYMXKn}FH zK#>dFtPE|NFgFo++`(p@dS>H zFw43pmI@;Rk4TZ(hH~?;jX2hKw};ni`=Z#SQ6d0B3pH z2p|(2bo@e#X9U1skj171VQ}PWfC`fW8aZVhz)wW}9}>}~pa27)55zKIY<}m7kM!4Y zFVEJ+`ZJ|UZg;g|Dm^G#aq2=B#|NsWt{R*#9s+73xOy;(*oivyvL?voros^ylKhcU zt}sZTo86yhw@GsI89GLS4lxKVVH&HUp&>*-4SAMQhsm{PXQ0;o64842uRkEFlnb?UUJiGu>RHaF|J#)q0y;R;Fd@Ic8RH<>r=XzB(G6Ws3Fcn*04%qE(W)kGq02alt4&UYl{@b-?pn7P0miq%mfXZ7#6dbyc z?!W$|!U+!~9k%A|FCkw?3+G!FKYZ}u5+tq=9!*0aNef8dtUSN>5p0!-mGvA5PK z_sh5P@kc;eB|@SbrWb|0B#zg?QxAU*7A`twK1 z>PXV$+p!zIZAJe8c zS2t@RVxOLiF)j+*YKF7b?W^OMY`U?)c9o%slV+Ki za5De2t6kV7KWQ&I>6=JM-}5y7y^kgM(4Dm9bd2VXzl$eTfDy{AZvElGNOO1Chce&w zuhHK;><`7=FEhPxbL~+5^74({Jj%+y=-i9XCel3;IWg_s5$AHW#L7wf=;`rMo7bgq zCz!tN&Tif7?{hQ1^QGv%&40+mV48qy3xlpRg8JZ*S7g*zLa%+x>d%>O!3bcZ(j~-+ zU_Ry!Q%$6wt#o&)4vCrnQ4h>vo1*LqCMx+@LLOc*_MEn%nWX;1D`}M^rKVD6o^!Z8 zDIFe`yo7#}Ph6C1Rhg>juTnD^Qd?53!ejP$oMN;qL`dPXXcmq*>gM*OrmN@BCqFjC zI$3{y?dKq|Vi7VqfN?`>G2qV3D|q=B2yx>e1GZ7b+;h0Ix9NkXofeY#;9V9K6P78z zIsB3jD8{njI}mEv4??bFh-*p2wlA?{FxK5D7P;jP$u0_LyX?fjL`_@iu=W+uZHM&VAjIPiIwY6_vMXxd~f4 zRo{iO&@OQ+aFk)uOj`1xwDReK?64$%ykOj4ZPnjg3K(#r*x}8zpJWFC*1uktt&&9D zF9XXLRctVfTHhUYFohs4R@9vbE6Vg8II^i6`xv=|zJ5wP0mF?47&N>A!joFxy{b5o%hj8rf#64h|mXAFj z|Kog1JkWwl*0fpItW36kg>!)erolWV?8YUNs^*q8-z|1d0e$)7F@^1_9eMZ#?VN8; z)7TvMrZWwz6n`>abe?LmKB@0$>dQvA!t3^~Xs3MqVZVd(l{z&?r31Q)e_`d$j4GXB zp#<0S4NbOjQjjM-Y48xbSU5l?Skkeu5}{NXi5t;N$M55JKqx6QL4wG&1p|c4v?G=~ zC?uo-z;+E*n zY3FlREWx*TW|faQU$AAPdza9EPN%{W4wJ+yR557o)fFb@+q%C=n$UI5BTFh zgWnA7^BE4vOkeA$E6JlcB<+s=dXC%0#OEy=$j_XA?-tfyc!@6{chD;&d0gk9YyPqB zO??{X!@!*%FpR7}f7QmzjPoVelvxY?gk{tVD}=bEHO17P&pRKy+u#EZAq}0xm+v<0eZ!sH!%AIOzsNwTMCjA_<5f>~eI9@X1(I8)38IMlU@At~cwHlA=tr zTRm;Z-NUMic2lz++vum*D>0p6{x%2nHdt1M!l`SI%_uLd#y{A zoh!U`Czy+U#@wAxFB5;*dYsLO#46R~h1f_Q_h(LQ%KU$Slc)&T3YhDz=N6Bq zuEAoLu_zJ97kvvp$*kT?^XDD2M?q^_S78U6ak^+KIk$4*Lb5*AgR1bLWDVRwrV#6n zg$rQv#-mG-mCAV%cP#Qp`zF+?EtZniNiT&AEj#t0-PzlGOjE1Jb8Lc#2l$N#0*+`D zANJRK34&Yvw3JMpZ7?0B>6uQMtjI}@2kz%Qv9II|5U{*KAyqaW3g#s@_ZA=i zY^{)_klW7%-6Wg9a4p~`41uVCcM?&lY!B;CG9H1@7^&<``BU(zKEARyuNTMU$&Ehb z=-jO{+`&9LK3*XRF6=ab?I|dUI!h!vQ(x&3laWBF<}v)B(nyac|Gm%Ei<0e5AyZ;L z_SY|y6ZO`xSTq*SQZJG@v?O#~bu;qO)WTdi2+~rLKitEFLkxwSZ9tIrcex{Tx@zKA zHd-t{V3E@RJt-)!vC%NgKa=5wt%KlE8)?}xFMik3YRKlBJ2(Frw=X}S6~Q z<*|cDa=K(TDljSX!~iX47ho{}9@=}e9KhVBtcG`-VcB$g_! zBe*>)W}RC)l{3q9n;%!BfU)qCFGM$i-Gx!a3`hWFZIL$Gt^F%MmHT-|?z!`;X>9(N z(CzsNv5W+>?mSc>bv*6(@g;j?{*^`@Ryg%)%@-wQBX>Q7MDB~%W>6W@IXHS=K2hHt z-(33Wv7^EfZgV7OGe7~8$ssmmJVVgxfk_@M4lUL7os?i-pX|?-~)jTt;b@BH> zO9@YpW`HePe@XaJ{+u~B3V)2W*A#>@kEVTDkL;@r_p{atb97!?F2w2~1H!}LGPtbW zdHGrZGiiSimr8^&524#%&T!*p_Fqw#GUF8L#mfgrBkMBF$t=uir+rE+?;0gtZyEmm zn(;Hu-a|VvigW#v!`9iNyi50k7siZfVlxfGD0yx-8dF` z5$~uzH~*M|R@}x!%%aHea)eMm?g&B?1r(chgg~41N!qkB&k&NWVP3OhDbat9I zu%#_xo6O9Tnh2F-F`kcm%Av*Y`Hw> zMngW8J-Ii{nf~p;+uJlk>z|Y><8s>voSjQ(hTU)UKuU!lNlpQ7c^QtHi+u!snnfHR zVq#3U7kWWuj7vc$VTWTG>@-Woe3=C`Nv(I{RZw44bxWRgT8+7PbGSjEf1qn-PZKnHw_VP3;l=-tNqofam_ObaGvlZJL%TtI!HIG zm;L$5<*H^(K6On=P2^`z!eeuC!H^Td;$@D&?D0=4lkIAqF%rD3rCn_PyKiYlo~@4X z5mBdK^g4gx0yc_Wzw%Mp6UY{zrT~(*-GU@0kJ)1^vr;=`#2$*m z1w}XeLnxogzZ^9Z$vm^Gl&o6a6tEAN7m8#1R{r<*GY^)>s?!T5o`9{WLSTNZ|1=x9mj4z(^Hg_jgb$|9?x^y+0UdbruA-`v+ z1n*i^_E0D7%u!0-XgTeSq=F?5b7F4y{^7@g#rV}o4G8=)x&_oH8oC}B6l$EZV`~%@ zJY>3gY4YF`(d$R~PVwfM1Mk&I^)ipv=Q*g?;T4y2fBkAb=F+Xrs(0i84jf0B} z_TJshj?#}&PW-VeQDnSklD0YV+aEqA-nEEcveBJ&a*k;+YR$ZqZ++0pHI*lM`$j>e;lO?t(p z>UDi6x0#^py**Pc@|VMmP153VK)x@F-OxCB_6fH4GUk^Un4@FU!jXyY;WTQEp&f8E zKaVnKGbwSDIy{Mq(6upm7di6TqNw;|6i<7zP&*OUAaBUhOjz9QnZv}~$Qw*D zGN;nGEw#$JX&hYrP1vc4>xEjbi+Q$Hqb=Z&@KMn>e?K(6g08-%v&E%fgLAspwxjo~ zJ2t6(l3>#X@u%=cRe@5bhZeOP#9G?D)lRO(93I*SB7XWuU-^Y&hB(C4V5 z3{Q4JIm)e8tmHgS8*#ex4!T5LRkMt`OZ<#HQLMwj#x;_d%F`>vTcaf&9F56}^dB0M zX}muA&SfZG zxtBQp!1=IcQq_?AVsV%q+xSLtt~tYl0KMJ;1@DQa^Px+>Bqk|}hIFdSn%gXKH|P+j zhVny>QQyjzL~1j1N_PS1>=|xZaib=Mx!DNz_vcc(sntwgj?>J21=?zPlhaYdj6)wZ z+bY+&&yz4a{Z>%&E;by~eJZTlp(9UPLR&yd(rh#;hM>iKSRpnq_3?sq2`)*s&QOMq zdPW02Ls2}_%n1a6ZhQ}`UOqAG`?W@OeOyI^Sdh2}%~vBb1=m1Wu|S{;K9O}kgwn~#go z+h5YpPyCRqq7^;3L`GVo^~g4eQycAaFiETCnVU_u1_7Mx@~kVE!FAkkd<`wxu2@&G65E%JWjE<}HHfJ76@0emAzC zi#iI580_ZOWcsezY2+2U&pGCdB?fIu3}T~vcT4z zCAgFI5d5@QcH0e*3FJ?io((=Z2o|P5@RSnUKZB__mDoD41zbzIm|C4QNmfD~B|>!` z6mStuC)lWk?WUzKBRRS6WoOzGHxJiBh9(syPG&qm&RxBrk*^|?7yz&-4b)SJT%p~m zrKwoHKrqi$(jKaI`PLFRN0u!+LSX6$d9dkuIpML4K|{S1AO0taMg<|E4sIj6F_jd^ z^kHSzU?p6&ErBB)RrONPlwB{b@EI!{>}Y?|j_}?o z%GfNH)5|R&&oA;|GG*^2#oF2*-iFju&9Yii5#smhkS+p z$H+9``N8?)`pIqG!I4rH=dp-u*4*nG%5$>F5?tG)qzYnTr~H+N-o>>@6aTc`Tbf#% zE{oq`EfnGA+gK_aq7XqzeiMw(@`{Q?Z@iDn+@4jX{9Z6Urr|L zYb!VjsKcALlyZUFgCyF_p-*9F&m-9G_x5Tn4`OQ?t zPKm>z)t{`S4Oy9E9b5aaBGdY_u;=do$hp$vUx5aj4ri4vy`gt#NcEm9|RKZhPbR`4>jz&s$G8O5f88Le<;K^_|sF|??Dg*0CQ ziPqKAT-}ljP)u?zKY?NZsXLH;b|csK9H6mStT6g(njOp;BY+`L-=Nhn;1i2WN_2c`#V(E>ZBWX} z^v7YR)zI^fjMqayYcok&xCWH2q0T1KuMOI)sW5>6rmr*yC^zY~Yj2?QB2^Fp9v&kn zCvibR0g54D1*Q`4%qTz3WVAWllcyCqHkp{1Jlk1%te?z=Jqcd`Ogjn%uuGSf-~PxH zPYt^LU{JjcI(UIl=ZizbY?XQCrCw?7vx`e)K*~%N4WTZ6Hgvh=hQ0ReYZvGV4Z`;p%OFNE~JI3gq@ z>@9OJ9It~rp(KF~@PrevQwZQ}P&elx!j<}Ocg{F>ij(TcFpfM5z@BX`cbu6OrxW+0 z{0ADUIDUagI8u`f!lpWPouK~~6qIAKs34GT;VWVd^~gdmq+2XZPHTI6WSoH(SX)51 z_z@!CC=GJ&Fxv1B4-XGWSSITY>cq)G12IlAd-C-zup&em1WXFl13iE;j@|RZsR%1H zuQYA*@3I28A~6D-ReR+RdTz*oI6}#I1^N|x?yf`x;3R>JCn93n+STPEr0@*JPy3q@ z7O+8s5CRo6a;JgYf?QL&o_$}s3PM$;p`)jzU3H;{%H6GidDE7+#$YBWze#A}nciMC z677-Z2k(|C28{;=`B2^&k4`qwP3nh3-cxjYuIFQqKt@uEZeE z{cPdh^ilzs3(~m#n{k8Li8H8`LKTxOCO0Ri-@HQB{Y}*SFn~ia1HKZ*3Njw=%^5(- zweCr?-YB3xl!2x0HW#He%k4Vw^|5{aO%Ky}=$eg>^U{2x#J_r0Kb^pkfu!-z5;Tu8sYACL`&l1P!vUMs$~Fz3shzl zEphZBd*~&r`nMWGfnPm6egKMW9VQ$o^+>HrO78Nq;tOCK#I%_{ zGI^I$HGDOfbN*stMebVY>WN!u>RZQwdyf-sJKWg!Zj^Lpd6Zya>QPf$zoOn2N2RTC zsgE3Se;yA5W7Q@mmsJuq%$*D!SVdbb;HPPP6s-D8o%O6=x5+{pl2-i_aY_P1f zbQ*X;krLEp07^wR8-}}g`;En{U&vnFlv9Gzki{yb=p$u*aw^?_zosetv618qQ+BiQplMd zuEj#YYf*u$xWLQO-2Sl}1;}K9HsS0hqRPZ!=(;*Gx6QZM5h@-b@Q-MTFB^g)*8f*`u z8;xXiQ6ZTeMzGBkIM1sdxRpF=dZSmD z{CI_zN)YyWa925>`33+_Af9^tUalBEboqFspFB>AxM#o8Qhw!6qEx^?YzCh?>u5;Z z!5W0p;t+8E8)x}ksxqSnI+}4cjM)0;j z0EG>mW55i`&rXlH0V}CQW#Ukh4o(ELC9|{!W&8Dym9#J@7(7=pXn-Qw{`XC7AM_>J zKf(B7oDRTqwDbM4mRN>HFiZexotWoL)@tWNFmp)H`pJQ$+)L&R&=Gzg$g+3f`UeiM zSXb@ahCU6wY@PhCbs$c6a~^g_qhDX{Bhk(X>Gj*UFZl7-gO_guw7+Xr7;*#X`~?Qy z2+Yp8m0%b{dzMHlh_YZiL0Rq0GRuY5!-j_-K%jZbuV2nrK)x4==}@4weC?*n$Ctne zHGw-&a+|!AUw%+B&&Rkafb~%LmkuwyASt>Z;zZE%W4DQhZZ4qS>(|kt+;_ML<_FAl z8W0qUq!k^5{GgMzI7CcQ)# z96XI(jV~LNAD2#6{@w+GJjc4pG`^HpkyqES?U)L0s$<&?!nq7S{|n6#6od{+B!y1D zJ%5?AE_;zzL+uJ{8Z%6NYd+r3jX>nUI)DCyWPBPk64=Z9Zy1wPMhZ-uHlnAONHw(n zz<(njiT^ft{l6ku{=Zq8J`0OD{aLKRLBeF=642#Jf!(~=cl$H_frkWG03fLzc$yk3 z`R_u(m&z7-Q;qPg&-5qfpnHkkkf}o@>_QjW2v3JD8f_Zpe@>mN8!2H#9y3+aagsx# z{!ehtMg#F94qZB;1K*{yNU49IqMdW}`UeE3YA3!fR2)Bd|vP%(NUbx4MWU&W&42#^Wd)*SHyT3O`aLQzV`%WHv zCQs`hRlZ!RsmIJ)OHgQ{NcZ+FB);xpbDgP8#pTw2J6hR06DHq3q*;H&eaErXWptDa z<@v_{H}2Fh?O-YMZr_p*)rnb-Po05Y&Z^d7$l+*y33l9PKg@_9#ohvjnQ0TD&Sq}W zPGHfDnfOe4_w9Vo7@n~vUT_Fc!egKKa&kN-fz$Y%*>g?R*2Sw!XJ`Nk8uAix$*rm9-TS^ey4ZP^1_=~lChV7+s@rgY? zzUyI^xaJq8_Ee&~bH}zWl+L@0?yhfNa*YA%nX|)* zQ$EMwCwUBmou{>t1JPh`P$k0LUGj>FrwuSq`HT97F)Uemnq;(EYLhGZJwHJreOli$ zdDS-V?Z*R=sr)KGE}LT1&H+iW(OQFRvC($#eDNgKk)2=kd15*%!)}3#x_1bzq^A4& z5+qnijV^GlZFKpt>k=dgX4*-daj&8^4a@Soh49;!JUXyff9@5di9-9apO9`7hvL2` z|0p5qL3q%b2*cFIfTA}@dr|%d%f=Tkt!Lv&I6MS|tCzhC9*MV!PxC_!I zB}bjR-xaC}nv*@$KSbl5Inp!Of7QgPoxeC$`polIdviwdq$j~5{gFz5SbfrN>~2Dx zO`kaL*=~Z1=P|p{vkr+Ehhna?nc6%<2j{OL-~{X3q2H(I<`_whv(fbrO+V zDR1uw?(8MzmJ%F0KJ%3r_eSG3nMq8V7M|o%}Xy7Ef+hG5P#67y}Glw;1eqrGs@Jl z_os^A=IG|qYDU_!O)r*R63R|&&S4>7g_dj7mt4m!4b{L7$LX~YxzW(Ew)9V;Ih;y$Pe@X~T-dts{qj6N*mrYc>XA8O4@ zHdzD03;q$ilDfFBr}w5aN~YBI*J)eqBn}g5Z5!fxs)|t+pO1`7iFe-Ahj@0BVRE96 z|`;n#5IHTRO zzk1zEYVZ1;t}&%@HX}1X7>KdL+GRP*%WvQ}IHZWvaIg`yBk3p49U9_sFw8gCPdbw% zB$l<%-Z2j|y<|=P;p(@tf(xnCl>S_Pm9I%vv=sP5gdEen7&R7$|M7Q z`P4jfB5?va>zLCptoNDJ_Texs`0rA=igmATly$G{{9@Wa$x~^6Ctf9;jm01RAQK0_ ziC;!jyYss5S>i$MK;k#ePuv1pgk~a@^m(5MQ7b&>4X}*l-p$wz>H5F%9ke~$yPCHr z@iZmcdyUpiB98RC>oNOQ%l7%wA$=I=-MIZ!UBjZJVs(*QN2elo@64NsJ=+KaY?+o! z5N~RuqBJC|iW;eJEzdeU@+5fb-#0YBk~{8Ye&n$=+U+$fs%OJ*q<)+iEf(bT`sw0f zBq16y^21z^)xzk$X+=q6yshIpO4cW zc-W+SKOmxtVd(2wiHc1_hR3pw4b^Jb$Ag~8YpZ2RL#N?Ms~+orx+E3?yl2jTkKy}E zwwIa4$TU^U@#M%dr<1?XY4e`UtSMrxb)CmyVm*0oTFc7Z-Vrs@ZFBj>c@&?NN%AfS zoX48#Q_RiNDj)oMg1H?;bIo$Hv=tvlPxI$`ptAQjN`V3H9&&s+>)id&9M$@nHlK16 zq8Eu8BAFe>VOw*Y{Wd#OeuHO~3-?<-EsPGuJGlPhDluO>&T_%N;t{iJuyP!5ve7)^ zZK$FR0W|Ty#~CM2G5biRjc}+SU#`ZWZtE9CjCe zpH9@4{M0H%F=~C;d3WlW(HHWBH*M;TtD{3U65Z|>%K7>Yb{Q1a?ALO~iLK)H2J=hK z^v#vu=mR5(6#5WS42~T!Rx{Jq~Hj3$b?@p`i z`fdK5cqbAC`!&ZlOg)}A{egaNzn>7uSBq1MiKxtajK)S0}Pg7;Y%vX#V> zJ9(yR1@6mImdmlV3PgLj3xuk9s4}nGeh3@xH%s`(&X-`)K;0 zO0R3FGAy5hRD)pLt=zDRz8!`MiQt0Y;*Ok6H=X>WA*A{u5+v}M#eujm`OGDfYcJs6 z*Ycm=JuRWJ3MW343gkz=0kNv^wKHAfVwN3C7D*)LToSr$zp4#F>dURZSIH}!CjK#6T@&iq!24J>-yq!RE3gu8|V7ip)@<)=9!CNEB*-S uf6f9Co-2T=MZSgveaNN%H#zt9Gn~9Uv(^N8o?9sR+?Q3A$-8It;(q{#IB8G- literal 0 HcmV?d00001 diff --git a/docs/zh/dpu_offload/figures/qtfs-arch.png b/docs/zh/dpu_offload/figures/qtfs-arch.png new file mode 100644 index 0000000000000000000000000000000000000000..40fd7e28707642801ec0b984690a25c08e092ac4 GIT binary patch literal 49089 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 literal 0 HcmV?d00001 diff --git a/docs/zh/dpu_offload/imperceptible_container_management_plane_offload.md b/docs/zh/dpu_offload/imperceptible_container_management_plane_offload.md new file mode 100644 index 0000000..6a62743 --- /dev/null +++ b/docs/zh/dpu_offload/imperceptible_container_management_plane_offload.md @@ -0,0 +1,31 @@ +# 容器管理面无感卸载介绍 + +## 概述 + +在数据中心及云场景下,随着摩尔定律失效,通用处理单元CPU算力增长速率放缓,而同时网络IO类速率及性能不断攀升,二者增长速率差异形成的剪刀差,即当前通用处理器的处理能力无法跟上网络、磁盘等IO处理的需求。传统数据中心下越来越多的通用CPU算力被IO及管理面等占用,这部分资源损耗称之为数据中心税(Data-center Tax)。据AWS统计,数据中心税可能占据数据中心算力的30%以上,部分场景下甚至可能更多。 + +DPU的出现就是为了将这部分算力资源从主机CPU上解放出来,通过将管理面、网络、存储、安全等能力卸载到专有的处理器芯片(DPU)上进行处理加速,达成降本增效的结果。目前主流云厂商如AWS、阿里云、华为云都通过自研芯片完成管理面及相关数据面的卸载,达成数据中心计算资源100%售卖给客户。 + +管理面进程卸载到DPU可以通过对组件源码进行拆分达成,将源码根据功能逻辑拆分成独立运行的两部分,分别运行在主机和DPU,达成组件卸载的目的。但是这种做法有以下问题:一是影响组件的软件兼容性,组件后续版本升级和维护需要自己维护相关patch,带来一定的维护工作量;二是卸载工作无法被其他组件继承,后续组件卸载后仍需要进行代码逻辑分析和拆分等工作。为解决上述问题,本方案提出DPU的无感卸载,通过OS提供的抽象层,屏蔽应用在主机和DPU间跨主机访问的差异,让业务进程近似0改动达成卸载到DPU运行的目标,且这部分工作属于操作系统通用层,与上层业务无关,其他业务进行DPU卸载时也可以继承。 + +## 架构介绍 + +### 容器管理面DPU无感卸载架构 + +**图1**容器管理面DPU无感卸载架构 + +![offload-arch](./figures/offload-arch.png) + +如图1所示,容器管理面卸载后,dockerd、kubelet等管理进程运行在DPU侧,容器进程本身运行在HOST,进程之间的交互关系由系统层提供对应的能力来保证: + +* 通信层:DPU和主机之间可能通过PCIe或网络进行通信,需要基于底层物理连接提供通信接口层,为上层业务提供通信接口。 + +* 内核共享文件系统qtfs:容器管理面组件kubelet、dockerd与容器进程之间的主要交互通过文件系统进行;管理面工具需要为容器进程准备rootfs、volume等数据面路径;还需要在运行时通过proc文件系统、cgroup文件系统等控制和监控容器进程的资源及状态。共享文件系统的详细介绍参考[共享文件系统介绍](qtfs-architecture-and-usage.md) + +* 用户态卸载环境:用户态需要使用qtfs为容器管理面准备卸载后的运行时环境,将主机的容器管理及运行时相关目录远程挂载到DPU;另外由于需要挂载proc、sys、cgroup等系统管理文件系统,为防止对DPU原生系统功能的破坏,上述挂载动作都在chroot环境内完成。另外管理面(运行于DPU)和容器进程(运行于主机)之间仍存在调用关系,需要通过远程二进制执行工具(rexec)提供对应功能。 + +容器管理面无感卸载的操作步骤可参考[部署指导文档](./offload-deployment-guide.md) + +> [!NOTE]说明 +> +> 上述操作指导涉及对容器管理面组件的少量改动和rexec工具修改,这些修改基于指定版本,其他版本可基于实际执行环境做适配修改。文档中提供的patch仅供验证指导使用,不具备实际商用的条件。 diff --git a/docs/zh/dpu_offload/libvirt_direct_connection_aggregation_environment_establishment.md b/docs/zh/dpu_offload/libvirt_direct_connection_aggregation_environment_establishment.md new file mode 100644 index 0000000..2540e49 --- /dev/null +++ b/docs/zh/dpu_offload/libvirt_direct_connection_aggregation_environment_establishment.md @@ -0,0 +1,369 @@ +# 直连聚合环境搭建 + +## **1** 硬件准备 + +### 测试模式 + +需准备2台物理机(虚拟机当前未试过),网络互通。 + +其中一台作为DPU模拟,另一台作为HOST模拟。在本文档中用DPU和HOST指代这两台服务器。 + +> [!NOTE]说明 +> 测试模式因为会暴露网络端口且不做连接认证,存在网络安全风险,仅能用于内部测试验证,不要用于实际生产环境。 + +### vsock模式 + +需要DPU加HOST,且DPU能支持通过virtio提供vsock通信方式。 + +目前还未基于真实的支持DPU vsock的环境调试过,本文档当前仅描述基于测试模式的方法,下面的内容依然默认使用测试模式。 + +## **2** libvirt卸载架构图 + +![arch](./figures/arch.png) + +## **3** 环境搭建 + +### **3.1** QTFS文件系统部署 + +可参考qtfs主页: + +QTFS建联需要关闭防火墙。 + +### **3.2** UDSPROXYD服务部署 + +#### 3.2.1 简介 + +udsproxyd是一个跨主机的unix domain socket代理服务,需要分别部署在host和dpu上,在host和dpu上的udsproxyd组件是对等的关系,可以实现分布在host与dpu上的2个进程之间的uds通信,通信进程是无感的,也就是说如果这两个进程在同一主机内通过uds正常通信的功能,拉远到host和dpu之间也可以,不需要做代码适配,只需要作为client的一端加一个环境变量`LD_PRELOAD=libudsproxy.so`。udsproxyd作为一个跨主机的unix socket服务,本身可以用LD_PRELOAD=libudsproxy.so的方式对接使用,在qtfs的支持下也可以无感应用,这需要提前做好白名单相关配置,具体有两种方式,将在后面详述。 + +#### 3.2.2 部署方式 + +首先,在dpu-utilities工程内编译udsproxyd: + +```bash +cd qtfs/ipc + +make -j UDS_TEST_MODE=1 && make install +``` + +当前最新版本下,qtfs server侧的engine服务已经整合了udsproxyd的能力,所以server侧若部署了qtfs后不需要再额外启动udsproxyd。client侧则单独拉起udsproxyd服务: + +```bash +nohup /usr/bin/udsproxyd 2>&1 & +``` + +参数解释: + +```bash +thread num: 线程数量,目前只支持单线程,填1. + +addr: 本机使用的ip + +port:本机占用的port + +peer addr: udsproxyd对端的ip + +peer port: 对端port +``` + +示例: + +```bash +nohup /usr/bin/udsproxyd 1 192.168.10.10 12121 192.168.10.11 12121 2>&1 & +``` + +如果未拉起qtfs的engine服务,想单独测试udsproxyd,则在server端也对等拉起udsproxyd即可: + +```bash +nohup /usr/bin/udsproxyd 1 192.168.10.11 12121 192.168.10.10 12121 2>&1 & +``` + +#### 3.2.3 应用方式 + +##### 3.2.3.1 独立使用udsproxyd服务 + +需要在使用uds服务的unix socket应用程序的client端进程启动时添加LD_PRELOAD=libudsproxy.so环境变量,以接管glibc的connect api进行uds对接,在libvirt卸载场景中可以将libudsproxy.so拷贝到libvirt的chroot目录下的/usr/lib64中以提供给libvirtd服务使用,这一步在后面介绍。 + +#### 3.2.3.2 无感使用udsproxyd服务 + +首先为qtfs配置uds服务的白名单,这里说的白名单是unix socket的server端bind的sock文件地址,例如libvirt的虚拟机建立的unix socket的服务端文件地址都在/var/lib/libvirt下,则我们需要增加一条白名单路径为/var/lib/libvirt/,提供两种方式供选择: + +a) 通过配置工具qtcfg加载,进入qtfs/qtinfo目录编译工具: + +在qtfs的client端执行 + +```bash +make role=client +make install +``` + +在qtfs的server端执行 + +```bash +make role=server +make install +``` + +配置工具将会自动安装,然后使用qtcfg命令配置白名单,假设需要增加的白名单为"/var/lib/libvirt/",输入: + +```bash +qtcfg -x /var/lib/libvirt/ +``` + +查询白名单为: + +```bash +qtcfg -z +``` + +删除白名单为: + +```bash +qtcfg -y 0 +``` + +删除白名单时,参数为查询白名单时列出来的index序号。 + +b) 通过配置文件增加,这需要在qtfs或qtfs_server内核模块加载前配置,通过内核模块初始化时读取该文件进行白名单配置。 + +> [!NOTE]说明 +> 白名单是为了防止不相干的unix socket链接也进行远程连接产生错误,或者浪费不必要的资源,所以白名单尽量设置得精确一些,比如本文中针对libvirt场景设置为/var/lib/libvirt/比较好,而直接将/var/lib/或/var/或直接将根目录加入的做法是有较大风险的。 + +### **3.3** REXEC服务部署 + +#### 3.3.1 简介 + +rexec是一个用c语言开发的远程执行组件,分为rexec client和rexec server。server端为一个常驻服务进程,client端为一个二进制文件,client端被执行后会基于udsproxyd服务与server端建立uds连接,并由server常驻进程在server端拉起指定程序。在libvirt虚拟化卸载中,libvirtd卸载到DPU上,当它需要在HOST拉起虚拟机qemu进程时调起rexec client进行远程拉起。 + +#### 3.3.2 部署方法 + +##### 3.3.2.1 配置环境变量与白名单 + +在host侧配置rexec server的白名单,将文件whitelist放置在/etc/rexec/目录下并修改权限为只读: + +```bash +chmod 400 /etc/rexec/whitelist +``` + +如果想仅用于测试,可以不进行白名单配置,删除此文件重启rexec_server进程后则没有白名单限制。 + +下载dpu-utilities代码后,进入qtfs/rexec主目录下,执行:`make && make install`即可安装rexec所需全部二进制到/usr/bin目录下,包括了:`rexec、rexec_server`两个二进制可执行文件。 + +在server端启动rexec_server服务之前,检查是否存在/var/run/rexec目录,没有则创建: + +```bash +mkdir /var/run/rexec +``` + +##### 3.3.2.2 服务方式 + +server端可以通过两种方式拉起rexec_server服务。 + +- 方式1: + +配置systemd服务 + +在/usr/lib/systemd/system/下增加rexec.service文件,内容如下: + +[rexec.service](./config/rexec.service) + +然后通过systemctl管理rexec服务。 + +首次配置服务时: + +```bash +systemctl daemon-reload + +systemctl enable --now rexec +``` + +后续重启新启动服务: + +```bash +systemctl stop rexec + +systemctl start rexec +``` + +- 方式2: + +手动后台拉起 + +```bash +nohup /usr/bin/rexec_server 2>&1 & +``` + +### **3.4** libvirt服务部署 + +#### 3.4.1 HOST侧部署 + +HOST无需额外部署,只需要安装虚拟机启动环境以及libvirt即可(安装libvirt主要是为了创建对应的目录): + +```bash +yum install -y qemu libvirt edk2-aarch64 #(arm环境虚拟机启动需要) +``` + +HOST需要放置虚拟机镜像,后面通过qtfs挂载到client端共享给libvirt。 + +#### 3.4.2 DPU侧部署 + +##### 3.4.2.1 创建chroot环境 + +a) 从openEuler官网下载qcow镜像,例如23.09版本。 + +b) 将qcow2挂载出来: + +```bash +cd /root/ + +mkdir p2 new_root_origin new_root + +modprobe nbd maxport=8 + +qemu-nbd -c /dev/nbd0 xxx.qcow2 + +mount /dev/nbd0p2 /root/p2 + +cp -rf /root/p2/* /root/new_root_origin/ + +umount /root/p2 + +qemu-nbd -d /dev/nbd0 +``` + +c) 此时new_root_origin有解压出来的镜像根目录,再将new_root绑定挂载到该目录上,作为chroot的根目录挂载点: + +```bash +mount --bind /root/new_root_origin /root/new_root +``` + +##### 3.4.2.2 安装libvirt + +此处介绍patch方式源码编译,如果计算提供rpm包则参考计算提供的安装方法。 + +a) 进入chroot环境,安装编译环境和常用工具: + +```bash +yum groupinstall "Development tools" -y +yum install -y vim meson qemu qemu-img strace edk2-aarch64 tar +``` + +其中edk2-aarch64是arm环境下虚拟机启动需要的。 + +b) 安装libvirt编译需要的依赖包: + +```bash +yum install -y rpcgen python3-docutils glib2-devel gnutls-devel libxml2-devel libpciaccess-devel libtirpc-devel yajl-devel systemd-devel dmidecode glusterfs-api numactl +``` + +c) 下载libvirt-x.x.x。源码包:。 + +d) 获取直连聚合libvirt patch: + + + +e) 将源码包解压到chroot环境下的目录,如/home。将patch打上。 + +f) 进入libvirt-x.x.x目录。 + +```bash +meson build --prefix=/usr -Ddriver_remote=enabled -Ddriver_network=enabled -Ddriver_qemu=enabled -Dtests=disabled -Ddocs=enabled -Ddriver_libxl=disabled -Ddriver_esx=disabled -Dsecdriver_selinux=disabled -Dselinux=disabled +``` + +g) 安装成功 + +```bash +ninja -C build install +``` + +##### 3.4.2.3 启动libvirtd服务 + +libvirt直连聚合卸载模式,需要从chroot内启动libvirtd服务,首先需要把chroot之外的libvirtd服务停掉。 + +a) 放置虚拟机跳板脚本在chroot环境下的/usr/bin和/usr/libexec下:[qemu-kvm](./scripts/qemu-kvm)。替换原同名二进制,这个跳板脚本就是用于调用rexec拉起远端虚拟机。 + +> [!NOTE]说明 +> virsh使用的xml中,\下面的\需要填qemu-kvm,如果是填的其他,则需要修改为qemu-kvm,或者将跳板脚本替换\指代的二进制,且跳板脚本内容需要对应地更改。 + +b) 将udsproxyd编译时附带产生的libudsproxy.so拷贝到本chroot目录下/usr/lib64下,如果配置qtfs的uds白名单方式使用udsproxyd服务,则不需要。 + +c) 将前面rexec编译产生的rexec二进制放置到本chroot的/usr/bin/目录下。 + +d) 配置chroot的挂载环境,需要挂载一些目录,使用如下配置脚本: + +- [virt_start.sh](./scripts/virt_start.sh)为配置脚本,virt_start.sh脚本中需要手动修改qtfs ko dir为编译的ko位置,host ip address为正确的host地址。 + +- [virt_umount.sh](./scripts/virt_umount.sh)为消除配置脚本。 + +e) 脚本中挂载目录位置都是按照本文档前文创建目录位置与名称为准,如果有修改需要同步适配修改脚本。 + +f) 配置好chroot环境后,进入chroot环境,手动拉起libvirtd。 + +未配置qtfs使用udsproxyd白名单的拉起方式: + +```bash +LD_PRELOAD=/usr/lib64/libudsproxy.so virtlogd -d +LD_PRELOAD=/usr/lib64/libudsproxy.so libvirtd -d +```` + +如果已配置qtfs使用udsproxyd白名单,则不需要增加LD_PRELOAD前缀: + +```bash +virtlogd -d +libvirtd -d +``` + +查看是否已配置白名单的方式,在chroot之外的窗口,执行: + +```bash +qtcfg -z +``` + +查看列举出来的白名单是否包含/var/lib/libvirt/。 + +### **3.5** 拉起虚拟机 + +服务部署完成后,即可以在DPU侧进行虚拟机的生命周期管理。 + +#### 3.5.1 虚拟机define + +a) 将虚拟机启动镜像放置在HOST侧某目录,例如: + +```bash +/home/VMs/Domain_name +``` + +b) 使用qtfs将这个目录挂载到DPU侧: + +```bash +mount -t qtfs /home/VMs /home/VMs +``` + +c) xml中使用`/home/VMs/Domain_name`作为启动镜像,这样在DPU和HOST侧看到的都是同一个镜像文件(Domain_name是虚拟机domain的名字)。 + +d) 检查xml中\是否指向了跳板脚本。 + +e) 执行以下命令。 + +```bash +virsh define xxx.xml +``` + +#### 3.5.2 虚拟机start + +```bash +virsh start domain +``` + +## **4** 环境重置 + +由于libvirt在DPU和HOST之间共享了部分目录,卸载环境时需要先将这部分目录全部umount。一般先停掉libvirtd和virtlogd进程,调用virt_umount脚本即可。如果HOST还有虚拟机运行,也需要先杀掉才能umount。 + +## **5** 部分问题定位思路 + +1、 libvirt编译失败:检查依赖包安装是否完全,如果chroot挂载了外部目录或者host目录,也可能导致编译失败,需先解除挂载。 + +2、 QTFS挂载失败:可能server端engine进程没拉起、防火墙没关导致qtfs建联失败。 + +3、 虚拟机define失败:检查xml里的项目仿真器是否指向跳板脚本、虚拟机镜像是否已经通过qtfs挂载到DPU上可见,且路径与HOST一致。 + +4、 虚拟机启动失败:libvirtd和virtlogd服务是否拉起、rexec服务是否拉起、跳板进程是否拉起、是否qemu-kvm拉起时报错。 diff --git a/docs/zh/dpu_offload/offload_deployment_guide.md b/docs/zh/dpu_offload/offload_deployment_guide.md new file mode 100644 index 0000000..c3a0b07 --- /dev/null +++ b/docs/zh/dpu_offload/offload_deployment_guide.md @@ -0,0 +1,166 @@ +# 容器管理面无感卸载部署指导 + +> [!NOTE]说明 +> +> 本指导涉及对容器管理面组件的少量改动和rexec工具修改,这些修改基于指定版本,其他版本可基于实际执行环境做适配修改。文档中提供的patch仅供验证指导使用,不具备实际商用的条件。 +> +> 当前共享文件系统之间通信通过网络完成,可通过网络互连的两台物理机器或VM模拟验证。 +> +> 建议用户验证前先搭建可正常使用的kubernetes集群和容器运行环境,针对其中单个节点的管理面进程进行卸载验证,卸载环境(DPU)可选择一台具备网络连接的物理机或VM。 + +## 简介 + +容器管理面,即kubernetes、dockerd、containerd、isulad等容器的管理工具,而容器管理面卸载,即是将容器管理面卸载到与容器所在机器(以下称为HOST)之外的另一台机器(当前场景下是指DPU,一个具备独立运行环境的硬件集合)上运行。 + +我们使用共享文件系统qtfs将HOST上与容器运行相关的目录挂载到DPU上,使得容器管理面工具(运行在DPU)可以访问到这些目录,并为容器(运行在HOST)准备运行所需要的环境,此处,因为需要挂载远端的proc和sys等特殊文件系统,所以,我们创建了一个专门的rootfs以作为kubernetes、dockerd的运行环境(以下称为`/another_rootfs`)。 + +并且通过rexec执行容器的拉起、删除等操作,使得可以将容器管理面和容器分离在不同的两台机器上,远程对容器进行管理。 + +## 相关组件补丁介绍 + +### rexec介绍 + +rexec是一个用go语言开发的远程执行工具,基于docker/libchan下的[rexec](https://github.com/docker/libchan/tree/master/examples/rexec)示例工具改造而成,实现远程调用远端二进制的功能,为方便使用在rexec中增加了环境变量传递和监控原进程退出等能力。 + +rexec工具的具体使用方式为在服务器端用`CMD_NET_ADDR=tcp://0.0.0.0:<端口号> rexec_server`的方式拉起rexec服务进程,然后在客户端用`CMD_NET_ADDR=tcp://<服务端ip>:<端口号> rexec [要执行的指令]`的方式启动,便可以调用rexec_server执行需要执行的指令,并等待指令执行结果返回。 + +### dockerd相关改动介绍 + +对dockerd的改动基于18.09版本。 + +在containerd中,暂时注释掉了通过hook调用libnetwork-setkey的部分,此处不影响容器的拉起。并且,为了docker load的正常使用,注释掉了在mounter_linux.go 中mount函数中一处错误的返回。 + +最后,因为在容器管理面的运行环境中,将`/proc`挂在了服务端的proc文件系统,而本地的proc文件系统则挂载在了`/local_proc`,所以,dockerd以及containerd中的对`/proc/self/xxx`或者`/proc/getpid()/xxx`或者相关的文件系统访问的部分,我们统统将`/proc`改为了`/local_proc`。 + +### containerd相关改动介绍 + +对于containerd的改动基于containerd-1.2-rc.1版本。 + +在获取mountinfo时,因为`/proc/self/mountinfo`只能获取到dockerd本身在本地的mountinfo,而无法获取到服务端的mountinfo,所以,将其改为了`/proc/1/mountinfo`,使其通过获取服务端1号进程mountinfo的方式得到服务端的mountinfo。 + +在contaienrd-shim中,将与containerd通信的unix socket改为了用tcp通信,containerd通过`SHIM_HOST`环境变量获取containerd-shim所运行环境的ip,即服务端ip。用shim的哈希值计算出一个端口号,并以此作为通信的端口,来拉起containerd-shim. + +并且,将原来的通过系统调用给contaienr-shim发信号的方式,改为了通过远程调用kill指令的方式向shim发信号,确保了docker杀死容器的行为可以正确的执行。 + +### kubernetes相关改动介绍 + +kubelet暂不需要功能性改动,可能会遇到容器QoS管理器首次设置失败的错误,该错误不影响后续Pods拉起流程,暂时忽略该报错。 + +## 容器管理面卸载操作指南 + +在服务器端和客户端,都要拉起rexec_server。服务器端拉起rexec_server,主要是用于客户端创建容器时用rexec拉起containerd-shim,而客户端拉起rexec_server,则是为了执行containerd-shim对dockerd和containerd的调用。 + +### 服务器端 + +创建容器管理面所需要的文件夹,然后插入qtfs_server.ko,并拉起engine进程。 + +此外在服务器端,还需要创建rexec脚本/usr/bin/dockerd. + +``` shell +#!/bin/bash +CMD_NET_ADDR=tcp://<客户端ip>: rexec /usr/bin/dockerd $* +``` + +### 客户端 + +需要准备一个rootfs,作为dockerd与containerd的运行环境,通过如下的脚本,将dockerd、containerd所需要的服务端目录挂载到客户端。并且,需要确保在以下脚本中被挂载的远程目录在服务端和客户端都存在。 + +``` shell +#!/bin/bash +mkdir -p /another_rootfs/var/run/docker/containerd +iptables -t nat -N DOCKER +echo "---------insmod qtfs ko----------" +insmod /YOUR/QTFS/PATH/qtfs.ko qtfs_server_ip=<服务端ip> qtfs_log_level=INFO + +# chroot环境内的proc使用DPU的proc共享文件系统替换,需要将本机真实proc文件系统挂载到local_proc下使用 +mount -t proc proc /another_rootfs/local_proc/ + +# 将chroot内环境与外部环境bind,方便进行配置和运行 +mount --bind /var/run/ /another_rootfs/var/run/ +mount --bind /var/lib/ /another_rootfs/var/lib/ +mount --bind /etc /another_rootfs/etc + +mkdir -p /another_rootfs/var/lib/isulad + +# 在chroot环境内创建并挂载dev、sys和cgroup文件系统 +mount -t devtmpfs devtmpfs /another_rootfs/dev/ +mount -t sysfs sysfs /another_rootfs/sys +mkdir -p /another_rootfs/sys/fs/cgroup +mount -t tmpfs tmpfs /another_rootfs/sys/fs/cgroup +list="perf_event freezer files net_cls,net_prio hugetlb pids rdma cpu,cpuacct memory devices blkio cpuset" +for i in $list +do + echo $i + mkdir -p /another_rootfs/sys/fs/cgroup/$i + mount -t cgroup cgroup -o rw,nosuid,nodev,noexec,relatime,$i /another_rootfs/sys/fs/cgroup/$i +done + +## common system dir +mount -t qtfs -o proc /proc /another_rootfs/proc +echo "proc" +mount -t qtfs /sys /another_rootfs/sys +echo "cgroup" + +# 挂载容器管理面所需要的共享目录 +mount -t qtfs /var/lib/docker/containers /another_rootfs/var/lib/docker/containers +mount -t qtfs /var/lib/docker/containerd /another_rootfs/var/lib/docker/containerd +mount -t qtfs /var/lib/docker/overlay2 /another_rootfs/var/lib/docker/overlay2 +mount -t qtfs /var/lib/docker/image /another_rootfs/var/lib/docker/image +mount -t qtfs /var/lib/docker/tmp /another_rootfs/var/lib/docker/tmp +mkdir -p /another_rootfs/run/containerd/io.containerd.runtime.v1.linux/ +mount -t qtfs /run/containerd/io.containerd.runtime.v1.linux/ /another_rootfs/run/containerd/io.containerd.runtime.v1.linux/ +mkdir -p /another_rootfs/var/run/docker/containerd +mount -t qtfs /var/run/docker/containerd /another_rootfs/var/run/docker/containerd +mount -t qtfs /var/lib/kubelet/pods /another_rootfs/var/lib/kubelet/pods +``` + +在/another_rootfs中,需要创建以下脚本,用来支持部分跨主机操作。 + +* /another_rootfs/usr/local/bin/containerd-shim + +``` shell +#!/bin/bash +CMD_NET_ADDR=tcp://<服务端ip>: /usr/bin/rexec /usr/bin/containerd-shim $* +``` + +* /another_rootfs/usr/local/bin/remote_kill + +``` shell +#!/bin/bash +CMD_NET_ADDR=tcp://<服务端ip>: /usr/bin/rexec /usr/bin/kill $* +``` + +* /another_rootfs/usr/sbin/modprobe + +``` shell +#!/bin/bash +CMD_NET_ADDR=tcp://<服务端ip>: /usr/bin/rexec /usr/sbin/modprobe $* +``` + +在chroot到dockerd和containerd运行所需的rootfs后,用如下的命令拉起dockerd和containerd + +* containerd + +``` shell +#!/bin/bash +SHIM_HOST=<服务端ip> containerd --config /var/run/docker/containerd/containerd.toml --address /var/run/containerd/containerd.sock +``` + +* dockerd + +``` shell +#!/bin/bash +SHIM_HOST=<服务端ip> CMD_NET_ADDR=tcp://<服务端ip>: /usr/bin/dockerd --containerd /var/run/containerd/containerd.sock +``` + +* kubelet + +在chroot环境内使用原参数拉起kubelet即可。 + +因为我们已经将/var/run/和/another_rootfs/var/run/绑定在了一起,所以可以在正常的rootfs下,通过docker来访问docker.sock接口进行容器管理。 + +至此,完成容器管理面卸载到DPU,可以通过docker相关操作进行容器创建、删除等操作,也可以通过kubectl在当前节点进行pods调度和销毁,且实际容器业务进程运行在HOST侧。 + +> [!NOTE]说明 +> +> 本指导所述操作只涉及容器管理面进程卸载,不包含容器网络和数据卷volume等卸载,如有相关需求,需要通过额外的网络或存储卸载能力支持。本指导支持不带网络和存储的容器跨节点拉起。 diff --git a/docs/zh/dpu_offload/overview.md b/docs/zh/dpu_offload/overview.md new file mode 100644 index 0000000..4f4ee65 --- /dev/null +++ b/docs/zh/dpu_offload/overview.md @@ -0,0 +1,11 @@ +# 容器管理面DPU无感卸载指南 + +本文档介绍基于openEuler操作系统的容器管理面DPU无感卸载功能特性及安装部署方法,该特性可以通过操作系统提供的统一抽象层,屏蔽容器管理面跨主机资源访问的差异,实现容器管理面业务无感卸载到DPU上。 + +本文档适用于使用openEuler系统并希望了解和使用操作系统内核及容器的社区开发者、开源爱好者以及相关合作伙伴。使用人员需要具备以下经验和技能: + +- 熟悉Linux基本操作 + +- 熟悉linux内核文件系统相关基础机制 + +- 对kubernetes和docker有一定了解,熟悉docker及kubernetes部署及使用。 diff --git a/docs/zh/dpu_offload/qtfs_architecture_and_usage.md b/docs/zh/dpu_offload/qtfs_architecture_and_usage.md new file mode 100644 index 0000000..fc24e9c --- /dev/null +++ b/docs/zh/dpu_offload/qtfs_architecture_and_usage.md @@ -0,0 +1,67 @@ +# qtfs + +## 介绍 + +qtfs是一个共享文件系统项目,可部署在host-dpu的硬件架构上,也可以部署在2台服务器之间。以客户端服务器的模式工作,使客户端能通过qtfs访问服务端的指定文件系统,得到本地文件访问一致的体验。 + +qtfs的特性: + ++ 支持挂载点传播; + ++ 支持proc、sys、cgroup等特殊文件系统的共享; + ++ 支持远程文件读写的共享; + ++ 支持在客户端对服务端的文件系统进行远程挂载; + ++ 支持特殊文件的定制化处理; + ++ 支持远端fifo、unix-socket等,并且支持epoll,使客户端和服务端像本地通信一样使用这些文件; + ++ 支持基于host-dpu架构通过PCIe协议底层通信,性能大大优于网络; + ++ 支持内核模块形式开发,无需对内核进行侵入式修改。 + +## 软件架构 + +软件大体框架图: + +![qtfs-arch](./figures/qtfs-arch.png) + +## 安装教程 + +目录说明: + ++ **qtfs**: 客户端内核模块相关代码,直接在该目录下编译客户端ko。 + ++ **qtfs_server**: 服务端内核模块相关代码,直接在该目录下编译服务端ko和相关程序。 + ++ **qtinfo**: 诊断工具,支持查询文件系统的工作状态以及修改log级别等。 + ++ **demo**、**test**、**doc**: 测试程序、演示程序以及项目资料等。 + ++ 根目录: 客户端与服务端通用的公共模块代码。 + +首先找两台服务器(或虚拟机)配置内核编译环境: + +1. 要求内核版本在5.10或更高版本。 +2. 安装内核开发包:yum install kernel-devel。 + +服务端安装: + +1. cd qtfs_server +2. make clean && make +3. insmod qtfs_server.ko qtfs_server_ip=x.x.x.x qtfs_server_port=12345 qtfs_log_level=WARN +4. ./engine 4096 16 + +客户端安装: + +1. cd qtfs +2. make clean && make +3. insmod qtfs.ko qtfs_server_ip=x.x.x.x qtfs_server_port=12345 qtfs_log_level=WARN + +## 使用说明 + +安装完成后,客户端通过挂载把服务端的文件系统让客户端可见,例如:`mount -t qtfs / /root/mnt/` + +客户端进入"/root/mnt"后便可查看到server端的所有文件,以及对其进行相关操作。 diff --git a/docs/zh/dpu_offload/scripts/qemu-kvm b/docs/zh/dpu_offload/scripts/qemu-kvm new file mode 100644 index 0000000..e869371 --- /dev/null +++ b/docs/zh/dpu_offload/scripts/qemu-kvm @@ -0,0 +1,3 @@ +#!/bin/bash + +exec /usr/bin/rexec /usr/bin/qemu-kvm $* diff --git a/docs/zh/dpu_offload/scripts/virt_start.sh b/docs/zh/dpu_offload/scripts/virt_start.sh new file mode 100644 index 0000000..06ca194 --- /dev/null +++ b/docs/zh/dpu_offload/scripts/virt_start.sh @@ -0,0 +1,48 @@ +#!/bin/bash +insmod ./qtfs.ko qtfs_server_ip=192.168.10.11 qtfs_log_level=NONE + +systemctl stop libvirtd + +if [ ! -d "/root/new_root/local_proc" ]; then + mkdir -p /root/new_root/local_proc +fi +if [ ! -d "/root/new_root/local" ]; then + mkdir -p /root/new_root/local +fi +mount -t proc proc /root/new_root/local_proc/ +mount -t proc proc /root/new_root/local/proc +mount -t sysfs sysfs /root/new_root/local/sys +mount --bind /var/run/ /root/new_root/var/run/ +mount --bind /var/lib/ /root/new_root/var/lib/ +mount --bind /var/cache/ /root/new_root/var/cache +mount --bind /etc /root/new_root/etc + +mkdir -p /root/new_root/home/VMs/ +mount -t qtfs /home/VMs/ /root/new_root/home/VMs/ + +mount -t qtfs /var/lib/libvirt /root/new_root/var/lib/libvirt + +mount -t devtmpfs devtmpfs /root/new_root/dev/ +mount -t hugetlbfs hugetlbfs /root/new_root/dev/hugepages/ +mount -t mqueue mqueue /root/new_root/dev/mqueue/ +mount -t tmpfs tmpfs /root/new_root/dev/shm + +mount -t sysfs sysfs /root/new_root/sys +mkdir -p /root/new_root/sys/fs/cgroup +mount -t tmpfs tmpfs /root/new_root/sys/fs/cgroup +list="perf_event freezer files net_cls,net_prio hugetlb pids rdma cpu,cpuacct memory devices blkio cpuset" +for i in $list +do + echo $i + mkdir -p /root/new_root/sys/fs/cgroup/$i + mount -t cgroup cgroup -o rw,nosuid,nodev,noexec,relatime,$i /root/new_root/sys/fs/cgroup/$i +done + +## common system dir +mount -t qtfs -o proc /proc /root/new_root/proc +echo "proc" + +mount -t qtfs /sys /root/new_root/sys +echo "cgroup" +mount -t qtfs /dev/pts /root/new_root/dev/pts +mount -t qtfs /dev/vfio /root/new_root/dev/vfio diff --git a/docs/zh/dpu_offload/scripts/virt_umount.sh b/docs/zh/dpu_offload/scripts/virt_umount.sh new file mode 100644 index 0000000..4adddec --- /dev/null +++ b/docs/zh/dpu_offload/scripts/virt_umount.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +umount /root/new_root/dev/hugepages +umount /root/new_root/etc +umount /root/new_root/home/VMs +umount /root/new_root/local_proc +umount /root/new_root/local/proc +umount /root/new_root/var/lib/libvirt +umount /root/new_root/var/lib +umount /root/new_root/* +umount /root/new_root/dev/pts +umount /root/new_root/dev/mqueue +umount /root/new_root/dev/shm +umount /root/new_root/dev/vfio +umount /root/new_root/dev +rmmod qtfs + +umount /root/new_root/sys/fs/cgroup/* +umount /root/new_root/sys/fs/cgroup +umount /root/new_root/sys diff --git a/docs/zh/dpu_os/_toc.yaml b/docs/zh/dpu_os/_toc.yaml new file mode 100644 index 0000000..46bee7c --- /dev/null +++ b/docs/zh/dpu_os/_toc.yaml @@ -0,0 +1,10 @@ +label: DPU_OS +isManual: true +description: 介绍基于openEuler操作系统裁剪构建DPU_OS镜像的方法以及部署验证方法 +sections: + - label: DPU_OS背景与需求 + href: ./dpu_os_background_and_requirements.md + - label: DPU_OS裁剪指导 + href: ./dpu_os_tailoring_guide.md + - label: 验证与部署 + href: ./verification_and_deployment.md diff --git a/docs/zh/dpu_os/dpu_os_background_and_requirements.md b/docs/zh/dpu_os/dpu_os_background_and_requirements.md new file mode 100644 index 0000000..e960864 --- /dev/null +++ b/docs/zh/dpu_os/dpu_os_background_and_requirements.md @@ -0,0 +1,67 @@ +# DPU-OS背景与需求 + +## 概述 + +在数据中心及云场景下,摩尔定律失效,通用处理单元CPU算力增长速率放缓,而网络IO类速率及性能不断攀升,二者增长速率差异形成剪刀差,即当前通用处理器的处理能力无法跟上网络、磁盘等IO处理的需求。传统数据中心下越来越多的通用CPU算力被IO及管理面等处理占用,这部分资源损耗称之为数据中心税(Datacenter Tax)。据AWS统计,数据中心税可能占据数据中心算力的30%以上,部分场景下甚至可能更多。 + +DPU (Data Processing Unit) 的出现就是为了将这部分算力资源从主机CPU上解放出来,通过将管理面、网络、存储、安全等能力卸载到专有的处理器芯片上进行处理加速,达成降本增效的结果。目前主流云厂商如AWS、阿里云、华为云都通过自研芯片完成管理面及相关数据面的卸载,实现数据中心计算资源100%售卖给客户。 + +目前DPU发展非常火热,云厂商及大数据在相关场景下对DPU存在较强烈的需求,国内也有很多DPU初创公司推出不同的DPU产品。在这一背景下,云和大数据等厂商需要考虑如何整合使用不同DPU产品,而DPU厂商也面临对不同客户交付时设备驱动适配客户指定操作系统的问题。openEuler作为国内领先的开源开放操作系统,通过基于openEuler构建的DPU-OS,解决DPU厂商及客户之间的适配问题。另外DPU上OS用于承载部分业务加速的需求,需要对DPU-OS进行性能优化加速,可以基于openEuler构建DPU相关加速能力,内置在DPU-OS中,构建DPU相关软件生态。 + +## DPU-OS需求分析及设计 + +### DPU现状及对OS需求 + +DPU普遍具有以下特点和问题: + +* DPU通用处理能力资源受限 + + 当前DPU仍处在发展早期阶段,硬件上仍在不断演进,而且由于DPU供电限制,当前硬件规格普遍较低。主流DPU中通用处理器CPU核数普遍较少,约8-24CPU,且单核处理能力较弱。内存大小受限,普遍在16-32GB。DPU本地存储空间为几十到几百GB不等。运行于DPU之上的操作系统也需要考虑这些限制。 + +* DPU-OS安装方式多样 + + 当前DPU厂商及产品多种多样,对应操作系统的安装部署方式也不尽相同,包括PXE网络安装、U盘安装或其他自定义安装方式(由HOST下发安装镜像)。 + +* DPU性能需求 + + DPU的应用场景决定其对性能有强烈需求,相比于通用服务器操作系统,DPU-OS可能对内核特性或功能组件有特殊要求,比如用于设备直通热迁移的vDPA特性、厂商特定驱动适配支持、DPU进程的无感卸载特性、定制优化的用户态数据面加速工具如DPDK/SPDK/OVS、DPU管理监控相关的工具类组件。 + +针对以上DPU现状,提出对DPU-OS的需求如下: + +* 极致轻量的DPU-OS安装包 + + 通过裁剪openEuler系统镜像,减少非必要安装包的空间占用;通过优化系统服务,减少资源底噪开销。 + +* 裁剪配置及工具支持 + + 提供裁剪配置及裁剪工具支持,客户或DPU厂商可根据各自需求进行定制;openEuler提供ISO参考实现。 + +* 定制化内核及系统,提供极致性能 + + 通过定制内核及相关驱动,提供DPU竞争力内核特性;定制化加速类组件,使能DPU硬件加速能力;优化系统配置提供更优性能;通过DPU相关管理控制工具,方便用户统一管理。 + +### DPU-OS设计 + +**图1**DPU-OS整体设计 + +![dpuos-arch](./figures/dpuos-arch.png) + +如图1所示,DPU-OS分为五层设计: + +* 内核层:通过定制内核config,裁剪非必需内核特性及模块,达成内核轻量级效果;使能特定内核特性提供高性能DPU内核能力。 + +* 驱动层:对openEuler原生驱动进行裁剪定制,选择最小集合;DPU厂商相关底层驱动集成,原生支持部分DPU硬件产品。 + +* 系统配置层:通过对系统sysctl、proc进行配置,为DPU相关业务提供最优性能。 + +* 外围包层:对openEuler外围包进行裁剪定制,选择最小集合;提供DPU相关的定制工具集合。 + +* 系统服务层:通过优化系统原生服务启动项,减少非必要系统服务运行,保证系统运行时底噪最小化。 + +通过上述五层设计达成轻量化、极致性能DPU-OS的目标。该方案为相对长期设计,且对DPU相关软硬件生态有较强的依赖;当前第一阶段先实现基于openEuler imageTailor进行裁剪。 + +DPU-OS的裁剪步骤可参考[DPU-OS裁剪指导文档](./dpu-os-tailoring-guide.md),验证与部署可参考[DPU-OS部署验证指导文档](./verification-and-deployment.md)。 + +> [!NOTE]说明 +> +> 当前阶段DPU-OS先基于openEuler现有内核及外围包,使用镜像裁剪工具imageTailor进行裁剪,提供轻量化OS安装镜像。后续可根据实际诉求,进行相关内核及外围包特性的开发及集成。 diff --git a/docs/zh/dpu_os/dpu_os_tailoring_guide.md b/docs/zh/dpu_os/dpu_os_tailoring_guide.md new file mode 100644 index 0000000..e42110e --- /dev/null +++ b/docs/zh/dpu_os/dpu_os_tailoring_guide.md @@ -0,0 +1,65 @@ +# DPU-OS裁剪指导 + +本文档主要介绍`imageTailor`的使用方法并结合[dpu-utilities仓库](https://gitee.com/openeuler/dpu-utilities/tree/master/dpuos)的`dpuos`配置文件裁剪得到`dpuos`的安装镜像,具体步骤如下: + +## 准备imageTailor和所需的rpm包 + +参照[imageTailor使用指导文档](https://docs.openeuler.org/zh/docs/22.03_LTS/docs/TailorCustom/imageTailor%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97.html)安装好`imageTailor`工具并将裁剪所要用到的rpm包准备好。 + +可以使用openEuler提供安装镜像作为镜像裁剪所需要rpm包源,`openEuler-{version}-everything-debug-aarch64-dvd.iso`中的rpm比较全但是此镜像很大,可以用镜像`openEuler-{version}-aarch64-dvd.iso`中的rpm包和一个`install-scripts.noarch`实现。 + +`install-scripts.noarch`包括可以从everything包中获取,或者在系统中通过yum下载: + +```bash +yum install -y --downloadonly --downloaddir=./ install-scripts +``` + +## 拷贝dpuos相关的配置文件 + +`imageTailor`工具默认安装在`/opt/imageTailor`路径下。执行下面的命令将`dpuos`的配置拷贝到对应的路径下,拷贝时选择对应架构目录。当前DPU-OS裁剪配置库支持x86_64和aarch64两种架构。 + +```bash +cp -rf custom/cfg_dpuos /opt/imageTailor/custom +cp -rf kiwi/minios/cfg_dpuos /opt/imageTailor/kiwi/minios/cfg_dpuos +``` + +## 修改其他配置文件 + +* 修改`kiwi/eulerkiwi/product.conf`,增加一行`dpuos`相关配置: + +```bash +dpuos PANGEA EMBEDDED DISK GRUB2 install_mode=install install_media=CD install_repo=CD selinux=0 +``` + +* 修改`kiwi/eulerkiwi/minios.conf`,增加一行`dpuos`的相关配置: + +```bash +dpuos kiwi/minios/cfg_dpuos yes +``` + +* 修改`repos/RepositoryRule.conf`,增加一行`dpuos`的相关配置: + +```bash +dpuos 1 rpm-dir euler_base +``` + +## 设置密码 + +进入到`/opt/imageTailor`子目录下,修改下面3个文件的密码: + +* `custom/cfg_dpuos/usr_file/etc/default/grub` + +* `custom/cfg_dpuos/rpm.conf` + +* `kiwi/minios/cfg_dpuos/rpm.conf` + +密码生成及修改方法可详见openEuler imageTailor手册[配置初始密码](https://docs.openeuler.org/zh/docs/22.03_LTS/docs/TailorCustom/imageTailor%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97.html#%E9%85%8D%E7%BD%AE%E5%88%9D%E5%A7%8B%E5%AF%86%E7%A0%81)章节。 + +## 执行裁剪命令 + +执行下面的命令进行裁剪,最后裁剪出来的iso在`/opt/imageTailor/result`路径下: + +```bash +cd /opt/imageTailor +./mkdliso -p dpuos -c custom/cfg_dpuos --sec --minios force +``` diff --git a/docs/zh/dpu_os/figures/dpuos-arch.png b/docs/zh/dpu_os/figures/dpuos-arch.png new file mode 100644 index 0000000000000000000000000000000000000000..453370ab07858a13a6c40f8d22e3f608e9ec6b4c GIT binary patch literal 63987 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