<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 03:29:56 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[SERVER-12886] Make non-fastmod updates perform work proportional to the update size</title>
                <link>https://jira.mongodb.org/browse/SERVER-12886</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Currently non-fastmod updates generate I/O proportional to the size of the document (which is pathological for large documents and multi-updates).  See the linked and other related tickets to high write I/O cause by update amplification.&lt;/p&gt;

&lt;p&gt;A proposed fix is two-fold:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Only write back dirty pages (i.e. implement &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-66&quot; title=&quot;do memcmp before memcpy for update?&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-66&quot;&gt;&lt;del&gt;SERVER-66&lt;/del&gt;&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Move Object / Array types which change size to the end of their parent Document&lt;/li&gt;
&lt;/ol&gt;



&lt;ol&gt;
	&lt;li&gt;should ensure that we minimize I/O at little cost to clients&lt;/li&gt;
	&lt;li&gt;should ensure that we don&apos;t constantly re-write unchanged fields in a document.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;I believe 2 is OK, because:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;drivers use HashMaps (unless using an explicit SON type) which doesn&apos;t guarantee order&lt;/li&gt;
	&lt;li&gt;Mongo re-orders fields when moving an expanded document&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This is related, but different, to: &lt;br/&gt;
&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-12732&quot; title=&quot;Permit delta-based updates (update by a damage vector) to indexed fields&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-12732&quot;&gt;SERVER-12732&lt;/a&gt; &lt;br/&gt;
&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-12578&quot; title=&quot;Support in-place update of object/array elements when safe to do so&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-12578&quot;&gt;&lt;del&gt;SERVER-12578&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I&apos;ve attempted implementations of 1 + 2 which seem to give 2 orders of magnitude improvement to performance of the benchmarks on the linked ticket:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/jamesblackburn/mongo/commit/54b5f6b56374630e4a872021e424e6c476c02cff&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/jamesblackburn/mongo/commit/54b5f6b56374630e4a872021e424e6c476c02cff&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/jamesblackburn/mongo/commit/54b5f6b56374630e4a872021e424e6c476c02cff&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/jamesblackburn/mongo/commit/54b5f6b56374630e4a872021e424e6c476c02cff&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</description>
                <environment></environment>
        <key id="114507">SERVER-12886</key>
            <summary>Make non-fastmod updates perform work proportional to the update size</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="2">Won&apos;t Fix</resolution>
                                        <assignee username="backlog-server-execution">Backlog - Storage Execution Team</assignee>
                                    <reporter username="jblackburn">James Blackburn</reporter>
                        <labels>
                            <label>mmapv1</label>
                            <label>pull-request</label>
                    </labels>
                <created>Tue, 25 Feb 2014 19:15:16 +0000</created>
                <updated>Tue, 6 Dec 2022 05:10:50 +0000</updated>
                            <resolved>Fri, 14 Sep 2018 20:04:24 +0000</resolved>
                                    <version>2.6.0-rc0</version>
                                                    <component>MMAPv1</component>
                    <component>Performance</component>
                    <component>Write Ops</component>
                                        <votes>2</votes>
                                    <watches>15</watches>
                                                                                                                <comments>
                            <comment id="623220" author="benety.goh" created="Mon, 16 Jun 2014 17:54:58 +0000"  >&lt;p&gt;Hi James,&lt;/p&gt;

&lt;p&gt;We&apos;ve taken another look at your pull request. Unfortunately, due to recent changes in the storage layer, your commit no longer rebases cleanly on top of master (commit &lt;a href=&quot;https://github.com/mongodb/mongo/commit/82fadf310eeb947b18aa73e4283f272128c5f5ef&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;82fadf3&lt;/a&gt;). Even after resolving the merge conflicts, we encountered a crash in the &lt;b&gt;dbtest&lt;/b&gt; test suite:&lt;/p&gt;

&lt;p&gt;Command line for building and running test:&lt;/p&gt;
&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;scons --dbg=on --opt=on dbtest &amp;amp;&amp;amp; ./dbtest&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;Test output&lt;/p&gt;
&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;2014-06-16T10:29:47.828-0400 [testsuite] Fatal Assertion 16199&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;2014-06-16T10:29:47.836-0400 [testsuite] &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; 0x100b8841a 0x100b377bd 0x100b24558 0x1003ff9a3 0x1004034d1 0x10070064a 0x1006fd714 0x10070b567 0x100701e4b 0x10070cf9a 0x10068dc1a 0x10068ad5d 0x100690e7a 0x10041f0e4 0x10041eddf 0x1003a5a1d 0x1003a553a 0x100b1f1c6 0x100b20632 0x10095aed0&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;----- BEGIN BACKTRACE -----&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{&quot;backtrace&quot;:[{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;B8841A&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;B377BD&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;B24558&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;3FF9A3&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;4034D1&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;70064A&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;6FD714&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;70B567&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;701E4B&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;70CF9A&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;68DC1A&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;68AD5D&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;690E7A&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;41F0E4&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;41EDDF&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;3A5A1D&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;3A553A&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;B1F1C6&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;B20632&quot;},{&quot;b&quot;:&quot;100000000&quot;,&quot;o&quot;:&quot;95AED0&quot;}],&quot;processInfo&quot;:{ &quot;mongodbVersion&quot; : &quot;2.7.3-pre-&quot;, &quot;gitVersion&quot; : &quot;17e4397b6d1d97c64abe8a5eada47702b4763c5d&quot;, &quot;uname&quot; : { &quot;sysname&quot; : &quot;Darwin&quot;, &quot;release&quot; : &quot;13.1.0&quot;, &quot;version&quot; : &quot;Darwin Kernel Version 13.1.0: Wed Apr  2 23:52:02 PDT 2014; root:xnu-2422.92.1~2/RELEASE_X86_64&quot;, &quot;machine&quot; : &quot;x86_64&quot; }, &quot;somap&quot; : [ { &quot;path&quot; : &quot;/Users/benety/src/mongodb/mongo/./dbtest&quot;, &quot;machType&quot; : 2, &quot;b&quot; : &quot;100000000&quot;, &quot;buildId&quot; : &quot;BCC1F559729533A5859261CCFE34706C&quot; }, { &quot;path&quot; : &quot;/usr/lib/libSystem.B.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8AB88000&quot;, &quot;buildId&quot; : &quot;BFC0DC9746C63BE0998354A98734897A&quot; }, { &quot;path&quot; : &quot;/usr/lib/libstdc++.6.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8554B000&quot;, &quot;buildId&quot; : &quot;0241E6A4136833BE950BD0A175C41F54&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libcache.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8DF53000&quot;, &quot;buildId&quot; : &quot;BDC1E65B72A13DA3A57CB23159CAAD0B&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libcommonCrypto.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF86E91000&quot;, &quot;buildId&quot; : &quot;8C4F0CA0389C3EDCB155E62DD2187E1D&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libcompiler_rt.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8D79C000&quot;, &quot;buildId&quot; : &quot;4CD916B21B17362AB403EF24A1DAC141&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libcopyfile.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8EBCE000&quot;, &quot;buildId&quot; : &quot;5A881779D0D63029B371E3021C2DDA5E&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libcorecrypto.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF91E4C000&quot;, &quot;buildId&quot; : &quot;F3973C2814B63006BB2B00DD7F09ABC7&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libdispatch.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF90618000&quot;, &quot;buildId&quot; : &quot;F3CBFE1BFCE83F33A53D9092AB382DBB&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libdyld.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF876C3000&quot;, &quot;buildId&quot; : &quot;CF03004F58E43BB6B3FDBE4E05F128A0&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libkeymgr.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF884DA000&quot;, &quot;buildId&quot; : &quot;3AA8D85DCF003BD3A5A0E28E1A32A6D8&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/liblaunch.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF86196000&quot;, &quot;buildId&quot; : &quot;38D1AB2CA476385F8EA87AB604CA1F89&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libmacho.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF85AA4000&quot;, &quot;buildId&quot; : &quot;1D2910DFC0363A82A3FD44FF73B5FF9B&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libquarantine.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8E8A7000&quot;, &quot;buildId&quot; : &quot;7A1A2BCBC03D3A25BFA43E569B2D2C38&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libremovefile.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8AF97000&quot;, &quot;buildId&quot; : &quot;3543F917928E3DB2A2F47AB73B4970EF&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libsystem_asl.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8C838000&quot;, &quot;buildId&quot; : &quot;655FB34352CF3E2FB14DBEBF5AAEF94D&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libsystem_blocks.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8AB36000&quot;, &quot;buildId&quot; : &quot;FB856CD12AEA39078E9B1E54B6827F82&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libsystem_c.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8AE53000&quot;, &quot;buildId&quot; : &quot;6FD3A4004BB23B95B90CBE6E9D0D78FA&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libsystem_configuration.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF86D4F000&quot;, &quot;buildId&quot; : &quot;B51C8C22C45536AC952DA319B6545884&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libsystem_dnssd.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF90709000&quot;, &quot;buildId&quot; : &quot;A0B7CF19D9F233D48107A62184C9066E&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libsystem_info.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8F246000&quot;, &quot;buildId&quot; : &quot;7D41A156D2853849A2C3C04ADE797D98&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libsystem_kernel.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8F461000&quot;, &quot;buildId&quot; : &quot;3F6499637FA132018FF68438A52B9973&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libsystem_m.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF85DA0000&quot;, &quot;buildId&quot; : &quot;B7F0E2E4277733FCA787D6430B630D54&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libsystem_malloc.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8DF9B000&quot;, &quot;buildId&quot; : &quot;A695B4E438E9332EA77229D31E3F1385&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libsystem_network.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF91849000&quot;, &quot;buildId&quot; : &quot;8B1E1F1DA5CC3BAE8B1EABC84337A364&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libsystem_notify.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF9060E000&quot;, &quot;buildId&quot; : &quot;52571EC3689437E4946E064B021ED44E&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libsystem_platform.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF853AA000&quot;, &quot;buildId&quot; : &quot;3C3D3DA832B9324398ECD89B9A1670B3&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libsystem_pthread.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8EB85000&quot;, &quot;buildId&quot; : &quot;AB498556B555310E9041F67EC9E00E2C&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libsystem_sandbox.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8D79A000&quot;, &quot;buildId&quot; : &quot;5E5A6E0933A9391AAB34E57D93BB1551&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libsystem_stats.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF884DB000&quot;, &quot;buildId&quot; : &quot;1A55AF8AB6C43163B5573AD25DA643A8&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libunc.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8DF58000&quot;, &quot;buildId&quot; : &quot;62682455186236FE8A047A6B91256438&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libunwind.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8EB52000&quot;, &quot;buildId&quot; : &quot;78DCC3582FC1302EB3950155B47CB547&quot; }, { &quot;path&quot; : &quot;/usr/lib/system/libxpc.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF91E12000&quot;, &quot;buildId&quot; : &quot;AB40CD57F4543FD4B41563B3C0D5C624&quot; }, { &quot;path&quot; : &quot;/usr/lib/libobjc.A.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF87DF0000&quot;, &quot;buildId&quot; : &quot;AD7FD984271E30F4A3616B20319EC73B&quot; }, { &quot;path&quot; : &quot;/usr/lib/libauto.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF8AB38000&quot;, &quot;buildId&quot; : &quot;F45C36E8B6063886B5B1B6745E757CA8&quot; }, { &quot;path&quot; : &quot;/usr/lib/libc++abi.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF89C74000&quot;, &quot;buildId&quot; : &quot;21A807D367323455B77F743E9F916DF0&quot; }, { &quot;path&quot; : &quot;/usr/lib/libc++.1.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF86C2F000&quot;, &quot;buildId&quot; : &quot;4F68DFC5207739A8A449CAC5FDEE7BDE&quot; }, { &quot;path&quot; : &quot;/usr/lib/libDiagnosticMessagesClient.dylib&quot;, &quot;machType&quot; : 6, &quot;b&quot; : &quot;7FFF897B4000&quot;, &quot;buildId&quot; : &quot;4CDB0F7BC0AF3424BC39495696F0DB1E&quot; } ] }}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo15printStackTraceERSo+0x3A) [0x100b8841a]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo10logContextEPKc+0xCD) [0x100b377bd]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo13fassertFailedEi+0xA8) [0x100b24558]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo11mutablebson7Element8addChildES1_b+0x433) [0x1003ff9a3]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo11mutablebson7Element8pushBackES1_+0x11) [0x1004034d1]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo11pathsupport12createPathAtERKNS_8FieldRefEmNS_11mutablebson7ElementES5_+0x9AA) [0x10070064a]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZNK5mongo11ModifierSet5applyEv+0x2A4) [0x1006fd714]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo12UpdateDriver6updateERKNS_10StringDataEPNS_11mutablebson8DocumentEPNS_7BSONObjEPNS_11FieldRefSetE+0x2A7) [0x10070b567]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo6updateEPNS_16OperationContextEPNS_8DatabaseERKNS_13UpdateRequestEPNS_7OpDebugEPNS_12UpdateDriverEPNS_14CanonicalQueryE+0x12CB) [0x100701e4b]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo14UpdateExecutor7executeEPNS_16OperationContextEPNS_8DatabaseE+0x9A) [0x10070cf9a]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo14receivedUpdateEPNS_16OperationContextERNS_7MessageERNS_5CurOpE+0x61A) [0x10068dc1a]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo16assembleResponseEPNS_16OperationContextERNS_7MessageERNS_10DbResponseERKNS_11HostAndPortE+0x236D) [0x10068ad5d]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo14DBDirectClient3sayERNS_7MessageEbPSs+0x9A) [0x100690e7a]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo12DBClientBase6updateERKSsNS_5QueryENS_7BSONObjEi+0x244) [0x10041f0e4]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo12DBClientBase6updateERKSsNS_5QueryENS_7BSONObjEbb+0x6F) [0x10041eddf]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN11UpdateTests28TwoModsWithinDuplicatedField3runEv+0x4AD) [0x1003a5a1d]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo8unittest5Suite13runTestObjectIN11UpdateTests28TwoModsWithinDuplicatedFieldEEEvv+0x1A) [0x1003a553a]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo8unittest5Suite3runERKSsi+0x696) [0x100b1f1c6]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo8unittest5Suite3runERKSt6vectorISsSaISsEERKSsi+0x7B2) [0x100b20632]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; dbtest(_ZN5mongo7dbtests10runDbTestsEiPPc+0xA0) [0x10095aed0]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;-----  END BACKTRACE  -----&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;We are still interested in the changes proposed in the pull request and will keep this SERVER ticket open. The existing pull request &lt;a href=&quot;https://github.com/mongodb/mongo/pull/646&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;#646&lt;/a&gt; will be closed. A new pull request rebased on a more recent commit would have to be submitted that does not contain the re-ordering logic.&lt;/p&gt;

&lt;p&gt;Regards,&lt;br/&gt;
Ben&lt;/p&gt;</comment>
                            <comment id="507944" author="jblackburn" created="Mon, 3 Mar 2014 14:14:09 +0000"  >&lt;p&gt;Thanks for taking the time to review Andrew!&lt;/p&gt;

&lt;p&gt;Regarding your points:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;I hadn&apos;t realised &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-2592&quot; title=&quot;The fields in a document are reordered (sorted alphabetically) when setting a field value&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-2592&quot;&gt;&lt;del&gt;SERVER-2592&lt;/del&gt;&lt;/a&gt; had been fixed.  It&apos;s a laudable goal.  That said I think re-ordering a document (or sub-document&apos;s) element&apos;s when it is resized isn&apos;t too big a deal.  As  the &lt;em&gt;range query&lt;/em&gt;, and &lt;em&gt;unique index&lt;/em&gt; concerns in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-2592&quot; title=&quot;The fields in a document are reordered (sorted alphabetically) when setting a field value&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-2592&quot;&gt;&lt;del&gt;SERVER-2592&lt;/del&gt;&lt;/a&gt; relate to SON document equality which doesn&apos;t make sense to me in the presence of resize-able fields.&lt;br/&gt;
In our schema, and I suspect this is generally true, people use hash maps rather than SON objects in the application so we haven&apos;t up till now had control of the field ordering.  &lt;br/&gt;
If it&apos;s a requirement to not optimize document ordering, we could:
	&lt;ol&gt;
		&lt;li&gt;Only apply this optimisation to &apos;larger&apos; documents &lt;tt&gt;size &amp;gt; 2&lt;/tt&gt; pages, say&lt;/li&gt;
		&lt;li&gt;Or add a collection level config option &lt;tt&gt;allowFieldReorder&lt;/tt&gt; (like usePowerOf2Sizes)&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
	&lt;li&gt;The original patch had a TODO for page alignment of the destination.  I was assuming that there would be few changed (damaged) sections in the document which would lead to 2*N additional damaged pages, and this would be dwarfed by the total size of the changed range.  I guess for lots of small updates this could be large.  I&apos;ll put a fix in to reduce this overhead.&lt;/li&gt;
&lt;/ol&gt;


&lt;blockquote&gt;
&lt;p&gt;Would you be willing to re-run your benchmarks without the document reordering behavior, and post your results?&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Removing the re-order breaks the optimization and returns the performance to the baseline.  This is straightforward to see in the attached version_store.py:  by moving the &lt;tt&gt;parent&lt;/tt&gt; field above or below the 4MB &lt;tt&gt;data&lt;/tt&gt;.  As the 4MB chunk is made or random data, having the parent array before the data causes a full-rewrite, whereas having it after causes just the last page to be re-written.&lt;/p&gt;

&lt;p&gt;I think not optimising in the DB will require people to know / decide in advance which fields are likely to change, and forces them to use SON objects with fixed ordering - arrays, and nested documents at the end.  This exposes an implementation detail: changing the size of an early field causes the remainder of the document to be re-written.  Adding additional config options would also seem unnecessary if there really isn&apos;t a use-case for switching this option off.&lt;/p&gt;</comment>
                            <comment id="507139" author="acm" created="Fri, 28 Feb 2014 15:56:05 +0000"  >&lt;p&gt;Hi -&lt;/p&gt;

&lt;p&gt;Thank you for the pull requests. We are currently in code freeze for the upcoming 2.6.0 release, so this change (or something like it) cannot be merged until the master branch re-opens for 2.7 changes and the 2.6 branch opens for 2.6.1 changes.&lt;/p&gt;

&lt;p&gt;Here are some comments on your submission:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;For the change to mutable bson, we actually made it an explicit goal of the 2.6 release that fields were not re-ordered. So we would need to consider carefully whether or not we wanted to back away from that goal in a subsequent release. See &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-2592&quot; title=&quot;The fields in a document are reordered (sorted alphabetically) when setting a field value&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-2592&quot;&gt;&lt;del&gt;SERVER-2592&lt;/del&gt;&lt;/a&gt; for additional details. That said, your change is quite interesting and looks correct, and the way the move to back bubbles up is interesting.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;For the memory writing changes, these are interesting as well, and reducing memory traffic for updates can only be a good thing.  You should know that records are not necessarily page-aligned, so your page-stepping algorithm might be improved by a preamble in which the data up to the first page boundary is handled separately.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Would you be willing to re-run your benchmarks without the document reordering behavior, and post your results?&lt;/p&gt;

&lt;p&gt;Overall, these are good ideas and we appreciate your taking the time to share your implementation of them with us.&lt;/p&gt;

&lt;p&gt;Thanks,&lt;br/&gt;
Andrew&lt;/p&gt;</comment>
                            <comment id="507040" author="jblackburn" created="Fri, 28 Feb 2014 12:01:59 +0000"  >&lt;p&gt;Running the &lt;tt&gt;python mongostat.py --journal&lt;/tt&gt; script, you see:&lt;/p&gt;

&lt;p&gt;MongoDB:&lt;/p&gt;
&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;insert  query update delete getmore command flushes mapped  vsize    res faults      locked db idx miss %     qr|qw   ar|aw  netIn netOut  conn       time &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;     1      1      1     *0       0     2|0       0  1.03g  2.87g   905m      0 vs_test:147.0%          0       1|0     0|1   838b     6k     3   11:55:20 &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    *0      1      1      2       0     3|0       0  1.03g  2.87g   820m      0 vs_test:160.8%          0       1|0     0|1   993b     7k     3   11:55:22 &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;     1      1      1     *0       0     2|0       0  1.03g  2.87g   855m      0 vs_test:177.3%          0       0|1     0|1   902b     9k     3   11:55:23 &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    *0     *0     *0      2       0     2|0       0  1.03g  2.87g   804m      0 vs_test:108.7%          0       0|0     0|1   291b     6k     3   11:55:24 &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;commits   journaledMB   writeToDataFilesMB   compression   commitsInWriteLock   earlyCommits   dt   prepLogBuffer   writeToJournal   writeToDataFiles   remapPrivateView   time    &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;6         94.208        483.049056           0.19502712262 0                    0              3336 175             2279             171                29                 11:55:20&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;6         94.208        483.049056           0.19502712262 0                    0              3336 175             2279             171                29                 11:55:22&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;6         94.208        483.049056           0.19502712262 0                    0              3336 175             2279             171                29                 11:55:23&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;6         86.286336     442.367874           0.19505497043 0                    0              3027 160             2109             131                29                 11:55:24&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-12886&quot; title=&quot;Make non-fastmod updates perform work proportional to the update size&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-12886&quot;&gt;&lt;del&gt;SERVER-12886&lt;/del&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;insert  query update delete getmore command flushes mapped  vsize    res faults      locked db idx miss %     qr|qw   ar|aw  netIn netOut  conn       time &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;     6     13     13     14       0     3|0       0  1.03g  2.85g   890m      0 vs_test:128.0%          0       0|0     0|1    10k    13k     3   11:53:24 &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;     6     12     12     12       0     3|0       0  1.03g  2.85g   844m      0 vs_test:133.0%          0       0|0     0|1     9k    12k     3   11:53:25 &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;     6     12     12     12       0     2|0       0  1.03g  2.85g   854m      0 vs_test:143.9%          0       0|0     0|1     9k    12k     3   11:53:26 &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;     7     14     14     14       0     3|0       0  1.03g  2.85g   896m      0 vs_test:126.6%          0       0|1     0|1    10k    13k     3   11:53:27 &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;commits   journaledMB   writeToDataFilesMB   compression   commitsInWriteLock   earlyCommits   dt   prepLogBuffer   writeToJournal   writeToDataFiles   remapPrivateView   time    &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;25        1.982464      8.976778             0.2199573569  0                    0              3010 3               68               3                  8                  11:53:24&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;25        1.982464      8.976778             0.2199573569  0                    0              3010 3               68               3                  8                  11:53:25&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;26        2.121728      9.71555              0.21751320598 0                    0              3041 3               69               4                  17                 11:53:26&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;26        2.121728      9.71555              0.21751320598 0                    0              3041 3               69               4                  17                 11:53:27&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;You see up to 46 operations happening per second vs 2-4.&lt;/p&gt;</comment>
                            <comment id="507032" author="jblackburn" created="Fri, 28 Feb 2014 11:34:01 +0000"  >&lt;p&gt;Benchmark with 4MB documents:&lt;/p&gt;

&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;python ~/workspaces/scratch/mongo/CS-8941/version_store.py&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;Mongo:         TPS: avg: 0.377610404199 curr: 0.673707800341 cum: 25&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;Toku:          TPS: avg: 0.540124653158 curr: 0.904476402403 cum: 32&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;SERVER-12886:  TPS: avg: 4.48938135632  curr: 4.86169965405  cum: 32&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;python ~/workspaces/scratch/mongo/CS-8941/version_store.py --index-parent&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;Mongo:         TPS: avg: 0.38500711589 curr: 0.550002688183 cum: 32&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;Toku:          TPS: avg: 0.33341550285 curr: 0.865195624416 cum: 32&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;SERVER-12886:  TPS: avg: 5.99320924995 curr: 7.00250575204  cum: 35&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;In this benchmark this patch makes MongoDB 10-15x faster for updates than the default build and Toku build.&lt;/p&gt;</comment>
                            <comment id="506509" author="jblackburn" created="Thu, 27 Feb 2014 17:57:21 +0000"  >&lt;p&gt;Attached is a python mongostat which can be used for printing journal and DB files write stats&lt;/p&gt;
&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;python mongostat.py --journal&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;These changes also improves the sysbench benchmark by 50% for large documents:&lt;br/&gt;
&lt;a href=&quot;https://github.com/tmcallaghan/sysbench-mongodb/pull/2&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/tmcallaghan/sysbench-mongodb/pull/2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(and doesn&apos;t seem to penalize small document updates).&lt;/p&gt;</comment>
                            <comment id="505993" author="jblackburn" created="Wed, 26 Feb 2014 21:16:26 +0000"  >&lt;p&gt;Added a performance test demonstrating the difference. &lt;/p&gt;

&lt;p&gt;Before the changes altering an indexed field, or an array field causes up to 10MB of I/O.  &lt;br/&gt;
After the change I/O is 1-30k.&lt;/p&gt;

&lt;p&gt;As well as reducing I/O this appears to reduce time in the writeLock by ~30%.&lt;/p&gt;

&lt;p&gt;Pull request submitted:&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/pull/646&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/pull/646&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="505539" author="jblackburn" created="Wed, 26 Feb 2014 08:28:35 +0000"  >&lt;p&gt;Patches related to this change are in the following branch:&lt;br/&gt;
&lt;a href=&quot;https://github.com/jamesblackburn/mongo/tree/SERVER-12886&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/jamesblackburn/mongo/tree/SERVER-12886&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Difference to master:&lt;br/&gt;
&lt;a href=&quot;https://github.com/jamesblackburn/mongo/compare/SERVER-12886&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/jamesblackburn/mongo/compare/SERVER-12886&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                                        </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="38527" name="mongostat.py" size="3296" author="jblackburn" created="Thu, 27 Feb 2014 17:57:21 +0000"/>
                            <attachment id="38458" name="perf-after.txt" size="4859" author="jblackburn" created="Wed, 26 Feb 2014 21:16:26 +0000"/>
                            <attachment id="38457" name="perf-before.txt" size="4886" author="jblackburn" created="Wed, 26 Feb 2014 21:16:26 +0000"/>
                            <attachment id="38667" name="version_store.py" size="6243" author="jblackburn" created="Fri, 28 Feb 2014 11:34:01 +0000"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>8.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25136"><![CDATA[Storage Execution]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_13552" key="com.go2group.jira.plugin.crm:crm_generic_field">
                        <customfieldname>Case</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[[500A000000UaVvHIAV]]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Fri, 28 Feb 2014 15:56:05 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        9 years, 35 weeks, 2 days ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>alexander.golin@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            9 years, 35 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>andrew.morrow@mongodb.com</customfieldvalue>
            <customfieldvalue>backlog-server-execution</customfieldvalue>
            <customfieldvalue>benety.goh@mongodb.com</customfieldvalue>
            <customfieldvalue>jblackburn</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrm0pb:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr8gs7:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4034</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_23361" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Requested By</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_22870" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Triagers</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hsh58v:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>