Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Jun 2011 06:20:55 +0900
From:      Takuya ASADA <syuu@dokukino.com>
To:        soc-status@freebsd.org, Kazuya Goda <gockzy@gmail.com>,  "Robert N. M. Watson" <rwatson@freebsd.org>, George Neville-Neil <gnn@freebsd.org>
Subject:   [mq_bpf] status report #4
Message-ID:  <BANLkTikW73WUNRvZKe2u4XiYVfT42iRruQ@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
*Project summary
The project goal is to support multiqueue network interface on BPF,
and provide interfaces for multithreaded packet processing using BPF.
Modern high performance NICs have multiple receive/send queues and RSS
feature, this allows to process packet concurrently on multiple
processors.
Main purpose of the project is to support these hardware and get
benefit of parallelism.

*Subject changed
I changed status report subject from this report, from submitted date
to week number.
Here's old subjects and week number mapping:
Weekly status report (27th May) => week1
Weekly status report (6th June) => week2
Weekly status report (14th June) => week3

Here's status update from last week:
*multiqueue bpf emulation on SOFTRSS improvements
http://p4web.freebsd.org/@@195038?ac=10

In previous submit, IFCAP_MULTIQUEUE is assigned the interface when
multiqueue BPF enabled(BIOCENAQMASK).
I decided to not assign the flag, but assign IFCAP_SOFT_MULTIQUEUE.
So now we can identify it's real multiqueue NIC or software emulation.

Added rxqid/txqid setting code in ether_output_frame, to handle TX
queue handling.
(m->m_pkthdr.txqid is always 0, ifp->if_txq_num is 1 when SOFTRSS)

Added ifp->if_rxq_affinity/ifp->if_txq_affinity initialization code.

*Reduce lock contention on BPFIF_LOCK
http://p4web.freebsd.org/@@195044?ac=10
mtx replaced with rmlock on BPFIF_LOCK.
Looks working, but more tests and performance analysis are required.

*thoughts
Is there nwsid != cpuid situations? If so, which is used in netisr_select_cpuid?
If netisr_select_cpuid using real cpuid, when cpuid > nws_count
situation occurs, bpf_mtap refers outside of an array(on
d->qmask.qm_rxq_mask), kernel must die there.

Even if netisr_select_cpuid using nwsid, if there's nwsid != cpuid
situation, BIOCRXQAFFINITY should return the mapping info.

*thoughts2
Can we make situation rxqid != cpuid on multiqueue NIC by changing
MSI-x interrupt assignments?



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BANLkTikW73WUNRvZKe2u4XiYVfT42iRruQ>