I’m developing a block device driver talking to a storage device over TCP/IP. I’m using WskSend and WskReceive for sending and receiving the data from target device.
I have 8 cores in my PC, when issuing commands from multiple cores (C0, C1, C2, C3, C4, C5, C6, C7) getting all the WSK callbacks runs on one particular core (C0).
These are the APIs which I’m using.
IoSetCompletionRoutine(irp, CommandCallback, pContext, TRUE, TRUE, TRUE);
WskSend(WskSocket, &wskbuf, WSK_FLAG_NODELAY, irp);
WskReceive(WskSocket, &wskbuf, WSK_FLAG_WAITALL, irp);
OS is Windows Server 2012 R2 & Windows 10.
Why the callbacks run on one particular core? This callbacks are running on NIC driver context. Can't it be scheduled to run on multiple cores which I believe will improve performance?
It looks like you're new here. If you want to get involved, click one of these buttons!
|Upcoming OSR Seminars|
|Writing WDF Drivers||21 Oct 2019||OSR Seminar Space & ONLINE|
|Internals & Software Drivers||18 Nov 2019||Dulles, VA|
|Kernel Debugging||30 Mar 2020||OSR Seminar Space|
|Developing Minifilters||27 Apr 2020||OSR Seminar Space & ONLINE|