---
title: 启动服务并压测
description: "以DeepFM模型为例，首先获取DeepFM模型，之后用TF-Serving部署DeepFM模型，最后创建Docker容器并使用perf_analyzer进行压测。"
url: https://www.hikunpeng.com/document/detail/zh/SRA/ecosystemEnable/TensorFlowServing/kunpengtfserving_02_0012.html
sourcePath: /source/zh/SRA/ecosystemEnable/TensorFlowServing/kunpengtfserving_02_0012.html
indexId: 2a8fb229c96b7612500fdb80237e232f9ebe4075da8ab25e732abe809179065f78
---
# 启动服务并压测

以DeepFM模型为例，首先获取DeepFM模型，之后用TF-Serving部署DeepFM模型，最后创建Docker容器并使用perf_analyzer进行压测。

#### 下载模型

1. 进入“/path/to/models”目录。
  1 cd /path/to/models

2. 获取DeepFM模型。
  1 git clone https://atomgit.com/openeuler/sra_benchmark.git -b v0.1.0

3. 查看是否存在DeepFM模型。
  1 ls sra_benchmark/models/


#### 启动TF-Serving服务

1. 进入“/path/to/tfserving/serving”目录。
  1 cd /path/to/tfserving/serving

2. 设置环境变量，开启XLA功能。
  1 export TF_XLA_FLAGS="--tf_xla_auto_jit=2 --tf_xla_cpu_global_jit"

3. 启动TF-Serving服务，以绑定NUMA 2为例。启动命令相关参数如表1所示。
  1 numactl -m 2 -C 160-239 ./bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server --port=8869 --rest_api_port=8870 --model_base_path=/path/to/models/sra_benchmark/models/model_DeepFM_1730799407 --model_name=deepfm --tensorflow_intra_op_parallelism=51 --tensorflow_inter_op_parallelism=27 --xla_cpu_compilation_enabled=true

  运行结果如下：

  此处numactl -m 2 -C 160-239是限定TF-Serving服务运行在NUMA 2对应的核上，以该方式启动可以充分利用CPU资源，-m指的是使用NUMA 2对应的内存，-C指定NUMA 2对应的核。 对应机型为： 鲲鹏920 V200处理器（80核） 2P（开启超线程）。

**表1 TF-Serving服务启动命令参数说明**

| 参数项 | 说明 |
| --- | --- |
| \-\-port | gRPC服务端口。 |
| \-\-rest\_api\_port | HTTP服务端口。 |
| \-\-model\_base\_path | 模型路径。 |
| \-\-model\_name | 模型名称。 |
| \-\-tensorflow\_intra\_op\_parallelism | 算子内并行度。 |
| \-\-tensorflow\_inter\_op\_parallelism | 算子间并行度。 |
| \-\-xla\_cpu\_compilation\_enabled | 是否开启XLA。 |


#### 客户端压测

1. 使用PuTTY工具，另外开启一个session，以root用户登录服务器。
2. 创建Docker容器并使用perf_analyzer进行压测。压测命令参数说明如表2所示。
  1 docker run -it --rm --net host nvcr.io/nvidia/tritonserver:24.05-py3-sdk perf_analyzer --concurrency-range 28:28:1 -p 8561 -f perf.csv -m deepfm --service-kind tfserving -i grpc --request-distribution poisson -b 660 -u localhost:8869 --percentile 99 --input-data=random

  运行结果如下：

  回显信息中的Throughput是衡量服务器处理请求能力的一个指标，表示每秒钟可以处理的查询或事务的数量。

  如使用本文配置的参数，其值应与图中的值大体一致，几K误差在浮动范围内（BIOS为默认配置，开启超线程）。

  该压测数据对应机型为：鲲鹏920 V200处理器（80核） 2P。

**表2 压测命令参数说明**

| 参数项 | 说明 |
| --- | --- |
| \-\-concurrency\-range | 客户端并发数范围。 |
| \-m | 压测模型。 |
| \-\-service\-kind | 服务端推理框架。 |
| \-i | 通信协议。 |
| \-u | 服务端口，需与TF\-Serving对应端口保持一致。 |
| \-b | 模型batch size。 |
| \-\-percentile | 延时要求。 |
| \-\-input\-data | 发送随机数据。 |
