erpc-io / eRPC

Efficient RPCs for datacenter networks
https://erpc.io/
Other
835 stars 137 forks source link

Continuation-Function and Request-Handlers #42

Closed dgiantsidi closed 4 years ago

dgiantsidi commented 4 years ago

Hi again,

If an application thread enqueues a request, will the continuation-function for this specific request be executed by the same specific application thread or can be executed any other application thread running? (for simplification erpc-background threads are disabled).

Likewise, in the remote machine, the thread that will execute the request_handler function, will be the thread that is "connected" (through Remote ID) with the sender or any thread that might be available?

Thanks, --Dimitra

anujkaliaiitd commented 4 years ago

The continuation will always run on the thread that enqueued the request. This is enforced by the hidden cont_etid (short for continuation's eRPC thread ID) parameter to enqueue_request.

Without background RPCs, the remote thread that executes the request handler is the remote thread that the client created a session to.

Dimitra - can you please tell me the version of DPDK you are using and if you had to modify eRPC to fix any compilation issues? Thanks!

dgiantsidi commented 4 years ago

Thanks Anuj for your reply.

I am using DPDK-19.08.0-rc2.

I didn't change any eRPC code except for a line in src/util/huge_alloc.c. In particular, I changed this: shm_id = shmget(shm_key, size, IPC_CREAT | IPC_EXCL | 0666 | SHM_HUGETLB); to this: shm_id = shmget(shm_key, size, IPC_CREAT | IPC_EXCL | 0666);

Otherwise I got an error for Invalid Argument error when invoking mbind() a few lines below.

In order to make it compile I had to change some compiler-flags but I suspect that the problem cannot be there (e.g. added -msse4.1, -Wno-error, etc).

Thanks, Dimitra