X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/8d3cf07be66fb6b8a58c3999783ebc753c30428f..bef00883acf5a11705e0c2f597a4af67a9ba71ce:/services/fuse/arvados_fuse/command.py diff --git a/services/fuse/arvados_fuse/command.py b/services/fuse/arvados_fuse/command.py index 719ec7ee95..f52121d862 100644 --- a/services/fuse/arvados_fuse/command.py +++ b/services/fuse/arvados_fuse/command.py @@ -349,7 +349,15 @@ Filesystem character encoding metavar='CLASSES', help="Comma-separated list of storage classes to request for new collections", ) - + # This is a hidden argument used by tests. Normally this + # value will be extracted from the cluster config, but mocking + # the cluster config under the presence of multiple threads + # and processes turned out to be too complicated and brittle. + plumbing.add_argument( + '--fsns', + type=str, + default=None, + help=argparse.SUPPRESS) class Mount(object): def __init__(self, args, logger=logging.getLogger('arvados.arv-mount')): @@ -482,13 +490,6 @@ class Mount(object): disk_cache=self.args.disk_cache, disk_cache_dir=self.args.disk_cache_dir) - # If there's too many prefetch threads and you - # max out the CPU, delivering data to the FUSE - # layer actually ends up being slower. - # Experimentally, capping 7 threads seems to - # be a sweet spot. - prefetch_threads = min(max((block_cache.cache_max // (64 * 1024 * 1024)) - 1, 1), 7) - self.api = arvados.safeapi.ThreadSafeApiCache( apiconfig=arvados.config.settings(), api_params={ @@ -496,7 +497,6 @@ class Mount(object): }, keep_params={ 'block_cache': block_cache, - 'num_prefetch_threads': prefetch_threads, 'num_retries': self.args.retries, }, version='v1', @@ -514,7 +514,8 @@ class Mount(object): api_client=self.api, encoding=self.args.encoding, inode_cache=InodeCache(cap=self.args.directory_cache), - enable_write=self.args.enable_write) + enable_write=self.args.enable_write, + fsns=self.args.fsns) if self.args.crunchstat_interval: statsthread = threading.Thread( @@ -603,7 +604,6 @@ class Mount(object): e = self.operations.inodes.add_entry(Directory( llfuse.ROOT_INODE, self.operations.inodes, - self.api.config, self.args.enable_write, self.args.filters, )) @@ -688,8 +688,9 @@ From here, the following directories are available: def _llfuse_main(self): try: - llfuse.main() + llfuse.main(workers=10) except: llfuse.close(unmount=False) raise + self.operations.begin_shutdown() llfuse.close()