2016-12-26 3 views
0

Hier aktivieren ist das Problem, das ich habe:wie hugetlb auf MIPS32

RX/TX-Paket in der Kernel-Treiber. Benutzerraumprogramm muss auf jedes dieser Pakete zugreifen. Es gibt also einen großen Datentransfer zwischen Kernel und Benutzerbereich. (Datenstrom: Kernel rx -> Userspace-Prozess -> Kernel-TX)

Durchsatz ist der KPI.

Ich entscheide mich, share memory/mmap zu verwenden, um Datenkopie zu vermeiden. obwohl ich es nicht getestet habe, haben andere mir gesagt tlb fehlt wird ein Problem sein.

Das System ich benutze, ist ein

  • MIPS32-System (mips74kc, Single-Core)
  • Standard-Seitengröße von 4 KB.
  • kernel 2.6.32

kann es nur in einem Datenpaket passen. Während der Datentransformation werden viele TLBs fehlen, die den Durchsatz beeinträchtigen.

Ich fand riesige Seite könnte eine Lösung sein. Aber es scheint nur wie mips64 hugetlbfs derzeit unterstützt.

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

Also, meine Frage ist: wie kann ich hugetlbfs auf MIPS32 verwenden. oder gibt es andere Möglichkeit, den Durchsatz Problem zu lösen. (Ich muss die Daten Prozessteil im User-Space tun)

Nach ddaney-Pflaster,

Derzeit ist nur der Patch funktioniert für 64-Bit-Kernel, weil Der Wert von PTRS_PER_PTE in 32-Bit-Kernel ist so, dass es unmöglich ist, eine gültige PageMask zu haben. Es wird angenommen, dass durch Anpassen des Seitenzuweisungs-Schemas in Zukunft 32-Bit-Kernel unterstützt werden könnten.

Es scheint möglich. Könnte mir jemand einen Hinweis geben, was geändert werden muss, um hugetlb zu aktivieren.

danke!

+0

Wenn Sie "share memory/mmap verwenden möchten, um Datenkopie zu vermeiden", dann verwenden Sie es. Sie haben keine TLB-Miss-Probleme und brauchen in diesem Stadium wahrscheinlich keine großen Seiten. – osgx

Antwort

0

Wird die Dokumentation Ihrer Core List-Unterstützung von nicht 4KB-Seiten in ihrem TLB unterstützt? Wenn es nicht unterstützt wird, sollten Sie Ihre CPU ändern (ersetzen Sie sie durch einige, die größere Seiten unterstützen, oder Ihre CPU umgestalten und einen neuen Chip erstellen).

Aber wahrscheinlich sind Sie auf der falschen Spur, und TLB fehlt ist noch nicht bewiesen, das Problem zu sein (und die 2MB große Seite ist die falsche Lösung für 8KB oder 15KB Pakete).

Ich werde Ihnen sagen, "zero-copy" und/oder User-Space-Networking (netmap, snabb, PF_RING, DPDK, Netzwerk-Stack in Userspace) oder User-Space-Netzwerk-Treiber; oder Kernel-basierter Datenhandler. Aber viele dieser Tools sind nur für neuere Kernel.