{"push_id":761886016,"size":9,"distinct_size":1,"ref":"refs/heads/wt-2045","head":"1100f6ee4f6bd4bf5a23eb29f110122da8a41756","before":"6d2f350c4d5cdb7f98f7a304baf98b7b9b382b1e","commits":[{"sha":"87bb029591a9fc8a4dad84549502c91416c4d139","author":{"email":"0ccc0848a69a0c9f60128cfc9721e973b7acd43f@wiredtiger.com","name":"Keith Bostic"},"message":"WT-2029, improve scalability of statistics\n\nInstead of using per-thread arrays of counters (see #2102), use arrays\nof statistics structures. I started with the scalable_stats branch, so\nthis incorporates most of the commits on that branch, but the diff is\nagainst the develop branch to make it easier to review.\n\nSpecifically, this includes a9675d0:\n\tThere are only 3 statistics we maintain atomically: the count\n\tof open cursors and the split-stash bytes and object counts.\n\tMove them to WT_CONNECTION_IMPL fields, and copy them into the\n\tstatistics on demand, this allows us to remove support for\n\tatomically maintaining statistics values.\n\nAnd 6bda287:\n\tGet rid of the WT_CONN_{STAT,STAT_GET,STAT_SET} macros, instead\n\tmaintain a few additional fields in the WT_CONNECTION_IMPL\n\tstructure (checkpoint min/max, recent and total time).\n\nAnd 7590930:\n\tUse a prime number of buckets rather than assuming a good hash\n\t(Reference Sedgewick, Algorithms in C, \"Hash Functions\").\n\nAnd 63a2082:\n\tI'm seeing a roughly 20% advantage of using a loop to clear the\n\tstats values, vs. a memset to clear the whole padded chunk, and\n\tI'd rather err on the side of writing fewer cache lines, anyway.\n\nAdditionally:\n\nNow we have arrays of statistics structures, separate out each statistic\nvalue's description into a separate array, a struct of strings. We could\naccess it directly, and maybe should, but I'm using a function all at\nthe moment.\n\nNow the statistic's descriptions are separate from the statistics values,\nwe no longer need macros to access the fields, in general we can simply\nuse the stat structure reference and the field name and set the int64_t\ndirectly. This includes removal of the WT_STATS typedef.\n\nChange the LSM code to not maintain a local data-source statistics\nstructure in each LSM-tree structure -- that allows us to remove all of\nthe macros to update a single stats structure, and I don't think it\ncomplicates things that much. The changes to the LSM statistics code\nshould be closely reviewed.","distinct":false,"url":"https://api.github.com/repos/wiredtiger/wiredtiger/commits/87bb029591a9fc8a4dad84549502c91416c4d139"},{"sha":"911e199d530bba8d1604c8434753d14926a86b58","author":{"email":"0ccc0848a69a0c9f60128cfc9721e973b7acd43f@wiredtiger.com","name":"Keith Bostic"},"message":"Simplify dump-cursor a little by looking inside the underlying\nstatistics cursor.","distinct":false,"url":"https://api.github.com/repos/wiredtiger/wiredtiger/commits/911e199d530bba8d1604c8434753d14926a86b58"},{"sha":"ac48a89d710a193ef27a6af998aea9badac3eebd","author":{"email":"0ccc0848a69a0c9f60128cfc9721e973b7acd43f@wiredtiger.com","name":"Keith Bostic"},"message":"Fix a bug, don't both increment stats and offset it by the array\ncounter.","distinct":false,"url":"https://api.github.com/repos/wiredtiger/wiredtiger/commits/ac48a89d710a193ef27a6af998aea9badac3eebd"},{"sha":"5ba532a71a8df9bab7233dbfe9322daa4fd2bcc2","author":{"email":"0ccc0848a69a0c9f60128cfc9721e973b7acd43f@wiredtiger.com","name":"Keith Bostic"},"message":"Merge branch 'develop' into scalable_stats_keith","distinct":false,"url":"https://api.github.com/repos/wiredtiger/wiredtiger/commits/5ba532a71a8df9bab7233dbfe9322daa4fd2bcc2"},{"sha":"7624365c78aeca6feba3a97f4dab86fe8bb43e35","author":{"email":"0ccc0848a69a0c9f60128cfc9721e973b7acd43f@wiredtiger.com","name":"Keith Bostic"},"message":"We're only using WT_CURSOR.stats_dsrc to decide which descriptions\nfunction to call, might as well just keep a function pointer instead.\n(There should be some (faster) way to get to the array itself, but I\ndon't see one at the moment.)","distinct":false,"url":"https://api.github.com/repos/wiredtiger/wiredtiger/commits/7624365c78aeca6feba3a97f4dab86fe8bb43e35"},{"sha":"6b84722633b4d5340ed4c53b9b5251e9e191581c","author":{"email":"7a59dd3c283dfbcaac5e0975334647ec126394a6@mongodb.com","name":"Keith Bostic"},"message":"Merge pull request #2122 from wiredtiger/scalable_stats_keith\n\nWT-2029, improve scalability of statistics","distinct":false,"url":"https://api.github.com/repos/wiredtiger/wiredtiger/commits/6b84722633b4d5340ed4c53b9b5251e9e191581c"},{"sha":"ce223acbf67101ddb1845e4f3a10c208ba82b067","author":{"email":"0ccc0848a69a0c9f60128cfc9721e973b7acd43f@wiredtiger.com","name":"Keith Bostic"},"message":"WT-2045: There are two places in the page-read code where a reading\nthread calls __wt_cache_eviction_check without first checking the\nWT_READ_NO_EVICT flag, and that can lead to deadlock. The case I have\nis a configuration with no eviction-worker threads, lots of eviction\npressure, and so the application threads are busy doing eviction.\n\nThe eviction server thread splits a page, is getting a hazard pointer\non the parent, and for some reason can't get it immediately. The\neviction server thread then gets pressed into doing more eviction, there\nare no pages on the queue because the application threads have emptied\nit, and things stall forever while the eviction server looks for pages\non the empty eviction queue.","distinct":false,"url":"https://api.github.com/repos/wiredtiger/wiredtiger/commits/ce223acbf67101ddb1845e4f3a10c208ba82b067"},{"sha":"41b410e08778ab1f328e35d323b60bcb39f18bf2","author":{"email":"0ccc0848a69a0c9f60128cfc9721e973b7acd43f@wiredtiger.com","name":"Keith Bostic"},"message":"Update a comment to match the WT-2045 failure.","distinct":false,"url":"https://api.github.com/repos/wiredtiger/wiredtiger/commits/41b410e08778ab1f328e35d323b60bcb39f18bf2"},{"sha":"1100f6ee4f6bd4bf5a23eb29f110122da8a41756","author":{"email":"0ccc0848a69a0c9f60128cfc9721e973b7acd43f@wiredtiger.com","name":"Keith Bostic"},"message":"Merge branch 'develop' into wt-2045","distinct":true,"url":"https://api.github.com/repos/wiredtiger/wiredtiger/commits/1100f6ee4f6bd4bf5a23eb29f110122da8a41756"}]}