e0ae3db0c0
Windows GSG included a section only on virt2phys driver installation, but not on NetUIO. The content of the section duplicated documentation in dpdk-kmods, but contained no links to it, only a reference. Add subsections for virt2phys and NetUIO, explaining their roles. Refer to documenttion in dpdk-kmods as an authoritative source, but leave specific diagnostic and usage hints in the GSG. Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
89 lines
2.7 KiB
ReStructuredText
89 lines
2.7 KiB
ReStructuredText
.. SPDX-License-Identifier: BSD-3-Clause
|
|
Copyright(c) 2020 Dmitry Kozlyuk
|
|
|
|
Running DPDK Applications
|
|
=========================
|
|
|
|
Grant *Lock pages in memory* Privilege
|
|
--------------------------------------
|
|
|
|
Use of hugepages ("large pages" in Windows terminology) requires
|
|
``SeLockMemoryPrivilege`` for the user running an application.
|
|
|
|
1. Open *Local Security Policy* snap-in, either:
|
|
|
|
* Control Panel / Computer Management / Local Security Policy;
|
|
* or Win+R, type ``secpol``, press Enter.
|
|
|
|
2. Open *Local Policies / User Rights Assignment / Lock pages in memory.*
|
|
|
|
3. Add desired users or groups to the list of grantees.
|
|
|
|
4. Privilege is applied upon next logon. In particular, if privilege has been
|
|
granted to current user, a logoff is required before it is available.
|
|
|
|
See `Large-Page Support`_ in MSDN for details.
|
|
|
|
.. _Large-Page Support: https://docs.microsoft.com/en-us/windows/win32/memory/large-page-support
|
|
|
|
|
|
Install Drivers
|
|
---------------
|
|
|
|
Certain kernel-mode drivers are required to run DPDK applications.
|
|
Refer to `Windows documentation <https://git.dpdk.org/dpdk-kmods/tree/windows>`_
|
|
in ``dpdk-kmods`` repository for common instructions on system setup,
|
|
driver build and installation.
|
|
The drivers are not signed, so signature enforcement has to be disabled.
|
|
|
|
.. warning::
|
|
|
|
Disabling driver signature enforcement weakens OS security.
|
|
It is discouraged in production environments.
|
|
|
|
|
|
virt2phys
|
|
~~~~~~~~~
|
|
|
|
Access to physical addresses is provided by a kernel-mode driver, virt2phys.
|
|
It is mandatory for allocating physically-contiguous memory which is required
|
|
by hardware PMDs.
|
|
|
|
When loaded successfully, the driver is shown in *Device Manager* as *Virtual
|
|
to physical address translator* device under *Kernel bypass* category.
|
|
Installed driver persists across reboots.
|
|
|
|
If DPDK is unable to communicate with the driver, a warning is printed
|
|
on initialization (debug-level logs provide more details):
|
|
|
|
.. code-block:: text
|
|
|
|
EAL: Cannot open virt2phys driver interface
|
|
|
|
|
|
NetUIO
|
|
~~~~~~
|
|
|
|
NetUIO kernel-mode driver provides access to the device hardware resources.
|
|
It is mandatory for all hardware PMDs, except for mlx5 PMD.
|
|
|
|
Refer to `NetUIO documentation <https://git.dpdk.org/dpdk-kmods/tree/windows/netuio/README.rst>`_
|
|
in ``dpdk-kmods`` repository for instructions to build and set up the driver.
|
|
Devices supported by NetUIO are listed in ``netuio.inf``.
|
|
The list can be extended in order to try running DPDK with new devices.
|
|
|
|
|
|
Run the ``helloworld`` Example
|
|
------------------------------
|
|
|
|
Navigate to the examples in the build directory and run `dpdk-helloworld.exe`.
|
|
|
|
.. code-block:: console
|
|
|
|
cd C:\Users\me\dpdk\build\examples
|
|
dpdk-helloworld.exe -l 0-3
|
|
hello from core 1
|
|
hello from core 3
|
|
hello from core 0
|
|
hello from core 2
|