sapling/eden/fs
Xavier Deguillard a3d6554a8c store: speed up HgImportRequestQueue::enqueue 1.5x
Summary:
When turning on the native prefetch, EdenFS will enqueue tons of blob requests
to the import request queue. The expectation is then that the threads will
dequeue batch of requests and run them. What is being observed is however
vastly different: the dequeued batches are barely bigger than 10, far lower
than the batch capacity, leading to fetching inefficiencies. The reason for
this is that enqueuing is too costly.

The first step in making enqueuing less costly is to reduce the number of times
the lock needs to be acquired by moving the de-duplication inside the enqueue
function itself. On top of reducing the number of times the lock is held, it
also halves the number of allocation done under the lock.

Reviewed By: chadaustin

Differential Revision: D30520226

fbshipit-source-id: 52f6e3c1ec45caa5c47e3fd122b3a933b0448e7c
2021-08-26 12:28:50 -07:00
..
benchharness config: namespace facebook::eden 2021-06-08 19:29:37 -07:00
benchmarks store: speed up HgImportRequestQueue::enqueue 1.5x 2021-08-26 12:28:50 -07:00
cli setup buck integration testing 2021-08-25 17:32:14 -07:00
cli_rs cli_rs: make edenfsctl useable on Windows 2021-08-05 17:34:25 -07:00
config add global killswitch for predictive prefetch profiles 2021-08-23 17:55:09 -07:00
docs Fix typo in inode documentation 2021-07-30 15:27:59 -07:00
fuse sample FS trace events for logging 2021-08-19 14:21:52 -07:00
inodes Let SetPathRootId support file 2021-08-20 17:11:23 -07:00
journal Remove direct uses of gmock.h 2021-07-07 13:32:31 -07:00
model store: avoid copying proxy hashes during prefetch 2021-08-23 11:05:02 -07:00
monitor migrate from LockedPtr::getUniqueLock 2021-06-13 18:53:58 -07:00
nfs introduce NfsRequsetContext 2021-07-26 16:04:03 -07:00
notifications notifications: support Windows 2020-11-11 09:37:56 -08:00
prjfs prjfs: refactor the dispatcher interface 2021-08-10 11:23:41 -07:00
py suppress errors in fbcode/eden - batch 1 2021-08-24 14:30:57 -07:00
rocksdb Remove dead includes in eden 2019-10-11 16:45:01 -07:00
scripts move eden/scripts/ into eden/fs/ 2020-11-04 18:29:49 -08:00
service service: revert "normalize mount point in Thrift endpoints" 2021-08-25 14:54:58 -07:00
sqlite overlay: use PersistentSqliteStatement in TreeOverlayStore 2021-03-15 12:01:48 -07:00
store store: speed up HgImportRequestQueue::enqueue 1.5x 2021-08-26 12:28:50 -07:00
takeover Remove direct uses of gmock.h 2021-07-07 13:32:31 -07:00
telemetry report imports queue time through fb303 2021-08-23 14:20:58 -07:00
testharness store: avoid copying proxy hashes during prefetch 2021-08-23 11:05:02 -07:00
third-party fs: update fuse_kernel_linux.h 2021-03-17 20:55:43 -07:00
utils store: diff should respect the mount case sensitivity 2021-07-29 11:29:42 -07:00
CMakeLists.txt nfs: make it compile with getdeps builds 2021-02-03 17:54:54 -08:00