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|
|Developing Minifilters||29 July 2019||OSR Seminar Space|
|Writing WDF Drivers||23 Sept 2019||OSR Seminar Space|
|Kernel Debugging||21 Oct 2019||OSR Seminar Space|
|Internals & Software Drivers||18 Nov 2019||Dulles, VA|