<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 21:19:39 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>[CDRIVER-4002] Improve multi-threaded perf for mongoc_client_pool_t</title>
                <link>https://jira.mongodb.org/browse/CDRIVER-4002</link>
                <project id="10030" key="CDRIVER">C Driver</project>
                    <description>&lt;p&gt;A simple benchmark which spawns shows negative scaling of operation throughput as the thread count increases.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/kevinAlbs/mongo-c-driver/blob/d564e7b52716c0d76af7a3ef610065f52e0c3724/src/libmongoc/examples/workload_find.c&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;workload_find.c&lt;/a&gt; creates &lt;tt&gt;n&lt;/tt&gt; threads. Each thread pops a client from a &lt;tt&gt;mongoc_client_pool_t&lt;/tt&gt; and repeatedly executes a &lt;tt&gt;find&lt;/tt&gt; with filter &lt;tt&gt;_id: 0&lt;/tt&gt;. I observed similar scaling behavior. I added a flag to alternatively create a separate single-threaded client per thread. These were the results on a 16 vCPU Ubuntu 18.04 host:&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;threads     workload_find_pool        workload_find_single&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;            cpu   ops/s               cpu   ops/s&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           52%     7 k               52%   6.9 k&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;10         540%    21 k              509%  47.5 k&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;100        600%  20.1 k              735%    80 k&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;Taking five samples of GDB stack traces shows many threads waiting for the topology mutex:&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;threads  reverse call tree&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; 65.000  &#9661; LEAF&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; 23.000  &#9500;&#9661; __lll_lock_wait:135&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; 23.000  &#9474; &#9661; __GI___pthread_mutex_lock:80&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;  5.000  &#9474; &#9500;&#9655; _mongoc_topology_push_server_session&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;  4.000  &#9474; &#9500;&#9655; mongoc_topology_select_server_id&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;  4.000  &#9474; &#9500;&#9655; _mongoc_topology_update_cluster_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;  3.000  &#9474; &#9500;&#9655; _mongoc_cluster_stream_for_server&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;  3.000  &#9474; &#9500;&#9655; mongoc_cluster_run_command_monitored&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;  2.000  &#9474; &#9500;&#9655; _mongoc_topology_pop_server_session&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;  2.000  &#9474; &#9492;&#9655; _mongoc_cluster_create_server_stream&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;Some of these functions could optimize to reduce how long they hold the topology mutex. A read/write lock may benefit the functions that are only reading the topology description.&lt;/p&gt;

&lt;p&gt;To verify the performance is improved, let&apos;s add a performance benchmark test to exercise concurrent operations on a &lt;tt&gt;mongoc_client_pool_t&lt;/tt&gt;.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1732523">CDRIVER-4002</key>
            <summary>Improve multi-threaded perf for mongoc_client_pool_t</summary>
                <type id="11" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14707&amp;avatarType=issuetype">Epic</type>
                                            <priority id="2" iconUrl="https://jira.mongodb.org/images/icons/priorities/critical.svg">Critical - P2</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="13201">Fixed</resolution>
                                        <assignee username="colby.pike@mongodb.com">Colby Pike</assignee>
                                    <reporter username="kevin.albertson@mongodb.com">Kevin Albertson</reporter>
                        <labels>
                    </labels>
                <created>Wed, 19 May 2021 23:29:54 +0000</created>
                <updated>Sat, 28 Oct 2023 11:28:28 +0000</updated>
                            <resolved>Thu, 6 Jan 2022 01:18:45 +0000</resolved>
                                                    <fixVersion>1.20.0</fixVersion>
                                    <component>Performance</component>
                                        <votes>0</votes>
                                    <watches>18</watches>
                                                                                                                <comments>
                            <comment id="4196440" author="kevin.albertson" created="Wed, 17 Nov 2021 22:25:07 +0000"  >&lt;p&gt;C 1.20.0 has been released. Leaving this epic open until continuous tests (&lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-4105&quot; title=&quot;Define Performance Tests for Client Pools&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-4105&quot;&gt;&lt;del&gt;CDRIVER-4105&lt;/del&gt;&lt;/a&gt;) and alerting (&lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-4228&quot; title=&quot;Add alerts for changes in mongo-c-driver-perf results&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-4228&quot;&gt;&lt;del&gt;CDRIVER-4228&lt;/del&gt;&lt;/a&gt;) is complete.&lt;/p&gt;</comment>
                            <comment id="4195458" author="kevin.albertson" created="Wed, 17 Nov 2021 16:34:47 +0000"  >&lt;p&gt;This is the result of running a slightly modified &lt;tt&gt;workload_find.c&lt;/tt&gt; on an &lt;tt&gt;ubuntu1804-large&lt;/tt&gt; host against 1.19.2 and the current development branch on commit 6f2102b. This includes &lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-4114&quot; title=&quot;Reduce contention on topology description&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-4114&quot;&gt;&lt;del&gt;CDRIVER-4114&lt;/del&gt;&lt;/a&gt;, &lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-4113&quot; title=&quot;Reduce contention on multithreaded session pool&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-4113&quot;&gt;&lt;del&gt;CDRIVER-4113&lt;/del&gt;&lt;/a&gt;, &lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-4124&quot; title=&quot;Clean Up Internal Atomic APIs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-4124&quot;&gt;&lt;del&gt;CDRIVER-4124&lt;/del&gt;&lt;/a&gt;, &lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-4147&quot; title=&quot;Add shared pointer abstraction&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-4147&quot;&gt;&lt;del&gt;CDRIVER-4147&lt;/del&gt;&lt;/a&gt;, &lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-4227&quot; title=&quot;Use a shared_mutex when locking in shared_ptr atomic operations &quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-4227&quot;&gt;&lt;del&gt;CDRIVER-4227&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;Threads&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;1.19.2 ops/s&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;6f2102b ops/s&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;7k&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;7k&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;10&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;38k&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;48k&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;100&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;51k&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;84k&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;


&lt;p&gt;This includes scripts to compare against the 1.19.2 release and current development branch: &lt;br/&gt;
&lt;a href=&quot;https://github.com/kevinAlbs/c-bootstrap/tree/ab5f88a96ec9fad5c93d35c07feabc4810e3083c/investigations/cdriver4002&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/kevinAlbs/c-bootstrap/tree/ab5f88a96ec9fad5c93d35c07feabc4810e3083c/investigations/cdriver4002&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4194232" author="xgen-internal-githook" created="Wed, 17 Nov 2021 07:30:55 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;vector-of-bool&apos;, &apos;email&apos;: &apos;vectorofbool@gmail.com&apos;, &apos;username&apos;: &apos;vector-of-bool&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-4227&quot; title=&quot;Use a shared_mutex when locking in shared_ptr atomic operations &quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-4227&quot;&gt;&lt;del&gt;CDRIVER-4227&lt;/del&gt;&lt;/a&gt; Add a shared_mutex, and use it when locking in shared_ptr atomic operations (#895)&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Add a shared_mutex, and use it when locking in shared_ptr atomic operations&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Tag &lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-4002&quot; title=&quot;Improve multi-threaded perf for mongoc_client_pool_t&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-4002&quot;&gt;&lt;del&gt;CDRIVER-4002&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Co-authored-by: Kevin Albertson &amp;lt;kevin.albertson@10gen.com&amp;gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Force enable more recent POSIX APIs, regardless of language mode&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This change only applies to private code, and does not expose any&lt;br/&gt;
changes in the public API.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;No reallocf in strict POSIX mode&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Co-authored-by: Kevin Albertson &amp;lt;kevin.albertson@10gen.com&amp;gt;&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-c-driver/commit/8d1af19aa067818044d5f52039ae2c761dad3168&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-c-driver/commit/8d1af19aa067818044d5f52039ae2c761dad3168&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10520">
                    <name>Problem/Incident</name>
                                            <outwardlinks description="causes">
                                                        </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                    <customfield id="customfield_21556" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Calendar Time</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>24 weeks, 3 days</customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_20965" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Cost Threshold %</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>150.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_20963" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Cost to Date</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>11.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_13653" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Detailed Project Statuses</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>&lt;p&gt;Engineer(s): Colby, Kevin&lt;/p&gt;

&lt;p&gt;Summary: Improve multi-threaded perf for mongoc_client_pool_t&lt;/p&gt;

&lt;p&gt;2021-12-27: &lt;/p&gt;

&lt;p&gt;Status update: Updating end date to 1/7/2022&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Adding Ubuntu 18.04 variant to benchmark tasks in review.&lt;/li&gt;
	&lt;li&gt;Next (and last) adding alerts for regression.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Rationale for delays:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Holidays.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Risks:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;No risks. Performance improvements are released.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;

&lt;p&gt;2021-12-13: Updating end date to 12/17/2021&lt;/p&gt;

&lt;p&gt;Status update:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Performance tests merged, which show improvement.&lt;/li&gt;
	&lt;li&gt;Working on adding alerts.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Rationale for delays:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;No good rationale.&lt;/li&gt;
	&lt;li&gt;PTO for three days.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Risks:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;No risks. Performance improvements are released.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;

&lt;p&gt;2021-11-30: Updating end date to 12/07/2021&lt;/p&gt;

&lt;p&gt;Status update:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;1.20.0 released with perf improvements.&lt;/li&gt;
	&lt;li&gt;Kevin and Colby have independently validated changes.&lt;/li&gt;
	&lt;li&gt;Kevin working on adding perf tests to Evergreen.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Rationale for delays:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Kevin seeing unexpected difference between tests run on a spawn host an equivalent host in patch builds. Investigating.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Risks:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;No risks. Performance changes are complete. Only tests and alerting remain.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2021-11-16: Updating end date to 11/19/2021&lt;/p&gt;

&lt;p&gt;Status update:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Topology description contention change merged.&lt;/li&gt;
	&lt;li&gt;Performance test in review, and alerts to be set up after.&lt;/li&gt;
	&lt;li&gt;1.20.0 will be released ASAP and will not wait on performance alerts.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Rationale for delays:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Review took longer than anticipated.&lt;/li&gt;
	&lt;li&gt;Performance tests were started later than anticipated.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Risks:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;No additional risks.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2021-11-02: Updated target date to 2021-11-05&lt;/p&gt;

&lt;p&gt;Status update:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Removing contention from topology description is approved by one; waiting on final changes.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Rationale for delays:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Reviewer PTO.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Risks:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;None.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2021-10-19: No update to target date&lt;/p&gt;

&lt;p&gt;Status update:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Next: fixing remaining test failures and putting topology description in review.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Rationale for delays:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;No delays.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Risks:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;None.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2021-10-05: Updating target date to 2021-10-22&lt;/p&gt;

&lt;p&gt;Status update:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;No significant changes.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Rationale for delays:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Colby was on PTO for a week to move.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Risks:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;None.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2021-09-21: Updating target date to 2021-10-08&lt;/p&gt;

&lt;p&gt;Status:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Dependencies of reducing contention on topology description merged.&lt;/li&gt;
	&lt;li&gt;Removing the session pool from the topology mutex merged.&lt;/li&gt;
	&lt;li&gt;Next: fixing remaining test failures and putting topology description in review.&lt;/li&gt;
	&lt;li&gt;Adding 2 weeks to the end date for reviews and responding to feedback.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Rationale for delays:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Unexpected difficulties supporting old platforms for atomics improvements.&lt;/li&gt;
	&lt;li&gt;Less availability while moving.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Risks:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;None. Still on track for the C driver 1.20.0 target release date.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2021-09-07: No update to target date.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Colby split off reviews of topology description contention into smaller reviews for atomics improvements, a shared pointer abstraction.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2021-08-24: Updating target date to 2021-09-24&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Bumping target date by one month because of unanticipated complexity and less availability from Colby in the upcoming month.&lt;/li&gt;
	&lt;li&gt;Colby&#160;has a review up for&#160;session pool improvements.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2021-08-10: Setting initial target end date to 2021-08-27&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Colby started prototyping this late July and after a couple weeks of investigation and prototyping realized that this needs much more work than we originally thought it would&lt;/li&gt;
	&lt;li&gt;He paused on it for a week or so in between and is working on it again. We&apos;ve updated the estimate based on his current understanding of the remaining work&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&#160;&lt;/p&gt;</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_14262" key="com.atlassian.jira.plugin.system.customfieldtypes:datepicker">
                        <customfieldname>End date</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Fri, 7 Jan 2022 00:00:00 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_10858" key="com.pyxis.greenhopper.jira:gh-epic-label">
                        <customfieldname>Epic Name</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Improve multi-threaded perf</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10859" key="com.pyxis.greenhopper.jira:gh-epic-status">
                        <customfieldname>Epic Status</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10642"><![CDATA[Done]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_20964" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Final Cost Estimate</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>12.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr6krb:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10856" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Scope Cost Estimate</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_14261" key="com.atlassian.jira.plugin.system.customfieldtypes:datepicker">
                        <customfieldname>Start date</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 20 Jul 2021 00:00:00 +0000</customfieldvalue>

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