-
Notifications
You must be signed in to change notification settings - Fork 85
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Core: bypass write to pipe for local transactions #672
base: master
Are you sure you want to change the base?
Conversation
Reworked dnet_io_req_queue function to pass io_req struct directly to the proper IO pool, eliminating write/read through pipe in net pool.
@@ -192,7 +206,10 @@ static struct dnet_io_req *dnet_io_req_copy(struct dnet_net_state *st, struct dn | |||
|
|||
offset = r->hsize; | |||
memcpy(r->header, orig->header, r->hsize); | |||
} | |||
} else if (read_data) { | |||
r->header = buf + sizeof(struct dnet_io_req); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If orig
doesn't have header, why does it set r->header
here?
Why is this needed? Do you have so many local requests which come from one queue to another? |
We want to run traffic-intensive wokers with SRW, and use Cocaine localnode service (it will be in separate PR later) to access data. We do not want to start elliptics client in each worker because our cluster is pretty large, and we can't update it (elliptics client inside worker's code) in case of Elliptics cluster major version upgrade. |
To isolate work with dnet_io_req data pointers request fixup was moved to dnet_io_req_copy function from dnet_io_req_queue.
@toshic It is ready to be merged, isn't it? |
I shink so. |
Reworked dnet_io_req_queue function to pass io_req struct directly
to the proper IO pool, eliminating write/read through pipe in net pool.