From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============3916636746880578225==" MIME-Version: 1.0 From: Andrey Kuzmin Subject: Re: [SPDK] Problem with Blobstore when write 65MB continously Date: Wed, 10 Jan 2018 19:28:16 +0000 Message-ID: In-Reply-To: 1515604634.6063.43.camel@intel.com List-ID: To: spdk@lists.01.org --===============3916636746880578225== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On Wed, Jan 10, 2018, 20:17 Walker, Benjamin wrote: > On Wed, 2018-01-10 at 17:00 +0000, Andrey Kuzmin wrote: > > > > > > On Wed, Jan 10, 2018, 19:47 Luse, Paul E wrot= e: > > > So I'll take the easy way out and just ask.. what's the most efficient > way > > > for an app, designed just this one for whatever reason, essentially > > > relinquish control to the event reactor - is there a single call he > can slip > > > into the loop to give other pending events, if any a chance to run and > if > > > not continue on submitting? > > > > It appears quite logical to start submission with a check for pending > > completions, doesn't it? Or check for completions if downstream bdev > returns > > busy status. That would definitely meet app expectations whatever the > request > > pool size is. > > We've considered checking for completions inside the submission path if we > would > otherwise return ENOMEM. So far, we've decided not to go that direction > for two > reasons. > > 1) Even if we do this, there are still cases where we'll return ENOMEM. F= or > instance, if there are no completions to reap yet. > While theoretically possible, such a case is problematic to imagine in practice. 2) This would result in completion callbacks in response to a submit call. > Today, the expectations are set that completions are called in response to > a > poll call only. > Feel free to correct me if I'm wrong, but my recollection is that completion callback may be called on submission path in case of error. The case in question is, apparently, a corner one as application must check for completions if bdev returns busy status. One cannot run an unlimited rate client atop a rate-limited server w/o a poll enforced at some point. It might also be helpful to add a parameter to the poll call specifying the minimum number of completions to reap before returning control to the app, to deal with deadlocks like this one. Regards, Andrey _______________________________________________ > SPDK mailing list > SPDK(a)lists.01.org > https://lists.01.org/mailman/listinfo/spdk > -- = Regards, Andrey --===============3916636746880578225== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGJyPjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+PGRpdiBkaXI9Imx0ciI+T24gV2VkLCBK YW4gMTAsIDIwMTgsIDIwOjE3IFdhbGtlciwgQmVuamFtaW4gJmx0OzxhIGhyZWY9Im1haWx0bzpi ZW5qYW1pbi53YWxrZXJAaW50ZWwuY29tIj5iZW5qYW1pbi53YWxrZXJAaW50ZWwuY29tPC9hPiZn dDsgd3JvdGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9 Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVm dDoxZXgiPk9uIFdlZCwgMjAxOC0wMS0xMCBhdCAxNzowMCArMDAwMCwgQW5kcmV5IEt1em1pbiB3 cm90ZTo8YnI+CiZndDs8YnI+CiZndDs8YnI+CiZndDsgT24gV2VkLCBKYW4gMTAsIDIwMTgsIDE5 OjQ3IEx1c2UsIFBhdWwgRSAmbHQ7PGEgaHJlZj0ibWFpbHRvOnBhdWwuZS5sdXNlQGludGVsLmNv bSIgdGFyZ2V0PSJfYmxhbmsiPnBhdWwuZS5sdXNlQGludGVsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxi cj4KJmd0OyAmZ3Q7IFNvIEkmIzM5O2xsIHRha2UgdGhlIGVhc3kgd2F5IG91dCBhbmQganVzdCBh c2suLiB3aGF0JiMzOTtzIHRoZSBtb3N0IGVmZmljaWVudCB3YXk8YnI+CiZndDsgJmd0OyBmb3Ig YW4gYXBwLCBkZXNpZ25lZCBqdXN0IHRoaXMgb25lIGZvciB3aGF0ZXZlciByZWFzb24sIGVzc2Vu dGlhbGx5PGJyPgomZ3Q7ICZndDsgcmVsaW5xdWlzaCBjb250cm9sIHRvIHRoZSBldmVudCByZWFj dG9yIC0gaXMgdGhlcmUgYSBzaW5nbGUgY2FsbCBoZSBjYW4gc2xpcDxicj4KJmd0OyAmZ3Q7IGlu dG8gdGhlIGxvb3AgdG8gZ2l2ZSBvdGhlciBwZW5kaW5nIGV2ZW50cywgaWYgYW55IGEgY2hhbmNl IHRvIHJ1biBhbmQgaWY8YnI+CiZndDsgJmd0OyBub3QgY29udGludWUgb24gc3VibWl0dGluZz88 YnI+CiZndDs8YnI+CiZndDsgSXQgYXBwZWFycyBxdWl0ZSBsb2dpY2FsIHRvIHN0YXJ0IHN1Ym1p c3Npb24gd2l0aCBhIGNoZWNrIGZvciBwZW5kaW5nPGJyPgomZ3Q7IGNvbXBsZXRpb25zLCBkb2Vz biYjMzk7dCBpdD8gT3IgY2hlY2sgZm9yIGNvbXBsZXRpb25zIGlmIGRvd25zdHJlYW0gYmRldiBy ZXR1cm5zPGJyPgomZ3Q7IGJ1c3kgc3RhdHVzLiBUaGF0IHdvdWxkIGRlZmluaXRlbHkgbWVldCBh cHAgZXhwZWN0YXRpb25zIHdoYXRldmVyIHRoZSByZXF1ZXN0PGJyPgomZ3Q7IHBvb2wgc2l6ZSBp cy48YnI+Cjxicj4KV2UmIzM5O3ZlIGNvbnNpZGVyZWQgY2hlY2tpbmcgZm9yIGNvbXBsZXRpb25z IGluc2lkZSB0aGUgc3VibWlzc2lvbiBwYXRoIGlmIHdlIHdvdWxkPGJyPgpvdGhlcndpc2UgcmV0 dXJuIEVOT01FTS4gU28gZmFyLCB3ZSYjMzk7dmUgZGVjaWRlZCBub3QgdG8gZ28gdGhhdCBkaXJl Y3Rpb24gZm9yIHR3bzxicj4KcmVhc29ucy48YnI+Cjxicj4KMSkgRXZlbiBpZiB3ZSBkbyB0aGlz LCB0aGVyZSBhcmUgc3RpbGwgY2FzZXMgd2hlcmUgd2UmIzM5O2xsIHJldHVybiBFTk9NRU0uIEZv cjxicj4KaW5zdGFuY2UsIGlmIHRoZXJlIGFyZSBubyBjb21wbGV0aW9ucyB0byByZWFwIHlldC48 YnI+PC9ibG9ja3F1b3RlPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+V2hpbGUgdGhlb3JldGlj YWxseSBwb3NzaWJsZSwgc3VjaCBhIGNhc2UgaXMgcHJvYmxlbWF0aWMgdG8gaW1hZ2luZSBpbiBw cmFjdGljZS48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+PGJs b2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9y ZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+CjIpIFRoaXMgd291bGQg cmVzdWx0IGluIGNvbXBsZXRpb24gY2FsbGJhY2tzIGluIHJlc3BvbnNlIHRvIGEgc3VibWl0IGNh bGwuPGJyPgpUb2RheSwgdGhlIGV4cGVjdGF0aW9ucyBhcmUgc2V0IHRoYXQgY29tcGxldGlvbnMg YXJlIGNhbGxlZCBpbiByZXNwb25zZSB0byBhPGJyPgpwb2xsIGNhbGwgb25seS48YnI+PC9ibG9j a3F1b3RlPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+RmVlbCBmcmVlIHRvIGNvcnJlY3QgbWUg aWYgSSYjMzk7bSB3cm9uZywgYnV0IG15IHJlY29sbGVjdGlvbiBpcyB0aGF0IGNvbXBsZXRpb24g Y2FsbGJhY2sgbWF5IGJlIGNhbGxlZCBvbiBzdWJtaXNzaW9uIHBhdGggaW4gY2FzZSBvZiBlcnJv ci48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlRoZSBjYXNlIGluIHF1ZXN0aW9uIGlzLCBhcHBh cmVudGx5LCBhIGNvcm5lciBvbmUgYXMgYXBwbGljYXRpb24gbXVzdCBjaGVjayBmb3IgY29tcGxl dGlvbnMgaWYgYmRldiByZXR1cm5zIGJ1c3kgc3RhdHVzLiBPbmUgY2Fubm90IHJ1biBhbiB1bmxp bWl0ZWQgcmF0ZSBjbGllbnQgYXRvcCBhIHJhdGUtbGltaXRlZCBzZXJ2ZXIgdy9vIGEgcG9sbCBl bmZvcmNlZCBhdCBzb21lIHBvaW50LjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+SXQgbWlnaHQg YWxzbyBiZSBoZWxwZnVsIHRvIGFkZCBhIHBhcmFtZXRlciB0byB0aGUgcG9sbCBjYWxsIHNwZWNp ZnlpbmcgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGNvbXBsZXRpb25zIHRvIHJlYXAgYmVmb3JlIHJl dHVybmluZyBjb250cm9sIHRvIHRoZSBhcHAsIHRvIGRlYWwgd2l0aCBkZWFkbG9ja3MgbGlrZSB0 aGlzIG9uZS48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlJlZ2FyZHMsPC9kaXY+PGRpdj5BbmRy ZXk8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+PGJsb2NrcXVv dGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxl ZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+Cl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPgpTUERLIG1haWxpbmcgbGlzdDxicj4KPGEg aHJlZj0ibWFpbHRvOlNQREtAbGlzdHMuMDEub3JnIiB0YXJnZXQ9Il9ibGFuayI+U1BES0BsaXN0 cy4wMS5vcmc8L2E+PGJyPgo8YSBocmVmPSJodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xp c3RpbmZvL3NwZGsiIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vbGlz dHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vc3BkazwvYT48YnI+CjwvYmxvY2txdW90ZT48L2Rp dj48ZGl2IGRpcj0ibHRyIj4tLSA8YnI+PC9kaXY+PGRpdiBjbGFzcz0iZ21haWxfc2lnbmF0dXJl IiBkYXRhLXNtYXJ0bWFpbD0iZ21haWxfc2lnbmF0dXJlIj48cCBkaXI9Imx0ciI+UmVnYXJkcyw8 YnI+CkFuZHJleTwvcD4KPC9kaXY+Cg== --===============3916636746880578225==--