diff options
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/book-enea-nfv-access-platform-guide/doc/benchmarks.xml | 381 | ||||
| -rw-r--r-- | doc/manifest_conf.mk | 2 |
2 files changed, 381 insertions, 2 deletions
diff --git a/doc/book-enea-nfv-access-platform-guide/doc/benchmarks.xml b/doc/book-enea-nfv-access-platform-guide/doc/benchmarks.xml index fa461fa..daafadf 100644 --- a/doc/book-enea-nfv-access-platform-guide/doc/benchmarks.xml +++ b/doc/book-enea-nfv-access-platform-guide/doc/benchmarks.xml | |||
| @@ -245,7 +245,7 @@ | |||
| 245 | 245 | ||
| 246 | <para>Pktgen is used to generate UDP traffic that will reach testpmd, | 246 | <para>Pktgen is used to generate UDP traffic that will reach testpmd, |
| 247 | running in a Docker image. It will then be forwarded back to source on | 247 | running in a Docker image. It will then be forwarded back to source on |
| 248 | the return trip (Forwarding).</para> | 248 | the return trip (<emphasis role="bold">Forwarding</emphasis>).</para> |
| 249 | 249 | ||
| 250 | <para>This test measures:</para> | 250 | <para>This test measures:</para> |
| 251 | 251 | ||
| @@ -702,6 +702,129 @@ ovs-ofctl add-flow ovsbr0 in_port=2,action=output:1</programlisting>Import a | |||
| 702 | </table> | 702 | </table> |
| 703 | </section> | 703 | </section> |
| 704 | </section> | 704 | </section> |
| 705 | |||
| 706 | <section id="pxe-config-docker"> | ||
| 707 | <title>SR-IOV in in Docker</title> | ||
| 708 | |||
| 709 | <para>PCI passthrough tests using pktgen and testpmd in Docker.</para> | ||
| 710 | |||
| 711 | <para>pktgen[DPDK]Docker - PHY - Docker[DPDK] testpmd</para> | ||
| 712 | |||
| 713 | <para>Measurements:</para> | ||
| 714 | |||
| 715 | <itemizedlist> | ||
| 716 | <listitem> | ||
| 717 | <para>RX packets per second in testpmd (with testpmd configured in | ||
| 718 | rxonly mode).</para> | ||
| 719 | </listitem> | ||
| 720 | </itemizedlist> | ||
| 721 | |||
| 722 | <section id="target-setup"> | ||
| 723 | <title>Test Setup</title> | ||
| 724 | |||
| 725 | <para>Boot Enea NFV Access Platform from SSD:<programlisting>linux (hd0,gpt3)/boot/bzImage root=/dev/sda3 ip=dhcp nohz_full=1-7 / | ||
| 726 | isolcpus=1-7 rcu-nocbs=1-7 rcu_nocb_poll intel_pstate=disable clocksource=tsc / | ||
| 727 | tsc=reliable nohpet nosoftlockup intel_idle.max_cstate=0 processor.max_cstate=0 / | ||
| 728 | mce=ignore_ce audit=0 nmi_watchdog=0 iommu=pt intel_iommu=on hugepagesz=1GB / | ||
| 729 | hugepages=8 default_hugepagesz=1GB hugepagesz=2M hugepages=2048 / | ||
| 730 | vfio_iommu_type1.allow_unsafe_interrupts=1l</programlisting>Allow unsafe | ||
| 731 | interrupts:<programlisting>echo 1 > /sys/module/vfio_iommu_type1/parameters/allow_unsafe_interrupts</programlisting>Configure | ||
| 732 | DPDK:<programlisting>mkdir -p /mnt/huge | ||
| 733 | mount -t hugetlbfs nodev /mnt/huge | ||
| 734 | dpdk-devbind.py --bind=ixgbe 0000:03:00.0 | ||
| 735 | ifconfig eno3 192.168.1.2 | ||
| 736 | echo 2 > /sys/class/net/eno3/device/sriov_numvfs | ||
| 737 | modprobe vfio-pci | ||
| 738 | dpdk-devbind.py --bind=vfio-pci 0000:03:10.0 | ||
| 739 | dpdk-devbind.py --bind=vfio-pci 0000:03:10.2</programlisting>Start two docker | ||
| 740 | containers:<programlisting>docker run --privileged -it --rm -v /mnt/huge:/mnt/huge/ / | ||
| 741 | --device /dev/vfio/vfio el7_guest /bin/bash | ||
| 742 | docker run --privileged -it --rm -v /mnt/huge:/mnt/huge/ / | ||
| 743 | --device /dev/vfio/vfio el7_guest /bin/bash</programlisting>In the first | ||
| 744 | container start pktgen:<programlisting>cd /usr/share/apps/pktgen/ | ||
| 745 | ./pktgen -c 0x1f -w 0000:03:10.0 -n 1 --file-prefix pg1 / | ||
| 746 | --socket-mem 1024 -- -P -m "[3:4].0"</programlisting>In the pktgen prompt set | ||
| 747 | the destination MAC address:<programlisting>set mac 0 XX:XX:XX:XX:XX:XX | ||
| 748 | str</programlisting>In the second container start testpmd:<programlisting>testpmd -c 0x7 -n 1 -w 0000:03:10.2 -- -i --portmask=0x1 / | ||
| 749 | --txd=256 --rxd=256 --port-topology=chained</programlisting>In the testpmd | ||
| 750 | prompt set <emphasis role="bold">forwarding</emphasis> | ||
| 751 | rxonly:<programlisting>set fwd rxonly | ||
| 752 | start</programlisting><table> | ||
| 753 | <title>Results</title> | ||
| 754 | |||
| 755 | <tgroup cols="5"> | ||
| 756 | <tbody> | ||
| 757 | <row> | ||
| 758 | <entry align="center"><emphasis | ||
| 759 | role="bold">Bytes</emphasis></entry> | ||
| 760 | |||
| 761 | <entry align="center"><emphasis role="bold">pktgen pps | ||
| 762 | TX</emphasis></entry> | ||
| 763 | |||
| 764 | <entry align="center"><emphasis role="bold">testpmd pps | ||
| 765 | RX</emphasis></entry> | ||
| 766 | |||
| 767 | <entry align="center"><emphasis role="bold">pktgen MBits/s | ||
| 768 | TX</emphasis></entry> | ||
| 769 | |||
| 770 | <entry align="center"><emphasis role="bold">throughput | ||
| 771 | (%)</emphasis></entry> | ||
| 772 | </row> | ||
| 773 | |||
| 774 | <row> | ||
| 775 | <entry role="bold"><emphasis | ||
| 776 | role="bold">64</emphasis></entry> | ||
| 777 | |||
| 778 | <entry>14525286</entry> | ||
| 779 | |||
| 780 | <entry>14190869</entry> | ||
| 781 | |||
| 782 | <entry>9739</entry> | ||
| 783 | |||
| 784 | <entry>97.7</entry> | ||
| 785 | </row> | ||
| 786 | |||
| 787 | <row> | ||
| 788 | <entry><emphasis role="bold">128</emphasis></entry> | ||
| 789 | |||
| 790 | <entry>8456960</entry> | ||
| 791 | |||
| 792 | <entry>8412172</entry> | ||
| 793 | |||
| 794 | <entry>10013</entry> | ||
| 795 | |||
| 796 | <entry>99.4</entry> | ||
| 797 | </row> | ||
| 798 | |||
| 799 | <row> | ||
| 800 | <entry role="bold"><emphasis | ||
| 801 | role="bold">256</emphasis></entry> | ||
| 802 | |||
| 803 | <entry>4566624</entry> | ||
| 804 | |||
| 805 | <entry>4526587</entry> | ||
| 806 | |||
| 807 | <entry>10083</entry> | ||
| 808 | |||
| 809 | <entry>99.1</entry> | ||
| 810 | </row> | ||
| 811 | |||
| 812 | <row> | ||
| 813 | <entry><emphasis role="bold">512</emphasis></entry> | ||
| 814 | |||
| 815 | <entry>2363744</entry> | ||
| 816 | |||
| 817 | <entry>2348015</entry> | ||
| 818 | |||
| 819 | <entry>10060</entry> | ||
| 820 | |||
| 821 | <entry>99.3</entry> | ||
| 822 | </row> | ||
| 823 | </tbody> | ||
| 824 | </tgroup> | ||
| 825 | </table></para> | ||
| 826 | </section> | ||
| 827 | </section> | ||
| 705 | </section> | 828 | </section> |
| 706 | 829 | ||
| 707 | <section id="vm-benchmarks"> | 830 | <section id="vm-benchmarks"> |
| @@ -1253,6 +1376,262 @@ show port stats 0</programlisting>For VM1, we record the stats relevant for | |||
| 1253 | </table> | 1376 | </table> |
| 1254 | </section> | 1377 | </section> |
| 1255 | </section> | 1378 | </section> |
| 1379 | |||
| 1380 | <section id="pxe-config-vm"> | ||
| 1381 | <title>SR-IOV in Virtual Machines</title> | ||
| 1382 | |||
| 1383 | <para>PCI passthrough tests using pktgen and testpmd in virtual | ||
| 1384 | machines.</para> | ||
| 1385 | |||
| 1386 | <para>pktgen[DPDK]VM - PHY - VM[DPDK] testpmd.</para> | ||
| 1387 | |||
| 1388 | <para>Measurements:</para> | ||
| 1389 | |||
| 1390 | <itemizedlist> | ||
| 1391 | <listitem> | ||
| 1392 | <para>pktgen to testpmd in <emphasis | ||
| 1393 | role="bold">forwarding</emphasis> mode.</para> | ||
| 1394 | </listitem> | ||
| 1395 | |||
| 1396 | <listitem> | ||
| 1397 | <para>pktgen to testpmd in <emphasis | ||
| 1398 | role="bold">termination</emphasis> mode.</para> | ||
| 1399 | </listitem> | ||
| 1400 | </itemizedlist> | ||
| 1401 | |||
| 1402 | <section id="test-setup-target-four"> | ||
| 1403 | <title>Test Setup</title> | ||
| 1404 | |||
| 1405 | <para>SSD boot using the following <literal>grub.cfg</literal> | ||
| 1406 | entry: <programlisting>linux (hd0,gpt3)/boot/bzImage root=/dev/sda3 ip=dhcp nohz_full=1-7 / | ||
| 1407 | isolcpus=1-7 rcu-nocbs=1-7 rcu_nocb_poll intel_pstate=disable / | ||
| 1408 | clocksource=tsc tsc=reliable nohpet nosoftlockup intel_idle.max_cstate=0 / | ||
| 1409 | processor.max_cstate=0 mce=ignore_ce audit=0 nmi_watchdog=0 iommu=pt / | ||
| 1410 | intel_iommu=on hugepagesz=1GB hugepages=8 default_hugepagesz=1GB / | ||
| 1411 | hugepagesz=2M hugepages=2048 vfio_iommu_type1.allow_unsafe_interrupts=1</programlisting>Stop | ||
| 1412 | other services and mount hugepages: <programlisting>systemctl stop openvswitch | ||
| 1413 | mkdir -p /mnt/huge | ||
| 1414 | mount -t hugetlbfs hugetlbfs /mnt/huge</programlisting>Configure SR-IOV | ||
| 1415 | interfaces:<programlisting>/usr/share/usertools/dpdk-devbind.py --bind=ixgbe 0000:03:00.0 | ||
| 1416 | echo 2 > /sys/class/net/eno3/device/sriov_numvfs | ||
| 1417 | ifconfig eno3 10.0.0.1 | ||
| 1418 | modprobe vfio_pci | ||
| 1419 | /usr/share/usertools/dpdk-devbind.py --bind=vfio-pci 0000:03:10.0 | ||
| 1420 | /usr/share/usertools/dpdk-devbind.py --bind=vfio-pci 0000:03:10.2 | ||
| 1421 | ip link set eno3 vf 0 mac 0c:c4:7a:E5:0F:48 | ||
| 1422 | ip link set eno3 vf 1 mac 0c:c4:7a:BF:52:E7</programlisting>Launch two QEMU | ||
| 1423 | instances: <programlisting>taskset -c 4,5 qemu-system-x86_64 -cpu host,+invtsc,migratable=no -M / | ||
| 1424 | q35 -smp cores=2,sockets=1 -vcpu 0,affinity=4 -vcpu 1,affinity=5 -enable-kvm / | ||
| 1425 | -nographic -kernel /mnt/qemu/bzImage / | ||
| 1426 | -drive file=/mnt/qemu/enea-image-virtualization-guest-qemux86-64.ext4,if=virtio,/ | ||
| 1427 | format=raw -m 4096 -object memory-backend-file,id=mem,size=4096M,mem-path=/mnt/huge,/ | ||
| 1428 | share=on -numa node,memdev=mem -mem-prealloc -device vfio-pci,host=03:10.0 / | ||
| 1429 | -append 'root=/dev/vda console=ttyS0 hugepagesz=2M hugepages=1024 / | ||
| 1430 | isolcpus=1 nohz_full=1 rcu_nocbs=1 irqaffinity=0 rcu_nocb_poll / | ||
| 1431 | intel_pstate=disable intel_idle.max_cstate=0 / | ||
| 1432 | processor.max_cstate=0 mce=ignore_ce audit=0' | ||
| 1433 | |||
| 1434 | |||
| 1435 | taskset -c 2,3 qemu-system-x86_64 -cpu host,+invtsc,migratable=no -M / | ||
| 1436 | q35 -smp cores=2,sockets=1 -vcpu 0,affinity=2 -vcpu 1,affinity=3 -enable-kvm / | ||
| 1437 | -nographic -kernel /mnt/qemu/bzImage / | ||
| 1438 | -drive file=/mnt/qemu/enea-image2-virtualization-guest-qemux86-64.ext4,if=virtio,/ | ||
| 1439 | format=raw -m 4096 -object memory-backend-file,id=mem,size=4096M,mem-path=/mnt/huge,/ | ||
| 1440 | share=on -numa node,memdev=mem -mem-prealloc -device vfio-pci,host=03:10.2 / | ||
| 1441 | -append 'root=/dev/vda console=ttyS0 hugepagesz=2M hugepages=1024 / | ||
| 1442 | isolcpus=1 nohz_full=1 rcu_nocbs=1 irqaffinity=0 rcu_nocb_poll / | ||
| 1443 | intel_pstate=disable intel_idle.max_cstate=0 processor.max_cstate=0 / | ||
| 1444 | mce=ignore_ce audit=0'</programlisting>In the first VM, mount hugepages and | ||
| 1445 | start pktgen:<programlisting>mkdir -p /mnt/huge && \ | ||
| 1446 | mount -t hugetlbfs hugetlbfs /mnt/huge | ||
| 1447 | modprobe igb_uio | ||
| 1448 | /usr/share/usertools/dpdk-devbind.py --bind=igb_uio 0000:00:03.0 | ||
| 1449 | cd /usr/share/apps/pktgen | ||
| 1450 | ./pktgen -c 0x3 -- -P -m "1.0"</programlisting>In the pktgen console set the | ||
| 1451 | MAC of the destination and start generating | ||
| 1452 | packages:<programlisting>set mac 0 0C:C4:7A:BF:52:E7 | ||
| 1453 | str</programlisting>In the second VM, mount hugepages and start | ||
| 1454 | testpmd:<programlisting>mkdir -p /mnt/huge && \ | ||
| 1455 | mount -t hugetlbfs hugetlbfs /mnt/huge | ||
| 1456 | modprobe igb_uio | ||
| 1457 | /usr/share/usertools/dpdk-devbind.py --bind=igb_uio 0000:00:03.0 | ||
| 1458 | testpmd -c 0x3 -n 2 -- -i --txd=512 --rxd=512 --port-topology=chained / | ||
| 1459 | --eth-peer=0,0c:c4:7a:e5:0f:48</programlisting>In order to enable <emphasis | ||
| 1460 | role="bold">forwarding</emphasis> mode, in the testpmd console, | ||
| 1461 | run:<programlisting>set fwd mac | ||
| 1462 | start</programlisting>In order to enable <emphasis | ||
| 1463 | role="bold">termination</emphasis> mode, in the testpmd console, | ||
| 1464 | run:<programlisting>set fwd rxonly | ||
| 1465 | start</programlisting><table> | ||
| 1466 | <title>Results in forwarding mode</title> | ||
| 1467 | |||
| 1468 | <tgroup cols="5"> | ||
| 1469 | <tbody> | ||
| 1470 | <row> | ||
| 1471 | <entry align="center"><emphasis | ||
| 1472 | role="bold">Bytes</emphasis></entry> | ||
| 1473 | |||
| 1474 | <entry align="center"><emphasis role="bold">VM1 pktgen pps | ||
| 1475 | TX</emphasis></entry> | ||
| 1476 | |||
| 1477 | <entry align="center"><emphasis role="bold">VM1 pktgen pps | ||
| 1478 | RX</emphasis></entry> | ||
| 1479 | |||
| 1480 | <entry align="center"><emphasis role="bold">VM2 testpmd | ||
| 1481 | pps RX</emphasis></entry> | ||
| 1482 | |||
| 1483 | <entry align="center"><emphasis role="bold">VM2 testpmd | ||
| 1484 | pps RX</emphasis></entry> | ||
| 1485 | </row> | ||
| 1486 | |||
| 1487 | <row> | ||
| 1488 | <entry role="bold"><emphasis | ||
| 1489 | role="bold">64</emphasis></entry> | ||
| 1490 | |||
| 1491 | <entry>7105645</entry> | ||
| 1492 | |||
| 1493 | <entry>7103976</entry> | ||
| 1494 | |||
| 1495 | <entry>7101487</entry> | ||
| 1496 | |||
| 1497 | <entry>7101487</entry> | ||
| 1498 | </row> | ||
| 1499 | |||
| 1500 | <row> | ||
| 1501 | <entry><emphasis role="bold">128</emphasis></entry> | ||
| 1502 | |||
| 1503 | <entry>5722795</entry> | ||
| 1504 | |||
| 1505 | <entry>5722252</entry> | ||
| 1506 | |||
| 1507 | <entry>5704219</entry> | ||
| 1508 | |||
| 1509 | <entry>5704219</entry> | ||
| 1510 | </row> | ||
| 1511 | |||
| 1512 | <row> | ||
| 1513 | <entry role="bold"><emphasis | ||
| 1514 | role="bold">256</emphasis></entry> | ||
| 1515 | |||
| 1516 | <entry>3454075</entry> | ||
| 1517 | |||
| 1518 | <entry>3455144</entry> | ||
| 1519 | |||
| 1520 | <entry>3452020</entry> | ||
| 1521 | |||
| 1522 | <entry>3452020</entry> | ||
| 1523 | </row> | ||
| 1524 | |||
| 1525 | <row> | ||
| 1526 | <entry role="bold"><emphasis | ||
| 1527 | role="bold">512</emphasis></entry> | ||
| 1528 | |||
| 1529 | <entry>1847751</entry> | ||
| 1530 | |||
| 1531 | <entry>1847751</entry> | ||
| 1532 | |||
| 1533 | <entry>1847751</entry> | ||
| 1534 | |||
| 1535 | <entry>1847751</entry> | ||
| 1536 | </row> | ||
| 1537 | |||
| 1538 | <row> | ||
| 1539 | <entry role="bold"><emphasis | ||
| 1540 | role="bold">1024</emphasis></entry> | ||
| 1541 | |||
| 1542 | <entry>956214</entry> | ||
| 1543 | |||
| 1544 | <entry>956214</entry> | ||
| 1545 | |||
| 1546 | <entry>956214</entry> | ||
| 1547 | |||
| 1548 | <entry>956214</entry> | ||
| 1549 | </row> | ||
| 1550 | |||
| 1551 | <row> | ||
| 1552 | <entry role="bold"><emphasis | ||
| 1553 | role="bold">1500</emphasis></entry> | ||
| 1554 | |||
| 1555 | <entry>797174</entry> | ||
| 1556 | |||
| 1557 | <entry>797174</entry> | ||
| 1558 | |||
| 1559 | <entry>797174</entry> | ||
| 1560 | |||
| 1561 | <entry>797174</entry> | ||
| 1562 | </row> | ||
| 1563 | </tbody> | ||
| 1564 | </tgroup> | ||
| 1565 | </table><table> | ||
| 1566 | <title>Results in termination mode</title> | ||
| 1567 | |||
| 1568 | <tgroup cols="3"> | ||
| 1569 | <tbody> | ||
| 1570 | <row> | ||
| 1571 | <entry align="center"><emphasis | ||
| 1572 | role="bold">Bytes</emphasis></entry> | ||
| 1573 | |||
| 1574 | <entry align="center"><emphasis role="bold">VM1 pktgen pps | ||
| 1575 | TX</emphasis></entry> | ||
| 1576 | |||
| 1577 | <entry align="center"><emphasis role="bold">VM2 testpmd | ||
| 1578 | RX</emphasis></entry> | ||
| 1579 | </row> | ||
| 1580 | |||
| 1581 | <row> | ||
| 1582 | <entry role="bold"><emphasis | ||
| 1583 | role="bold">64</emphasis></entry> | ||
| 1584 | |||
| 1585 | <entry>14204580</entry> | ||
| 1586 | |||
| 1587 | <entry>14205063</entry> | ||
| 1588 | </row> | ||
| 1589 | |||
| 1590 | <row> | ||
| 1591 | <entry><emphasis role="bold">128</emphasis></entry> | ||
| 1592 | |||
| 1593 | <entry>8424611</entry> | ||
| 1594 | |||
| 1595 | <entry>8424611</entry> | ||
| 1596 | </row> | ||
| 1597 | |||
| 1598 | <row> | ||
| 1599 | <entry role="bold"><emphasis | ||
| 1600 | role="bold">256</emphasis></entry> | ||
| 1601 | |||
| 1602 | <entry>4529024</entry> | ||
| 1603 | |||
| 1604 | <entry>4529024</entry> | ||
| 1605 | </row> | ||
| 1606 | |||
| 1607 | <row> | ||
| 1608 | <entry><emphasis role="bold">512</emphasis></entry> | ||
| 1609 | |||
| 1610 | <entry>2348640</entry> | ||
| 1611 | |||
| 1612 | <entry>2348640</entry> | ||
| 1613 | </row> | ||
| 1614 | |||
| 1615 | <row> | ||
| 1616 | <entry><emphasis role="bold">1024</emphasis></entry> | ||
| 1617 | |||
| 1618 | <entry>1197101</entry> | ||
| 1619 | |||
| 1620 | <entry>1197101</entry> | ||
| 1621 | </row> | ||
| 1622 | |||
| 1623 | <row> | ||
| 1624 | <entry><emphasis role="bold">1500</emphasis></entry> | ||
| 1625 | |||
| 1626 | <entry>822244</entry> | ||
| 1627 | |||
| 1628 | <entry>822244</entry> | ||
| 1629 | </row> | ||
| 1630 | </tbody> | ||
| 1631 | </tgroup> | ||
| 1632 | </table></para> | ||
| 1633 | </section> | ||
| 1634 | </section> | ||
| 1256 | </section> | 1635 | </section> |
| 1257 | </section> | 1636 | </section> |
| 1258 | </chapter> \ No newline at end of file | 1637 | </chapter> \ No newline at end of file |
diff --git a/doc/manifest_conf.mk b/doc/manifest_conf.mk index 92e395c..9867951 100644 --- a/doc/manifest_conf.mk +++ b/doc/manifest_conf.mk | |||
| @@ -5,4 +5,4 @@ | |||
| 5 | #MANIFESTHASH ?= 0d0f06384afa65eaae4b170e234ee5a813edf44d | 5 | #MANIFESTHASH ?= 0d0f06384afa65eaae4b170e234ee5a813edf44d |
| 6 | #change the above value later to refs/tags/ELnnn (?) | 6 | #change the above value later to refs/tags/ELnnn (?) |
| 7 | MANIFESTURL := git@git.enea.com:linux/manifests/el_manifests-virtualization.git | 7 | MANIFESTURL := git@git.enea.com:linux/manifests/el_manifests-virtualization.git |
| 8 | PROFILE_NAME := Enea NFV Access Platform | 8 | PROFILE_NAME := Enea NFV Access Platform.$(shell date +"%Y.%m.%d %H:%M:%S") |
