Запуск iperf на Android с RPS (Receive Packet Steering) по-прежнему приводит к использованию только 1 процессора - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь запустить iperf на своем восьмиъядерном телефоне с Android и хочу использовать RET (Receive Packet Steering Steering) для распределения программных пакетов, сгенерированных на несколько процессоров. Я запускаю клиент iperf в обратном режиме на телефоне.

Я установил переменную / sys / class / net / wigig0 / queues / rx-0 / rps_cpus так, чтобы сгенерированные softtirq распределялись по всем 8 ядрам / процессорам (ff). Но все же он использует только 1 ядро ​​/ процессор (в данном случае CPU0). Интересно, что это всегда первый из процессоров, который я отображаю в переменной rps_cpus.

Например, если я выведу f0 на rps_cpus (что означает использование процессоров 3-7, а не процессоров 0-3), он будет использовать только CPU3.

При включенной GRO (Generic Receive Offloading) это не имеет большого значения, потому что даже одного процессора достаточно для обработки всех пакетов. Но с отключенным GRO (это режим, который я хочу использовать), единственный ЦП становится узким местом и влияет на пропускную способность.

Я бы ожидал, что будет использоваться несколько процессоров, но этого, похоже, не происходит, и в итоге ограничивается пропускная способность.

Есть что-то, что я пропускаю?

...