[SERVER-975] make ClientCusror::yield do an adaptive sleep (WAS: Improve yielding for remove queries) Created: 06/Apr/10 Updated: 12/Jul/16 Resolved: 06/Apr/10 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 1.4.1, 1.5.0 |
| Type: | Improvement | Priority: | Major - P3 |
| Reporter: | Marc Seeger | Assignee: | Eliot Horowitz (Inactive) |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
ubuntu 9.10 64 bit, mongodb 1.4 |
||
| Participants: |
| Description |
|
I'm currently runnning this query: { }, It's now taking > 100 minutes (and still a long way to go) for a 17 million documents collection. The main problem is that it seems to completely lock the application and that it does not yield. This is what I usually see in mongostats: |
| Comments |
| Comment by Eliot Horowitz (Inactive) [ 26/Apr/10 ] |
|
in a release |
| Comment by auto [ 13/Apr/10 ] |
|
Author: {'login': 'erh', 'name': 'Eliot Horowitz', 'email': 'eliot@10gen.com'}Message: adaptive sleep for ClientCusror::yield |
| Comment by auto [ 06/Apr/10 ] |
|
Author: {'login': '', 'name': 'Eliot Horowitz', 'email': 'eliot@10gen.com'}Message: adaptive sleep for ClientCusror::yield |
| Comment by Marc Seeger [ 06/Apr/10 ] |
|
3-4 inserts ONLY once I manually call .count() from the shell. Otherwise I can watch it for 5 minutes without anything else happening here is the currentOP: http://pastebin.com/6uC2ek17 |
| Comment by Eliot Horowitz (Inactive) [ 06/Apr/10 ] |
|
right - you said it let 3-4 inserts in. do you think other ops are having to wait too long? |
| Comment by Marc Seeger [ 06/Apr/10 ] |
|
It was my impression that the "remove data" step shouldn't be blocking but should, in between, let other queries/inserts/updates do their thing. |
| Comment by Eliot Horowitz (Inactive) [ 06/Apr/10 ] |
|
I'm not sure what you mean by improved yielding. It sounds like its doing exactly what its supposed to. remove some data, then let other ops in, then continue... |