在Kubernetes管理的容器上运行DPDK L2FWD应用程序时出错

时间:2019-03-14 07:34:57

标签: kubernetes dpdk

我正在尝试在Kubernetes管理的容器上运行DPDK L2FWD应用程序。

要实现这一点,我已经完成了以下步骤-

  • 我创建了单节点K8s设置,其中主机和客户端都在主机上运行。作为网络插件,我使用了Calico Network。

  • 要创建自定义的DPDK docker映像,我使用了以下Dockerfile

  

从ubuntu:16.04运行apt获取更新
  运行apt-get install -y net-tools
  运行apt-get install -y python
  运行apt-get install -y kmod   运行apt-get install -y iproute2
  运行apt-get install -y net-tools   添加./dpdk/ / home / sdn / dpdk /
  WORKDIR / home / sdn / dpdk /

  • 要在POD内运行DPDK应用程序,必须使用特权访问将主机的以下目录挂载到POD:
  

/ mnt / huge
  / usr
  / lib
  / etc

下面是用于创建POD的k8s部署Yaml

apiVersion: v1
kind: Pod
metadata:
  name: dpdk-pod126
spec:
  containers:
  - name: dpdk126
    image: dpdk-test126
    imagePullPolicy: IfNotPresent
    command: ["/bin/sh"]
    args: ["-c", "while true; do echo hello; sleep 10;done"]
    resources:
      requests:
        memory: "2Gi"
        cpu: "100m"
    volumeMounts:
      - name: hostvol1
        mountPath: /mnt/huge
      - name: hostvol2
        mountPath: /usr
      - name: hostvol3
        mountPath: /lib
      - name: hostvol4
        mountPath: /etc
    securityContext:
      privileged: true
  volumes:
  - name: hostvol1
    hostPath:
      path: /mnt/huge
  - name: hostvol2
    hostPath:
      path: /usr
  - name: hostvol3
    hostPath:
      path: /home/sdn/kubernetes-test/libtest
  - name: hostvol4
    hostPath:
      path: /etc
  • 以下配置已在主机中完成-

    1. 大量页面安装。
    2. 用户空间中的接口绑定。
  • 成功创建POD之后,尝试在POD中运行DPDK L2FWD应用程序时,出现以下错误-

  

root @ dpdk-pod126:/ home / sdn / dpdk#./examples/l2fwd/build/l2fwd -c 0x0f--p 0x03 -q 1
  EAL:检测到16个lcore
  EAL:检测到1个NUMA节点
  EAL:多进程套接字/ var / run / dpdk / rte / mp_socket
  EAL:largepages-1048576kB中未报告免费的庞大页面
  EAL:保留了1007个2097152大小的大页面,但未找到该大小的已装载hugetlbfs
  EAL:致命:无法获取大量信息。
  EAL:无法获取大量页面信息。
  EAL:错误-退出,代码为1
  原因:无效的EAL参数

1 个答案:

答案 0 :(得分:0)

根据this,您可能会丢失    @tf.function来自您庞大的页面量。

此外,巨大的页面可能有点精致。您能否提供以下内容的输出:
#model,loss, and optimizer defined previously @tf.function def train_step(features, labels): with tf.GradientTape() as tape: predictions = model(features) loss_value = loss(labels, predictions) gradients = tape.gradient(loss, model.trainable_variables) optimizer.apply_gradients(zip(gradients, model.trainable_variables)) return loss_value for features, labels in dataset: lv = train_step(features, label) print("loss: ", lv)
并检查playerLayer.videoGravity = .resizeAspectFill 中是否有文件?

也许this可能会有所帮助。您能以某种方式检查是否将大页装入为medium: HugePages吗?