0

これが私が抱えている問題です:

カーネル ドライバーの rx/tx パケット。ユーザー空間プログラムは、これらの各パケットにアクセスする必要があります。そのため、カーネルとユーザー空間の間で大量のデータ転送が行われます。(データ ストリーム: カーネル rx -> ユーザー空間プロセス -> カーネル tx)

スループットが KPI です。

データのコピーを避けるために、共有メモリ/mmap を使用することにしました。私はそれをテストしていませんが、 tlbがないことが問題になると他の人が言っています。

私が使用しているシステムは、

  • mips32系(mips74kc、シングルコア)
  • デフォルトのページ サイズ 4KB。
  • カーネル 2.6.32

1 つのデータ パケットにのみ収まります。データ変換中に、スループットに影響を与える大量の tlb が失われます。

huge page が解決策になる可能性があることがわかりました。しかし、現在は mips64 のみが hugetlbfs をサポートしているようです。

https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt https://www.linux-mips.org/archives/linux-mips/2009-05/msg00429.html

私の質問は、mips32 で hugetlbfs を使用するにはどうすればよいかということです。または、スループットの問題を解決する他の方法はありますか(ユーザー空間でデータ処理部分を実行する必要があります)

ddaneyのパッチによると、

32 ビット カーネルの PTRS_PER_PTE の値は有効な PageMask を持つことが不可能であるため、現在、パッチは 64 ビット カーネルに対してのみ機能します。ページ割り当てスキームを調整することで、将来的に 32 ビット カーネルがサポートされる可能性があると考えられています。

可能のようです。hugetlb を有効にするために、何を変更する必要があるか、ヒントを教えてください。

ありがとう!

4

1 に答える 1