Вот проблема, которая у меня есть:как включить hugetlb на mips32
rx/tx пакет в драйвере ядра. Программе пользовательского пространства необходимо получить доступ к каждому из этих пакетов. Таким образом, существует огромное количество передачи данных между ядром и пользовательским пространством. (поток данных: ядро rx -> пользовательский космический процесс -> ядро tx)
пропускная способность - это KPI.
Я решил использовать память общего доступа/mmap, чтобы избежать копирования данных. хотя я не тестировал его, другие сказали мне, что tlb отсутствует будет проблемой.
Система, которую я использую систему MIPS32
- (mips74kc, одноядерный)
- по умолчанию размер страницы 4KB.
- ядро 2.6.32
Она может фиксироваться только в одном пакете данных. Во время преобразования данных будет много ошибок, которые не будут иметь такой пропускной способности.
Я нашел огромную страницу, возможно, решение. Но, похоже, только mips64 поддерживает hugetlbfs в настоящее время.
https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt https://www.linux-mips.org/archives/linux-mips/2009-05/msg00429.html
Итак, мой вопрос: как я могу использовать hugetlbfs на MIPS32. или есть другой способ решить проблему пропускной способности. (я должен сделать процесс данных часть в пользовательском пространстве)
Согласно пластыря ddaney, в
В настоящее время патч работает только для 64-разрядных ядер, так как значение PTRS_PER_PTE в 32-битных ядрах таково, что невозможно иметь действительную PageMask . Считается, что путем настройки схемы размещения страниц в будущем могут поддерживаться 32-разрядные ядра.
Кажется возможным. Может ли кто-нибудь дать мне подсказку, что нужно изменить, чтобы включить hugetlb.
спасибо!
Если вы хотите «использовать общую память/mmap, чтобы избежать копирования данных», используйте ее. У вас нет проблем с пропуском TLB, и на данном этапе, вероятно, не должно быть огромных страниц. – osgx