сопоставление между upcall из vport ядра и потоками upcall в пользовательском пространстве

Для случая, когда ovs использует путь данных ядра, если есть 2 потока upcall-потока пространства пользователя и 4 vport'а ядра, кажется (из исходного кода 2.11.90), каждый vport создаст только один sock netlink и привяжет его к epoll_handler каждого потока upcall.

Вопрос в том, если есть запрос на вызов, отправленный из сокета netlink vport, какой поток вызова в пользовательском пространстве будет обрабатывать этот запрос?

Большое спасибо.


person jikui    schedule 10.05.2019    source источник


Ответы (1)


Я уже нашел ответ. ovs создают обработчик epoll для всех сокетов netlink, и все потоки прослушивают обработчик epoll. Первый поток, ожидающий обработки epoll-handler, заставит процессор работать, когда в epoll-handler произойдет событие.

person jikui    schedule 07.11.2019