これが私が抱えている問題です:
カーネル ドライバーの 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 を有効にするために、何を変更する必要があるか、ヒントを教えてください。
ありがとう!