[ARVADOS] updated: 1.1.3-89-g6a731b2

Git user git at public.curoverse.com
Fri Feb 23 11:15:56 EST 2018


Summary of changes:
 sdk/python/arvados/arvfile.py          |  3 +++
 sdk/python/arvados/collection.py       | 10 +++++++---
 services/fuse/arvados_fuse/__init__.py | 27 +++++++++++++++++++++++----
 services/fuse/arvados_fuse/fresh.py    |  4 ++++
 services/fuse/arvados_fuse/fusefile.py |  4 ++++
 5 files changed, 41 insertions(+), 7 deletions(-)

       via  6a731b2dd982f3453db9f5b6fcf6350899da48a8 (commit)
       via  f594d47faa4c606ccbfda0e1bcaac58552e4732d (commit)
       via  52f37db5889f22e4dc02e0e468d561783e76c188 (commit)
       via  92002b9af320e3229f59ca0778d1906e663f3066 (commit)
       via  6509f6ec0a997f74b9992b8ef9acb7ae0dbd8c7a (commit)
      from  b77a0df5575eb4d75b21b5c400fc8570efc97cea (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 6a731b2dd982f3453db9f5b6fcf6350899da48a8
Merge: b77a0df f594d47
Author: Peter Amstutz <pamstutz at veritasgenetics.com>
Date:   Fri Feb 23 11:15:44 2018 -0500

    Merge branch '13064-arv-mount-perf' closes #13064
    
    Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz at veritasgenetics.com>


commit f594d47faa4c606ccbfda0e1bcaac58552e4732d
Author: Peter Amstutz <pamstutz at veritasgenetics.com>
Date:   Fri Feb 23 11:15:03 2018 -0500

    13064: Add comment about has_ref() and in_use() checks
    
    Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz at veritasgenetics.com>

diff --git a/services/fuse/arvados_fuse/__init__.py b/services/fuse/arvados_fuse/__init__.py
index 3313e5a..f1e49f5 100644
--- a/services/fuse/arvados_fuse/__init__.py
+++ b/services/fuse/arvados_fuse/__init__.py
@@ -156,6 +156,22 @@ class InodeCache(object):
 
     def _remove(self, obj, clear):
         if clear:
+            # Kernel behavior seems to be that if a file is
+            # referenced, its parents remain referenced too. This
+            # means has_ref() exits early when a collection is not
+            # candidate for eviction.
+            #
+            # By contrast, in_use() doesn't increment references on
+            # parents, so it requires a full tree walk to determine if
+            # a collection is a candidate for eviction.  This takes
+            # .07s for 240000 files, which becomes a major drag when
+            # cap_cache is being called several times a second and
+            # there are multiple non-evictable collections in the
+            # cache.
+            #
+            # So it is important for performance that we do the
+            # has_ref() check first.
+
             if obj.has_ref(True):
                 _logger.debug("InodeCache cannot clear inode %i, still referenced", obj.inode)
                 return

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list