Multi Channel DMA Intel® FPGA IP for PCI Express* デザイン例のユーザーガイド

ID 683517
日付 10/06/2023
Public
ドキュメント目次

3.5.2.3.1.3. ブート・パラメーターの設定

次の手順に従い、grubファイルのデフォルトのhugepages設定を変更します。
  1. /etc/default/grub ファイルを編集します。

    ハイライトされているパラメーターを/etc/default/grubファイルのGRUB_CMDLINE_LINUX行に追加します。

    CentOS: GRUB_CMDLINE_LINUX=" rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb default_hugepagesz=1G hugepagesz=1G hugepages=40 panic=1 intel_iommu=on iommu=pt

    Ubuntu: GRUB_CMDLINE_LINUX="default_hugepagesz=1G hugepagesz=1G hugepages=20 intel_iommu=on iommu=pt panic=1 quiet splash vt.handoff=7"

    CentOSに向けた編集後のファイルの内容は次のとおりです。

    GRUB_TIMEOUT=5
    GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT="console"
    GRUB_CMDLINE_LINUX=" rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb default_hugepagesz=1G hugepagesz=1G hugepages=40 panic=1 intel_iommu=on iommu=pt
    GRUB_DISABLE_RECOVERY="true"

    仮想機能作成時にメモリー割り当てに失敗する場合は、ブート・パラメーターの "pci=hpbussize=10,hpmemsize=2M,nocrs,realloc=on" を追加します。

    デバイスをvfio-pciに結び付けてIOMMUを使用するには、パラメーターの intel_iommu=on を有効にします。

    UIOを使用してIOMMUルックアップを有効にしない場合は、パラメーターの iommu=pt を追加します。

    AMDプラットフォームとUIOドライバーを使用する場合は、ブート時にパラメーターの iommu=soft を追加します。

    編集後のubuntuの/etc/default/grubファイル例
    root@bapvecise042:~# cat /etc/default/grub
    # If you change this file, run 'update-grub' afterwards to update 
    
    # /boot/grub/grub.cfg.
    # For full documentation of the options in this file, see: 
    
    #   info -f grub -n 'Simple configuration' 
    
    GRUB_DEFAULT="1>2" 
    
    GRUB_TIMEOUT_STYLE=hidden 
    
    GRUB_TIMEOUT=0 
    
    GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` 
    
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 
    
    GRUB_CMDLINE_LINUX="default_hugepagesz=1G hugepagesz=1G hugepages=20 intel_iommu=on iommu=pt panic=1" 
    
    # Uncomment to enable BadRAM filtering, modify to suit your needs 
    
    # This works with Linux (no patch required) and with any kernel that obtains 
    
    # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...) 
    
    #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" 
    
    # Uncomment to disable graphical terminal (grub-pc only) 
    
    #GRUB_TERMINAL=console 
      
    
    # The resolution used on graphical terminal 
    
    # note that you can use only modes which your graphic card supports via VBE 
    
    # you can see them in real GRUB with the command `vbeinfo' 
    
    #GRUB_GFXMODE=640x480 
    
    # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux 
    
    #GRUB_DISABLE_LINUX_UUID=true 
      
    
    # Uncomment to disable generation of recovery mode menu entries 
    
    #GRUB_DISABLE_RECOVERY="true" 
      
    
    # Uncomment to get a beep at grub start 
    
    #GRUB_INIT_TUNE="480 440 1" 
  2. GRUBコンフィグレーション・ファイルを生成します。

    ブートシステムがレガシーかEFIベースかを確認するには、次のファイルの存在を確認します。

    $ls -al /sys/firmware/efi

    このファイルが存在する場合、ブートシステムはEFIベースです。それ以外の場合はレガシーシステムです。
    1. レガシーシステムの場合は、次のコマンドを実行します。

      $ grub2-mkconfig -o /boot/grub2/grub.cfg

    2. EFIベースのシステムの場合は、次のコマンドを実行します。

      $ grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

    3. Ubuntuの場合は、次のコマンドを実行します。
      grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg
      または
      grub2-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg 
      
      または
      sudo grub update
  3. システムを再起動します。
  4. 上の変更を確認します。

    $ cat /proc/cmdline

  5. hugepageを設定します。

    $ echo 40 > /proc/sys/vm/nr_hugepages

  6. ホストが複数のNUMAをサポートする場合は、次の手順に従います。
    1. ホストで有効になっているNUMAの数をチェックします。
      $lscpu | grep NUMA
      NUMA node(s): 2
      NUMA node0 CPU(s): 0-15, 32-47
      NUMA node1 CPU(s): 16-31, 48-63

      この例では、2つのNUMAがあります。NUMAが1つしかない場合は、次のステップを無視します。

    2. プロビジョニングされているデバイスを確認します。
      $cat /sys/class/pci_bus/<Domain:Bus>\
      /device/numa_node
    3. NUMAデバイスが配置されているHugeページを有効にします。
      $echo 40> /sys/devices/system/node/node<nodenum>\
      /hugepages/hugepages-1048576kB/nr_hugepages
    4. 配置されているNUMAデバイスに基づきスレッドシーケンスをコンフィグレーションします。例えば、次のようになります。
      #define THREAD_SEQ "0-15" in software/user/cli/\
      perfq_app/perfq_app.h