<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glusterfs.git/xlators/performance, branch release-3.8-fb</title>
<subtitle></subtitle>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/'/>
<entry>
<title>io-threads: re-port changes since 3.6 on top of FB version</title>
<updated>2017-09-18T22:31:16+00:00</updated>
<author>
<name>Jeff Darcy</name>
<email>jdarcy@fb.com</email>
</author>
<published>2017-09-15T22:02:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=e3e7c56323a21467e7e0a0d8f2adc5b05ce40a54'/>
<id>e3e7c56323a21467e7e0a0d8f2adc5b05ce40a54</id>
<content type='text'>
Includes io-threads parts of the following patches:

  9e3fea1 performance/io-threads: Exit all threads on PARENT_DOWN
  2cfb7bc performance/io-threads: Exit threads in fini() as well

Change-Id: Id7cc7720e75414fb8a3ac2db68a5fe63c459ffe2
Signed-off-by: Jeff Darcy &lt;jdarcy@fb.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Includes io-threads parts of the following patches:

  9e3fea1 performance/io-threads: Exit all threads on PARENT_DOWN
  2cfb7bc performance/io-threads: Exit threads in fini() as well

Change-Id: Id7cc7720e75414fb8a3ac2db68a5fe63c459ffe2
Signed-off-by: Jeff Darcy &lt;jdarcy@fb.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Replace namespace/io-stats/io-threads with 3.6-fb versions</title>
<updated>2017-09-15T20:47:01+00:00</updated>
<author>
<name>Jeff Darcy</name>
<email>jdarcy@fb.com</email>
</author>
<published>2017-09-15T13:59:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=8dfdecf220d1c9365e1f8d6af9ead5e48c61e2eb'/>
<id>8dfdecf220d1c9365e1f8d6af9ead5e48c61e2eb</id>
<content type='text'>
This rolls up multiple patches related to namespace identificaton and
throttling/QoS.  This primarily includes the following, all by Michael
Goulet &lt;mgoulet@fb.com&gt;.

  io-threads: Add weighted round robin queueing by namespace
  https://phabricator.facebook.com/D5615269

  io-threads: Add per-namespaces queue sizes to IO_THREADS_QUEUE_SIZE_KEY
  https://phabricator.facebook.com/D5683162

  io-threads: Implement better slot allocation algorithm
  https://phabricator.facebook.com/D5683186

  io-threads: Only enable weighted queueing on bricks
  https://phabricator.facebook.com/D5700062

  io-threads: Update queue sizes on drain
  https://phabricator.facebook.com/D5704832

  Fix parsing (-1) as default NS weight
  https://phabricator.facebook.com/D5723383

Parts of the following patches have also been applied to satisfy
dependencies.

  io-throttling: Calculate moving averages and throttle offending hosts
  https://phabricator.fb.com/D2516161
  Shreyas Siravara &lt;sshreyas@fb.com&gt;

  Hook up ODS logging for FUSE clients.
  https://phabricator.facebook.com/D3963376
  Kevin Vigor &lt;kvigor@fb.com&gt;

  Add the flag --skip-nfsd-start to skip the NFS daemon stating, even if
  it is enabled
  https://phabricator.facebook.com/D4575368
  Alex Lorca &lt;alexlorca@fb.com&gt;

There are also some "standard" changes: dealing with code that moved,
reindenting to comply with Gluster coding standards, gf_uuid_xxx, etc.

This patch *does* revert some changes which have occurred upstream since
3.6; these will be re-applied as apppropriate on top of this new base.

Change-Id: I69024115da7a60811e5b86beae781d602bdb558d
Signed-off-by: Jeff Darcy &lt;jdarcy@fb.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This rolls up multiple patches related to namespace identificaton and
throttling/QoS.  This primarily includes the following, all by Michael
Goulet &lt;mgoulet@fb.com&gt;.

  io-threads: Add weighted round robin queueing by namespace
  https://phabricator.facebook.com/D5615269

  io-threads: Add per-namespaces queue sizes to IO_THREADS_QUEUE_SIZE_KEY
  https://phabricator.facebook.com/D5683162

  io-threads: Implement better slot allocation algorithm
  https://phabricator.facebook.com/D5683186

  io-threads: Only enable weighted queueing on bricks
  https://phabricator.facebook.com/D5700062

  io-threads: Update queue sizes on drain
  https://phabricator.facebook.com/D5704832

  Fix parsing (-1) as default NS weight
  https://phabricator.facebook.com/D5723383

Parts of the following patches have also been applied to satisfy
dependencies.

  io-throttling: Calculate moving averages and throttle offending hosts
  https://phabricator.fb.com/D2516161
  Shreyas Siravara &lt;sshreyas@fb.com&gt;

  Hook up ODS logging for FUSE clients.
  https://phabricator.facebook.com/D3963376
  Kevin Vigor &lt;kvigor@fb.com&gt;

  Add the flag --skip-nfsd-start to skip the NFS daemon stating, even if
  it is enabled
  https://phabricator.facebook.com/D4575368
  Alex Lorca &lt;alexlorca@fb.com&gt;

There are also some "standard" changes: dealing with code that moved,
reindenting to comply with Gluster coding standards, gf_uuid_xxx, etc.

This patch *does* revert some changes which have occurred upstream since
3.6; these will be re-applied as apppropriate on top of this new base.

Change-Id: I69024115da7a60811e5b86beae781d602bdb558d
Signed-off-by: Jeff Darcy &lt;jdarcy@fb.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add options to disable new features</title>
<updated>2017-09-14T19:43:21+00:00</updated>
<author>
<name>Michael Goulet</name>
<email>mgoulet@fb.com</email>
</author>
<published>2017-08-17T20:57:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=c071992e8d6fee2e5df4d8de19dc0ce1d84a10b8'/>
<id>c071992e8d6fee2e5df4d8de19dc0ce1d84a10b8</id>
<content type='text'>
Summary: @sshreyas thought the best idea to roll out these new features in the default-off state. This diff adds a few options and modifies tests to make sure that this is done.

Test Plan: The brick restart test works fine, but now it's default disabled on all bricks.

Reviewers: sshreyas, jdarcy

Reviewed By: jdarcy

Subscribers: sshreyas, #posix_storage

Differential Revision: https://phabricator.intern.facebook.com/D5653138

Porting note: includes disconnected-reqs option; retart-bricks inapplicable

Change-Id: I332339894d3cbfafdabeb8592e95c37f30f9751a
Signed-off-by: Jeff Darcy &lt;jdarcy@fb.com&gt;
Reviewed-on: https://review.gluster.org/18291
Reviewed-by: Jeff Darcy &lt;jeff@pl.atyp.us&gt;
Tested-by: Jeff Darcy &lt;jeff@pl.atyp.us&gt;
CentOS-regression: Gluster Build System &lt;jenkins@build.gluster.org&gt;
Smoke: Gluster Build System &lt;jenkins@build.gluster.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary: @sshreyas thought the best idea to roll out these new features in the default-off state. This diff adds a few options and modifies tests to make sure that this is done.

Test Plan: The brick restart test works fine, but now it's default disabled on all bricks.

Reviewers: sshreyas, jdarcy

Reviewed By: jdarcy

Subscribers: sshreyas, #posix_storage

Differential Revision: https://phabricator.intern.facebook.com/D5653138

Porting note: includes disconnected-reqs option; retart-bricks inapplicable

Change-Id: I332339894d3cbfafdabeb8592e95c37f30f9751a
Signed-off-by: Jeff Darcy &lt;jdarcy@fb.com&gt;
Reviewed-on: https://review.gluster.org/18291
Reviewed-by: Jeff Darcy &lt;jeff@pl.atyp.us&gt;
Tested-by: Jeff Darcy &lt;jeff@pl.atyp.us&gt;
CentOS-regression: Gluster Build System &lt;jenkins@build.gluster.org&gt;
Smoke: Gluster Build System &lt;jenkins@build.gluster.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>io-threads: nuke everything from a client when it disconnects</title>
<updated>2017-09-09T16:54:52+00:00</updated>
<author>
<name>Jeff Darcy</name>
<email>jdarcy@fb.com</email>
</author>
<published>2017-07-15T00:40:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=4d8268d7602979795972d976dab4959d5e0db55b'/>
<id>4d8268d7602979795972d976dab4959d5e0db55b</id>
<content type='text'>
Summary: These requests haven't been issued, yet alone acknowledged.  They would disappear if we crashed, which to the client is indistinguishable from any other kind of disconnection - if indeed the client itself isn't the one that died.  So we're completely within our rights to discard these.  There are strong hints that such "orphan" requests are part of how we get into the lock-revocation hangs we've been seeing for a while.  Even if that theory doesn't pan out, there's no good reason to keep them around clogging up queues and so forth.

This is a port of D5430057 &amp; D5662545 to 3.8

Change-Id: Ie4c88f7791aac85540631f60f5c639497468ad76
Reviewed-on: https://review.gluster.org/18254
Reviewed-by: Shreyas Siravara &lt;sshreyas@fb.com&gt;
CentOS-regression: Gluster Build System &lt;jenkins@build.gluster.org&gt;
Smoke: Gluster Build System &lt;jenkins@build.gluster.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary: These requests haven't been issued, yet alone acknowledged.  They would disappear if we crashed, which to the client is indistinguishable from any other kind of disconnection - if indeed the client itself isn't the one that died.  So we're completely within our rights to discard these.  There are strong hints that such "orphan" requests are part of how we get into the lock-revocation hangs we've been seeing for a while.  Even if that theory doesn't pan out, there's no good reason to keep them around clogging up queues and so forth.

This is a port of D5430057 &amp; D5662545 to 3.8

Change-Id: Ie4c88f7791aac85540631f60f5c639497468ad76
Reviewed-on: https://review.gluster.org/18254
Reviewed-by: Shreyas Siravara &lt;sshreyas@fb.com&gt;
CentOS-regression: Gluster Build System &lt;jenkins@build.gluster.org&gt;
Smoke: Gluster Build System &lt;jenkins@build.gluster.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>md-cache: Allow custom per-directory timeouts</title>
<updated>2017-09-08T04:53:00+00:00</updated>
<author>
<name>Shreyas Siravara</name>
<email>sshreyas@fb.com</email>
</author>
<published>2017-07-15T01:36:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=f4bfd49009d3b5aa4a6d960f795f2e3f8e9d2762'/>
<id>f4bfd49009d3b5aa4a6d960f795f2e3f8e9d2762</id>
<content type='text'>
Summary:
- This diff looks for a custom xattr on a directory or file called 'trusted.glusterfs.md-cache-timeout' and uses that timeout if it finds it instead of the default timeout value for the cache.
- For example, if we know that a customer has a fixed set of directories that never change, we can set that attribute on all their directories and cache directory metadata for the lifetime of the client (NFS or FUSE) process.
- Port of D5430395 to 3.8

Reviewed By: jdarcy

Change-Id: Ieb232bc1365c59dd7c396c7a617f12973cc8ea01
Reviewed-on: https://review.gluster.org/18241
Reviewed-by: Shreyas Siravara &lt;sshreyas@fb.com&gt;
CentOS-regression: Gluster Build System &lt;jenkins@build.gluster.org&gt;
Smoke: Gluster Build System &lt;jenkins@build.gluster.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary:
- This diff looks for a custom xattr on a directory or file called 'trusted.glusterfs.md-cache-timeout' and uses that timeout if it finds it instead of the default timeout value for the cache.
- For example, if we know that a customer has a fixed set of directories that never change, we can set that attribute on all their directories and cache directory metadata for the lifetime of the client (NFS or FUSE) process.
- Port of D5430395 to 3.8

Reviewed By: jdarcy

Change-Id: Ieb232bc1365c59dd7c396c7a617f12973cc8ea01
Reviewed-on: https://review.gluster.org/18241
Reviewed-by: Shreyas Siravara &lt;sshreyas@fb.com&gt;
CentOS-regression: Gluster Build System &lt;jenkins@build.gluster.org&gt;
Smoke: Gluster Build System &lt;jenkins@build.gluster.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>performance/io-threads: Add watchdog to cover up a possible thread leak</title>
<updated>2017-09-08T04:34:13+00:00</updated>
<author>
<name>Jeff Darcy</name>
<email>jdarcy@fb.com</email>
</author>
<published>2017-06-02T21:02:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=8b6804f75cda612d13e3a691b3f9698028b2577d'/>
<id>8b6804f75cda612d13e3a691b3f9698028b2577d</id>
<content type='text'>
Summary:
There appears to be a thread leak somewhere, which causes io-threads to
run out of threads to process a particular (priority-based) queue.
The leak should obviously be fixed, but that might take a while
and the consequences until then are severe - a brick essentially going
offline without the courtesy of actually dying.  This patch adds a
watchdog that checks for stuck queues, and adds threads to break the deadlock.
The same thing done manually on one afflicted cluster caused brick CPU usage
to drop from 2600% to 400%, with latency quickly returning to normal.

The controlling option is performance.iot-watchdog-secs,
which is the number of seconds we'll watch for a non-empty
queue with no items being dequeued.  That's our signal to
add a thread. A value of zero (the default) disables
this watchdog feature.

This is a port of D5177414 to 3.8.

Test Plan: All the usual tests to determine safety.

Use gdb to hack priv-&gt;queue_sizes to a non-zero value.  This will make it look like the queue is non-empty, but since it does in fact have zero items there will be no dequeues.  After watchdog-secs seconds, this should add a thread, with a corresponding entry in the brick log.

Change-Id: Ic051e411d3e9351e1cf5e233bad8bbb5078cb259
Reviewed-on: https://review.gluster.org/18239
Reviewed-by: Shreyas Siravara &lt;sshreyas@fb.com&gt;
CentOS-regression: Gluster Build System &lt;jenkins@build.gluster.org&gt;
Smoke: Gluster Build System &lt;jenkins@build.gluster.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary:
There appears to be a thread leak somewhere, which causes io-threads to
run out of threads to process a particular (priority-based) queue.
The leak should obviously be fixed, but that might take a while
and the consequences until then are severe - a brick essentially going
offline without the courtesy of actually dying.  This patch adds a
watchdog that checks for stuck queues, and adds threads to break the deadlock.
The same thing done manually on one afflicted cluster caused brick CPU usage
to drop from 2600% to 400%, with latency quickly returning to normal.

The controlling option is performance.iot-watchdog-secs,
which is the number of seconds we'll watch for a non-empty
queue with no items being dequeued.  That's our signal to
add a thread. A value of zero (the default) disables
this watchdog feature.

This is a port of D5177414 to 3.8.

Test Plan: All the usual tests to determine safety.

Use gdb to hack priv-&gt;queue_sizes to a non-zero value.  This will make it look like the queue is non-empty, but since it does in fact have zero items there will be no dequeues.  After watchdog-secs seconds, this should add a thread, with a corresponding entry in the brick log.

Change-Id: Ic051e411d3e9351e1cf5e233bad8bbb5078cb259
Reviewed-on: https://review.gluster.org/18239
Reviewed-by: Shreyas Siravara &lt;sshreyas@fb.com&gt;
CentOS-regression: Gluster Build System &lt;jenkins@build.gluster.org&gt;
Smoke: Gluster Build System &lt;jenkins@build.gluster.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[io-cache] New volume options for read sizes</title>
<updated>2017-09-08T00:19:53+00:00</updated>
<author>
<name>Joshua Eilers</name>
<email>jeilers@fb.com</email>
</author>
<published>2017-04-06T18:03:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=7f55c2e767440a22ef1e1ac225e3047d18b0f152'/>
<id>7f55c2e767440a22ef1e1ac225e3047d18b0f152</id>
<content type='text'>
Summary:
Two new volume options that control reads.

performance.io-cache.read-size
- Tells gluster how much it should try to read on each posix_readv call

performance.io-cache.min-cached-read-size
- Tells gluster the smallest files it should start caching, anything smaller is not cached

This is a port of D4844662 to 3.8

Change-Id: I5ba891906f97e514e7365cc34374619379434766
Reviewed-on: https://review.gluster.org/18235
Reviewed-by: Shreyas Siravara &lt;sshreyas@fb.com&gt;
CentOS-regression: Gluster Build System &lt;jenkins@build.gluster.org&gt;
Smoke: Gluster Build System &lt;jenkins@build.gluster.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary:
Two new volume options that control reads.

performance.io-cache.read-size
- Tells gluster how much it should try to read on each posix_readv call

performance.io-cache.min-cached-read-size
- Tells gluster the smallest files it should start caching, anything smaller is not cached

This is a port of D4844662 to 3.8

Change-Id: I5ba891906f97e514e7365cc34374619379434766
Reviewed-on: https://review.gluster.org/18235
Reviewed-by: Shreyas Siravara &lt;sshreyas@fb.com&gt;
CentOS-regression: Gluster Build System &lt;jenkins@build.gluster.org&gt;
Smoke: Gluster Build System &lt;jenkins@build.gluster.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>md-cache: Invalidate inode metadata on flush</title>
<updated>2017-09-07T23:55:14+00:00</updated>
<author>
<name>Shreyas Siravara</name>
<email>sshreyas@fb.com</email>
</author>
<published>2017-09-07T23:41:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=4a007de8e1bcef9ce059cdca4dcc510846702e1d'/>
<id>4a007de8e1bcef9ce059cdca4dcc510846702e1d</id>
<content type='text'>
Summary:
- When you write a file and then stat it immediately, md-cache returns stale stat information.
- This diff implements flush() in md-cache so that we can correctly invalidate inodes after
a write.
- This is a port of D4762171 to 3.8

Reviewers: kvigor, dph

Reviewed By: kvigor

Change-Id: I368b7870d61b14a7e390917d195cbccc67029eb7
Reviewed-on: https://review.gluster.org/18233
Reviewed-by: Shreyas Siravara &lt;sshreyas@fb.com&gt;
CentOS-regression: Gluster Build System &lt;jenkins@build.gluster.org&gt;
Smoke: Gluster Build System &lt;jenkins@build.gluster.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary:
- When you write a file and then stat it immediately, md-cache returns stale stat information.
- This diff implements flush() in md-cache so that we can correctly invalidate inodes after
a write.
- This is a port of D4762171 to 3.8

Reviewers: kvigor, dph

Reviewed By: kvigor

Change-Id: I368b7870d61b14a7e390917d195cbccc67029eb7
Reviewed-on: https://review.gluster.org/18233
Reviewed-by: Shreyas Siravara &lt;sshreyas@fb.com&gt;
CentOS-regression: Gluster Build System &lt;jenkins@build.gluster.org&gt;
Smoke: Gluster Build System &lt;jenkins@build.gluster.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>md-cache: Cache statfs calls</title>
<updated>2017-09-07T22:48:18+00:00</updated>
<author>
<name>Shreyas Siravara</name>
<email>sshreyas@fb.com</email>
</author>
<published>2017-09-07T22:34:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=7981d5147feca3f459dd5377dc92cc5a3e6ad953'/>
<id>7981d5147feca3f459dd5377dc92cc5a3e6ad953</id>
<content type='text'>
Summary:
- This gives md-cache to cache statfs calls
- You can turn it on or off via 'gluster vol set groot performance.md-cache-statfs &lt;on|off&gt;'
- This is a port of D4652632

Test Plan: Tested functionality on devserver

Reviewers: kvigor

Reviewed By: kvigor

Subscribers: #posix_storage

Differential Revision: https://phabricator.intern.facebook.com/D4652632

Change-Id: I664579e3c19fb9a6cd9d7b3a0eae061f70f4def4
Signature: t1:4652632:1488581841:111cc01efe83c71f1e98d075abb10589c4574705
Reviewed-on: https://review.gluster.org/18228
Reviewed-by: Shreyas Siravara &lt;sshreyas@fb.com&gt;
CentOS-regression: Gluster Build System &lt;jenkins@build.gluster.org&gt;
Smoke: Gluster Build System &lt;jenkins@build.gluster.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary:
- This gives md-cache to cache statfs calls
- You can turn it on or off via 'gluster vol set groot performance.md-cache-statfs &lt;on|off&gt;'
- This is a port of D4652632

Test Plan: Tested functionality on devserver

Reviewers: kvigor

Reviewed By: kvigor

Subscribers: #posix_storage

Differential Revision: https://phabricator.intern.facebook.com/D4652632

Change-Id: I664579e3c19fb9a6cd9d7b3a0eae061f70f4def4
Signature: t1:4652632:1488581841:111cc01efe83c71f1e98d075abb10589c4574705
Reviewed-on: https://review.gluster.org/18228
Reviewed-by: Shreyas Siravara &lt;sshreyas@fb.com&gt;
CentOS-regression: Gluster Build System &lt;jenkins@build.gluster.org&gt;
Smoke: Gluster Build System &lt;jenkins@build.gluster.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'origin/release-3.8' into release-3.8-fb</title>
<updated>2017-08-31T19:33:59+00:00</updated>
<author>
<name>Jeff Darcy</name>
<email>jdarcy@fb.com</email>
</author>
<published>2017-08-31T19:33:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=ed23e379ee397b3fed479c15b7551d2dbba9a05f'/>
<id>ed23e379ee397b3fed479c15b7551d2dbba9a05f</id>
<content type='text'>
Change-Id: Ie35cd1c8c7808949ddf79b3189f1f8bf0ff70ed8
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: Ie35cd1c8c7808949ddf79b3189f1f8bf0ff70ed8
</pre>
</div>
</content>
</entry>
</feed>
