> Need a quick code review for: > > 6762222* lockd burns cpu cycles, nfs pathologically slow > > As has been discussed, the immediate approach is to enforce flow > control in the RPC client side dispatch routines -- > clnt_dispatch_send() and clnt_clts_dispatch_send(). In case the > downstream is flow controlled, the error recovery is straightforward > and you rely on the upper (rfscall) layers to retry the call -- a > mechanism that already exists currently to take care of other errors. > > webrev: > http://cr.opensolaris.org/~maheshvs/6762222-webrev/
I haven't looked over everything in detail yet, but at least in clnt_dispatch_send(), it'd be simpler to check canput() earlier in the function, before you've done anything you have to later undo. This is OK because canput() is already not atomic with respect to put() and it's fine if you go a couple of messages over QFULL. > * External links: > CR: http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6762222 > Evaluation for the CR: http://cr.opensolaris.org/~maheshvs/6762222-eval -- meem