> I changed a setup to make the server response quicker, and the
> client slower. Looks OK now. So the problem seems like too many
> pending tcp requests stucks the client system. Is there any good
> way to control the flow or pending requests of the system? I
> tried to set some threshold in do_nbd_requests, only blocks the
> processes in _get_request_wait() which is not I wanted.
I did wonder about that whih was why I asked the question about the tcp_*mem
settings. I guess that if that is the case either you can increase the tcp_*mem
settings or make the maximum number of blocks merged into a single request
lower. Personally I'd go for the former solution, all you need to do is select
suitable numbers to set for these files (see
linux/Documentation/networking/ip-sysctl.txt for their exact meaning). If
this does turn out to be the problem, then you'll need to make the config
changes on both server and client as they can both send maximum sized requests
(128 (MAX_SEGMENTS) sectors plus the size of the header).
To reduce the request size you can alter MAX_SEGMENTS in blkdev.h but this
isn't really a very good solution as it reduces the ability to merge I/O
for local disks.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to firstname.lastname@example.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/