├── .clang-format ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── feature_request.md │ └── general-question.md ├── PULL_REQSUEST_TEMPLATE.md └── workflows │ ├── clang-format-check.yml │ └── getdeps_linux.yml ├── .gitignore ├── .gitmodules ├── BENCHMARKS.md ├── BUILD.md ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── CacheLib-Logo.png ├── LICENSE ├── README.md ├── build ├── deps │ └── github_hashes │ │ ├── facebook │ │ ├── fbthrift-rev.txt │ │ ├── folly-rev.txt │ │ ├── mvfst-rev.txt │ │ └── wangle-rev.txt │ │ └── facebookincubator │ │ └── fizz-rev.txt └── fbcode_builder │ ├── .gitignore │ ├── CMake │ ├── FBBuildOptions.cmake │ ├── FBCMakeParseArgs.cmake │ ├── FBCompilerSettings.cmake │ ├── FBCompilerSettingsMSVC.cmake │ ├── FBCompilerSettingsUnix.cmake │ ├── FBPythonBinary.cmake │ ├── FBPythonTestAddTests.cmake │ ├── FBThriftCppLibrary.cmake │ ├── FBThriftLibrary.cmake │ ├── FBThriftPyLibrary.cmake │ ├── FindDoubleConversion.cmake │ ├── FindGMock.cmake │ ├── FindGflags.cmake │ ├── FindGlog.cmake │ ├── FindLMDB.cmake │ ├── FindLibEvent.cmake │ ├── FindLibUnwind.cmake │ ├── FindPCRE.cmake │ ├── FindPCRE2.cmake │ ├── FindRe2.cmake │ ├── FindSodium.cmake │ ├── FindXxhash.cmake │ ├── FindZstd.cmake │ ├── RustStaticLibrary.cmake │ ├── fb_py_test_main.py │ ├── fb_py_win_main.c │ └── make_fbpy_archive.py │ ├── LICENSE │ ├── README.md │ ├── getdeps.py │ ├── getdeps │ ├── __init__.py │ ├── builder.py │ ├── buildopts.py │ ├── cache.py │ ├── cargo.py │ ├── copytree.py │ ├── dyndeps.py │ ├── envfuncs.py │ ├── errors.py │ ├── expr.py │ ├── fetcher.py │ ├── load.py │ ├── manifest.py │ ├── platform.py │ ├── py_wheel_builder.py │ ├── runcmd.py │ ├── subcmd.py │ └── test │ │ ├── expr_test.py │ │ ├── fixtures │ │ └── duplicate │ │ │ ├── foo │ │ │ └── subdir │ │ │ └── foo │ │ ├── manifest_test.py │ │ ├── platform_test.py │ │ ├── retry_test.py │ │ └── scratch_test.py │ ├── manifests │ ├── CLI11 │ ├── autoconf │ ├── automake │ ├── benchmark │ ├── blake3 │ ├── boost │ ├── bz2 │ ├── cabal │ ├── cachelib │ ├── clang │ ├── cmake │ ├── cpptoml │ ├── double-conversion │ ├── eden │ ├── edencommon │ ├── exprtk │ ├── fast_float │ ├── fatal │ ├── fb303 │ ├── fboss │ ├── fbthrift │ ├── fizz │ ├── fmt │ ├── folly │ ├── gflags │ ├── ghc │ ├── git-lfs │ ├── glean │ ├── glog │ ├── googletest │ ├── gperf │ ├── hexdump │ ├── hsthrift │ ├── iproute2 │ ├── jom │ ├── jq │ ├── katran │ ├── libaio │ ├── libbpf │ ├── libcurl │ ├── libdwarf │ ├── libelf │ ├── libevent │ ├── libffi │ ├── libgit2 │ ├── libgpiod │ ├── libiberty │ ├── libmnl │ ├── libnl │ ├── liboqs │ ├── libsai │ ├── libsodium │ ├── libtool │ ├── libunwind │ ├── libusb │ ├── libyaml │ ├── llvm │ ├── lmdb │ ├── lz4 │ ├── mcrouter │ ├── mononoke │ ├── mononoke_integration │ ├── mvfst │ ├── ncurses │ ├── nghttp2 │ ├── ninja │ ├── nlohmann-json │ ├── nmap │ ├── numa │ ├── openr │ ├── openssl │ ├── osxfuse │ ├── patchelf │ ├── pcre2 │ ├── perl │ ├── pexpect │ ├── proxygen │ ├── python │ ├── python-click │ ├── python-filelock │ ├── python-ptyprocess │ ├── python-setuptools │ ├── python-six │ ├── python-toml │ ├── ragel │ ├── range-v3 │ ├── re2 │ ├── ripgrep │ ├── rocksdb │ ├── rust-shed │ ├── sapling │ ├── snappy │ ├── sparsemap │ ├── sqlite3 │ ├── systemd │ ├── tree │ ├── wangle │ ├── watchman │ ├── xxhash │ ├── xz │ ├── yaml-cpp │ ├── zlib │ └── zstd │ └── patches │ ├── boost_comparator_operator_fix.patch │ ├── iproute2_oss.patch │ ├── libiberty_install_pic_lib.patch │ └── zlib_dont_build_more_than_needed.patch ├── cachelib ├── .clang-format ├── CMakeLists.txt ├── adaptor │ └── rocks_secondary_cache │ │ ├── CachelibWrapper.cpp │ │ ├── CachelibWrapper.h │ │ └── tests │ │ └── CachelibWrapperTest.cpp ├── allocator │ ├── BackgroundMover.h │ ├── BackgroundMoverStrategy.h │ ├── CCacheAllocator.cpp │ ├── CCacheAllocator.h │ ├── CCacheManager.cpp │ ├── CCacheManager.h │ ├── CMakeLists.txt │ ├── Cache.cpp │ ├── Cache.h │ ├── CacheAllocator.h │ ├── CacheAllocatorConfig.h │ ├── CacheAllocatorLru2QCache.cpp │ ├── CacheAllocatorLru5B2QCache.cpp │ ├── CacheAllocatorLru5BCache.cpp │ ├── CacheAllocatorLru5BCacheWithSpinBuckets.cpp │ ├── CacheAllocatorLruCache.cpp │ ├── CacheAllocatorLruCacheWithSpinBuckets.cpp │ ├── CacheAllocatorTinyLFU5BCache.cpp │ ├── CacheAllocatorTinyLFUCache.cpp │ ├── CacheAllocatorWTinyLFU5BCache.cpp │ ├── CacheAllocatorWTinyLFUCache.cpp │ ├── CacheChainedItemIterator.h │ ├── CacheDetails.cpp │ ├── CacheDetails.h │ ├── CacheItem.h │ ├── CacheStats.cpp │ ├── CacheStats.h │ ├── CacheStatsInternal.h │ ├── CacheTraits.h │ ├── CacheVersion.h │ ├── ChainedAllocs.h │ ├── ChainedHashTable.h │ ├── ContainerTypes.cpp │ ├── FreeMemStrategy.cpp │ ├── FreeMemStrategy.h │ ├── FreeThresholdStrategy.cpp │ ├── FreeThresholdStrategy.h │ ├── Handle.h │ ├── HitsPerSlabStrategy.cpp │ ├── HitsPerSlabStrategy.h │ ├── ICompactCache.h │ ├── KAllocation.h │ ├── LruTailAgeStrategy.cpp │ ├── LruTailAgeStrategy.h │ ├── MM2Q.h │ ├── MMLru.h │ ├── MMTinyLFU.h │ ├── MMWTinyLFU.h │ ├── ManualStrategy.h │ ├── MarginalHitsOptimizeStrategy.cpp │ ├── MarginalHitsOptimizeStrategy.h │ ├── MarginalHitsState.h │ ├── MarginalHitsStrategy.cpp │ ├── MarginalHitsStrategy.h │ ├── MemoryMonitor.cpp │ ├── MemoryMonitor.h │ ├── MemoryTierCacheConfig.h │ ├── NvmAdmissionPolicy.h │ ├── NvmCacheState.cpp │ ├── NvmCacheState.h │ ├── PoolOptimizeStrategy.cpp │ ├── PoolOptimizeStrategy.h │ ├── PoolOptimizer.cpp │ ├── PoolOptimizer.h │ ├── PoolRebalancer.cpp │ ├── PoolRebalancer.h │ ├── PoolResizeStrategy.h │ ├── PoolResizer.cpp │ ├── PoolResizer.h │ ├── PromotionStrategy.h │ ├── RandomStrategy.h │ ├── ReadOnlySharedCacheView.h │ ├── Reaper.h │ ├── RebalanceInfo.h │ ├── RebalanceStrategy.cpp │ ├── RebalanceStrategy.h │ ├── Refcount.h │ ├── SlabReleaseStats.cpp │ ├── SlabReleaseStats.h │ ├── TempShmMapping.cpp │ ├── TempShmMapping.h │ ├── TlsActiveItemRing.h │ ├── TypedHandle.h │ ├── Util.h │ ├── datastruct │ │ ├── DList.h │ │ ├── MultiDList.h │ │ ├── SList.h │ │ ├── serialize │ │ │ └── objects.thrift │ │ └── tests │ │ │ ├── DListTest.cpp │ │ │ ├── MultiDListTest.cpp │ │ │ ├── SListTest.cpp │ │ │ └── test_objects.thrift │ ├── memory │ │ ├── AllocationClass.cpp │ │ ├── AllocationClass.h │ │ ├── CompressedPtr.h │ │ ├── MemoryAllocator.cpp │ │ ├── MemoryAllocator.h │ │ ├── MemoryAllocatorStats.h │ │ ├── MemoryPool.cpp │ │ ├── MemoryPool.h │ │ ├── MemoryPoolManager.cpp │ │ ├── MemoryPoolManager.h │ │ ├── Slab.cpp │ │ ├── Slab.h │ │ ├── SlabAllocator.cpp │ │ ├── SlabAllocator.h │ │ ├── serialize │ │ │ └── objects.thrift │ │ └── tests │ │ │ ├── AllocationClassTest.cpp │ │ │ ├── CompressedPtrTest.cpp │ │ │ ├── MemoryAllocatorTest.cpp │ │ │ ├── MemoryPoolManagerTest.cpp │ │ │ ├── MemoryPoolTest.cpp │ │ │ ├── SlabAllocatorTest.cpp │ │ │ ├── TestBase.cpp │ │ │ └── TestBase.h │ ├── nvmcache │ │ ├── BlockCacheReinsertionPolicy.h │ │ ├── CacheApiWrapper.h │ │ ├── InFlightPuts.h │ │ ├── NavyConfig.cpp │ │ ├── NavyConfig.h │ │ ├── NavySetup.cpp │ │ ├── NavySetup.h │ │ ├── NvmCache.h │ │ ├── NvmItem.cpp │ │ ├── NvmItem.h │ │ ├── ReqContexts.h │ │ ├── TombStones.h │ │ ├── WaitContext.h │ │ └── tests │ │ │ ├── InFlightPutsTest.cpp │ │ │ ├── NavyConfigTest.cpp │ │ │ ├── NavySetupTest.cpp │ │ │ ├── NvmCacheTests.cpp │ │ │ ├── NvmItemTests.cpp │ │ │ ├── NvmTestBase.cpp │ │ │ ├── NvmTestBase.h │ │ │ └── TombStoneTests.cpp │ ├── serialize │ │ └── objects.thrift │ └── tests │ │ ├── AccessTypeTest.h │ │ ├── AllocatorHitStatsTest.h │ │ ├── AllocatorHitStatsTypeTest.cpp │ │ ├── AllocatorMemoryTiersTest.cpp │ │ ├── AllocatorMemoryTiersTest.h │ │ ├── AllocatorResizeTest.h │ │ ├── AllocatorResizeTypeTest.cpp │ │ ├── AllocatorTestUtils.h │ │ ├── AllocatorTypeTest.cpp │ │ ├── AllocatorTypeTestDeathStyle.cpp │ │ ├── BaseAllocatorTest.h │ │ ├── BaseAllocatorTestDeathStyle.h │ │ ├── Cache.h │ │ ├── CacheAllocatorConfigTest.cpp │ │ ├── CacheAllocatorTestWrapper.h │ │ ├── CacheBaseTest.cpp │ │ ├── ChainedHashTest.cpp │ │ ├── ItemHandleTest.cpp │ │ ├── ItemTest.cpp │ │ ├── MM2QTest.cpp │ │ ├── MMLruTest.cpp │ │ ├── MMTinyLFUTest.cpp │ │ ├── MMTypeTest.h │ │ ├── MMWTinyLFUTest.cpp │ │ ├── MarginalHitsStateTest.cpp │ │ ├── MemoryMonitorTest.cpp │ │ ├── MemoryTiersTest.cpp │ │ ├── MultiAllocatorTest.cpp │ │ ├── MultiAllocatorTest.h │ │ ├── NvmAdmissionPolicyTest.cpp │ │ ├── NvmCacheStateTest.cpp │ │ ├── NvmTestUtils.h │ │ ├── PoolOptimizeStrategyTest.cpp │ │ ├── RebalanceStrategyTest.cpp │ │ ├── RefCountTest.cpp │ │ ├── SimplePoolOptimizationTest.cpp │ │ ├── SimplePoolOptimizationTest.h │ │ ├── SimpleRebalancingTest.cpp │ │ ├── SimpleRebalancingTest.h │ │ └── TestBase.h ├── benchmarks │ ├── BenchmarkUtils.h │ ├── BucketMutexBench.cpp │ ├── BytesEqualBenchmark.cpp │ ├── CMakeLists.txt │ ├── CacheAllocatorOpsMicroBench.cpp │ ├── CachelibContentionBenchmark.cpp │ ├── CachelibTickerClockBench.cpp │ ├── CompactCacheBench.cpp │ ├── CountMinSketchBenchmark.cpp │ ├── DataTypeBench.thrift │ ├── EventTrackerPerf.cpp │ ├── HashMapBenchmark.cpp │ ├── ItemsReaperBench.cpp │ ├── MMTypeAccessBench.cpp │ ├── MMTypeBench.cpp │ ├── MMTypeBench.h │ ├── MutexBench.cpp │ ├── PtrCompressionBench.cpp │ ├── SListBench.cpp │ ├── SmallOperationMicroBench.cpp │ ├── SpeedUpExistenceCheckBenchmark.cpp │ ├── StrictAliasingSafeReadBench.cpp │ ├── ThreadLocalBench.cpp │ └── tl-bench │ │ └── main.cpp ├── cachebench │ ├── CMakeLists.txt │ ├── binary_trace_gen.cpp │ ├── cache │ │ ├── Cache.cpp │ │ ├── Cache.h │ │ ├── CacheStats.h │ │ ├── CacheValue.h │ │ ├── ItemRecords.h │ │ ├── TimeStampTicker.cpp │ │ ├── TimeStampTicker.h │ │ └── tests │ │ │ └── TimeStampTickerTest.cpp │ ├── consistency │ │ ├── LogEventStream.cpp │ │ ├── LogEventStream.h │ │ ├── RingBuffer.h │ │ ├── ShortThreadId.cpp │ │ ├── ShortThreadId.h │ │ ├── ValueHistory.cpp │ │ ├── ValueHistory.h │ │ ├── ValueTracker.cpp │ │ ├── ValueTracker.h │ │ └── tests │ │ │ ├── RingBufferTest.cpp │ │ │ ├── ShortThreadIdTest.cpp │ │ │ ├── ValueHistoryTest.cpp │ │ │ └── ValueTrackerTest.cpp │ ├── main.cpp │ ├── runner │ │ ├── AsyncCacheStressor.h │ │ ├── CacheStressor.h │ │ ├── FastShutdown.cpp │ │ ├── FastShutdown.h │ │ ├── IntegrationStressor.cpp │ │ ├── IntegrationStressor.h │ │ ├── ProgressTracker.cpp │ │ ├── ProgressTracker.h │ │ ├── Runner.cpp │ │ ├── Runner.h │ │ ├── Stressor.cpp │ │ └── Stressor.h │ ├── test_configs │ │ ├── consistency │ │ │ ├── chained-items-stress-moving.json │ │ │ ├── chained-items-stress-no-moving.json │ │ │ ├── navy-with-deletes-inmem-buf.json │ │ │ ├── navy-with-deletes-stack-alloc-inmem-buf.json │ │ │ ├── navy-with-deletes-with-truncated-alloc-size.json │ │ │ ├── navy-with-deletes.json │ │ │ ├── navy-with-encryption-inmem-buf.json │ │ │ ├── navy-with-encryption.json │ │ │ ├── navy-with-reinsertion-inmem-buf.json │ │ │ ├── navy-with-reinsertion-multiple-clean-threads.json │ │ │ ├── navy-with-reinsertion.json │ │ │ ├── navy.json │ │ │ ├── ram-with-deletes.json │ │ │ └── ram.json │ │ ├── feature_stress │ │ │ ├── could_exist.json │ │ │ ├── dram_cache.json │ │ │ ├── dynamic_refresh_time.json │ │ │ ├── free_list.json │ │ │ ├── item_destructor │ │ │ │ ├── dram.json │ │ │ │ ├── navy.json │ │ │ │ └── navy_bighash.json │ │ │ ├── navy │ │ │ │ ├── async_io.json │ │ │ │ ├── bc_fifo.json │ │ │ │ ├── bh.json │ │ │ │ └── default.json │ │ │ └── slab_release │ │ │ │ ├── chained_items.json │ │ │ │ ├── chained_items_moving.json │ │ │ │ ├── default.json │ │ │ │ └── moving.json │ │ ├── hit_ratio │ │ │ ├── cdn │ │ │ │ ├── config.json │ │ │ │ ├── pop.json │ │ │ │ └── sizes.json │ │ │ ├── graph_cache_follower_assocs │ │ │ │ ├── config.json │ │ │ │ ├── pop.json │ │ │ │ └── sizes.json │ │ │ ├── graph_cache_follower_fbobj │ │ │ │ ├── config.json │ │ │ │ ├── pop.json │ │ │ │ └── sizes.json │ │ │ ├── graph_cache_leader_assocs │ │ │ │ ├── config.json │ │ │ │ ├── pop.json │ │ │ │ └── sizes.json │ │ │ ├── graph_cache_leader_fbobj │ │ │ │ ├── config.json │ │ │ │ ├── pop.json │ │ │ │ └── sizes.json │ │ │ └── kvcache_reg │ │ │ │ ├── config.json │ │ │ │ ├── pop.json │ │ │ │ └── sizes.json │ │ ├── integration_tests │ │ │ ├── cachelib_map.json │ │ │ ├── cachelib_map_asan.json │ │ │ ├── cachelib_range_map.json │ │ │ ├── cachelib_range_map_asan.json │ │ │ ├── fast_shutdown.json │ │ │ ├── high_refcount.json │ │ │ ├── navy_async.json │ │ │ └── navy_async_sync_comp.json │ │ ├── large_cache_test │ │ │ └── config.json │ │ ├── simple_test.json │ │ ├── simple_test_with_persistence.json │ │ ├── simple_tiers_test.json │ │ ├── ssd_perf │ │ │ ├── flat_kvcache_reg │ │ │ │ ├── config.json │ │ │ │ ├── pop.json │ │ │ │ └── sizes.json │ │ │ ├── graph_cache_leader │ │ │ │ ├── assoc_pop.json │ │ │ │ ├── assoc_sizes.json │ │ │ │ ├── config.json │ │ │ │ ├── fbobj_pop.json │ │ │ │ └── fbobj_sizes.json │ │ │ ├── kvcache_l2_reg │ │ │ │ ├── config.json │ │ │ │ ├── pop.json │ │ │ │ └── sizes.json │ │ │ └── kvcache_l2_wc │ │ │ │ ├── config.json │ │ │ │ ├── pop.json │ │ │ │ └── sizes.json │ │ ├── throughput │ │ │ ├── miss-workload │ │ │ │ ├── hybrid_cache_get_throughput_all_misses.json │ │ │ │ ├── hybrid_cache_only_block_cache_get_throughput_all_misses.json │ │ │ │ └── ram_cache_get_throughput_all_misses.json │ │ │ ├── navy_block_cache │ │ │ │ ├── navy_small_size_class.json │ │ │ │ ├── navy_small_stacked_alloc.json │ │ │ │ ├── navy_small_stacked_alloc_and_in_mem_buffer.json │ │ │ │ └── navy_small_stacked_alloc_and_in_mem_buffer_throttled.json │ │ │ ├── same_value_get_throughput_high_contention.json │ │ │ ├── same_value_get_throughput_high_contention_try_lock.json │ │ │ ├── same_value_get_throughput_test_20_pools.json │ │ │ ├── same_value_get_throughput_test_single_pool.json │ │ │ ├── simple_lone_get_throughput.json │ │ │ ├── simple_navy_delete_throughput.json │ │ │ ├── simple_online_throughput.json │ │ │ ├── simple_ram_cache_delete_throughput.json │ │ │ ├── simple_set_throughput.json │ │ │ ├── simple_set_throughput_with_chained_items.json │ │ │ ├── simple_trace_throughput.json │ │ │ ├── small_cache_chained_items.json │ │ │ ├── uniform_values_get_throughput_test.json │ │ │ └── uniform_values_get_throughput_test_single_pool.json │ │ └── trace_replay │ │ │ ├── block_chunk │ │ │ ├── block_traces_1.csv │ │ │ ├── block_traces_2.csv │ │ │ └── config_block.json │ │ │ └── kvcache │ │ │ ├── config_kvtrace.json │ │ │ ├── config_kvtrace_gen_binary.json │ │ │ ├── config_kvtrace_replay_binary.json │ │ │ ├── kv_traces_1.csv │ │ │ └── kv_traces_2.csv │ ├── util │ │ ├── CacheConfig.cpp │ │ ├── CacheConfig.h │ │ ├── Config.cpp │ │ ├── Config.h │ │ ├── Exceptions.h │ │ ├── JSONConfig.h │ │ ├── NandWrites.cpp │ │ ├── NandWrites.h │ │ ├── Parallel.h │ │ ├── Request.h │ │ └── tests │ │ │ └── NandWritesTest.cpp │ ├── vizualize │ │ ├── extract_latency.sh │ │ └── gnuplot_latency.plt │ └── workload │ │ ├── BinaryKVReplayGenerator.h │ │ ├── BlockChunkCache.cpp │ │ ├── BlockChunkCache.h │ │ ├── BlockChunkReplayGenerator.cpp │ │ ├── BlockChunkReplayGenerator.h │ │ ├── FastDiscrete.h │ │ ├── GeneratorBase.h │ │ ├── KVReplayGenerator.h │ │ ├── OnlineGenerator.cpp │ │ ├── OnlineGenerator.h │ │ ├── PieceWiseCache.cpp │ │ ├── PieceWiseCache.h │ │ ├── PieceWiseReplayGenerator.cpp │ │ ├── PieceWiseReplayGenerator.h │ │ ├── ReplayGeneratorBase.h │ │ ├── SimpleFlashBenchmarkGenerator.cpp │ │ ├── SimpleFlashBenchmarkGenerator.h │ │ ├── WorkloadDistribution.h │ │ ├── WorkloadGenerator.cpp │ │ ├── WorkloadGenerator.h │ │ └── tests │ │ ├── KVReplayGeneratorTest.cpp │ │ ├── PieceWiseCacheTest.cpp │ │ └── WorkloadGeneratorTest.cpp ├── cmake │ ├── FindGMock.cmake │ ├── FindGlog.cmake │ ├── FindNUMA.cmake │ ├── FindSodium.cmake │ ├── FindSparsemap.cmake │ ├── FindZlib.cmake │ ├── FindZstd.cmake │ ├── Finduring.cmake │ ├── Makefile.tests.in │ ├── cachelib-config.cmake.in │ └── fb_cxx_flags.cmake ├── common │ ├── AccessTracker.h │ ├── ApproxSplitSet.h │ ├── AtomicCounter.h │ ├── BloomFilter.cpp │ ├── BloomFilter.h │ ├── BloomFilter.thrift │ ├── BytesEqual.h │ ├── CMakeLists.txt │ ├── Cohort.cpp │ ├── Cohort.h │ ├── CompilerUtils.h │ ├── ConditionVariable.h │ ├── CountDownLatch.cpp │ ├── CountDownLatch.h │ ├── CountMinSketch.h │ ├── EventInterface.h │ ├── Exceptions.h │ ├── FastStats.h │ ├── FurcHash.cpp │ ├── Hash.h │ ├── Iterators.h │ ├── MurmurHash.h │ ├── Mutex.h │ ├── PercentileStats.cpp │ ├── PercentileStats.h │ ├── PeriodicWorker.cpp │ ├── PeriodicWorker.h │ ├── Serialization.cpp │ ├── Serialization.h │ ├── TestUtils.cpp │ ├── TestUtils.h │ ├── Throttler.h │ ├── Ticker.h │ ├── Time.h │ ├── Utils.cpp │ ├── Utils.h │ ├── hothash │ │ ├── HotHashDetector.cpp │ │ ├── HotHashDetector.h │ │ └── HotHashDetectorTest.cpp │ ├── inject_pause.cpp │ ├── inject_pause.h │ ├── piecewise │ │ ├── GenericPieces.cpp │ │ ├── GenericPieces.h │ │ ├── GenericPiecesTest.cpp │ │ ├── RequestRange.cpp │ │ ├── RequestRange.h │ │ └── RequestRangeTest.cpp │ └── tests │ │ ├── AccessTrackerTest.cpp │ │ ├── ApproxSplitSetTest.cpp │ │ ├── BloomFilterTest.cpp │ │ ├── BytesEqualTest.cpp │ │ ├── CohortTests.cpp │ │ ├── CountDownLatchTest.cpp │ │ ├── CountMinSketchTest.cpp │ │ ├── CounterTests.cpp │ │ ├── EventInterfaceTest.cpp │ │ ├── EventInterfaceTest.h │ │ ├── HashTests.cpp │ │ ├── IteratorsTests.cpp │ │ ├── MutexTests.cpp │ │ ├── PeriodicWorkerTest.cpp │ │ ├── SerializationTest.cpp │ │ ├── UtilTests.cpp │ │ └── UtilTestsRSS.cpp ├── compact_cache │ ├── CCache.h │ ├── CCacheCreator.h │ ├── CCacheDescriptor.h │ ├── CCacheFixedLruBucket.h │ ├── CCacheVariableLruBucket.h │ ├── CMakeLists.txt │ ├── allocators │ │ ├── CCacheAllocatorBase.h │ │ └── TestAllocator.h │ └── tests │ │ ├── CCacheTests.cpp │ │ └── CCacheTests.h ├── datatype │ ├── Buffer.cpp │ ├── Buffer.h │ ├── CMakeLists.txt │ ├── DataTypes.h │ ├── FixedSizeArray.h │ ├── Map.h │ ├── MapView.h │ ├── RangeMap.h │ └── tests │ │ ├── BufferTest.cpp │ │ ├── DataTypeTest.cpp │ │ ├── DataTypeTest.h │ │ ├── FixedSizeArrayTest.cpp │ │ ├── MapTest.cpp │ │ ├── MapViewTest.cpp │ │ └── RangeMapTest.cpp ├── experimental │ ├── README.md │ └── deprecated_objcache │ │ ├── Allocator.h │ │ ├── ObjectCache.h │ │ ├── ObjectCachePersistence.thrift │ │ ├── Persistence.h │ │ └── tests │ │ ├── AllocatorTest.cpp │ │ ├── Common.h │ │ ├── ObjectCacheTest.cpp │ │ ├── ThriftCustomAllocator.cpp │ │ └── ThriftCustomAllocator.thrift ├── navy │ ├── AbstractCache.h │ ├── CMakeLists.txt │ ├── Factory.cpp │ ├── Factory.h │ ├── admission_policy │ │ ├── AdmissionPolicy.h │ │ ├── DynamicRandomAP.cpp │ │ ├── DynamicRandomAP.h │ │ ├── RejectRandomAP.cpp │ │ ├── RejectRandomAP.h │ │ └── tests │ │ │ ├── DynamicRandomAPTest.cpp │ │ │ └── RejectRandomAPTest.cpp │ ├── bighash │ │ ├── BigHash.cpp │ │ ├── BigHash.h │ │ ├── Bucket.cpp │ │ ├── Bucket.h │ │ ├── BucketStorage.cpp │ │ ├── BucketStorage.h │ │ └── tests │ │ │ ├── BigHashTest.cpp │ │ │ ├── BucketStorageTest.cpp │ │ │ └── BucketTest.cpp │ ├── block_cache │ │ ├── Allocator.cpp │ │ ├── Allocator.h │ │ ├── BlockCache.cpp │ │ ├── BlockCache.h │ │ ├── EvictionPolicy.h │ │ ├── FifoPolicy.cpp │ │ ├── FifoPolicy.h │ │ ├── FixedSizeIndex.cpp │ │ ├── FixedSizeIndex.h │ │ ├── HitsReinsertionPolicy.cpp │ │ ├── HitsReinsertionPolicy.h │ │ ├── Index.h │ │ ├── LruPolicy.cpp │ │ ├── LruPolicy.h │ │ ├── PercentageReinsertionPolicy.h │ │ ├── Region.cpp │ │ ├── Region.h │ │ ├── RegionManager.cpp │ │ ├── RegionManager.h │ │ ├── SparseMapIndex.cpp │ │ ├── SparseMapIndex.h │ │ ├── Types.h │ │ └── tests │ │ │ ├── AllocatorTest.cpp │ │ │ ├── BlockCacheTest.cpp │ │ │ ├── FifoPolicyTest.cpp │ │ │ ├── FixedSizeIndexTest.cpp │ │ │ ├── HitsReinsertionPolicyTest.cpp │ │ │ ├── LruPolicyTest.cpp │ │ │ ├── RegionManagerTest.cpp │ │ │ ├── RegionTest.cpp │ │ │ ├── SparseMapIndexTest.cpp │ │ │ └── TestHelpers.h │ ├── common │ │ ├── Buffer.cpp │ │ ├── Buffer.h │ │ ├── CompilerUtils.h │ │ ├── Device.cpp │ │ ├── Device.h │ │ ├── FdpNvme.cpp │ │ ├── FdpNvme.h │ │ ├── Hash.cpp │ │ ├── Hash.h │ │ ├── NavyThread.cpp │ │ ├── NavyThread.h │ │ ├── SizeDistribution.cpp │ │ ├── SizeDistribution.h │ │ ├── Types.cpp │ │ ├── Types.h │ │ ├── Utils.h │ │ └── tests │ │ │ ├── BufferTest.cpp │ │ │ ├── DeviceTest.cpp │ │ │ ├── HashTest.cpp │ │ │ └── UtilsTest.cpp │ ├── driver │ │ ├── Driver.cpp │ │ ├── Driver.h │ │ └── tests │ │ │ └── DriverTest.cpp │ ├── engine │ │ ├── Engine.h │ │ ├── EnginePair.cpp │ │ ├── EnginePair.h │ │ └── NoopEngine.h │ ├── scheduler │ │ ├── JobScheduler.h │ │ ├── NavyRequestDispatcher.cpp │ │ ├── NavyRequestDispatcher.h │ │ ├── NavyRequestScheduler.cpp │ │ ├── NavyRequestScheduler.h │ │ ├── ThreadPoolJobQueue.cpp │ │ ├── ThreadPoolJobQueue.h │ │ ├── ThreadPoolJobScheduler.cpp │ │ ├── ThreadPoolJobScheduler.h │ │ └── tests │ │ │ ├── OrderedThreadPoolJobSchedulerTest.cpp │ │ │ └── ThreadPoolJobSchedulerTest.cpp │ ├── serialization │ │ ├── RecordIO.cpp │ │ ├── RecordIO.h │ │ ├── Serialization.h │ │ ├── objects.thrift │ │ └── tests │ │ │ ├── RecordIOTest.cpp │ │ │ └── SerializationTest.cpp │ └── testing │ │ ├── BufferGen.cpp │ │ ├── BufferGen.h │ │ ├── Callbacks.h │ │ ├── MockDevice.cpp │ │ ├── MockDevice.h │ │ ├── MockJobScheduler.cpp │ │ ├── MockJobScheduler.h │ │ ├── SeqPoints.cpp │ │ ├── SeqPoints.h │ │ └── tests │ │ ├── BufferGenTest.cpp │ │ ├── MockJobSchedulerTest.cpp │ │ └── SeqPointsTest.cpp ├── object_cache │ ├── ObjectCache.h │ ├── ObjectCacheBase.h │ ├── ObjectCacheConfig.h │ ├── ObjectCacheSizeController.h │ ├── ObjectCacheSizeDistTracker.h │ ├── persistence │ │ ├── Persistence.h │ │ ├── Serialization.h │ │ └── persistent_data.thrift │ ├── tests │ │ ├── ObjectCacheTest.cpp │ │ └── test_object.thrift │ └── util │ │ ├── ThreadMemoryTracker.h │ │ └── tests │ │ └── ThreadMemoryTrackerTest.cpp ├── persistence │ ├── PersistenceManager.cpp │ ├── PersistenceManager.h │ ├── objects.thrift │ └── tests │ │ ├── PersistenceCache.h │ │ ├── PersistenceManagerMock.h │ │ ├── PersistenceManagerMockTest.cpp │ │ └── PersistenceManagerTest.cpp ├── rust │ ├── Cargo.toml │ ├── build.rs │ └── src │ │ ├── abomonation_cache.rs │ │ ├── bincode_cache.rs │ │ ├── cachelib.cpp │ │ ├── cachelib.h │ │ ├── errors.rs │ │ ├── lib.rs │ │ └── lrucache.rs └── shm │ ├── CMakeLists.txt │ ├── PosixShmSegment.cpp │ ├── PosixShmSegment.h │ ├── Shm.h │ ├── ShmCommon.cpp │ ├── ShmCommon.h │ ├── ShmManager.cpp │ ├── ShmManager.h │ ├── SysVShmSegment.cpp │ ├── SysVShmSegment.h │ ├── shm.thrift │ └── tests │ ├── common.cpp │ ├── common.h │ ├── test_page_size.cpp │ ├── test_posix.cpp │ ├── test_shm.cpp │ ├── test_shm_death_style.cpp │ ├── test_shm_manager.cpp │ └── test_sysv.cpp ├── contrib ├── build-cachelib.sh ├── build-package.sh ├── build.sh ├── prepare-rpath-dist.sh ├── prerequisites-arch.sh ├── prerequisites-centos8.sh ├── prerequisites-centos9.sh ├── prerequisites-debian10.sh ├── prerequisites-fedora32.sh ├── prerequisites-fedora34.sh ├── prerequisites-rocky9.sh ├── prerequisites-ubuntu18.sh └── update-submodules.sh ├── examples ├── simple_cache │ ├── CMakeLists.txt │ └── build.sh ├── simple_compact_cache │ ├── CMakeLists.txt │ └── build.sh └── single_tier_cache │ ├── CMakeLists.txt │ └── build.sh └── website ├── .eslintrc.js ├── .gitignore ├── .prettierignore ├── .prettierrc ├── .stylelintrc.js ├── README.md ├── babel.config.js ├── blog ├── 2019-05-28-hola.md ├── 2019-05-29-hello-world.md └── 2019-05-30-welcome.md ├── docs ├── Cache_Library_Architecture_Guide │ ├── Cachelib_Common_Components.md │ ├── Compact_Cache_Design_cc_contain_slabs.png │ ├── Compact_Cache_Design_cc_veriable.png │ ├── Compact_Cache_Design_image.png │ ├── Compact_cache_design.md │ ├── How-do-we-pick-slab.png │ ├── How-do-we-release-slab-2.png │ ├── How-do-we-release-slab.png │ ├── Hybrid_Cache.md │ ├── Hybrid_Cache_allocate.png │ ├── Hybrid_Cache_find.png │ ├── Job_Scheduler.png │ ├── Large_Object_Cache.md │ ├── Navy_Engine_driver_state_machine.png │ ├── Navy_Overview.md │ ├── Overview_A_random_walk_down_the_Cache_Library.md │ ├── RAM_cache_design.md │ ├── RAM_cache_indexing_and_eviction.md │ ├── SOC_cost_of_operations.png │ ├── Slab-rebalancing-why-2.png │ ├── Slab-rebalancing-why-3.png │ ├── Slab-rebalancing-why.png │ ├── Slab_Rebalancing_-_How_Does_It_Work.md │ ├── Small_Item_engine_Read.png │ ├── Small_Item_engine_Write.png │ ├── Small_Object_Cache.md │ ├── Synchronization_In_Eviction_And_Slab_Rebalacing.md │ ├── large_object_cache_overview.png │ ├── large_object_cache_structured_caching_lookup.png │ ├── large_object_cache_structured_caching_page_1.png │ ├── large_object_cache_structured_caching_page_2.png │ ├── large_object_cache_structured_caching_page_3.png │ ├── navy_arch_overview.png │ ├── navy_architecture.png │ ├── navy_async_io.png │ ├── navy_engine_pair.png │ ├── navy_impl_overview.png │ ├── slab-rebalancing-overview.png │ ├── synchronization_in_eviction_and_slab_rebalancing_chained_item_1.png │ ├── synchronization_in_eviction_and_slab_rebalancing_chained_item_2.png │ └── synchronization_in_eviction_and_slab_rebalancing_regular_item.png ├── Cache_Library_User_Guides │ ├── About_CacheLib.md │ ├── CacheLib_configs.md │ ├── Cache_persistence.md │ ├── Cachebench_FB_HW_eval.md │ ├── Cachebench_Overview.md │ ├── Configure_HashTable.md │ ├── Configure_HybridCache.md │ ├── Configuring_cachebench_parameters.md │ ├── Cross_Host_Cache_Persistence.md │ ├── Developing_for_Cachebench.md │ ├── FDP_enabled_Cache.md │ ├── HybridCache.md │ ├── Item_Destructor.md │ ├── Item_and_Handle.md │ ├── Partition_cache_into_pools.md │ ├── Read_data_from_cache.md │ ├── Remove_callback.md │ ├── Remove_data_from_cache.md │ ├── Set_up_a_simple_cache.md │ ├── Structured_Cache.md │ ├── Tuning_DRAM_cache_efficiency.md │ ├── Visit_data_in_cache.md │ ├── Write_data_to_cache.md │ ├── advise.png │ ├── alternate_fdp_navy.png │ ├── automatic_pool_resizing.md │ ├── cachebench.png │ ├── cachelib_2Q.png │ ├── cachelib_LRU.png │ ├── cachelib_overview.png │ ├── chained_items.md │ ├── compact_cache.md │ ├── doc5.md │ ├── eviction_policy.md │ ├── faq.md │ ├── hashtable.png │ ├── item_state.png │ ├── oom_protection.md │ ├── pool_rebalance_strategy.md │ ├── remove_data_from_cache_items.png │ ├── terms.md │ └── ttl_reaper.md ├── cache_library_intro.md └── installation │ ├── github-squash-sync.md │ ├── installation.md │ ├── testing.md │ └── website.md ├── docusaurus.config.js ├── learnmore └── index.md ├── package.json ├── sidebars.js ├── src ├── css │ └── custom.css └── pages │ ├── index.js │ ├── learnmore.js │ └── styles.module.css ├── static ├── .nojekyll ├── CNAME └── img │ ├── CacheLib-Logo-Large-transp.png │ ├── CacheLib-Logo-Small-transp.png │ ├── CacheLib-Logo-small.png │ ├── CacheLib-Logo.png │ ├── dark_blue_dots.jpg │ ├── favicon.ico │ └── oss_logo.png └── yarn.lock /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/general-question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: General Question 3 | about: General Questions about CacheLib usage, compilation, and anything else 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /.github/PULL_REQSUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | Summary: 4 | 5 | 6 | 7 | Test Plan: 8 | 9 | 10 | 11 | Issue link: 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.github/workflows/clang-format-check.yml: -------------------------------------------------------------------------------- 1 | # From: https://github.com/marketplace/actions/clang-format-check#multiple-paths 2 | name: clang-format Check 3 | on: 4 | pull_request: 5 | workflow_dispatch: 6 | jobs: 7 | formatting-check: 8 | name: Formatting Check 9 | runs-on: ubuntu-latest 10 | strategy: 11 | matrix: 12 | path: 13 | - 'cachelib' 14 | - 'examples' 15 | steps: 16 | - uses: actions/checkout@v3 17 | - name: Run clang-format style check for C/C++ programs. 18 | uses: jidicula/clang-format-action@v4.6.2 19 | with: 20 | clang-format-version: '13' 21 | check-path: ${{ matrix.path }} 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Backup and temporary files 2 | *~ 3 | .*.swp 4 | 5 | # Build directories generated by ./contrib/ scripts. 6 | build-cachelib/ 7 | build-fbthrift/ 8 | build-fizz/ 9 | build-fmt/ 10 | build-folly/ 11 | build-gflags/ 12 | build-glog/ 13 | build-googletest/ 14 | build-sparsemap/ 15 | build-wangle/ 16 | 17 | # Required source-code dependencies, fetched by ./contrib/ scripts. 18 | cachelib/external/fmt/ 19 | cachelib/external/gflags/ 20 | cachelib/external/glog/ 21 | cachelib/external/googletest/ 22 | cachelib/external/sparsemap/ 23 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "fbthrift"] 2 | path = cachelib/external/fbthrift 3 | url = https://github.com/facebook/fbthrift 4 | [submodule "folly"] 5 | path = cachelib/external/folly 6 | url = https://github.com/facebook/folly 7 | [submodule "fizz"] 8 | path = cachelib/external/fizz 9 | url = https://github.com/facebookincubator/fizz 10 | [submodule "wangle"] 11 | path = cachelib/external/wangle 12 | url = https://github.com/facebook/wangle 13 | [submodule "mvfst"] 14 | path = cachelib/external/mvfst 15 | url = https://github.com/facebook/mvfst 16 | -------------------------------------------------------------------------------- /BENCHMARKS.md: -------------------------------------------------------------------------------- 1 | # Benchmarking with CacheBench 2 | 3 | ## Introduction 4 | 5 | CacheBench is a benchmark and stress testing tool to evaluate cache 6 | performance with real hardware and real cache workloads. CacheBench takes in a 7 | configuration that describes the cache workload and the cache configuration 8 | and simulates the cache behavior by instantiating a CacheLib cache. It runs 9 | the workload and emits results periodically and at the end. The results 10 | include metrics such as hit rate, evictions, write rate to flash cache, 11 | latency, etc. The workload configs can be hand-written by a human, produced by 12 | a workload analyzer, or backed by raw production cachelib traces. 13 | 14 | 15 | See [here](https://cachelib.org/docs/Cache_Library_User_Guides/Cachebench_Overview) for details on installing and using `CacheBench`. 16 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## V17 4 | In this version, `CacheAllocator::ItemHandle` is removed. Updating to this version will cause compilation error if `ItemHandle` is still used. 5 | 6 | ## V16 7 | 8 | This version is incompatible with versions below 15. Downgrading from this version directly to a version below 15 will require the cache to be dropped. If you need to downgrade from this version, please make sure you downgrade to version 15 first to avoid dropping the cache. 9 | 10 | ## V15 11 | 12 | This version is incompatible with any previous versions. 13 | 14 | Updating to this version may cause compilation error because: 15 | - The following APIs are removed: 16 | 1. CacheAllocator::allocatePermanent_deprecated. 17 | 18 | Updating to this version will not require dropping the cache. 19 | 20 | ## V14 21 | 22 | Inception version when Cachelib goes open source. 23 | -------------------------------------------------------------------------------- /CacheLib-Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/CacheLib-Logo.png -------------------------------------------------------------------------------- /build/deps/github_hashes/facebook/fbthrift-rev.txt: -------------------------------------------------------------------------------- 1 | Subproject commit 9fe44af66d091df4ee1db1f4dc4d05c17def600c 2 | -------------------------------------------------------------------------------- /build/deps/github_hashes/facebook/folly-rev.txt: -------------------------------------------------------------------------------- 1 | Subproject commit 34599fee4a9f050c75d69dd2eeac602688ecfcef 2 | -------------------------------------------------------------------------------- /build/deps/github_hashes/facebook/mvfst-rev.txt: -------------------------------------------------------------------------------- 1 | Subproject commit ea4e116ed09a47d8f950f3e23ac075106a45d010 2 | -------------------------------------------------------------------------------- /build/deps/github_hashes/facebook/wangle-rev.txt: -------------------------------------------------------------------------------- 1 | Subproject commit 8024a10c6dfb3ca0c2cced64c17b8c2ce864b946 2 | -------------------------------------------------------------------------------- /build/deps/github_hashes/facebookincubator/fizz-rev.txt: -------------------------------------------------------------------------------- 1 | Subproject commit 0ddfc9c0d8a90391f4a33ee3273c155391fb08c4 2 | -------------------------------------------------------------------------------- /build/fbcode_builder/.gitignore: -------------------------------------------------------------------------------- 1 | # Facebook-internal CI builds don't have write permission outside of the 2 | # source tree, so we install all projects into this directory. 3 | /facebook_ci 4 | __pycache__/ 5 | *.pyc 6 | -------------------------------------------------------------------------------- /build/fbcode_builder/CMake/FBBuildOptions.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) Facebook, Inc. and its affiliates. 2 | 3 | function (fb_activate_static_library_option) 4 | option(USE_STATIC_DEPS_ON_UNIX 5 | "If enabled, use static dependencies on unix systems. This is generally discouraged." 6 | OFF 7 | ) 8 | # Mark USE_STATIC_DEPS_ON_UNIX as an "advanced" option, since enabling it 9 | # is generally discouraged. 10 | mark_as_advanced(USE_STATIC_DEPS_ON_UNIX) 11 | 12 | if(UNIX AND USE_STATIC_DEPS_ON_UNIX) 13 | SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a" PARENT_SCOPE) 14 | endif() 15 | endfunction() 16 | -------------------------------------------------------------------------------- /build/fbcode_builder/CMake/FBCompilerSettings.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) Facebook, Inc. and its affiliates. 2 | 3 | # This file applies common compiler settings that are shared across 4 | # a number of Facebook opensource projects. 5 | # Please use caution and your best judgement before making changes 6 | # to these shared compiler settings in order to avoid accidentally 7 | # breaking a build in another project! 8 | 9 | if (WIN32) 10 | include(FBCompilerSettingsMSVC) 11 | else() 12 | include(FBCompilerSettingsUnix) 13 | endif() 14 | -------------------------------------------------------------------------------- /build/fbcode_builder/CMake/FBCompilerSettingsMSVC.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) Facebook, Inc. and its affiliates. 2 | 3 | # This file applies common compiler settings that are shared across 4 | # a number of Facebook opensource projects. 5 | # Please use caution and your best judgement before making changes 6 | # to these shared compiler settings in order to avoid accidentally 7 | # breaking a build in another project! 8 | 9 | add_compile_options( 10 | /wd4250 # 'class1' : inherits 'class2::member' via dominance 11 | ) 12 | -------------------------------------------------------------------------------- /build/fbcode_builder/CMake/FBCompilerSettingsUnix.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) Facebook, Inc. and its affiliates. 2 | 3 | # This file applies common compiler settings that are shared across 4 | # a number of Facebook opensource projects. 5 | # Please use caution and your best judgement before making changes 6 | # to these shared compiler settings in order to avoid accidentally 7 | # breaking a build in another project! 8 | 9 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall -Wextra -Wno-deprecated -Wno-deprecated-declarations") 10 | -------------------------------------------------------------------------------- /build/fbcode_builder/CMake/FindDoubleConversion.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) Meta Platforms, Inc. and affiliates. 2 | 3 | # Finds libdouble-conversion. 4 | # 5 | # This module defines: 6 | # DOUBLE_CONVERSION_INCLUDE_DIR 7 | # DOUBLE_CONVERSION_LIBRARY 8 | # 9 | 10 | find_path(DOUBLE_CONVERSION_INCLUDE_DIR double-conversion/double-conversion.h) 11 | find_library(DOUBLE_CONVERSION_LIBRARY NAMES double-conversion) 12 | 13 | include(FindPackageHandleStandardArgs) 14 | find_package_handle_standard_args( 15 | DoubleConversion 16 | DEFAULT_MSG 17 | DOUBLE_CONVERSION_LIBRARY DOUBLE_CONVERSION_INCLUDE_DIR) 18 | 19 | mark_as_advanced(DOUBLE_CONVERSION_INCLUDE_DIR DOUBLE_CONVERSION_LIBRARY) 20 | -------------------------------------------------------------------------------- /build/fbcode_builder/CMake/FindLMDB.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) Meta Platforms, Inc. and affiliates. 2 | # 3 | # This software may be used and distributed according to the terms of the 4 | # GNU General Public License version 2. 5 | 6 | find_library(LMDB_LIBRARIES NAMES lmdb liblmdb) 7 | mark_as_advanced(LMDB_LIBRARIES) 8 | 9 | find_path(LMDB_INCLUDE_DIR NAMES lmdb.h) 10 | mark_as_advanced(LMDB_INCLUDE_DIR) 11 | 12 | find_package_handle_standard_args( 13 | LMDB 14 | REQUIRED_VARS LMDB_LIBRARIES LMDB_INCLUDE_DIR) 15 | 16 | if(LMDB_FOUND) 17 | set(LMDB_LIBRARIES ${LMDB_LIBRARIES}) 18 | set(LMDB_INCLUDE_DIR, ${LMDB_INCLUDE_DIR}) 19 | endif() 20 | -------------------------------------------------------------------------------- /build/fbcode_builder/CMake/FindLibUnwind.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) Facebook, Inc. and its affiliates. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | find_path(LIBUNWIND_INCLUDE_DIR NAMES libunwind.h) 16 | mark_as_advanced(LIBUNWIND_INCLUDE_DIR) 17 | 18 | find_library(LIBUNWIND_LIBRARY NAMES unwind) 19 | mark_as_advanced(LIBUNWIND_LIBRARY) 20 | 21 | include(FindPackageHandleStandardArgs) 22 | FIND_PACKAGE_HANDLE_STANDARD_ARGS( 23 | LIBUNWIND 24 | REQUIRED_VARS LIBUNWIND_LIBRARY LIBUNWIND_INCLUDE_DIR) 25 | 26 | if(LIBUNWIND_FOUND) 27 | set(LIBUNWIND_LIBRARIES ${LIBUNWIND_LIBRARY}) 28 | set(LIBUNWIND_INCLUDE_DIRS ${LIBUNWIND_INCLUDE_DIR}) 29 | endif() 30 | -------------------------------------------------------------------------------- /build/fbcode_builder/CMake/FindPCRE.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) Facebook, Inc. and its affiliates. 2 | include(FindPackageHandleStandardArgs) 3 | find_path(PCRE_INCLUDE_DIR NAMES pcre.h) 4 | find_library(PCRE_LIBRARY NAMES pcre) 5 | find_package_handle_standard_args( 6 | PCRE 7 | DEFAULT_MSG 8 | PCRE_LIBRARY 9 | PCRE_INCLUDE_DIR 10 | ) 11 | mark_as_advanced(PCRE_INCLUDE_DIR PCRE_LIBRARY) 12 | -------------------------------------------------------------------------------- /build/fbcode_builder/CMake/FindPCRE2.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) Facebook, Inc. and its affiliates. 2 | include(FindPackageHandleStandardArgs) 3 | find_path(PCRE2_INCLUDE_DIR NAMES pcre2.h) 4 | find_library(PCRE2_LIBRARY NAMES pcre2-8) 5 | find_package_handle_standard_args( 6 | PCRE2 7 | DEFAULT_MSG 8 | PCRE2_LIBRARY 9 | PCRE2_INCLUDE_DIR 10 | ) 11 | set(PCRE2_DEFINES "PCRE2_CODE_UNIT_WIDTH=8") 12 | mark_as_advanced(PCRE2_INCLUDE_DIR PCRE2_LIBRARY PCRE2_DEFINES) 13 | -------------------------------------------------------------------------------- /build/fbcode_builder/CMake/FindRe2.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) Facebook, Inc. and its affiliates. 2 | # 3 | # This software may be used and distributed according to the terms of the 4 | # GNU General Public License version 2. 5 | 6 | find_library(RE2_LIBRARY re2) 7 | mark_as_advanced(RE2_LIBRARY) 8 | 9 | find_path(RE2_INCLUDE_DIR NAMES re2/re2.h) 10 | mark_as_advanced(RE2_INCLUDE_DIR) 11 | 12 | include(FindPackageHandleStandardArgs) 13 | FIND_PACKAGE_HANDLE_STANDARD_ARGS( 14 | RE2 15 | REQUIRED_VARS RE2_LIBRARY RE2_INCLUDE_DIR) 16 | 17 | if(RE2_FOUND) 18 | set(RE2_LIBRARY ${RE2_LIBRARY}) 19 | set(RE2_INCLUDE_DIR, ${RE2_INCLUDE_DIR}) 20 | endif() 21 | -------------------------------------------------------------------------------- /build/fbcode_builder/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Facebook, Inc. and its affiliates. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /build/fbcode_builder/getdeps/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/build/fbcode_builder/getdeps/__init__.py -------------------------------------------------------------------------------- /build/fbcode_builder/getdeps/errors.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Meta Platforms, Inc. and affiliates. 2 | # 3 | # This source code is licensed under the MIT license found in the 4 | # LICENSE file in the root directory of this source tree. 5 | 6 | # pyre-unsafe 7 | 8 | 9 | class TransientFailure(Exception): 10 | """Raising this error causes getdeps to return with an error code 11 | that Sandcastle will consider to be a retryable transient 12 | infrastructure error""" 13 | 14 | pass 15 | 16 | 17 | class ManifestNotFound(Exception): 18 | def __init__(self, manifest_name) -> None: 19 | super(Exception, self).__init__("Unable to find manifest '%s'" % manifest_name) 20 | -------------------------------------------------------------------------------- /build/fbcode_builder/getdeps/test/fixtures/duplicate/foo: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = foo 3 | -------------------------------------------------------------------------------- /build/fbcode_builder/getdeps/test/fixtures/duplicate/subdir/foo: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = foo 3 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/CLI11: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = CLI11 3 | 4 | [download] 5 | url = https://github.com/CLIUtils/CLI11/archive/v2.0.0.tar.gz 6 | sha256 = 2c672f17bf56e8e6223a3bfb74055a946fa7b1ff376510371902adb9cb0ab6a3 7 | 8 | [build] 9 | builder = cmake 10 | subdir = CLI11-2.0.0 11 | 12 | [cmake.defines] 13 | CLI11_BUILD_TESTS = OFF 14 | CLI11_BUILD_EXAMPLES = OFF 15 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/autoconf: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = autoconf 3 | 4 | [debs] 5 | autoconf 6 | 7 | [homebrew] 8 | autoconf 9 | 10 | [rpms] 11 | autoconf 12 | 13 | [pps] 14 | autoconf 15 | 16 | [download] 17 | url = http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz 18 | sha256 = 954bd69b391edc12d6a4a51a2dd1476543da5c6bbf05a95b59dc0dd6fd4c2969 19 | 20 | [build] 21 | builder = autoconf 22 | subdir = autoconf-2.69 23 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/automake: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = automake 3 | 4 | [homebrew] 5 | automake 6 | 7 | [debs] 8 | automake 9 | 10 | [rpms] 11 | automake 12 | 13 | [pps] 14 | automake 15 | 16 | [download] 17 | url = http://ftp.gnu.org/gnu/automake/automake-1.16.1.tar.gz 18 | sha256 = 608a97523f97db32f1f5d5615c98ca69326ced2054c9f82e65bade7fc4c9dea8 19 | 20 | [build] 21 | builder = autoconf 22 | subdir = automake-1.16.1 23 | 24 | [dependencies] 25 | autoconf 26 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/benchmark: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = benchmark 3 | 4 | [download] 5 | url = https://github.com/google/benchmark/archive/refs/tags/v1.8.0.tar.gz 6 | sha256 = ea2e94c24ddf6594d15c711c06ccd4486434d9cf3eca954e2af8a20c88f9f172 7 | 8 | [build] 9 | builder = cmake 10 | subdir = benchmark-1.8.0/ 11 | 12 | [cmake.defines] 13 | BENCHMARK_ENABLE_TESTING=OFF 14 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/blake3: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = blake3 3 | 4 | [download] 5 | url = https://github.com/BLAKE3-team/BLAKE3/archive/refs/tags/1.5.1.tar.gz 6 | sha256 = 822cd37f70152e5985433d2c50c8f6b2ec83aaf11aa31be9fe71486a91744f37 7 | 8 | [build] 9 | builder = cmake 10 | subdir = BLAKE3-1.5.1/c 11 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/bz2: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = bz2 3 | 4 | [debs] 5 | libbz2-dev 6 | bzip2 7 | 8 | [homebrew] 9 | bzip2 10 | 11 | [rpms] 12 | bzip2-devel 13 | bzip2 14 | 15 | [download] 16 | url = https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz 17 | sha256 = ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269 18 | 19 | [build.not(os=windows)] 20 | builder = make 21 | subdir = bzip2-1.0.8 22 | 23 | [make.build_args.os=linux] 24 | # python bz2 support on linux needs dynamic library 25 | -f 26 | Makefile-libbz2_so 27 | 28 | [make.install_args] 29 | install 30 | 31 | [build.os=windows] 32 | builder = nop 33 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/cabal: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = cabal 3 | 4 | [download.os=linux] 5 | url = https://downloads.haskell.org/~cabal/cabal-install-3.6.2.0/cabal-install-3.6.2.0-x86_64-linux-deb10.tar.xz 6 | sha256 = 4759b56e9257e02f29fa374a6b25d6cb2f9d80c7e3a55d4f678a8e570925641c 7 | 8 | [build] 9 | builder = nop 10 | 11 | [install.files] 12 | cabal = bin/cabal 13 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/cachelib: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = cachelib 3 | fbsource_path = fbcode/cachelib 4 | shipit_project = cachelib 5 | shipit_fbcode_builder = true 6 | 7 | [git] 8 | repo_url = https://github.com/facebook/cachelib.git 9 | 10 | [build] 11 | builder = cmake 12 | subdir = cachelib 13 | job_weight_mib = 2048 14 | 15 | [dependencies] 16 | zlib 17 | fizz 18 | fmt 19 | folly 20 | fbthrift 21 | googletest 22 | sparsemap 23 | wangle 24 | zstd 25 | mvfst 26 | numa 27 | libaio 28 | # cachelib also depends on openssl but since the latter requires a platform- 29 | # specific configuration we rely on the folly manifest to provide this 30 | # dependency to avoid duplication. 31 | 32 | [shipit.pathmap] 33 | fbcode/cachelib = cachelib 34 | fbcode/cachelib/public_tld = . 35 | 36 | [shipit.strip] 37 | ^fbcode/cachelib/examples(/|$) 38 | ^fbcode/cachelib/facebook(/|$) 39 | ^fbcode/cachelib/public_tld/website/docs/facebook(/|$) 40 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/clang: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = clang 3 | 4 | [rpms] 5 | clang15-devel 6 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/cpptoml: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = cpptoml 3 | 4 | [homebrew] 5 | cpptoml 6 | 7 | [download] 8 | url = https://github.com/chadaustin/cpptoml/archive/refs/tags/v0.1.2.tar.gz 9 | sha256 = beda37e94f9746874436c8090c045fd80ae6f8a51f7c668c932a2b110a4fc277 10 | 11 | [build] 12 | builder = cmake 13 | subdir = cpptoml-0.1.2 14 | 15 | [cmake.defines.os=freebsd] 16 | ENABLE_LIBCXX=NO 17 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/double-conversion: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = double-conversion 3 | 4 | [download] 5 | url = https://github.com/google/double-conversion/archive/v3.1.4.tar.gz 6 | sha256 = 95004b65e43fefc6100f337a25da27bb99b9ef8d4071a36a33b5e83eb1f82021 7 | 8 | [homebrew] 9 | double-conversion 10 | 11 | [debs] 12 | libdouble-conversion-dev 13 | 14 | [rpms] 15 | double-conversion 16 | double-conversion-devel 17 | 18 | [pps] 19 | double-conversion 20 | 21 | [build] 22 | builder = cmake 23 | subdir = double-conversion-3.1.4 24 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/edencommon: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = edencommon 3 | fbsource_path = fbcode/eden/common 4 | shipit_project = edencommon 5 | shipit_fbcode_builder = true 6 | 7 | [git] 8 | repo_url = https://github.com/facebookexperimental/edencommon.git 9 | 10 | [build] 11 | builder = cmake 12 | 13 | [dependencies] 14 | fbthrift 15 | fb303 16 | fmt 17 | folly 18 | gflags 19 | glog 20 | 21 | [cmake.defines.test=on] 22 | BUILD_TESTS=ON 23 | 24 | [cmake.defines.test=off] 25 | BUILD_TESTS=OFF 26 | 27 | [shipit.pathmap] 28 | fbcode/eden/common = eden/common 29 | fbcode/eden/common/oss = . 30 | 31 | [shipit.strip] 32 | @README.facebook@ 33 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/exprtk: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = exprtk 3 | 4 | [download] 5 | url = https://github.com/ArashPartow/exprtk/archive/refs/tags/0.0.1.tar.gz 6 | sha256 = fb72791c88ae3b3426e14fdad630027715682584daf56b973569718c56e33f28 7 | 8 | [build.not(os=windows)] 9 | builder = nop 10 | subdir = exprtk-0.0.1 11 | 12 | [install.files] 13 | exprtk.hpp = exprtk.hpp 14 | 15 | [dependencies] 16 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/fast_float: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = fast_float 3 | 4 | [download] 5 | url = https://github.com/fastfloat/fast_float/archive/refs/tags/v8.0.0.tar.gz 6 | sha256 = f312f2dc34c61e665f4b132c0307d6f70ad9420185fa831911bc24408acf625d 7 | 8 | [build] 9 | builder = cmake 10 | subdir = fast_float-8.0.0 11 | 12 | [cmake.defines] 13 | FASTFLOAT_TEST = OFF 14 | FASTFLOAT_SANITIZE = OFF 15 | 16 | [debs.not(all(distro=ubuntu,any(distro_vers="18.04",distro_vers="20.04",distro_vers="22.04",distro_vers="24.04")))] 17 | libfast-float-dev 18 | 19 | [rpms.distro=fedora] 20 | fast_float-devel 21 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/fatal: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = fatal 3 | fbsource_path = fbcode/fatal 4 | shipit_project = fatal 5 | 6 | [git] 7 | repo_url = https://github.com/facebook/fatal.git 8 | 9 | [shipit.pathmap] 10 | fbcode/fatal = fatal 11 | fbcode/fatal/public_tld = . 12 | 13 | [build] 14 | builder = nop 15 | subdir = . 16 | 17 | [install.files] 18 | fatal/portability.h = fatal/portability.h 19 | fatal/preprocessor.h = fatal/preprocessor.h 20 | fatal/container = fatal/container 21 | fatal/functional = fatal/functional 22 | fatal/math = fatal/math 23 | fatal/string = fatal/string 24 | fatal/type = fatal/type 25 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/fb303: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = fb303 3 | fbsource_path = fbcode/fb303 4 | shipit_project = fb303 5 | shipit_fbcode_builder = true 6 | 7 | [git] 8 | repo_url = https://github.com/facebook/fb303.git 9 | 10 | [cargo] 11 | cargo_config_file = source/fb303/thrift/.cargo/config.toml 12 | 13 | [crate.pathmap] 14 | fb303_core = fb303/thrift 15 | 16 | [build] 17 | builder = cmake 18 | 19 | [dependencies] 20 | folly 21 | gflags 22 | glog 23 | fbthrift 24 | 25 | [cmake.defines.test=on] 26 | BUILD_TESTS=ON 27 | 28 | [cmake.defines.test=off] 29 | BUILD_TESTS=OFF 30 | 31 | [shipit.pathmap] 32 | fbcode/fb303/github = . 33 | fbcode/fb303/public_autocargo = fb303 34 | fbcode/fb303 = fb303 35 | 36 | [shipit.strip] 37 | ^fbcode/fb303/(?!public_autocargo).+/Cargo\.toml$ 38 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/fboss: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = fboss 3 | fbsource_path = fbcode/fboss 4 | shipit_project = fboss 5 | shipit_fbcode_builder = true 6 | 7 | [git] 8 | repo_url = https://github.com/facebook/fboss.git 9 | 10 | [build.os=linux] 11 | builder = cmake 12 | # fboss files take a lot of RAM to compile. 13 | job_weight_mib = 3072 14 | 15 | [build.not(os=linux)] 16 | builder = nop 17 | 18 | [dependencies] 19 | folly 20 | fb303 21 | wangle 22 | fizz 23 | fmt 24 | libsodium 25 | googletest 26 | zstd 27 | fatal 28 | fbthrift 29 | iproute2 30 | libusb 31 | libcurl 32 | libnl 33 | libsai 34 | re2 35 | python 36 | yaml-cpp 37 | libyaml 38 | CLI11 39 | exprtk 40 | nlohmann-json 41 | libgpiod 42 | systemd 43 | range-v3 44 | 45 | [shipit.pathmap] 46 | fbcode/fboss/github = . 47 | fbcode/fboss/common = common 48 | fbcode/fboss = fboss 49 | 50 | [sandcastle] 51 | run_tests = off 52 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/fbthrift: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = fbthrift 3 | fbsource_path = xplat/thrift 4 | shipit_project = fbthrift 5 | shipit_fbcode_builder = true 6 | 7 | [git] 8 | repo_url = https://github.com/facebook/fbthrift.git 9 | 10 | [cargo] 11 | cargo_config_file = source/thrift/lib/rust/.cargo/config.toml 12 | 13 | [crate.pathmap] 14 | fbthrift = thrift/lib/rust 15 | 16 | [build] 17 | builder = cmake 18 | job_weight_mib = 2048 19 | 20 | [dependencies] 21 | fizz 22 | fmt 23 | folly 24 | googletest 25 | libsodium 26 | wangle 27 | zstd 28 | mvfst 29 | xxhash 30 | # Thrift also depends on openssl but since the latter requires a platform- 31 | # specific configuration we rely on the folly manifest to provide this 32 | # dependency to avoid duplication. 33 | 34 | [shipit.pathmap] 35 | xplat/thrift/public_tld = . 36 | xplat/thrift = thrift 37 | 38 | [shipit.strip] 39 | ^xplat/thrift/thrift-config\.h$ 40 | ^xplat/thrift/perf/canary.py$ 41 | ^xplat/thrift/perf/loadtest.py$ 42 | ^xplat/thrift/.castle/.* 43 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/fizz: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = fizz 3 | fbsource_path = fbcode/fizz 4 | shipit_project = fizz 5 | shipit_fbcode_builder = true 6 | 7 | [git] 8 | repo_url = https://github.com/facebookincubator/fizz.git 9 | 10 | [build] 11 | builder = cmake 12 | subdir = fizz 13 | 14 | [cmake.defines] 15 | BUILD_EXAMPLES = OFF 16 | 17 | [cmake.defines.test=on] 18 | BUILD_TESTS = ON 19 | 20 | [cmake.defines.all(os=windows, test=on)] 21 | BUILD_TESTS = OFF 22 | 23 | [cmake.defines.test=off] 24 | BUILD_TESTS = OFF 25 | 26 | [dependencies] 27 | folly 28 | liboqs 29 | libsodium 30 | zlib 31 | zstd 32 | 33 | [dependencies.all(test=on, not(os=windows))] 34 | googletest 35 | 36 | [shipit.pathmap] 37 | fbcode/fizz/public_tld = . 38 | fbcode/fizz = fizz 39 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/fmt: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = fmt 3 | 4 | [download] 5 | url = https://github.com/fmtlib/fmt/archive/refs/tags/11.0.2.tar.gz 6 | sha256 = 6cb1e6d37bdcb756dbbe59be438790db409cdb4868c66e888d5df9f13f7c027f 7 | 8 | [build] 9 | builder = cmake 10 | subdir = fmt-11.0.2 11 | 12 | [cmake.defines] 13 | FMT_TEST = OFF 14 | FMT_DOC = OFF 15 | 16 | [homebrew] 17 | fmt 18 | 19 | [rpms.distro=fedora] 20 | fmt-devel 21 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/gflags: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = gflags 3 | 4 | [download] 5 | url = https://github.com/gflags/gflags/archive/v2.2.2.tar.gz 6 | sha256 = 34af2f15cf7367513b352bdcd2493ab14ce43692d2dcd9dfc499492966c64dcf 7 | 8 | [build] 9 | builder = cmake 10 | subdir = gflags-2.2.2 11 | 12 | [cmake.defines] 13 | BUILD_SHARED_LIBS = ON 14 | BUILD_STATIC_LIBS = ON 15 | #BUILD_gflags_nothreads_LIB = OFF 16 | BUILD_gflags_LIB = ON 17 | 18 | [homebrew] 19 | gflags 20 | 21 | [debs] 22 | libgflags-dev 23 | 24 | [rpms.distro=fedora] 25 | gflags-devel 26 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/ghc: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = ghc 3 | 4 | [download.os=linux] 5 | url = https://downloads.haskell.org/~ghc/9.2.8/ghc-9.2.8-x86_64-fedora27-linux.tar.xz 6 | sha256 = 845f63cd365317bb764d81025554a2527dbe315d6fa268c9859e21b911bf2d3c 7 | 8 | [build] 9 | builder = autoconf 10 | subdir = ghc-9.2.8 11 | build_in_src_dir = true 12 | only_install = true 13 | 14 | [make.install_args] 15 | install 16 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/git-lfs: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = git-lfs 3 | 4 | [rpms] 5 | git-lfs 6 | 7 | [debs] 8 | git-lfs 9 | 10 | [homebrew] 11 | git-lfs 12 | 13 | # only used from system packages currently 14 | [build] 15 | builder = nop 16 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/glean: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = glean 3 | fbsource_path = fbcode/glean 4 | shipit_project = facebookincubator/Glean 5 | use_shipit = true 6 | 7 | [shipit.pathmap] 8 | # These are only used by target determinator to trigger builds, the 9 | # real path mappings are in the ShipIt config. 10 | fbcode/glean = glean 11 | fbcode/common/hs = hsthrift 12 | 13 | [subprojects] 14 | hsthrift = hsthrift 15 | 16 | [dependencies] 17 | cabal 18 | ghc 19 | gflags 20 | glog 21 | folly 22 | rocksdb 23 | xxhash 24 | llvm 25 | clang 26 | re2 27 | 28 | [build] 29 | builder = make 30 | 31 | [make.build_args] 32 | cabal-update 33 | all 34 | glean-hie 35 | glass 36 | glean-clang 37 | EXTRA_GHC_OPTS=-j4 +RTS -A32m -n4m -RTS 38 | CABAL_CONFIG_FLAGS=-f-hack-tests -f-typescript-tests -f-python-tests -f-dotnet-tests -f-go-tests -f-rust-tests -f-java-lsif-tests -f-flow-tests 39 | 40 | [make.install_args] 41 | install 42 | 43 | [make.test_args] 44 | test 45 | EXTRA_GHC_OPTS=-j4 +RTS -A32m -n4m -RTS 46 | CABAL_CONFIG_FLAGS=-f-hack-tests -f-typescript-tests -f-python-tests -f-dotnet-tests -f-go-tests -f-rust-tests -f-java-lsif-tests -f-flow-tests 47 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/glog: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = glog 3 | 4 | [download] 5 | url = https://github.com/google/glog/archive/v0.5.0.tar.gz 6 | sha256 = eede71f28371bf39aa69b45de23b329d37214016e2055269b3b5e7cfd40b59f5 7 | 8 | [build] 9 | builder = cmake 10 | subdir = glog-0.5.0 11 | 12 | [dependencies] 13 | gflags 14 | 15 | [cmake.defines] 16 | BUILD_SHARED_LIBS=ON 17 | BUILD_TESTING=NO 18 | WITH_PKGCONFIG=ON 19 | 20 | [cmake.defines.os=freebsd] 21 | HAVE_TR1_UNORDERED_MAP=OFF 22 | HAVE_TR1_UNORDERED_SET=OFF 23 | 24 | [homebrew] 25 | glog 26 | 27 | # on ubuntu glog brings in liblzma-dev, which in turn breaks watchman tests 28 | [debs.not(distro=ubuntu)] 29 | libgoogle-glog-dev 30 | 31 | [rpms.distro=fedora] 32 | glog-devel 33 | 34 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/googletest: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = googletest 3 | 4 | [download] 5 | url = https://github.com/google/googletest/archive/refs/tags/release-1.12.1.tar.gz 6 | sha256 = 81964fe578e9bd7c94dfdb09c8e4d6e6759e19967e397dbea48d1c10e45d0df2 7 | 8 | [build] 9 | builder = cmake 10 | subdir = googletest-release-1.12.1 11 | 12 | [cmake.defines] 13 | # Everything else defaults to the shared runtime, so tell gtest that 14 | # it should not use its choice of the static runtime 15 | gtest_force_shared_crt=ON 16 | 17 | [cmake.defines.os=windows] 18 | BUILD_SHARED_LIBS=ON 19 | 20 | [homebrew] 21 | googletest 22 | 23 | # packaged googletest is too old 24 | [debs.not(all(distro=ubuntu,any(distro_vers="18.04",distro_vers="20.04",distro_vers="22.04")))] 25 | libgtest-dev 26 | libgmock-dev 27 | 28 | [rpms.distro=fedora] 29 | gmock-devel 30 | gtest-devel 31 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/gperf: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = gperf 3 | 4 | [download] 5 | url = http://ftp.gnu.org/pub/gnu/gperf/gperf-3.1.tar.gz 6 | sha256 = 588546b945bba4b70b6a3a616e80b4ab466e3f33024a352fc2198112cdbb3ae2 7 | 8 | [build.not(os=windows)] 9 | builder = autoconf 10 | subdir = gperf-3.1 11 | 12 | [build.os=windows] 13 | builder = nop 14 | 15 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/hexdump: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = hexdump 3 | 4 | [rpms] 5 | util-linux 6 | 7 | [debs] 8 | bsdmainutils 9 | 10 | # only used from system packages currently 11 | [build] 12 | builder = nop 13 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/hsthrift: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = hsthrift 3 | fbsource_path = fbcode/common/hs 4 | shipit_project = facebookincubator/hsthrift 5 | use_shipit = true 6 | 7 | [shipit.pathmap] 8 | # These are only used by target determinator to trigger builds, the 9 | # real path mappings are in the ShipIt config. 10 | fbcode/common/hs = . 11 | 12 | [dependencies] 13 | cabal 14 | ghc 15 | gflags 16 | glog 17 | folly 18 | fbthrift 19 | wangle 20 | fizz 21 | boost 22 | 23 | [build] 24 | builder = make 25 | 26 | [make.build_args] 27 | cabal-update 28 | all 29 | 30 | [make.install_args] 31 | install 32 | 33 | [make.test_args] 34 | test 35 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/iproute2: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = iproute2 3 | 4 | [download] 5 | url = https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/iproute2-4.12.0.tar.gz 6 | sha256 = 46612a1e2d01bb31932557bccdb1b8618cae9a439dfffc08ef35ed8e197f14ce 7 | 8 | [build.os=linux] 9 | builder = iproute2 10 | subdir = iproute2-4.12.0 11 | patchfile = iproute2_oss.patch 12 | 13 | [build.not(os=linux)] 14 | builder = nop 15 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/jom: -------------------------------------------------------------------------------- 1 | # jom is compatible with MSVC nmake, but adds the /j argment which 2 | # speeds up openssl build a lot 3 | [manifest] 4 | name = jom 5 | 6 | # see https://download.qt.io/official_releases/jom/changelog.txt for latest version 7 | [download.os=windows] 8 | url = https://download.qt.io/official_releases/jom/jom_1_1_4.zip 9 | sha256 = d533c1ef49214229681e90196ed2094691e8c4a0a0bef0b2c901debcb562682b 10 | 11 | [build.os=windows] 12 | builder = nop 13 | 14 | [install.files.os=windows] 15 | . = bin 16 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/jq: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = jq 3 | 4 | [rpms.distro=fedora] 5 | jq 6 | 7 | [homebrew] 8 | jq 9 | 10 | [download.not(os=windows)] 11 | # we use jq-1.7+ to get fix for number truncation https://github.com/jqlang/jq/pull/1752 12 | url = https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-1.7.1.tar.gz 13 | sha256 = 478c9ca129fd2e3443fe27314b455e211e0d8c60bc8ff7df703873deeee580c2 14 | 15 | [build.not(os=windows)] 16 | builder = autoconf 17 | subdir = jq-1.7.1 18 | 19 | [build.os=windows] 20 | builder = nop 21 | 22 | [autoconf.args] 23 | # This argument turns off some developers tool and it is recommended in jq's 24 | # README 25 | --disable-maintainer-mode 26 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/katran: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = katran 3 | fbsource_path = fbcode/katran 4 | shipit_project = katran 5 | shipit_fbcode_builder = true 6 | 7 | [git] 8 | repo_url = https://github.com/facebookincubator/katran.git 9 | 10 | [build.not(os=linux)] 11 | builder = nop 12 | 13 | [build.os=linux] 14 | builder = cmake 15 | subdir = . 16 | 17 | [cmake.defines.test=on] 18 | BUILD_TESTS=ON 19 | 20 | [cmake.defines.test=off] 21 | BUILD_TESTS=OFF 22 | 23 | [dependencies] 24 | folly 25 | fizz 26 | libbpf 27 | libmnl 28 | zlib 29 | googletest 30 | fmt 31 | 32 | [debs] 33 | libssl-dev 34 | 35 | [shipit.pathmap] 36 | fbcode/katran/public_root = . 37 | fbcode/katran = katran 38 | 39 | [shipit.strip] 40 | ^fbcode/katran/facebook 41 | ^fbcode/katran/OSS_SYNC 42 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libaio: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libaio 3 | 4 | [debs] 5 | libaio-dev 6 | 7 | [rpms.distro=centos_stream] 8 | libaio-devel 9 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libbpf: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libbpf 3 | 4 | [download] 5 | url = https://github.com/libbpf/libbpf/archive/refs/tags/v0.7.0.tar.gz 6 | sha256 = 5083588ce5a3a620e395ee1e596af77b4ec5771ffc71cff2af49dfee38c06361 7 | 8 | # BPF only builds on linux, so make it a NOP on other platforms 9 | [build.not(os=linux)] 10 | builder = nop 11 | 12 | [build.os=linux] 13 | builder = make 14 | subdir = libbpf-0.7.0/src 15 | 16 | [make.build_args] 17 | BUILD_STATIC_ONLY=y 18 | 19 | # libbpf-0.3 requires uapi headers >= 5.8 20 | [make.install_args] 21 | install 22 | install_uapi_headers 23 | BUILD_STATIC_ONLY=y 24 | 25 | [dependencies] 26 | libelf 27 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libcurl: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libcurl 3 | 4 | [rpms] 5 | libcurl-devel 6 | libcurl-minimal 7 | 8 | [debs] 9 | libcurl4-openssl-dev 10 | 11 | [pps] 12 | libcurl-gnutls 13 | 14 | [download] 15 | url = https://curl.haxx.se/download/curl-7.65.1.tar.gz 16 | sha256 = 821aeb78421375f70e55381c9ad2474bf279fc454b791b7e95fc83562951c690 17 | 18 | [dependencies] 19 | nghttp2 20 | 21 | # We use system OpenSSL on Linux (see folly's manifest for details) 22 | [dependencies.not(os=linux)] 23 | openssl 24 | 25 | [build.not(os=windows)] 26 | builder = autoconf 27 | subdir = curl-7.65.1 28 | 29 | [autoconf.args] 30 | # fboss (which added the libcurl dep) doesn't need ldap so it is disabled here. 31 | # if someone in the future wants to add ldap for something else, it won't hurt 32 | # fboss. However, that would require adding an ldap manifest. 33 | # 34 | # For the same reason, we disable libssh2 and libidn2 which aren't really used 35 | # but would require adding manifests if we don't disable them. 36 | --disable-ldap 37 | --without-libssh2 38 | --without-libidn2 39 | 40 | [build.os=windows] 41 | builder = cmake 42 | subdir = curl-7.65.1 43 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libdwarf: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libdwarf 3 | 4 | [rpms] 5 | libdwarf-devel 6 | libdwarf 7 | 8 | [debs] 9 | libdwarf-dev 10 | 11 | [homebrew] 12 | dwarfutils 13 | 14 | [download] 15 | url = https://www.prevanders.net/libdwarf-0.9.2.tar.xz 16 | sha256 = 22b66d06831a76f6a062126cdcad3fcc58540b89a1acb23c99f8861f50999ec3 17 | 18 | [build] 19 | builder = cmake 20 | subdir = libdwarf-0.9.2 21 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libelf: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libelf 3 | 4 | [rpms] 5 | elfutils-libelf-devel-static 6 | 7 | [debs] 8 | libelf-dev 9 | 10 | [pps] 11 | libelf 12 | 13 | [download] 14 | url = https://ftp.osuosl.org/pub/blfs/conglomeration/libelf/libelf-0.8.13.tar.gz 15 | sha256 = 591a9b4ec81c1f2042a97aa60564e0cb79d041c52faa7416acb38bc95bd2c76d 16 | 17 | # libelf only makes sense on linux, so make it a NOP on other platforms 18 | [build.not(os=linux)] 19 | builder = nop 20 | 21 | [build.os=linux] 22 | builder = autoconf 23 | subdir = libelf-0.8.13 24 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libevent: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libevent 3 | 4 | [debs] 5 | libevent-dev 6 | 7 | [homebrew] 8 | libevent 9 | 10 | [rpms] 11 | libevent-devel 12 | 13 | [pps] 14 | libevent 15 | 16 | # Note that the CMakeLists.txt file is present only in 17 | # git repo and not in the release tarball, so take care 18 | # to use the github generated source tarball rather than 19 | # the explicitly uploaded source tarball 20 | [download] 21 | url = https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz 22 | sha256 = 92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb 23 | 24 | [build] 25 | builder = cmake 26 | subdir = libevent-2.1.12-stable 27 | 28 | [cmake.defines] 29 | EVENT__DISABLE_TESTS = ON 30 | EVENT__DISABLE_BENCHMARK = ON 31 | EVENT__DISABLE_SAMPLES = ON 32 | EVENT__DISABLE_REGRESS = ON 33 | 34 | [cmake.defines.shared_libs=on] 35 | EVENT__BUILD_SHARED_LIBRARIES = ON 36 | 37 | [cmake.defines.os=windows] 38 | EVENT__LIBRARY_TYPE = STATIC 39 | 40 | [dependencies.not(any(os=linux, os=freebsd))] 41 | openssl 42 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libffi: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libffi 3 | 4 | [debs] 5 | libffi-dev 6 | 7 | [homebrew] 8 | libffi 9 | 10 | [rpms] 11 | libffi-devel 12 | libffi 13 | 14 | [pps] 15 | libffi 16 | 17 | [download] 18 | url = https://github.com/libffi/libffi/releases/download/v3.4.2/libffi-3.4.2.tar.gz 19 | sha256 = 540fb721619a6aba3bdeef7d940d8e9e0e6d2c193595bc243241b77ff9e93620 20 | 21 | [build] 22 | builder = autoconf 23 | subdir = libffi-3.4.2 24 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libgit2: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libgit2 3 | 4 | [homebrew] 5 | libgit2 6 | 7 | [rpms] 8 | libgit2-devel 9 | 10 | [pps] 11 | libgit2 12 | 13 | # Ubuntu 18.04 libgit2 has clash with libcurl4-openssl-dev as it depends on 14 | # libcurl4-gnutls-dev. Should be ok from 20.04 again 15 | # There is a description at https://github.com/r-hub/sysreqsdb/issues/77 16 | [debs.not(all(distro=ubuntu,distro_vers="18.04"))] 17 | libgit2-dev 18 | 19 | [download] 20 | url = https://github.com/libgit2/libgit2/archive/v0.28.1.tar.gz 21 | sha256 = 0ca11048795b0d6338f2e57717370208c2c97ad66c6d5eac0c97a8827d13936b 22 | 23 | [build] 24 | builder = cmake 25 | subdir = libgit2-0.28.1 26 | 27 | [cmake.defines] 28 | # Could turn this on if we also wanted to add a manifest for libssh2 29 | USE_SSH = OFF 30 | BUILD_CLAR = OFF 31 | # Have to build shared to work around annoying problems with cmake 32 | # mis-parsing the frameworks required to link this on macos :-/ 33 | BUILD_SHARED_LIBS = ON 34 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libgpiod: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libgpiod 3 | 4 | [download] 5 | url = https://cdn.kernel.org/pub/software/libs/libgpiod/libgpiod-1.6.tar.xz 6 | sha256 = 62908023d59e8cbb9137ddd14deec50ced862d8f9b8749f288d3dbe7967151ef 7 | 8 | [build] 9 | builder = autoconf 10 | subdir = libgpiod-1.6 11 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libiberty: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libiberty 3 | 4 | [rpms] 5 | binutils-devel 6 | binutils 7 | 8 | [debs] 9 | binutils-dev 10 | 11 | [download] 12 | url = https://ftp.gnu.org/gnu/binutils/binutils-2.43.tar.xz 13 | sha256 = b53606f443ac8f01d1d5fc9c39497f2af322d99e14cea5c0b4b124d630379365 14 | 15 | [dependencies] 16 | zlib 17 | 18 | [build] 19 | builder = autoconf 20 | subdir = binutils-2.43/libiberty 21 | patchfile = libiberty_install_pic_lib.patch 22 | 23 | # only build the parts needed for demangling 24 | # as we still want to use system linker and assembler etc 25 | [autoconf.args] 26 | --enable-install-libiberty 27 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libmnl: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libmnl 3 | 4 | [rpms] 5 | libmnl-devel 6 | 7 | # all centos 8 distros are missing this, 8 | # but its in fedora so may be back in a later version 9 | [rpms.not(all(any(distro=centos_stream,distro=centos),distro_vers=8))] 10 | libmnl-static 11 | 12 | [debs] 13 | libmnl-dev 14 | 15 | [pps] 16 | libmnl 17 | 18 | [download] 19 | url = http://www.netfilter.org/pub/libmnl/libmnl-1.0.4.tar.bz2 20 | sha256 = 171f89699f286a5854b72b91d06e8f8e3683064c5901fb09d954a9ab6f551f81 21 | 22 | [build.os=linux] 23 | builder = autoconf 24 | subdir = libmnl-1.0.4 25 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libnl: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libnl 3 | 4 | [rpms] 5 | libnl3-devel 6 | libnl3 7 | 8 | [debs] 9 | libnl-3-dev 10 | libnl-route-3-dev 11 | 12 | [pps] 13 | libnl 14 | 15 | [download] 16 | url = https://github.com/thom311/libnl/releases/download/libnl3_2_25/libnl-3.2.25.tar.gz 17 | sha256 = 8beb7590674957b931de6b7f81c530b85dc7c1ad8fbda015398bc1e8d1ce8ec5 18 | 19 | [build.os=linux] 20 | builder = autoconf 21 | subdir = libnl-3.2.25 22 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/liboqs: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = liboqs 3 | 4 | [download] 5 | url = https://github.com/open-quantum-safe/liboqs/archive/refs/tags/0.12.0.tar.gz 6 | sha256 = df999915204eb1eba311d89e83d1edd3a514d5a07374745d6a9e5b2dd0d59c08 7 | 8 | [build] 9 | builder = cmake 10 | subdir = liboqs-0.12.0 11 | 12 | [cmake.defines] 13 | OQS_MINIMAL_BUILD = KEM_kyber_512;KEM_kyber_768;KEM_kyber_1024;KEM_ml_kem_512;KEM_ml_kem_768;KEM_ml_kem_1024 14 | 15 | [dependencies] 16 | openssl 17 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libsai: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libsai 3 | 4 | [download] 5 | url = https://github.com/opencomputeproject/SAI/archive/v1.14.0.tar.gz 6 | sha256 = 4e3a1d010bda0c589db46e077725a2cd9624a5cc255c89d1caa79deb408d1fa7 7 | 8 | [build] 9 | builder = nop 10 | subdir = SAI-1.14.0 11 | 12 | [install.files] 13 | inc = include 14 | experimental = experimental 15 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libsodium: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libsodium 3 | 4 | [debs] 5 | libsodium-dev 6 | 7 | [homebrew] 8 | libsodium 9 | 10 | [rpms] 11 | libsodium-devel 12 | libsodium-static 13 | 14 | [pps] 15 | libsodium 16 | 17 | [download.not(os=windows)] 18 | url = https://github.com/jedisct1/libsodium/releases/download/1.0.20-RELEASE/libsodium-1.0.20.tar.gz 19 | sha256 = ebb65ef6ca439333c2bb41a0c1990587288da07f6c7fd07cb3a18cc18d30ce19 20 | 21 | [build.not(os=windows)] 22 | builder = autoconf 23 | subdir = libsodium-1.0.20 24 | 25 | [download.os=windows] 26 | url = https://github.com/jedisct1/libsodium/releases/download/1.0.20-RELEASE/libsodium-1.0.20-msvc.zip 27 | sha256 = 2ff97f9e3f5b341bdc808e698057bea1ae454f99e29ff6f9b62e14d0eb1b1baa 28 | 29 | [build.os=windows] 30 | builder = nop 31 | 32 | [install.files.os=windows] 33 | libsodium/x64/Release/v143/dynamic/libsodium.dll = bin/libsodium.dll 34 | libsodium/x64/Release/v143/dynamic/libsodium.lib = lib/libsodium.lib 35 | libsodium/x64/Release/v143/dynamic/libsodium.exp = lib/libsodium.exp 36 | libsodium/x64/Release/v143/dynamic/libsodium.pdb = lib/libsodium.pdb 37 | libsodium/include = include 38 | 39 | [autoconf.args] 40 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libtool: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libtool 3 | 4 | [homebrew] 5 | libtool 6 | 7 | [rpms] 8 | libtool 9 | 10 | [debs] 11 | libtool 12 | 13 | [pps] 14 | libtool 15 | 16 | [download] 17 | url = http://ftp.gnu.org/gnu/libtool/libtool-2.4.6.tar.gz 18 | sha256 = e3bd4d5d3d025a36c21dd6af7ea818a2afcd4dfc1ea5a17b39d7854bcd0c06e3 19 | 20 | [build] 21 | builder = autoconf 22 | subdir = libtool-2.4.6 23 | 24 | [dependencies] 25 | automake 26 | 27 | [autoconf.args] 28 | --enable-ltdl-install 29 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libunwind: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libunwind 3 | 4 | [rpms] 5 | libunwind-devel 6 | libunwind 7 | 8 | # on ubuntu this brings in liblzma-dev, which in turn breaks watchman tests 9 | [debs.not(distro=ubuntu)] 10 | libunwind-dev 11 | 12 | # The current libunwind v1.8.1 release has compiler issues with aarch64 (https://github.com/libunwind/libunwind/issues/702). 13 | # This more recent libunwind version (based on the latest commit, not a release version) got it fixed. 14 | [download] 15 | url = https://github.com/libunwind/libunwind/archive/f081cf42917bdd5c428b77850b473f31f81767cf.tar.gz 16 | sha256 = 4ff5c335c02d225491d6c885db827fb5fa505fee4e68b4d7e866efc0087e7264 17 | 18 | [build] 19 | builder = autoconf 20 | subdir = libunwind-f081cf42917bdd5c428b77850b473f31f81767cf 21 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libusb: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libusb 3 | 4 | [debs] 5 | libusb-1.0-0-dev 6 | 7 | [homebrew] 8 | libusb 9 | 10 | [rpms] 11 | libusb-devel 12 | libusb 13 | 14 | [pps] 15 | libusb 16 | 17 | [download] 18 | url = https://github.com/libusb/libusb/releases/download/v1.0.22/libusb-1.0.22.tar.bz2 19 | sha256 = 75aeb9d59a4fdb800d329a545c2e6799f732362193b465ea198f2aa275518157 20 | 21 | [build.os=linux] 22 | builder = autoconf 23 | subdir = libusb-1.0.22 24 | 25 | [autoconf.args] 26 | # fboss (which added the libusb dep) doesn't need udev so it is disabled here. 27 | # if someone in the future wants to add udev for something else, it won't hurt 28 | # fboss. 29 | --disable-udev 30 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/libyaml: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = libyaml 3 | 4 | [download] 5 | url = http://pyyaml.org/download/libyaml/yaml-0.1.7.tar.gz 6 | sha256 = 8088e457264a98ba451a90b8661fcb4f9d6f478f7265d48322a196cec2480729 7 | 8 | [build.os=linux] 9 | builder = autoconf 10 | subdir = yaml-0.1.7 11 | 12 | [build.not(os=linux)] 13 | builder = nop 14 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/llvm: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = llvm 3 | 4 | [rpms] 5 | llvm15-devel 6 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/lmdb: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = lmdb 3 | 4 | [build] 5 | builder = make 6 | subdir = lmdb-LMDB_0.9.31/libraries/liblmdb 7 | 8 | [download] 9 | url = https://github.com/LMDB/lmdb/archive/refs/tags/LMDB_0.9.31.tar.gz 10 | sha256 = dd70a8c67807b3b8532b3e987b0a4e998962ecc28643e1af5ec77696b081c9b0 11 | 12 | [make.build_args] 13 | BUILD_STATIC_ONLY=y 14 | 15 | [make.install_args] 16 | install 17 | BUILD_STATIC_ONLY=y 18 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/lz4: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = lz4 3 | 4 | [homebrew] 5 | lz4 6 | 7 | [rpms] 8 | lz4-devel 9 | # centos 8 and centos_stream 9 are missing this rpm 10 | [rpms.not(any(all(distro=centos,distro_vers=8),all(distro=centos_stream,distro_vers=9)))] 11 | lz4-static 12 | 13 | [debs] 14 | liblz4-dev 15 | 16 | [pps] 17 | lz4 18 | 19 | [download] 20 | url = https://github.com/lz4/lz4/archive/v1.8.3.tar.gz 21 | sha256 = 33af5936ac06536805f9745e0b6d61da606a1f8b4cc5c04dd3cbaca3b9b4fc43 22 | 23 | [build] 24 | builder = cmake 25 | subdir = lz4-1.8.3/contrib/cmake_unofficial 26 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/mcrouter: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = mcrouter 3 | 4 | [git] 5 | repo_url = https://github.com/facebook/mcrouter.git 6 | 7 | [dependencies] 8 | folly 9 | wangle 10 | fizz 11 | fbthrift 12 | mvfst 13 | ragel 14 | 15 | [build] 16 | builder = cmake 17 | subdir = . 18 | 19 | [cmake.defines.test=on] 20 | BUILD_TESTS=ON 21 | 22 | [cmake.defines.test=off] 23 | BUILD_TESTS=OFF 24 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/mononoke_integration: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = mononoke_integration 3 | fbsource_path = fbcode/eden 4 | shipit_project = eden 5 | shipit_fbcode_builder = true 6 | 7 | [git] 8 | repo_url = https://github.com/facebook/sapling.git 9 | 10 | [build.not(os=windows)] 11 | builder = make 12 | subdir = eden/mononoke/tests/integration 13 | 14 | [build.os=windows] 15 | # building Mononoke on windows is not supported 16 | builder = nop 17 | 18 | [make.build_args] 19 | build-getdeps 20 | 21 | [make.install_args] 22 | install-getdeps 23 | 24 | [make.test_args] 25 | test-getdeps 26 | 27 | [shipit.pathmap] 28 | fbcode/eden/mononoke/tests/integration = eden/mononoke/tests/integration 29 | 30 | [shipit.strip] 31 | ^.*/facebook/.*$ 32 | ^.*/fb/.*$ 33 | 34 | [dependencies] 35 | git-lfs 36 | jq 37 | mononoke 38 | nmap 39 | python 40 | python-click 41 | ripgrep 42 | sapling 43 | tree 44 | zstd 45 | 46 | [dependencies.os=linux] 47 | sqlite3 48 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/mvfst: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = mvfst 3 | fbsource_path = fbcode/quic 4 | shipit_project = mvfst 5 | shipit_fbcode_builder = true 6 | 7 | [git] 8 | repo_url = https://github.com/facebook/mvfst.git 9 | 10 | [build] 11 | builder = cmake 12 | subdir = . 13 | 14 | [cmake.defines.test=on] 15 | BUILD_TESTS = ON 16 | 17 | [cmake.defines.all(os=windows, test=on)] 18 | BUILD_TESTS = OFF 19 | 20 | [cmake.defines.test=off] 21 | BUILD_TESTS = OFF 22 | 23 | [dependencies] 24 | folly 25 | fizz 26 | 27 | [dependencies.all(test=on, not(os=windows))] 28 | googletest 29 | 30 | [shipit.pathmap] 31 | fbcode/quic/public_root = . 32 | fbcode/quic = quic 33 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/ncurses: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = ncurses 3 | 4 | [debs] 5 | libncurses-dev 6 | 7 | [homebrew] 8 | ncurses 9 | 10 | [rpms] 11 | ncurses-devel 12 | 13 | [download] 14 | url = https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.3.tar.gz 15 | sha256 = 97fc51ac2b085d4cde31ef4d2c3122c21abc217e9090a43a30fc5ec21684e059 16 | 17 | [build.not(os=windows)] 18 | builder = autoconf 19 | subdir = ncurses-6.3 20 | 21 | [autoconf.args] 22 | --without-cxx-binding 23 | --without-ada 24 | 25 | [autoconf.args.os=linux] 26 | --enable-shared 27 | --with-shared 28 | 29 | [build.os=windows] 30 | builder = nop 31 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/nghttp2: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = nghttp2 3 | 4 | [rpms] 5 | libnghttp2-devel 6 | libnghttp2 7 | 8 | [debs] 9 | libnghttp2-dev 10 | 11 | [pps] 12 | libnghttp2 13 | 14 | [download] 15 | url = https://github.com/nghttp2/nghttp2/releases/download/v1.47.0/nghttp2-1.47.0.tar.gz 16 | sha256 = 62f50f0e9fc479e48b34e1526df8dd2e94136de4c426b7680048181606832b7c 17 | 18 | [build] 19 | builder = autoconf 20 | subdir = nghttp2-1.47.0 21 | 22 | [autoconf.args] 23 | --enable-lib-only 24 | --disable-dependency-tracking 25 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/ninja: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = ninja 3 | 4 | [debs] 5 | ninja-build 6 | 7 | [homebrew] 8 | ninja 9 | 10 | [rpms] 11 | ninja-build 12 | 13 | [pps] 14 | ninja 15 | 16 | [download.os=windows] 17 | url = https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip 18 | sha256 = bbde850d247d2737c5764c927d1071cbb1f1957dcabda4a130fa8547c12c695f 19 | 20 | [build.os=windows] 21 | builder = nop 22 | 23 | [install.files.os=windows] 24 | ninja.exe = bin/ninja.exe 25 | 26 | [download.not(os=windows)] 27 | url = https://github.com/ninja-build/ninja/archive/v1.10.2.tar.gz 28 | sha256 = ce35865411f0490368a8fc383f29071de6690cbadc27704734978221f25e2bed 29 | 30 | [build.not(os=windows)] 31 | builder = ninja_bootstrap 32 | subdir = ninja-1.10.2 33 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/nlohmann-json: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = nlohmann-json 3 | 4 | [download] 5 | url = https://github.com/nlohmann/json/archive/refs/tags/v3.10.5.tar.gz 6 | sha256 = 5daca6ca216495edf89d167f808d1d03c4a4d929cef7da5e10f135ae1540c7e4 7 | 8 | [dependencies] 9 | 10 | [build] 11 | builder = cmake 12 | subdir = json-3.10.5 13 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/nmap: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = nmap 3 | 4 | [rpms] 5 | nmap 6 | nmap-ncat 7 | 8 | [debs] 9 | nmap 10 | 11 | # 18.04 combines ncat into the nmap package, newer need the separate one 12 | [debs.not(all(distro=ubuntu,distro_vers="18.04"))] 13 | ncat 14 | 15 | [download.not(os=windows)] 16 | url = https://api.github.com/repos/nmap/nmap/tarball/ef8213a36c2e89233c806753a57b5cd473605408 17 | sha256 = eda39e5a8ef4964fac7db16abf91cc11ff568eac0fa2d680b0bfa33b0ed71f4a 18 | 19 | [build.not(os=windows)] 20 | builder = autoconf 21 | subdir = nmap-nmap-ef8213a 22 | build_in_src_dir = true 23 | 24 | [build.os=windows] 25 | builder = nop 26 | 27 | [autoconf.args] 28 | # Without this option the build was filing to find some third party libraries 29 | # that we don't need 30 | enable_rdma=no 31 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/numa: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = numa 3 | 4 | [download] 5 | url = https://github.com/numactl/numactl/releases/download/v2.0.19/numactl-2.0.19.tar.gz 6 | sha256 = f2672a0381cb59196e9c246bf8bcc43d5568bc457700a697f1a1df762b9af884 7 | 8 | [build] 9 | builder = autoconf 10 | subdir = numactl-2.0.19 11 | 12 | [rpms.distro=centos_stream] 13 | numactl-devel 14 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/openr: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = openr 3 | fbsource_path = facebook/openr 4 | shipit_project = openr 5 | shipit_fbcode_builder = true 6 | 7 | [git] 8 | repo_url = https://github.com/facebook/openr.git 9 | 10 | [build.os=linux] 11 | builder = cmake 12 | # openr files take a lot of RAM to compile. 13 | job_weight_mib = 3072 14 | 15 | [build.not(os=linux)] 16 | # boost.fiber is required and that is not available on macos. 17 | builder = nop 18 | 19 | [dependencies] 20 | boost 21 | fb303 22 | fbthrift 23 | folly 24 | googletest 25 | re2 26 | range-v3 27 | 28 | [cmake.defines.test=on] 29 | BUILD_TESTS=ON 30 | ADD_ROOT_TESTS=OFF 31 | 32 | [cmake.defines.test=off] 33 | BUILD_TESTS=OFF 34 | 35 | 36 | [shipit.pathmap] 37 | fbcode/openr = openr 38 | fbcode/openr/public_tld = . 39 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/openssl: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = openssl 3 | 4 | [debs] 5 | libssl-dev 6 | 7 | [homebrew] 8 | openssl 9 | # on homebrew need the matching curl and ca- 10 | 11 | [rpms] 12 | openssl 13 | openssl-devel 14 | openssl-libs 15 | 16 | [pps] 17 | openssl 18 | 19 | # no need to download on the systems where we always use the system libs 20 | [download.not(any(os=linux, os=freebsd))] 21 | # match the openssl version packages in ubuntu LTS folly current supports 22 | url = https://www.openssl.org/source/openssl-3.0.15.tar.gz 23 | sha256 = 23c666d0edf20f14249b3d8f0368acaee9ab585b09e1de82107c66e1f3ec9533 24 | 25 | # We use the system openssl on these platforms even without --allow-system-packages 26 | [build.any(os=linux, os=freebsd)] 27 | builder = nop 28 | 29 | [build.not(any(os=linux, os=freebsd))] 30 | builder = openssl 31 | subdir = openssl-3.0.15 32 | 33 | [dependencies.os=windows] 34 | jom 35 | perl 36 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/osxfuse: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = osxfuse 3 | 4 | [download] 5 | url = https://github.com/osxfuse/osxfuse/archive/osxfuse-3.8.3.tar.gz 6 | sha256 = 93bab6731bdfe8dc1ef069483437270ce7fe5a370f933d40d8d0ef09ba846c0c 7 | 8 | [build] 9 | builder = nop 10 | 11 | [install.files] 12 | osxfuse-osxfuse-3.8.3/common = include 13 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/patchelf: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = patchelf 3 | 4 | [rpms] 5 | patchelf 6 | 7 | [debs] 8 | patchelf 9 | 10 | [pps] 11 | patchelf 12 | 13 | [download] 14 | url = https://github.com/NixOS/patchelf/archive/0.10.tar.gz 15 | sha256 = b3cb6bdedcef5607ce34a350cf0b182eb979f8f7bc31eae55a93a70a3f020d13 16 | 17 | [build] 18 | builder = autoconf 19 | subdir = patchelf-0.10 20 | 21 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/pcre2: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = pcre2 3 | 4 | [homebrew] 5 | pcre2 6 | 7 | [rpms] 8 | pcre2-devel 9 | pcre-static 10 | 11 | [debs] 12 | libpcre2-dev 13 | 14 | [download] 15 | url = https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.40/pcre2-10.40.tar.bz2 16 | sha256 = 14e4b83c4783933dc17e964318e6324f7cae1bc75d8f3c79bc6969f00c159d68 17 | 18 | [build] 19 | builder = cmake 20 | subdir = pcre2-10.40 21 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/perl: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = perl 3 | 4 | [download.os=windows] 5 | url = http://strawberryperl.com/download/5.28.1.1/strawberry-perl-5.28.1.1-64bit-portable.zip 6 | sha256 = 935c95ba096fa11c4e1b5188732e3832d330a2a79e9882ab7ba8460ddbca810d 7 | 8 | [build.os=windows] 9 | builder = nop 10 | subdir = perl 11 | 12 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/pexpect: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = pexpect 3 | 4 | [download] 5 | url = https://files.pythonhosted.org/packages/0e/3e/377007e3f36ec42f1b84ec322ee12141a9e10d808312e5738f52f80a232c/pexpect-4.7.0-py2.py3-none-any.whl 6 | sha256 = 2094eefdfcf37a1fdbfb9aa090862c1a4878e5c7e0e7e7088bdb511c558e5cd1 7 | 8 | [build] 9 | builder = python-wheel 10 | 11 | [dependencies] 12 | python-ptyprocess 13 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/proxygen: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = proxygen 3 | fbsource_path = fbcode/proxygen 4 | shipit_project = proxygen 5 | shipit_fbcode_builder = true 6 | 7 | [git] 8 | repo_url = https://github.com/facebook/proxygen.git 9 | 10 | [build.os=windows] 11 | builder = nop 12 | 13 | [build] 14 | builder = cmake 15 | subdir = . 16 | job_weight_mib = 3072 17 | 18 | [cmake.defines.test=on] 19 | BUILD_TESTS = ON 20 | 21 | [cmake.defines.test=off] 22 | BUILD_TESTS = OFF 23 | 24 | [dependencies] 25 | zlib 26 | gperf 27 | folly 28 | fizz 29 | wangle 30 | mvfst 31 | 32 | [dependencies.test=on] 33 | googletest 34 | 35 | [shipit.pathmap] 36 | fbcode/proxygen/public_tld = . 37 | fbcode/proxygen = proxygen 38 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/python: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = python 3 | 4 | [homebrew] 5 | python@3.8 6 | 7 | [rpms] 8 | python3 9 | python3-devel 10 | 11 | # sapling needs dataclasses which arrive in 3.7, and the bionic python is 3.6 12 | [debs.all(distro=ubuntu,distro_vers="18.04")] 13 | python3.8-dev 14 | 15 | [debs.not(all(distro=ubuntu,distro_vers="18.04"))] 16 | python3-all-dev 17 | 18 | [pps] 19 | python3 20 | 21 | [download] 22 | url = https://www.python.org/ftp/python/3.8.13/Python-3.8.13.tgz 23 | sha256 = 903b92d76354366b1d9c4434d0c81643345cef87c1600adfa36095d7b00eede4 24 | 25 | [build] 26 | builder = autoconf 27 | subdir = Python-3.8.13 28 | 29 | [autoconf.args] 30 | --enable-shared 31 | --with-ensurepip=install 32 | 33 | # python's pkg-config libffi detection is broken 34 | # See https://bugs.python.org/issue34823 for clearest description 35 | # and pending PR https://github.com/python/cpython/pull/20451 36 | # The documented workaround requires an environment variable derived from 37 | # pkg-config to be passed into its configure step 38 | [autoconf.envcmd.LDFLAGS] 39 | pkg-config 40 | --libs-only-L 41 | libffi 42 | 43 | [dependencies] 44 | libffi 45 | # eden tests expect the python bz2 support 46 | bz2 47 | # eden tests expect the python curses support 48 | ncurses 49 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/python-click: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = python-click 3 | 4 | [download] 5 | url = https://files.pythonhosted.org/packages/d2/3d/fa76db83bf75c4f8d338c2fd15c8d33fdd7ad23a9b5e57eb6c5de26b430e/click-7.1.2-py2.py3-none-any.whl 6 | sha256 = dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc 7 | 8 | [build] 9 | builder = python-wheel 10 | 11 | [rpms] 12 | python3-click 13 | 14 | [debs] 15 | python3-click 16 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/python-filelock: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = python-filelock 3 | 4 | [download] 5 | url = https://files.pythonhosted.org/packages/31/24/ee722b92f23b9ebd87783e893a75352c048bbbc1f67dce0d63b58b46cb48/filelock-3.3.2-py3-none-any.whl 6 | sha256 = bb2a1c717df74c48a2d00ed625e5a66f8572a3a30baacb7657add1d7bac4097b 7 | 8 | [build] 9 | builder = python-wheel 10 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/python-ptyprocess: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = python-ptyprocess 3 | 4 | [download] 5 | url = https://files.pythonhosted.org/packages/d1/29/605c2cc68a9992d18dada28206eeada56ea4bd07a239669da41674648b6f/ptyprocess-0.6.0-py2.py3-none-any.whl 6 | sha256 = d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f 7 | 8 | [build] 9 | builder = python-wheel 10 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/python-setuptools: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = python-setuptools 3 | 4 | [download] 5 | url = https://files.pythonhosted.org/packages/c0/7a/3da654f49c95d0cc6e9549a855b5818e66a917e852ec608e77550c8dc08b/setuptools-69.1.1-py3-none-any.whl 6 | sha256 = 02fa291a0471b3a18b2b2481ed902af520c69e8ae0919c13da936542754b4c56 7 | 8 | [build] 9 | builder = python-wheel 10 | 11 | [rpms] 12 | python3-setuptools 13 | 14 | [homebrew] 15 | python-setuptools 16 | 17 | [debs] 18 | python3-setuptools 19 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/python-six: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = python-six 3 | 4 | [download] 5 | url = https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl 6 | sha256 = 3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c 7 | 8 | [build] 9 | builder = python-wheel 10 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/python-toml: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = python-toml 3 | 4 | [download] 5 | url = https://files.pythonhosted.org/packages/a2/12/ced7105d2de62fa7c8fb5fce92cc4ce66b57c95fb875e9318dba7f8c5db0/toml-0.10.0-py2.py3-none-any.whl 6 | sha256 = 235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e 7 | 8 | [build] 9 | builder = python-wheel 10 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/ragel: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = ragel 3 | 4 | [debs] 5 | ragel 6 | 7 | [homebrew] 8 | ragel 9 | 10 | [rpms] 11 | ragel 12 | 13 | [download] 14 | url = https://www.colm.net/files/ragel/ragel-6.10.tar.gz 15 | sha256 = 5f156edb65d20b856d638dd9ee2dfb43285914d9aa2b6ec779dac0270cd56c3f 16 | 17 | [build] 18 | builder = autoconf 19 | subdir = ragel-6.10 20 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/range-v3: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = range-v3 3 | 4 | [download] 5 | url = https://github.com/ericniebler/range-v3/archive/refs/tags/0.11.0.tar.gz 6 | sha256 = 376376615dbba43d3bef75aa590931431ecb49eb36d07bb726a19f680c75e20c 7 | 8 | 9 | [build] 10 | builder = cmake 11 | subdir = range-v3-0.11.0 12 | 13 | [cmake.defines] 14 | RANGE_V3_EXAMPLES=OFF 15 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/re2: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = re2 3 | 4 | [homebrew] 5 | re2 6 | 7 | [debs] 8 | libre2-dev 9 | 10 | [rpms] 11 | re2 12 | re2-devel 13 | 14 | [pps] 15 | re2 16 | 17 | [download] 18 | url = https://github.com/google/re2/archive/2020-11-01.tar.gz 19 | sha256 = 8903cc66c9d34c72e2bc91722288ebc7e3ec37787ecfef44d204b2d6281954d7 20 | 21 | [build] 22 | builder = cmake 23 | subdir = re2-2020-11-01 24 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/ripgrep: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = ripgrep 3 | 4 | [rpms] 5 | ripgrep 6 | 7 | [debs] 8 | ripgrep 9 | 10 | [homebrew] 11 | ripgrep 12 | 13 | # only used from system packages currently 14 | [build] 15 | builder = nop 16 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/rocksdb: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = rocksdb 3 | 4 | [download] 5 | url = https://github.com/facebook/rocksdb/archive/refs/tags/v8.7.3.zip 6 | sha256 = 36c06b61dc167f2455990d60dd88d734b73aa8c4dfc095243efd0243834c6cd3 7 | 8 | [dependencies] 9 | lz4 10 | snappy 11 | 12 | [build] 13 | builder = cmake 14 | subdir = rocksdb-8.7.3 15 | 16 | [cmake.defines] 17 | WITH_SNAPPY=ON 18 | WITH_LZ4=ON 19 | WITH_TESTS=OFF 20 | WITH_BENCHMARK_TOOLS=OFF 21 | # We get relocation errors with the static gflags lib, 22 | # and there's no clear way to make it pick the shared gflags 23 | # so just turn it off. 24 | WITH_GFLAGS=OFF 25 | # Disable the use of -Werror 26 | FAIL_ON_WARNINGS = OFF 27 | 28 | [cmake.defines.os=windows] 29 | ROCKSDB_INSTALL_ON_WINDOWS=ON 30 | # RocksDB hard codes the paths to the snappy libs to something 31 | # that doesn't exist; ignoring the usual cmake rules. As a result, 32 | # we can't build it with snappy without either patching rocksdb or 33 | # without introducing more complex logic to the build system to 34 | # connect the snappy build outputs to rocksdb's custom logic here. 35 | # Let's just turn it off on windows. 36 | WITH_SNAPPY=OFF 37 | WITH_LZ4=ON 38 | ROCKSDB_SKIP_THIRDPARTY=ON 39 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/rust-shed: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = rust-shed 3 | fbsource_path = fbcode/common/rust/shed 4 | shipit_project = rust-shed 5 | shipit_fbcode_builder = true 6 | 7 | [git] 8 | repo_url = https://github.com/facebookexperimental/rust-shed.git 9 | 10 | [build] 11 | builder = cargo 12 | 13 | [cargo] 14 | build_doc = true 15 | workspace_dir = 16 | 17 | [shipit.pathmap] 18 | fbcode/common/rust/shed = shed 19 | fbcode/common/rust/shed/public_autocargo = shed 20 | fbcode/common/rust/shed/public_tld = . 21 | tools/rust/ossconfigs = . 22 | 23 | [shipit.strip] 24 | ^fbcode/common/rust/shed/(?!public_autocargo|public_tld).+/Cargo\.toml$ 25 | 26 | [dependencies] 27 | fbthrift 28 | fb303 29 | 30 | # We use the system openssl on linux 31 | [dependencies.not(os=linux)] 32 | openssl 33 | 34 | [dependencies.fbsource=on] 35 | rust 36 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/snappy: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = snappy 3 | 4 | [homebrew] 5 | snappy 6 | 7 | [debs] 8 | libsnappy-dev 9 | 10 | [rpms] 11 | snappy-devel 12 | 13 | [pps] 14 | snappy 15 | 16 | [download] 17 | url = https://github.com/google/snappy/archive/1.1.7.tar.gz 18 | sha256 = 3dfa02e873ff51a11ee02b9ca391807f0c8ea0529a4924afa645fbf97163f9d4 19 | 20 | [build] 21 | builder = cmake 22 | subdir = snappy-1.1.7 23 | 24 | [cmake.defines] 25 | SNAPPY_BUILD_TESTS = OFF 26 | 27 | # Avoid problems like `relocation R_X86_64_PC32 against symbol` on ELF systems 28 | # when linking rocksdb, which builds PIC even when building a static lib 29 | [cmake.defines.os=linux] 30 | BUILD_SHARED_LIBS = ON 31 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/sparsemap: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = sparsemap 3 | 4 | [download] 5 | url = https://github.com/Tessil/sparse-map/archive/refs/tags/v0.6.2.tar.gz 6 | sha256 = 7020c21e8752e59d72e37456cd80000e18671c803890a3e55ae36b295eba99f6 7 | 8 | [build] 9 | builder = cmake 10 | subdir = sparse-map-0.6.2/ 11 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/sqlite3: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = sqlite3 3 | 4 | [debs] 5 | libsqlite3-dev 6 | sqlite3 7 | 8 | [homebrew] 9 | sqlite 10 | 11 | [rpms] 12 | sqlite-devel 13 | sqlite-libs 14 | sqlite 15 | 16 | [pps] 17 | sqlite3 18 | 19 | [download] 20 | url = https://sqlite.org/2019/sqlite-amalgamation-3280000.zip 21 | sha256 = d02fc4e95cfef672b45052e221617a050b7f2e20103661cda88387349a9b1327 22 | 23 | [dependencies] 24 | cmake 25 | ninja 26 | 27 | [build] 28 | builder = sqlite 29 | subdir = sqlite-amalgamation-3280000 30 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/systemd: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = systemd 3 | 4 | [rpms] 5 | systemd 6 | systemd-devel 7 | 8 | [download] 9 | url = https://github.com/systemd/systemd/archive/refs/tags/v256.7.tar.gz 10 | sha256 = 896d76ff65c88f5fd9e42f90d152b0579049158a163431dd77cdc57748b1d7b0 11 | 12 | 13 | [build] 14 | builder = systemd 15 | subdir = systemd-256.7 16 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/tree: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = tree 3 | 4 | [debs] 5 | tree 6 | 7 | [homebrew] 8 | tree 9 | 10 | [rpms] 11 | tree 12 | 13 | [download.os=linux] 14 | url = https://salsa.debian.org/debian/tree-packaging/-/archive/debian/1.8.0-1/tree-packaging-debian-1.8.0-1.tar.gz 15 | sha256 = a841eee1d52bfd64a48f54caab9937b9bd92935055c48885c4ab1ae4dab7fae5 16 | 17 | [download.os=darwin] 18 | # The official package of tree source requires users of non-Linux platform to 19 | # comment/uncomment certain lines in the Makefile to build for their platform. 20 | # Besauce getdeps.py doesn't have that functionality we just use this custom 21 | # fork of tree which has proper lines uncommented for a OSX build 22 | url = https://github.com/lukaspiatkowski/tree-command/archive/debian/1.8.0-1-macos.tar.gz 23 | sha256 = 9cbe889553d95cf5a2791dd0743795d46a3c092c5bba691769c0e5c52e11229e 24 | 25 | [build.os=linux] 26 | builder = make 27 | subdir = tree-packaging-debian-1.8.0-1 28 | 29 | [build.os=darwin] 30 | builder = make 31 | subdir = tree-command-debian-1.8.0-1-macos 32 | 33 | [build.os=windows] 34 | builder = nop 35 | 36 | [make.install_args] 37 | install 38 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/wangle: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = wangle 3 | fbsource_path = fbcode/wangle 4 | shipit_project = wangle 5 | shipit_fbcode_builder = true 6 | 7 | [git] 8 | repo_url = https://github.com/facebook/wangle.git 9 | 10 | [build] 11 | builder = cmake 12 | subdir = wangle 13 | 14 | [cmake.defines.test=on] 15 | BUILD_TESTS=ON 16 | 17 | [cmake.defines.test=off] 18 | BUILD_TESTS=OFF 19 | 20 | [dependencies] 21 | folly 22 | googletest 23 | fizz 24 | 25 | [shipit.pathmap] 26 | fbcode/wangle/public_tld = . 27 | fbcode/wangle = wangle 28 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/watchman: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = watchman 3 | fbsource_path = fbcode/watchman 4 | shipit_project = watchman 5 | shipit_fbcode_builder = true 6 | 7 | [git] 8 | repo_url = https://github.com/facebook/watchman.git 9 | 10 | [build] 11 | builder = cmake 12 | 13 | [dependencies] 14 | boost 15 | cpptoml 16 | edencommon 17 | fb303 18 | fbthrift 19 | folly 20 | pcre2 21 | googletest 22 | python-setuptools 23 | 24 | [dependencies.fbsource=on] 25 | rust 26 | 27 | [shipit.pathmap] 28 | fbcode/watchman = watchman 29 | fbcode/watchman/oss = . 30 | fbcode/eden/fs = eden/fs 31 | 32 | [shipit.strip] 33 | ^fbcode/eden/fs/(?!.*\.thrift|service/shipit_test_file\.txt) 34 | 35 | [cmake.defines.fb=on] 36 | ENABLE_EDEN_SUPPORT=ON 37 | IS_FB_BUILD=ON 38 | 39 | # FB macos specific settings 40 | [cmake.defines.all(fb=on,os=darwin)] 41 | # this path is coupled with the FB internal watchman-osx.spec 42 | WATCHMAN_STATE_DIR=/opt/facebook/watchman/var/run/watchman 43 | # tell cmake not to try to create /opt/facebook/... 44 | INSTALL_WATCHMAN_STATE_DIR=OFF 45 | USE_SYS_PYTHON=OFF 46 | 47 | [depends.environment] 48 | WATCHMAN_VERSION_OVERRIDE 49 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/xxhash: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = xxhash 3 | 4 | [download] 5 | url = https://github.com/Cyan4973/xxHash/archive/refs/tags/v0.8.2.tar.gz 6 | sha256 = baee0c6afd4f03165de7a4e67988d16f0f2b257b51d0e3cb91909302a26a79c4 7 | 8 | [rpms] 9 | xxhash-devel 10 | 11 | [debs] 12 | libxxhash-dev 13 | xxhash 14 | 15 | [homebrew] 16 | xxhash 17 | 18 | [build.not(os=windows)] 19 | builder = make 20 | subdir = xxHash-0.8.2 21 | 22 | [make.build_args] 23 | all 24 | 25 | [make.install_args] 26 | install 27 | 28 | [build.os=windows] 29 | builder = cmake 30 | subdir = xxHash-0.8.2/cmake_unofficial 31 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/xz: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = xz 3 | 4 | # ubuntu's package causes watchman's tests to hang 5 | [debs.not(distro=ubuntu)] 6 | liblzma-dev 7 | 8 | [homebrew] 9 | xz 10 | 11 | [rpms] 12 | xz-devel 13 | 14 | [download] 15 | url = https://tukaani.org/xz/xz-5.2.5.tar.gz 16 | sha256 = f6f4910fd033078738bd82bfba4f49219d03b17eb0794eb91efbae419f4aba10 17 | 18 | [build] 19 | builder = autoconf 20 | subdir = xz-5.2.5 21 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/yaml-cpp: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = yaml-cpp 3 | 4 | [download] 5 | url = https://github.com/jbeder/yaml-cpp/archive/yaml-cpp-0.6.2.tar.gz 6 | sha256 = e4d8560e163c3d875fd5d9e5542b5fd5bec810febdcba61481fe5fc4e6b1fd05 7 | 8 | [build.os=linux] 9 | builder = cmake 10 | subdir = yaml-cpp-yaml-cpp-0.6.2 11 | 12 | [build.not(os=linux)] 13 | builder = nop 14 | 15 | [dependencies] 16 | boost 17 | googletest 18 | 19 | [cmake.defines] 20 | YAML_CPP_BUILD_TESTS=OFF 21 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/zlib: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = zlib 3 | 4 | [debs] 5 | zlib1g-dev 6 | 7 | [homebrew] 8 | zlib 9 | 10 | [rpms.not(distro=fedora)] 11 | zlib-devel 12 | zlib-static 13 | 14 | [rpms.distro=fedora] 15 | zlib-ng-compat-devel 16 | zlib-ng-compat-static 17 | 18 | [pps] 19 | zlib 20 | 21 | [download] 22 | url = https://zlib.net/zlib-1.3.1.tar.gz 23 | sha256 = 9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23 24 | 25 | [build] 26 | builder = cmake 27 | subdir = zlib-1.3.1 28 | patchfile = zlib_dont_build_more_than_needed.patch 29 | -------------------------------------------------------------------------------- /build/fbcode_builder/manifests/zstd: -------------------------------------------------------------------------------- 1 | [manifest] 2 | name = zstd 3 | 4 | [homebrew] 5 | zstd 6 | 7 | # 18.04 zstd is too old 8 | [debs.not(all(distro=ubuntu,distro_vers="18.04"))] 9 | libzstd-dev 10 | zstd 11 | 12 | [rpms] 13 | libzstd-devel 14 | libzstd 15 | 16 | [pps] 17 | zstd 18 | 19 | [download] 20 | url = https://github.com/facebook/zstd/releases/download/v1.5.5/zstd-1.5.5.tar.gz 21 | sha256 = 9c4396cc829cfae319a6e2615202e82aad41372073482fce286fac78646d3ee4 22 | 23 | [build] 24 | builder = cmake 25 | subdir = zstd-1.5.5/build/cmake 26 | 27 | # The zstd cmake build explicitly sets the install name 28 | # for the shared library in such a way that cmake discards 29 | # the path to the library from the install_name, rendering 30 | # the library non-resolvable during the build. The short 31 | # term solution for this is just to link static on macos. 32 | # 33 | # And while we're at it, let's just always link statically. 34 | [cmake.defines] 35 | ZSTD_BUILD_SHARED = OFF 36 | -------------------------------------------------------------------------------- /build/fbcode_builder/patches/boost_comparator_operator_fix.patch: -------------------------------------------------------------------------------- 1 | diff --git a/boost/serialization/strong_typedef.hpp b/boost/serialization/strong_typedef.hpp 2 | --- a/boost/serialization/strong_typedef.hpp 3 | +++ b/boost/serialization/strong_typedef.hpp 4 | @@ -44,6 +44,7 @@ 5 | operator const T&() const {return t;} \ 6 | operator T&() {return t;} \ 7 | bool operator==(const D& rhs) const {return t == rhs.t;} \ 8 | + bool operator==(const T& lhs) const {return t == lhs;} \ 9 | bool operator<(const D& rhs) const {return t < rhs.t;} \ 10 | }; 11 | 12 | -------------------------------------------------------------------------------- /build/fbcode_builder/patches/iproute2_oss.patch: -------------------------------------------------------------------------------- 1 | diff --git a/bridge/fdb.c b/bridge/fdb.c 2 | --- a/bridge/fdb.c 3 | +++ b/bridge/fdb.c 4 | @@ -31,7 +31,7 @@ 5 | 6 | static unsigned int filter_index, filter_vlan, filter_state; 7 | 8 | -json_writer_t *jw_global; 9 | +static json_writer_t *jw_global; 10 | 11 | static void usage(void) 12 | { 13 | diff --git a/ip/ipmroute.c b/ip/ipmroute.c 14 | --- a/ip/ipmroute.c 15 | +++ b/ip/ipmroute.c 16 | @@ -44,7 +44,7 @@ 17 | exit(-1); 18 | } 19 | 20 | -struct rtfilter { 21 | +static struct rtfilter { 22 | int tb; 23 | int af; 24 | int iif; 25 | diff --git a/ip/xfrm_monitor.c b/ip/xfrm_monitor.c 26 | --- a/ip/xfrm_monitor.c 27 | +++ b/ip/xfrm_monitor.c 28 | @@ -34,7 +34,7 @@ 29 | #include "ip_common.h" 30 | 31 | static void usage(void) __attribute__((noreturn)); 32 | -int listen_all_nsid; 33 | +static int listen_all_nsid; 34 | 35 | static void usage(void) 36 | { 37 | -------------------------------------------------------------------------------- /build/fbcode_builder/patches/libiberty_install_pic_lib.patch: -------------------------------------------------------------------------------- 1 | diff --git a/Makefile.in b/Makefile.in 2 | index b77a41c..cbe71fe 100644 3 | --- a/Makefile.in 4 | +++ b/Makefile.in 5 | @@ -389,7 +389,7 @@ MULTIOSDIR = `$(CC) $(CFLAGS) -print-multi-os-directory` 6 | install_to_libdir: all 7 | if test -n "${target_header_dir}"; then \ 8 | ${mkinstalldirs} $(DESTDIR)$(libdir)/$(MULTIOSDIR); \ 9 | - $(INSTALL_DATA) $(TARGETLIB) $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB)n; \ 10 | + $(INSTALL_DATA) pic/$(TARGETLIB) $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB)n; \ 11 | ( cd $(DESTDIR)$(libdir)/$(MULTIOSDIR) ; chmod 644 $(TARGETLIB)n ;$(RANLIB) $(TARGETLIB)n ); \ 12 | mv -f $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB)n $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB); \ 13 | case "${target_header_dir}" in \ 14 | -------------------------------------------------------------------------------- /cachelib/allocator/CacheAllocatorLru2QCache.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/allocator/CacheAllocator.h" 18 | 19 | namespace facebook::cachelib { 20 | template class CacheAllocator; 21 | } 22 | -------------------------------------------------------------------------------- /cachelib/allocator/CacheAllocatorLru5B2QCache.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/allocator/CacheAllocator.h" 18 | 19 | namespace facebook::cachelib { 20 | template class CacheAllocator; 21 | } 22 | -------------------------------------------------------------------------------- /cachelib/allocator/CacheAllocatorLru5BCache.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/allocator/CacheAllocator.h" 18 | 19 | namespace facebook::cachelib { 20 | template class CacheAllocator; 21 | } 22 | -------------------------------------------------------------------------------- /cachelib/allocator/CacheAllocatorLru5BCacheWithSpinBuckets.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/allocator/CacheAllocator.h" 18 | 19 | namespace facebook::cachelib { 20 | template class CacheAllocator; 21 | } 22 | -------------------------------------------------------------------------------- /cachelib/allocator/CacheAllocatorLruCache.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/allocator/CacheAllocator.h" 18 | 19 | namespace facebook::cachelib { 20 | template class CacheAllocator; 21 | } 22 | -------------------------------------------------------------------------------- /cachelib/allocator/CacheAllocatorLruCacheWithSpinBuckets.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/allocator/CacheAllocator.h" 18 | 19 | namespace facebook::cachelib { 20 | template class CacheAllocator; 21 | } 22 | -------------------------------------------------------------------------------- /cachelib/allocator/CacheAllocatorTinyLFU5BCache.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/allocator/CacheAllocator.h" 18 | 19 | namespace facebook::cachelib { 20 | template class CacheAllocator; 21 | } 22 | -------------------------------------------------------------------------------- /cachelib/allocator/CacheAllocatorTinyLFUCache.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/allocator/CacheAllocator.h" 18 | 19 | namespace facebook::cachelib { 20 | template class CacheAllocator; 21 | } 22 | -------------------------------------------------------------------------------- /cachelib/allocator/CacheAllocatorWTinyLFU5BCache.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/allocator/CacheAllocator.h" 18 | 19 | namespace facebook::cachelib { 20 | template class CacheAllocator; 21 | } 22 | -------------------------------------------------------------------------------- /cachelib/allocator/CacheAllocatorWTinyLFUCache.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/allocator/CacheAllocator.h" 18 | 19 | namespace facebook::cachelib { 20 | template class CacheAllocator; 21 | } 22 | -------------------------------------------------------------------------------- /cachelib/allocator/CacheDetails.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/allocator/CacheDetails.h" 18 | namespace facebook::cachelib::detail { 19 | 20 | const std::string kShmInfoName = "shm_info"; 21 | const std::string kShmCacheName = "shm_cache"; 22 | const std::string kShmHashTableName = "shm_hash_table"; 23 | const std::string kShmChainedItemHashTableName = "shm_chained_alloc_hash_table"; 24 | 25 | } // namespace facebook::cachelib::detail 26 | -------------------------------------------------------------------------------- /cachelib/allocator/ContainerTypes.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/allocator/ChainedHashTable.h" 18 | #include "cachelib/allocator/MM2Q.h" 19 | #include "cachelib/allocator/MMLru.h" 20 | #include "cachelib/allocator/MMTinyLFU.h" 21 | #include "cachelib/allocator/MMWTinyLFU.h" 22 | namespace facebook::cachelib { 23 | // Types of AccessContainer and MMContainer 24 | // MMType 25 | const int MMLru::kId = 1; 26 | const int MM2Q::kId = 2; 27 | const int MMTinyLFU::kId = 3; 28 | const int MMWTinyLFU::kId = 4; 29 | 30 | // AccessType 31 | const int ChainedHashTable::kId = 1; 32 | } // namespace facebook::cachelib 33 | -------------------------------------------------------------------------------- /cachelib/allocator/PoolOptimizeStrategy.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/allocator/PoolOptimizeStrategy.h" 18 | 19 | namespace facebook::cachelib { 20 | 21 | const PoolOptimizeContext PoolOptimizeStrategy::kNoOpContext = { 22 | Slab::kInvalidPoolId, Slab::kInvalidPoolId}; 23 | 24 | } // namespace facebook::cachelib 25 | -------------------------------------------------------------------------------- /cachelib/allocator/datastruct/tests/test_objects.thrift: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | namespace cpp2 facebook.cachelib.test_serialization 18 | 19 | // An older version of SListObject with no 'compressedTail'. Only used for 20 | // testing warm rolls from the old format to the new format. 21 | // TODO(bwatling): remove this when 'compressedTail' is always present. 22 | struct SListObjectNoCompressedTail { 23 | 2: required i64 size; 24 | 3: required i64 compressedHead; // Pointer to the head element 25 | } 26 | -------------------------------------------------------------------------------- /cachelib/allocator/memory/Slab.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/allocator/memory/Slab.h" 18 | 19 | using namespace facebook::cachelib; 20 | 21 | // definition to inline static const for ODR 22 | // http://en.cppreference.com/w/cpp/language/definition refer odr-use here. 23 | constexpr size_t Slab::kSize; 24 | constexpr ClassId Slab::kInvalidClassId; 25 | constexpr PoolId Slab::kInvalidPoolId; 26 | -------------------------------------------------------------------------------- /cachelib/allocator/tests/AllocatorMemoryTiersTest.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and its affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/allocator/tests/AllocatorMemoryTiersTest.h" 18 | 19 | namespace facebook { 20 | namespace cachelib { 21 | namespace tests { 22 | 23 | using LruAllocatorMemoryTiersTest = AllocatorMemoryTiersTest; 24 | 25 | // TODO(MEMORY_TIER): add more tests with different eviction policies 26 | TEST_F(LruAllocatorMemoryTiersTest, MultiTiersValid1) { 27 | this->testMultiTiersValid1(); 28 | } 29 | 30 | } // end of namespace tests 31 | } // end of namespace cachelib 32 | } // end of namespace facebook 33 | -------------------------------------------------------------------------------- /cachelib/allocator/tests/SimplePoolOptimizationTest.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/allocator/tests/SimplePoolOptimizationTest.h" 18 | 19 | #include "cachelib/allocator/CacheAllocator.h" 20 | #include "cachelib/allocator/tests/TestBase.h" 21 | 22 | namespace facebook { 23 | namespace cachelib { 24 | namespace tests { 25 | 26 | TYPED_TEST_CASE(SimplePoolOptimizationTest, AllocatorTypes); 27 | 28 | TYPED_TEST(SimplePoolOptimizationTest, PoolOptimizerBasic) { 29 | this->testPoolOptimizerBasic(); 30 | } 31 | 32 | } // namespace tests 33 | } // namespace cachelib 34 | } // namespace facebook 35 | -------------------------------------------------------------------------------- /cachelib/allocator/tests/SimpleRebalancingTest.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/allocator/tests/SimpleRebalancingTest.h" 18 | 19 | #include "cachelib/allocator/CacheAllocator.h" 20 | 21 | namespace facebook { 22 | namespace cachelib { 23 | namespace tests { 24 | 25 | using LruSimpleRebalanceTest = SimpleRebalanceTest; 26 | 27 | TEST_F(LruSimpleRebalanceTest, PoolRebalancerCreation) { 28 | testPoolRebalancerCreation(); 29 | } 30 | 31 | TEST_F(LruSimpleRebalanceTest, MultiplePools) { testMultiplePools(); } 32 | } // namespace tests 33 | } // namespace cachelib 34 | } // namespace facebook 35 | -------------------------------------------------------------------------------- /cachelib/benchmarks/DataTypeBench.thrift: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | namespace cpp2 facebook.cachelib.datatypebench 18 | 19 | include "thrift/annotation/cpp.thrift" 20 | 21 | struct StdMap { 22 | 1: required map m; 23 | } 24 | 25 | struct StdUnorderedMap { 26 | @cpp.Type{template = "std::unordered_map"} 27 | 1: required map m; 28 | } 29 | -------------------------------------------------------------------------------- /cachelib/cachebench/cache/Cache.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/cachebench/cache/Cache.h" 18 | 19 | DEFINE_bool(report_api_latency, 20 | false, 21 | "Enable reporting cache API latency tracking"); 22 | 23 | DEFINE_string( 24 | report_ac_memory_usage_stats, 25 | "", 26 | "Enable reporting statistics for each allocation class. Set to" 27 | "'human_readable' to print KB/MB/GB or to 'raw' to print in bytes."); 28 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/consistency/chained-items-stress-moving.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 250, 4 | "poolRebalanceIntervalSec" : 1, 5 | "moveOnSlabRelease" : true, 6 | 7 | "numPools" : 1, 8 | "allocFactor" : 2.0 9 | }, 10 | "test_config" : 11 | { 12 | 13 | "checkConsistency" : true, 14 | 15 | "numOps" : 30000000, 16 | "numThreads" : 40, 17 | "numKeys" : 20000, 18 | 19 | 20 | "keySizeRange" : [64, 65], 21 | "keySizeRangeProbability" : [1.0], 22 | 23 | "valSizeRange" : [11920, 81920], 24 | "valSizeRangeProbability" : [1.0], 25 | 26 | "chainedItemLengthRange" : [1, 2, 4, 32], 27 | "chainedItemLengthRangeProbability" : [0.8, 0.18, 0.01], 28 | 29 | "chainedItemValSizeRange" : [1, 128, 256, 1024, 4096, 20480], 30 | "chainedItemValSizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 31 | 32 | "getRatio" : 0.5, 33 | "setRatio" : 0.2, 34 | "delRatio" : 0.2, 35 | "addChainedRatio" : 0.05 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/consistency/chained-items-stress-no-moving.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 250, 4 | "poolRebalanceIntervalSec" : 1, 5 | "moveOnSlabRelease" : false, 6 | 7 | "numPools" : 1, 8 | "allocFactor" : 2.0 9 | }, 10 | "test_config" : 11 | { 12 | 13 | "checkConsistency" : true, 14 | 15 | "numOps" : 30000000, 16 | "numThreads" : 40, 17 | "numKeys" : 20000, 18 | 19 | 20 | "keySizeRange" : [64, 65], 21 | "keySizeRangeProbability" : [1.0], 22 | 23 | "valSizeRange" : [11920, 81920], 24 | "valSizeRangeProbability" : [1.0], 25 | 26 | "chainedItemLengthRange" : [1, 2, 4, 32], 27 | "chainedItemLengthRangeProbability" : [0.8, 0.18, 0.01], 28 | 29 | "chainedItemValSizeRange" : [1, 128, 256, 1024, 4096, 20480], 30 | "chainedItemValSizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 31 | 32 | "getRatio" : 0.5, 33 | "setRatio" : 0.2, 34 | "delRatio" : 0.2, 35 | "addChainedRatio" : 0.05 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/consistency/navy-with-deletes-inmem-buf.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 150, 4 | "poolRebalanceIntervalSec" : 1, 5 | "moveOnSlabRelease" : true, 6 | 7 | "numPools" : 2, 8 | "poolSizes" : [0.5, 0.5], 9 | "allocFactor" : 2.0, 10 | "nvmCacheSizeMB" : 1024, 11 | "navyNumInmemBuffers": 30 12 | }, 13 | "test_config" : 14 | { 15 | 16 | "checkConsistency" : true, 17 | 18 | "numOps" : 30000000, 19 | "numThreads" : 40, 20 | "numKeys" : 200000, 21 | 22 | 23 | "keySizeRange" : [1, 8, 64], 24 | "keySizeRangeProbability" : [0.5, 0.5], 25 | 26 | "valSizeRange" : [256, 1024, 4096, 8192], 27 | "valSizeRangeProbability" : [0.2, 0.7, 0.1], 28 | 29 | "chainedItemLengthRange" : [1, 2, 4, 32], 30 | "chainedItemLengthRangeProbability" : [0.8, 0.18, 0.02], 31 | 32 | "chainedItemValSizeRange" : [1, 128, 256, 1024, 4096, 20480], 33 | "chainedItemValSizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 34 | 35 | "getRatio" : 0.8, 36 | "setRatio" : 0.1, 37 | "delRatio" : 0.01, 38 | "addChainedRatio" : 0.05, 39 | "keyPoolDistribution": [0.5, 0.5], 40 | "opPoolDistribution" : [0.5, 0.5] 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/consistency/navy-with-deletes.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 150, 4 | "poolRebalanceIntervalSec" : 1, 5 | "moveOnSlabRelease" : true, 6 | 7 | "numPools" : 2, 8 | "poolSizes" : [0.5, 0.5], 9 | "allocFactor" : 2.0, 10 | "nvmCacheSizeMB" : 1024 11 | }, 12 | "test_config" : 13 | { 14 | 15 | "checkConsistency" : true, 16 | 17 | "numOps" : 30000000, 18 | "numThreads" : 40, 19 | "numKeys" : 200000, 20 | 21 | 22 | "keySizeRange" : [1, 8, 64], 23 | "keySizeRangeProbability" : [0.5, 0.5], 24 | 25 | "valSizeRange" : [256, 1024, 4096, 8192], 26 | "valSizeRangeProbability" : [0.2, 0.7, 0.1], 27 | 28 | "chainedItemLengthRange" : [1, 2, 4, 32], 29 | "chainedItemLengthRangeProbability" : [0.8, 0.18, 0.02], 30 | 31 | "chainedItemValSizeRange" : [1, 128, 256, 1024, 4096, 20480], 32 | "chainedItemValSizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 33 | 34 | "getRatio" : 0.8, 35 | "setRatio" : 0.1, 36 | "delRatio" : 0.01, 37 | "addChainedRatio" : 0.05, 38 | "keyPoolDistribution": [0.5, 0.5], 39 | "opPoolDistribution" : [0.5, 0.5] 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/consistency/navy-with-reinsertion-inmem-buf.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 100, 4 | "poolRebalanceIntervalSec" : 1, 5 | "moveOnSlabRelease" : true, 6 | 7 | "allocFactor" : 2.0, 8 | "navyProbabilityReinsertionThreshold": 50, 9 | "nvmCacheSizeMB" : 512, 10 | "navyNumInmemBuffers": 30 11 | }, 12 | "test_config" : 13 | { 14 | 15 | "checkConsistency" : true, 16 | 17 | "numOps" : 1000000, 18 | "numThreads" : 40, 19 | "numKeys" : 1000000, 20 | 21 | 22 | "keySizeRange" : [1, 8], 23 | "keySizeRangeProbability" : [1.0], 24 | 25 | "valSizeRange" : [1024, 10240], 26 | "valSizeRangeProbability" : [1.0], 27 | 28 | "getRatio" : 0.5, 29 | "setRatio" : 0.5, 30 | "delRatio" : 0.0 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/consistency/navy-with-reinsertion-multiple-clean-threads.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 100, 4 | "poolRebalanceIntervalSec" : 1, 5 | "moveOnSlabRelease" : true, 6 | 7 | "allocFactor" : 2.0, 8 | "navyProbabilityReinsertionThreshold": 50, 9 | "navyCleanRegions" : 2, 10 | "navyCleanRegionThreads" : 2, 11 | "nvmCacheSizeMB" : 512 12 | }, 13 | "test_config" : 14 | { 15 | 16 | "checkConsistency" : true, 17 | 18 | "numOps" : 1000000, 19 | "numThreads" : 40, 20 | "numKeys" : 1000000, 21 | 22 | 23 | "keySizeRange" : [1, 8], 24 | "keySizeRangeProbability" : [1.0], 25 | 26 | "valSizeRange" : [1024, 10240], 27 | "valSizeRangeProbability" : [1.0], 28 | 29 | "getRatio" : 0.5, 30 | "setRatio" : 0.5, 31 | "delRatio" : 0.0 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/consistency/navy-with-reinsertion.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 100, 4 | "poolRebalanceIntervalSec" : 1, 5 | "moveOnSlabRelease" : true, 6 | 7 | "allocFactor" : 2.0, 8 | "navyProbabilityReinsertionThreshold": 50, 9 | "nvmCacheSizeMB" : 512 10 | }, 11 | "test_config" : 12 | { 13 | 14 | "checkConsistency" : true, 15 | 16 | "numOps" : 1000000, 17 | "numThreads" : 40, 18 | "numKeys" : 1000000, 19 | 20 | 21 | "keySizeRange" : [1, 8], 22 | "keySizeRangeProbability" : [1.0], 23 | 24 | "valSizeRange" : [1024, 10240], 25 | "valSizeRangeProbability" : [1.0], 26 | 27 | "getRatio" : 0.5, 28 | "setRatio" : 0.5, 29 | "delRatio" : 0.0 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/consistency/navy.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 150, 4 | "poolRebalanceIntervalSec" : 1, 5 | "moveOnSlabRelease" : true, 6 | 7 | "numPools" : 2, 8 | "poolSizes" : [0.5, 0.5], 9 | "allocFactor" : 2.0, 10 | "nvmCacheSizeMB" : 1024 11 | }, 12 | "test_config" : 13 | { 14 | 15 | "checkConsistency" : true, 16 | 17 | "numOps" : 30000000, 18 | "numThreads" : 40, 19 | "numKeys" : 200000, 20 | 21 | 22 | "keySizeRange" : [1, 8, 64], 23 | "keySizeRangeProbability" : [0.5, 0.5], 24 | 25 | "valSizeRange" : [256, 1024, 4096, 8192], 26 | "valSizeRangeProbability" : [0.2, 0.7, 0.1], 27 | 28 | "chainedItemLengthRange" : [1, 2, 4, 32], 29 | "chainedItemLengthRangeProbability" : [0.8, 0.18, 0.02], 30 | 31 | "chainedItemValSizeRange" : [1, 128, 256, 1024, 4096, 20480], 32 | "chainedItemValSizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 33 | 34 | "getRatio" : 0.8, 35 | "setRatio" : 0.1, 36 | "delRatio" : 0.0, 37 | "addChainedRatio" : 0.05, 38 | "keyPoolDistribution": [0.5, 0.5], 39 | "opPoolDistribution" : [0.5, 0.5] 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/consistency/ram-with-deletes.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 150, 4 | "poolRebalanceIntervalSec" : 1, 5 | "moveOnSlabRelease" : true, 6 | 7 | "numPools" : 2, 8 | "poolSizes" : [0.5, 0.5], 9 | "allocFactor" : 2.0 10 | }, 11 | "test_config" : 12 | { 13 | 14 | "checkConsistency" : true, 15 | 16 | "numOps" : 30000000, 17 | "numThreads" : 40, 18 | "numKeys" : 200000, 19 | 20 | 21 | "keySizeRange" : [1, 8, 64], 22 | "keySizeRangeProbability" : [0.5, 0.5], 23 | 24 | 25 | "valSizeRange" : [256, 1024, 4096, 8192], 26 | "valSizeRangeProbability" : [0.2, 0.7, 0.1], 27 | 28 | "chainedItemLengthRange" : [1, 2, 4, 32], 29 | "chainedItemLengthRangeProbability" : [0.8, 0.18, 0.02], 30 | 31 | "chainedItemValSizeRange" : [1, 128, 256, 1024, 4096, 20480], 32 | "chainedItemValSizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 33 | 34 | "getRatio" : 0.8, 35 | "setRatio" : 0.1, 36 | "delRatio" : 0.01, 37 | "addChainedRatio" : 0.05, 38 | "keyPoolDistribution": [0.5, 0.5], 39 | "opPoolDistribution" : [0.5, 0.5] 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/consistency/ram.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 150, 4 | "poolRebalanceIntervalSec" : 1, 5 | "moveOnSlabRelease" : true, 6 | 7 | "numPools" : 2, 8 | "poolSizes" : [0.5, 0.5], 9 | "allocFactor" : 2.0 10 | }, 11 | "test_config" : 12 | { 13 | 14 | "checkConsistency" : true, 15 | 16 | "numOps" : 30000000, 17 | "numThreads" : 40, 18 | "numKeys" : 200000, 19 | 20 | 21 | "keySizeRange" : [1, 8, 64], 22 | "keySizeRangeProbability" : [0.5, 0.5], 23 | 24 | 25 | "valSizeRange" : [256, 1024, 4096, 8192], 26 | "valSizeRangeProbability" : [0.2, 0.7, 0.1], 27 | 28 | "chainedItemLengthRange" : [1, 2, 4, 32], 29 | "chainedItemLengthRangeProbability" : [0.8, 0.18, 0.02], 30 | 31 | "chainedItemValSizeRange" : [1, 128, 256, 1024, 4096, 20480], 32 | "chainedItemValSizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 33 | 34 | "getRatio" : 0.8, 35 | "setRatio" : 0.1, 36 | "delRatio" : 0.0, 37 | "addChainedRatio" : 0.05, 38 | "keyPoolDistribution": [0.5, 0.5], 39 | "opPoolDistribution" : [0.5, 0.5] 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/feature_stress/could_exist.json: -------------------------------------------------------------------------------- 1 | // @nolint instantiates a small cache and tests how couldExist runs on hybridcache 2 | { 3 | "cache_config" : { 4 | "cacheSizeMB" : 256, 5 | "nvmCacheSizeMB" : 512, 6 | "navyBigHashSizePct": 0, 7 | 8 | "poolRebalanceIntervalSec" : 0, 9 | "moveOnSlabRelease" : false 10 | }, 11 | "test_config" : { 12 | "numOps" : 1000000, 13 | "numThreads" : 32, 14 | "numKeys" : 1000000, 15 | 16 | "keySizeRange" : [15, 16], 17 | "keySizeRangeProbability" : [1.0], 18 | 19 | "valSizeRange" : [1, 2000], 20 | "valSizeRangeProbability" : [1.0], 21 | 22 | "getRatio" : 0.45, 23 | "setRatio" : 0.1, 24 | "delRatio" : 0.0, 25 | "couldExistRatio": 0.45 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/feature_stress/dram_cache.json: -------------------------------------------------------------------------------- 1 | // @nolint turns on most feautures in dram cache like multiple pools, 2 | // slab rebalancing with get/set/del operations across a wide variety of sizes 3 | { 4 | "cache_config" : { 5 | "cacheSizeMB" : 10240 6 | }, 7 | "test_config" : 8 | { 9 | "preallocateCache" : true, 10 | "numOps" : 100000000, 11 | "numThreads" : 32, 12 | "numKeys" : 1000000, 13 | 14 | 15 | "keySizeRange" : [1, 8, 32, 64, 128, 256], 16 | "keySizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 17 | 18 | "valSizeRange" : [1, 128, 1024, 4096, 10240, 20480, 40960, 60000], 19 | "valSizeRangeProbability" : [0.1, 0.1, 0.2, 0.2, 0.2, 0.1, 0.1], 20 | 21 | "getRatio" : 0.5, 22 | "setRatio" : 0.1, 23 | "delRatio" : 0.001 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/feature_stress/dynamic_refresh_time.json: -------------------------------------------------------------------------------- 1 | // @nolint sets up a simple dram cache and turns on the dynamic lru refresh time feature 2 | { 3 | "cache_config" : { 4 | "mmReconfigureIntervalSecs": 10, 5 | "lruRefreshSec": 60, 6 | "lruRefreshRatio": 0.1, 7 | "cacheSizeMB" : 10240 8 | }, 9 | "test_config" : 10 | { 11 | "preallocateCache" : true, 12 | "numOps" : 100000000, 13 | "numThreads" : 32, 14 | "numKeys" : 1000000, 15 | 16 | 17 | "keySizeRange" : [1, 8, 32, 64, 128, 256], 18 | "keySizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 19 | 20 | "valSizeRange" : [1, 128, 1024, 4096, 10240, 20480, 40960, 60000], 21 | "valSizeRangeProbability" : [0.1, 0.1, 0.2, 0.2, 0.2, 0.1, 0.1], 22 | 23 | "getRatio" : 0.5, 24 | "setRatio" : 0.01, 25 | "delRatio" : 0.001 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/feature_stress/free_list.json: -------------------------------------------------------------------------------- 1 | // @nolint creates a large cache with a set and delete workload 2 | // this ensures that as the cache warms up, free allocs are generated and allocations are made from that. 3 | { 4 | "cache_config" : { 5 | "cacheSizeMB" : 102400, 6 | "poolRebalanceIntervalSec" : 1, 7 | "moveOnSlabRelease" : false, 8 | "rebalanceStrategy" : "tail-age" 9 | }, 10 | "test_config" : 11 | { 12 | "numOps" : 20000000, 13 | "numThreads" : 20, 14 | "numKeys" : 10000000, 15 | 16 | "keySizeRange" : [32, 33], 17 | "keySizeRangeProbability" : [1.0], 18 | 19 | "valSizeRange" : [1024, 1025, 409600, 409601], 20 | "valSizeRangeProbability" : [0.2, 0.0, 0.8], 21 | 22 | "getRatio" : 0.1, 23 | "setRatio" : 0.8, 24 | "delRatio" : 0.001 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/feature_stress/item_destructor/dram.json: -------------------------------------------------------------------------------- 1 | 2 | // @nolint item destructor test with simple dram cache 3 | { 4 | "cache_config" : { 5 | "cacheSizeMB" : 10240, 6 | "enableItemDestructorCheck" : true 7 | }, 8 | "test_config" : 9 | { 10 | "preallocateCache" : true, 11 | "numOps" : 100000000, 12 | "numThreads" : 32, 13 | "numKeys" : 1000000, 14 | 15 | 16 | "keySizeRange" : [1, 8, 32, 64, 128, 256], 17 | "keySizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 18 | 19 | "valSizeRange" : [1, 128, 1024, 4096, 10240, 20480, 40960, 60000], 20 | "valSizeRangeProbability" : [0.1, 0.1, 0.2, 0.2, 0.2, 0.1, 0.1], 21 | 22 | "chainedItemLengthRange" : [1, 2, 4, 32], 23 | "chainedItemLengthRangeProbability" : [0.8, 0.18, 0.02], 24 | 25 | "chainedItemValSizeRange" : [1, 128, 256, 1024, 4096, 20480], 26 | "chainedItemValSizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 27 | 28 | "getRatio" : 0.5, 29 | "setRatio" : 0.1, 30 | "delRatio" : 0.001, 31 | "updateRatio" : 0.1, 32 | "addChainedRatio" : 0.2 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/feature_stress/item_destructor/navy.json: -------------------------------------------------------------------------------- 1 | // @nolint a mix workload to test the correctness of item destructor 2 | // most of the items are in BlockCache 3 | { 4 | "cache_config" : { 5 | "enableItemDestructorCheck" : true, 6 | "cacheSizeMB" : 512, 7 | "nvmCacheSizeMB" : 512 8 | }, 9 | "test_config" : 10 | { 11 | "preallocateCache" : true, 12 | "numOps" : 10000000, 13 | "numThreads" : 32, 14 | "numKeys" : 100000, 15 | 16 | 17 | "keySizeRange" : [1, 8, 32, 64, 128, 256], 18 | "keySizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 19 | 20 | "valSizeRange" : [1, 128, 1024, 4096, 10240, 20480, 40960, 60000], 21 | "valSizeRangeProbability" : [0.1, 0.1, 0.2, 0.2, 0.2, 0.1, 0.1], 22 | 23 | "chainedItemLengthRange" : [1, 2, 4, 32], 24 | "chainedItemLengthRangeProbability" : [0.8, 0.18, 0.02], 25 | 26 | "chainedItemValSizeRange" : [1, 128, 256, 1024, 4096, 20480], 27 | "chainedItemValSizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 28 | 29 | "getRatio" : 0.2, 30 | "setRatio" : 0.3, 31 | "delRatio" : 0.3, 32 | "updateRatio" : 0.3, 33 | "addChainedRatio" : 0.3 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/feature_stress/item_destructor/navy_bighash.json: -------------------------------------------------------------------------------- 1 | // @nolint a mix workload to test the correctness of item destructor 2 | // most of the items are in BigHash 3 | { 4 | "cache_config" : { 5 | "enableItemDestructorCheck" : true, 6 | "cacheSizeMB" : 128, 7 | "navySmallItemMaxSize": 4052, 8 | "nvmCacheSizeMB" : 512 9 | }, 10 | "test_config" : 11 | { 12 | "preallocateCache" : true, 13 | "numOps" : 10000000, 14 | "numThreads" : 32, 15 | "numKeys" : 100000, 16 | 17 | 18 | "keySizeRange" : [1, 8, 32, 64], 19 | "keySizeRangeProbability" : [0.3, 0.3, 0.4], 20 | 21 | "valSizeRange" : [3600, 4000], 22 | "valSizeRangeProbability" : [1], 23 | 24 | "chainedItemLengthRange" : [1, 2, 4, 32], 25 | "chainedItemLengthRangeProbability" : [0.8, 0.18, 0.02], 26 | 27 | "chainedItemValSizeRange" : [1, 128, 256, 1024, 4096, 20480], 28 | "chainedItemValSizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 29 | 30 | "getRatio" : 0.2, 31 | "setRatio" : 0.3, 32 | "delRatio" : 0.3, 33 | "updateRatio" : 0.2 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/feature_stress/navy/bc_fifo.json: -------------------------------------------------------------------------------- 1 | // @nolint config that uses block cache for all the objects 2 | { 3 | "cache_config" : { 4 | "cacheSizeMB" : 128, 5 | "poolRebalanceIntervalSec" : 1, 6 | "moveOnSlabRelease" : false, 7 | 8 | "nvmCacheSizeMB" : 512, 9 | "navySegmentedFifoSegmentRatio": [1], 10 | "navyBigHashSizePct": 0 11 | }, 12 | "test_config" : 13 | { 14 | "numOps" : 4000000, 15 | "numThreads" : 32, 16 | "numKeys" : 100000, 17 | 18 | 19 | "keySizeRange" : [1, 8, 64], 20 | "keySizeRangeProbability" : [0.3, 0.7], 21 | 22 | "valSizeRange" : [1, 102400], 23 | "valSizeRangeProbability" : [1.0], 24 | 25 | "getRatio" : 0.5, 26 | "setRatio" : 0.3 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/feature_stress/navy/bh.json: -------------------------------------------------------------------------------- 1 | // @nolint uses workload where the objects all fit within the small object cache 2 | { 3 | "cache_config" : { 4 | "cacheSizeMB" : 32, 5 | "poolRebalanceIntervalSec" : 1, 6 | "moveOnSlabRelease" : true, 7 | 8 | "nvmCacheSizeMB" : 512, 9 | "navyBigHashSizePct": 99, 10 | "navySmallItemMaxSize": 2048 11 | }, 12 | "test_config" : 13 | { 14 | 15 | 16 | "numOps" : 100000, 17 | "numThreads" : 16, 18 | "numKeys" : 100000, 19 | 20 | 21 | "keySizeRange" : [8, 16], 22 | "keySizeRangeProbability" : [1.0], 23 | 24 | "valSizeRange" : [500, 600], 25 | "valSizeRangeProbability" : [1.0], 26 | 27 | "chainedItemLengthRange" : [1, 2], 28 | "chainedItemLengthRangeProbability" : [1.0], 29 | 30 | "chainedItemValSizeRange" : [500, 600], 31 | "chainedItemValSizeRangeProbability" : [1.0], 32 | 33 | "getRatio" : 0.55, 34 | "setRatio" : 0.3, 35 | "delRatio" : 0.05, 36 | "addChainedRatio" : 0.1 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/feature_stress/slab_release/chained_items.json: -------------------------------------------------------------------------------- 1 | // @nolint like default.json. also allocates chained items and stresses 2 | // the slab release code paths where items are evicted during slab release. 3 | { 4 | "cache_config" : { 5 | "cacheSizeMB" : 10240, 6 | "poolRebalanceIntervalSec" : 1, 7 | "moveOnSlabRelease" : false, 8 | "rebalanceStrategy" : "random", 9 | "rebalanceMinSlabs" : 2 10 | }, 11 | "test_config" : 12 | { 13 | "preallocateCache" : true, 14 | "numOps" : 100000000, 15 | "numThreads" : 32, 16 | "numKeys" : 10000000, 17 | 18 | "keySizeRange" : [8, 16, 64], 19 | "keySizeRangeProbability" : [0.3, 0.7], 20 | 21 | "valSizeRange" : [1, 128, 4096, 20480], 22 | "valSizeRangeProbability" : [0.3, 0.5, 0.2], 23 | 24 | "chainedItemLengthRange" : [1, 2, 4, 32], 25 | "chainedItemLengthRangeProbability" : [0.8, 0.18, 0.02], 26 | 27 | "chainedItemValSizeRange" : [1, 128, 256, 1024, 4096, 20480], 28 | "chainedItemValSizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 29 | 30 | "getRatio" : 0.3, 31 | "setRatio" : 0.2, 32 | "delRatio" : 0.0002, 33 | "addChainedRatio" : 0.05 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/feature_stress/slab_release/chained_items_moving.json: -------------------------------------------------------------------------------- 1 | // @nolint like default.json. also allocates chained items and stresses 2 | // the slab release code paths where items are moved during slab release. 3 | { 4 | "cache_config" : { 5 | "cacheSizeMB" : 10240, 6 | "poolRebalanceIntervalSec" : 1, 7 | "moveOnSlabRelease" : true, 8 | "rebalanceStrategy" : "random", 9 | "rebalanceMinSlabs" : 2 10 | }, 11 | "test_config" : 12 | { 13 | "preallocateCache" : true, 14 | "numOps" : 100000000, 15 | "numThreads" : 32, 16 | "numKeys" : 10000000, 17 | 18 | 19 | "keySizeRange" : [8, 16, 64], 20 | "keySizeRangeProbability" : [0.3, 0.7], 21 | 22 | "valSizeRange" : [1, 128, 4096, 20480], 23 | "valSizeRangeProbability" : [0.3, 0.5, 0.2], 24 | 25 | "chainedItemLengthRange" : [1, 2, 4, 32], 26 | "chainedItemLengthRangeProbability" : [0.8, 0.18, 0.02], 27 | 28 | "chainedItemValSizeRange" : [1, 128, 256, 1024, 4096, 20480], 29 | "chainedItemValSizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 30 | 31 | "getRatio" : 0.3, 32 | "setRatio" : 0.2, 33 | "delRatio" : 0.0002, 34 | "addChainedRatio" : 0.05 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/feature_stress/slab_release/default.json: -------------------------------------------------------------------------------- 1 | // @nolint rebalances slabs every second randomly. items are evicted during slab release. 2 | { 3 | "cache_config" : { 4 | "cacheSizeMB" : 10240, 5 | "poolRebalanceIntervalSec" : 1, 6 | "moveOnSlabRelease" : false, 7 | "rebalanceMinSlabs" : 2 8 | }, 9 | "test_config" : 10 | { 11 | "preallocateCache" : true, 12 | "numOps" : 100000000, 13 | "numThreads" : 32, 14 | "numKeys" : 1000000, 15 | 16 | 17 | "keySizeRange" : [1, 8, 32, 64, 128, 256], 18 | "keySizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 19 | 20 | "valSizeRange" : [1, 128, 1024, 4096, 10240, 20480, 40960, 60000], 21 | "valSizeRangeProbability" : [0.1, 0.1, 0.2, 0.2, 0.2, 0.1, 0.1], 22 | 23 | "getRatio" : 0.5, 24 | "setRatio" : 0.1, 25 | "delRatio" : 0.001 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/feature_stress/slab_release/moving.json: -------------------------------------------------------------------------------- 1 | // @nolint like default.json, but moves items during slab release instead of evicting them. 2 | { 3 | "cache_config" : { 4 | "cacheSizeMB" : 10240, 5 | "poolRebalanceIntervalSec" : 1, 6 | "moveOnSlabRelease" : true, 7 | "rebalanceMinSlabs" : 2 8 | }, 9 | "test_config" : 10 | { 11 | "preallocateCache" : true, 12 | "numOps" : 100000000, 13 | "numThreads" : 32, 14 | "numKeys" : 1000000, 15 | 16 | 17 | "keySizeRange" : [1, 8, 32, 64, 128, 256], 18 | "keySizeRangeProbability" : [0.1, 0.1, 0.2, 0.3, 0.3], 19 | 20 | "valSizeRange" : [1, 128, 1024, 4096, 10240, 20480, 40960, 60000], 21 | "valSizeRangeProbability" : [0.1, 0.1, 0.2, 0.2, 0.2, 0.1, 0.1], 22 | 23 | "getRatio" : 0.5, 24 | "setRatio" : 0.1, 25 | "delRatio" : 0.001 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/hit_ratio/cdn/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config": { 3 | "cacheSizeMB": 8192, 4 | "poolRebalanceIntervalSec": 0 5 | }, 6 | "test_config": 7 | { 8 | "addChainedRatio": 0.0, 9 | "delRatio": 0.0, 10 | "enableLookaside": true, 11 | "getRatio": 0.9911552928593673, 12 | "keySizeRange": [ 13 | 1, 14 | 8, 15 | 64 16 | ], 17 | "keySizeRangeProbability": [ 18 | 0.3, 19 | 0.7 20 | ], 21 | "loneGetRatio": 0.008844707140632665, 22 | "numKeys": 8935378, 23 | "numOps": 5000000, 24 | "numThreads": 48, 25 | "popDistFile": "pop.json", 26 | 27 | "setRatio": 0.0, 28 | "valSizeDistFile": "sizes.json" 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/hit_ratio/graph_cache_follower_assocs/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config": { 3 | "cacheSizeMB": 8192, 4 | "poolRebalanceIntervalSec": 0 5 | }, 6 | "test_config": 7 | { 8 | "addChainedRatio": 0.0, 9 | "delRatio": 0.0, 10 | "enableLookaside": true, 11 | "getRatio": 0.9746082749830369, 12 | "keySizeRange": [ 13 | 1, 14 | 8, 15 | 64 16 | ], 17 | "keySizeRangeProbability": [ 18 | 0.3, 19 | 0.7 20 | ], 21 | "loneGetRatio": 0.025391725016963105, 22 | "numKeys": 23458726, 23 | "numOps": 5000000, 24 | "numThreads": 48, 25 | "popDistFile": "pop.json", 26 | 27 | "setRatio": 0.0, 28 | "valSizeDistFile": "sizes.json" 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/hit_ratio/graph_cache_follower_fbobj/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config": { 3 | "cacheSizeMB": 8192, 4 | "poolRebalanceIntervalSec": 0 5 | }, 6 | "test_config": 7 | { 8 | "addChainedRatio": 0.0, 9 | "delRatio": 0.0, 10 | "enableLookaside": true, 11 | "getRatio": 0.9568797693103636, 12 | "keySizeRange": [ 13 | 1, 14 | 8, 15 | 64 16 | ], 17 | "keySizeRangeProbability": [ 18 | 0.3, 19 | 0.7 20 | ], 21 | "loneGetRatio": 0.043120230689636455, 22 | "numKeys": 37244430, 23 | "numOps": 5000000, 24 | "numThreads": 48, 25 | "popDistFile": "pop.json", 26 | 27 | "setRatio": 0.0, 28 | "valSizeDistFile": "sizes.json" 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/hit_ratio/graph_cache_leader_assocs/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config": { 3 | "cacheSizeMB": 8192, 4 | "poolRebalanceIntervalSec": 0 5 | }, 6 | "test_config": 7 | { 8 | "addChainedRatio": 0.0, 9 | "delRatio": 0.0, 10 | "enableLookaside": true, 11 | "getRatio": 0.8841112719979642, 12 | "keySizeRange": [ 13 | 1, 14 | 8, 15 | 64 16 | ], 17 | "keySizeRangeProbability": [ 18 | 0.3, 19 | 0.7 20 | ], 21 | "loneGetRatio": 0.1158887280020357, 22 | "numKeys": 65345659, 23 | "numOps": 5000000, 24 | "numThreads": 48, 25 | "popDistFile": "pop.json", 26 | 27 | "setRatio": 0.0, 28 | "valSizeDistFile": "sizes.json" 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/hit_ratio/graph_cache_leader_fbobj/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config": { 3 | "cacheSizeMB": 8192, 4 | "poolRebalanceIntervalSec": 0 5 | }, 6 | "test_config": 7 | { 8 | "addChainedRatio": 0.0, 9 | "delRatio": 0.0, 10 | "enableLookaside": true, 11 | "getRatio": 0.7684563460126871, 12 | "keySizeRange": [ 13 | 1, 14 | 8, 15 | 64 16 | ], 17 | "keySizeRangeProbability": [ 18 | 0.3, 19 | 0.7 20 | ], 21 | "loneGetRatio": 0.2315436539873129, 22 | "numKeys": 71605574, 23 | "numOps": 5000000, 24 | "numThreads": 48, 25 | "popDistFile": "pop.json", 26 | 27 | "setRatio": 0.0, 28 | "valSizeDistFile": "sizes.json" 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/hit_ratio/kvcache_reg/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config": { 3 | "cacheSizeMB": 8192, 4 | "poolRebalanceIntervalSec": 5 5 | }, 6 | "test_config": 7 | { 8 | "generator": "online", 9 | "enableLookaside": true, 10 | "keySizeRange": [16, 255], 11 | "keySizeRangeProbability": [1.0], 12 | 13 | "numKeys": 14463466000, 14 | "numOps": 5000000000, 15 | "numThreads": 48, 16 | "popDistFile": "pop.json", 17 | "valSizeDistFile": "sizes.json", 18 | 19 | 20 | "opDelayNs" : 1000000, 21 | "opDelayBatch": 25, 22 | 23 | "addChainedRatio": 0.0, 24 | "setRatio": 0.0, 25 | "delRatio": 0.0, 26 | "getRatio": 0.9845283120275657, 27 | "loneGetRatio": 0.13471687972434254 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/integration_tests/cachelib_map.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config": { 3 | "cacheSizeMB": 1024, 4 | "htBucketPower": 20, 5 | "poolRebalanceIntervalSec": 5, 6 | "moveOnSlabRelease": false, 7 | "rebalanceMinSlabs": 1, 8 | "allocFactor": 2.0 9 | }, 10 | "test_config": 11 | { 12 | "name": "cachelib_map", 13 | "numOps" : 150000 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/integration_tests/cachelib_map_asan.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config": { 3 | "cacheSizeMB": 1024, 4 | "htBucketPower": 20, 5 | "poolRebalanceIntervalSec": 5, 6 | "moveOnSlabRelease": false, 7 | "rebalanceMinSlabs": 1, 8 | "allocFactor": 2.0 9 | }, 10 | "test_config": 11 | { 12 | "name": "cachelib_map", 13 | "numOps" : 30000 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/integration_tests/cachelib_range_map.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config": { 3 | "cacheSizeMB": 1024, 4 | "htBucketPower": 20, 5 | "poolRebalanceIntervalSec": 5, 6 | "moveOnSlabRelease": false, 7 | "rebalanceMinSlabs": 1, 8 | "allocFactor": 2.0 9 | }, 10 | "test_config": 11 | { 12 | "name": "cachelib_range_map", 13 | "numOps" : 150000 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/integration_tests/cachelib_range_map_asan.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config": { 3 | "cacheSizeMB": 1024, 4 | "htBucketPower": 20, 5 | "poolRebalanceIntervalSec": 5, 6 | "moveOnSlabRelease": false, 7 | "rebalanceMinSlabs": 1, 8 | "allocFactor": 2.0 9 | }, 10 | "test_config": 11 | { 12 | "name": "cachelib_range_map", 13 | "numOps" : 30000 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/integration_tests/fast_shutdown.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config": { 3 | "cacheSizeMB": 2048, 4 | "htBucketPower": 20, 5 | "poolRebalanceIntervalSec": 3, 6 | "moveOnSlabRelease": true, 7 | "rebalanceMinSlabs": 0, 8 | "rebalanceStrategy": "tail-age", 9 | "allocSizes": [64, 100] 10 | }, 11 | "test_config": 12 | { 13 | "name": "fast_shutdown", 14 | "numOps" : 5 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/integration_tests/high_refcount.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config": { 3 | "cacheSizeMB": 12, 4 | "htBucketPower": 20, 5 | "poolRebalanceIntervalSec": 5, 6 | "moveOnSlabRelease": true, 7 | "rebalanceMinSlabs": 0, 8 | "allocSizes": [64, 1000000] 9 | }, 10 | "test_config": 11 | { 12 | "name": "high_refcount", 13 | "numOps" : 200000 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/integration_tests/navy_async.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 100, 4 | "poolRebalanceIntervalSec" : 1, 5 | "moveOnSlabRelease" : true, 6 | 7 | "allocFactor" : 2.0, 8 | "navyProbabilityReinsertionThreshold": 50, 9 | 10 | "nvmCachePaths" : ["/tmp/cachebench_test_nvm.img"], 11 | "nvmCacheSizeMB" : 512, 12 | 13 | "navyBigHashSizePct": 10, 14 | "navySmallItemMaxSize": 1024, 15 | "navyMaxConcurrentInserts" : 10, 16 | 17 | "navyReaderThreads" : 4, 18 | "navyWriterThreads" : 2, 19 | "navyMaxNumReads" : 32, 20 | "navyMaxNumWrites" : 32 21 | }, 22 | "test_config" : 23 | { 24 | "numOps" : 10000000, 25 | "numThreads" : 20, 26 | "numKeys" : 1000000, 27 | 28 | "keySizeRange" : [1, 8, 64], 29 | "keySizeRangeProbability" : [0.3, 0.7], 30 | 31 | "valSizeRange" : [256, 1024, 4096], 32 | "valSizeRangeProbability" : [0.2, 0.8], 33 | 34 | "getRatio" : 0.5, 35 | "setRatio" : 0.5, 36 | "delRatio" : 0.0 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/integration_tests/navy_async_sync_comp.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 100, 4 | "poolRebalanceIntervalSec" : 1, 5 | "moveOnSlabRelease" : true, 6 | 7 | "allocFactor" : 2.0, 8 | "navyProbabilityReinsertionThreshold": 50, 9 | 10 | "nvmCachePaths" : ["/tmp/cachebench_test_nvm.img"], 11 | "nvmCacheSizeMB" : 512, 12 | 13 | "navyBigHashSizePct": 10, 14 | "navySmallItemMaxSize": 1024, 15 | "navyMaxConcurrentInserts" : 10, 16 | 17 | "navyReaderThreads" : 32, 18 | "navyWriterThreads" : 32, 19 | "navyMaxNumReads" : 32, 20 | "navyMaxNumWrites" : 32 21 | }, 22 | "test_config" : 23 | { 24 | "numOps" : 10000000, 25 | "numThreads" : 20, 26 | "numKeys" : 1000000, 27 | 28 | "keySizeRange" : [1, 8, 64], 29 | "keySizeRangeProbability" : [0.3, 0.7], 30 | 31 | "valSizeRange" : [256, 1024, 4096], 32 | "valSizeRangeProbability" : [0.2, 0.8], 33 | 34 | "getRatio" : 0.5, 35 | "setRatio" : 0.5, 36 | "delRatio" : 0.0 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/large_cache_test/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config": { 3 | "cacheSizeMB": 220616, 4 | "allocSizes": [262144, 524288, 1048576, 4194304], 5 | "allocator": "LRU5B2Q" 6 | }, 7 | "test_config": 8 | { 9 | "name": "stressor", 10 | "enableLookaside": true, 11 | "getRatio": 0.7684563460126871, 12 | "keySizeRange": [ 13 | 1, 14 | 8, 15 | 64 16 | ], 17 | "keySizeRangeProbability": [ 18 | 0.3, 19 | 0.7 20 | ], 21 | "loneGetRatio": 0.2315436539873129, 22 | "numKeys": 125000, 23 | "numOps": 600000, 24 | "numThreads": 16, 25 | "valSizeRange": [ 26 | 260000, 27 | 524000, 28 | 1040000, 29 | 4190000, 30 | 4194000 31 | ], 32 | "valSizeRangeProbability": [ 33 | 0.25, 34 | 0.25, 35 | 0.25, 36 | 0.25 37 | ] 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/simple_test.json: -------------------------------------------------------------------------------- 1 | // @nolint instantiates a small cache and runs a quick run of basic operations. 2 | { 3 | "cache_config" : { 4 | "cacheSizeMB" : 512, 5 | "poolRebalanceIntervalSec" : 1, 6 | "moveOnSlabRelease" : false, 7 | 8 | "numPools" : 2, 9 | "poolSizes" : [0.3, 0.7] 10 | }, 11 | "test_config" : { 12 | 13 | "numOps" : 100000, 14 | "numThreads" : 32, 15 | "numKeys" : 1000000, 16 | 17 | "keySizeRange" : [1, 8, 64], 18 | "keySizeRangeProbability" : [0.3, 0.7], 19 | 20 | "valSizeRange" : [1, 32, 10240, 409200], 21 | "valSizeRangeProbability" : [0.1, 0.2, 0.7], 22 | 23 | "getRatio" : 0.15, 24 | "setRatio" : 0.8, 25 | "delRatio" : 0.05, 26 | "keyPoolDistribution": [0.4, 0.6], 27 | "opPoolDistribution" : [0.5, 0.5] 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/simple_test_with_persistence.json: -------------------------------------------------------------------------------- 1 | // @nolint instantiates a small cache and runs a quick run of basic operations. 2 | { 3 | "cache_config" : { 4 | "cacheSizeMB" : 512, 5 | "cacheDir": "/tmp/cachebench_test/metadata", 6 | "nvmCacheSizeMB" : 1024, 7 | "nvmCacheMetadataSizeMB": 128, 8 | "nvmCachePaths": ["/tmp/cachebench_test/navy_path"], 9 | "navyBigHashSizePct": 0, 10 | 11 | "poolRebalanceIntervalSec" : 0, 12 | "moveOnSlabRelease" : false, 13 | 14 | "numPools" : 2, 15 | "poolSizes" : [0.3, 0.7] 16 | }, 17 | "test_config" : { 18 | "onlySetIfMiss": true, 19 | "numOps" : 100000, 20 | "numThreads" : 32, 21 | "numKeys" : 1000000, 22 | 23 | "keySizeRange" : [1, 8, 64], 24 | "keySizeRangeProbability" : [0.3, 0.7], 25 | 26 | "valSizeRange" : [1, 32, 1024], 27 | "valSizeRangeProbability" : [0.3, 0.7], 28 | 29 | "getRatio" : 0.8, 30 | "setRatio" : 0.2, 31 | "delRatio" : 0.0, 32 | "keyPoolDistribution": [0.4, 0.6], 33 | "opPoolDistribution" : [0.5, 0.5] 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/simple_tiers_test.json: -------------------------------------------------------------------------------- 1 | // @nolint instantiates a small cache and runs a quick run of basic operations. 2 | { 3 | "cache_config" : { 4 | "cacheSizeMB" : 512, 5 | "usePosixShm" : false, 6 | "cacheDir" : "/tmp/mem-tiers", 7 | "memoryTiers" : [ 8 | { 9 | "ratio": 1, 10 | "memBindNodes": "0" 11 | } 12 | ], 13 | "poolRebalanceIntervalSec" : 1, 14 | "moveOnSlabRelease" : false, 15 | 16 | "numPools" : 2, 17 | "poolSizes" : [0.3, 0.7] 18 | }, 19 | "test_config" : { 20 | "numOps" : 100000, 21 | "numThreads" : 32, 22 | "numKeys" : 1000000, 23 | 24 | "keySizeRange" : [1, 8, 64], 25 | "keySizeRangeProbability" : [0.3, 0.7], 26 | 27 | "valSizeRange" : [1, 32, 10240, 409200], 28 | "valSizeRangeProbability" : [0.1, 0.2, 0.7], 29 | 30 | "getRatio" : 0.15, 31 | "setRatio" : 0.8, 32 | "delRatio" : 0.05, 33 | "keyPoolDistribution": [0.4, 0.6], 34 | "opPoolDistribution" : [0.5, 0.5] 35 | } 36 | } -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/miss-workload/hybrid_cache_get_throughput_all_misses.json: -------------------------------------------------------------------------------- 1 | // @nolint 2 | // T10 Skylake devvm 3 | // == Throughput for == 4 | // Total Ops : 480.00 million 5 | // Total sets: 0 6 | // get : 8,494,091/s, success : 0.00% 7 | // set : 0/s, success : 0.00% 8 | // del : 0/s, found : 0.00% 9 | // 10 | // Note that without fast negative lookup, relying on Navy workers, 11 | // the get throughput falls to only 700K/s. 12 | { 13 | "cache_config" : { 14 | "cacheSizeMB" : 5120, 15 | "poolRebalanceIntervalSec" : 0, 16 | 17 | "navyReaderThreads": 64, 18 | "navyWriterThreads": 64, 19 | "nvmCacheSizeMB" : 2048, 20 | "navyBigHashSizePct" : 50 21 | }, 22 | "test_config" : 23 | { 24 | "numOps" : 10000000, 25 | "numThreads" : 48, 26 | "numKeys" : 100000, 27 | 28 | "keySizeRange" : [1, 8, 64], 29 | "keySizeRangeProbability" : [0.3, 0.7], 30 | 31 | "valSizeRange" : [1, 102400], 32 | "valSizeRangeProbability" : [1.0], 33 | 34 | "getRatio" : 1.0, 35 | "setRatio" : 0.0, 36 | "delRatio" : 0.0, 37 | "addChainedRatio" : 0.0 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/miss-workload/hybrid_cache_only_block_cache_get_throughput_all_misses.json: -------------------------------------------------------------------------------- 1 | // @nolint 2 | // T10 Skylake devvm 3 | // == Throughput for == 4 | // Total Ops : 480.00 million 5 | // Total sets: 0 6 | // get : 9,091,641/s, success : 0.00% 7 | // set : 0/s, success : 0.00% 8 | // del : 0/s, found : 0.00% 9 | // 10 | // Note that without fast negative lookup, relying on Navy workers, 11 | // the get throughput falls to only 700K/s. 12 | { 13 | "cache_config" : { 14 | "cacheSizeMB" : 5120, 15 | "poolRebalanceIntervalSec" : 0, 16 | 17 | "navyReaderThreads": 64, 18 | "navyWriterThreads": 64, 19 | "nvmCacheSizeMB" : 2048, 20 | "navyBigHashSizePct" : 0 21 | }, 22 | "test_config" : 23 | { 24 | "numOps" : 10000000, 25 | "numThreads" : 48, 26 | "numKeys" : 100000, 27 | 28 | "keySizeRange" : [1, 8, 64], 29 | "keySizeRangeProbability" : [0.3, 0.7], 30 | 31 | "valSizeRange" : [1, 102400], 32 | "valSizeRangeProbability" : [1.0], 33 | 34 | "getRatio" : 1.0, 35 | "setRatio" : 0.0, 36 | "delRatio" : 0.0, 37 | "addChainedRatio" : 0.0 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/miss-workload/ram_cache_get_throughput_all_misses.json: -------------------------------------------------------------------------------- 1 | // @nolint 2 | // T10 Skylake devvm 3 | // == Throughput for == 4 | // Total Ops : 480.00 million 5 | // Total sets: 0 6 | // get : 24,410,746/s, success : 0.00% 7 | // set : 0/s, success : 0.00% 8 | // del : 0/s, found : 0.00% 9 | { 10 | "cache_config" : { 11 | "cacheSizeMB" : 5120, 12 | "poolRebalanceIntervalSec" : 0 13 | }, 14 | "test_config" : 15 | { 16 | 17 | "numOps" : 10000000, 18 | "numThreads" : 48, 19 | "numKeys" : 100000, 20 | 21 | "keySizeRange" : [1, 8, 64], 22 | "keySizeRangeProbability" : [0.3, 0.7], 23 | 24 | "valSizeRange" : [1, 102400], 25 | "valSizeRangeProbability" : [1.0], 26 | 27 | "getRatio" : 1.0, 28 | "setRatio" : 0.0, 29 | "delRatio" : 0.0, 30 | "addChainedRatio" : 0.0 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/navy_block_cache/navy_small_size_class.json: -------------------------------------------------------------------------------- 1 | // @nolint 2 | // Navy Insert Throughput: 700K/s https://pxl.cl/1gDDG 3 | // NVM Insert Latency: 12ms https://pxl.cl/1gDDP 4 | // CPU: 78% https://pxl.cl/1gDF4 5 | { 6 | "cache_config" : { 7 | "cacheSizeMB" : 128, 8 | "allocFactor": 2, 9 | "poolRebalanceIntervalSec" : 1, 10 | "moveOnSlabRelease" : false, 11 | 12 | "numPools" : 1, 13 | "poolSizes" : [1.0], 14 | 15 | "navyReaderThreads": 64, 16 | "navyWriterThreads": 64, 17 | "navyBlockSize": 512, 18 | 19 | "navySizeClasses": [1024, 1536, 2048, 2560, 3072, 3584, 4096], 20 | "navyCleanRegions": 64, 21 | "navyNumInmemBuffers": 0, 22 | 23 | "nvmCacheSizeMB" : 2048, 24 | "navyBigHashSizePct" : 0 25 | }, 26 | "test_config" : 27 | { 28 | "numOps" : 100000000, 29 | "numThreads" : 48, 30 | "numKeys" : 100000, 31 | 32 | 33 | "keySizeRange" : [8, 9], 34 | "keySizeRangeProbability" : [1.0], 35 | 36 | "valSizeRange" : [900, 3900], 37 | "valSizeRangeProbability" : [1.0], 38 | 39 | "getRatio" : 0.0, 40 | "setRatio" : 1.0 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/navy_block_cache/navy_small_stacked_alloc.json: -------------------------------------------------------------------------------- 1 | // @nolint 2 | // Navy Insert Throughput: 550K/s https://pxl.cl/1gDFJ 3 | // NVM Insert Latency: 22ms https://pxl.cl/1gDFP 4 | // CPU: 82% https://pxl.cl/1gDG4 5 | { 6 | "cache_config" : { 7 | "cacheSizeMB" : 128, 8 | "allocFactor": 2, 9 | "poolRebalanceIntervalSec" : 1, 10 | "moveOnSlabRelease" : false, 11 | 12 | "numPools" : 1, 13 | "poolSizes" : [1.0], 14 | 15 | "navyReaderThreads": 64, 16 | "navyWriterThreads": 64, 17 | "navyBlockSize": 512, 18 | 19 | "navyCleanRegions": 64, 20 | "navyNumInmemBuffers": 0, 21 | 22 | "nvmCacheSizeMB" : 2048, 23 | "navyBigHashSizePct" : 0 24 | }, 25 | "test_config" : 26 | { 27 | "numOps" : 100000000, 28 | "numThreads" : 48, 29 | "numKeys" : 100000, 30 | 31 | 32 | "keySizeRange" : [8, 9], 33 | "keySizeRangeProbability" : [1.0], 34 | 35 | "valSizeRange" : [900, 3900], 36 | "valSizeRangeProbability" : [1.0], 37 | 38 | "getRatio" : 0.0, 39 | "setRatio" : 1.0 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/navy_block_cache/navy_small_stacked_alloc_and_in_mem_buffer.json: -------------------------------------------------------------------------------- 1 | // @nolint 2 | // Navy Insert Throughput: 700K/s with 400K/s rejects https://pxl.cl/1gDKN 3 | // NVM Insert Latency: Initially 16 seconds, went down to 55ms once rejects started https://pxl.cl/1gDL3 4 | // CPU: 72% https://pxl.cl/1gDLc 5 | { 6 | "cache_config" : { 7 | "cacheSizeMB" : 128, 8 | "allocFactor": 2, 9 | "poolRebalanceIntervalSec" : 1, 10 | "moveOnSlabRelease" : false, 11 | 12 | "numPools" : 1, 13 | "poolSizes" : [1.0], 14 | 15 | "navyReaderThreads": 64, 16 | "navyWriterThreads": 64, 17 | "navyBlockSize": 512, 18 | 19 | "navyCleanRegions": 64, 20 | "navyNumInmemBuffers": 64, 21 | 22 | "nvmCacheSizeMB" : 2048, 23 | "navyBigHashSizePct" : 0 24 | }, 25 | "test_config" : 26 | { 27 | "numOps" : 100000000, 28 | "numThreads" : 48, 29 | "numKeys" : 100000, 30 | 31 | 32 | "keySizeRange" : [8, 9], 33 | "keySizeRangeProbability" : [1.0], 34 | 35 | "valSizeRange" : [900, 3900], 36 | "valSizeRangeProbability" : [1.0], 37 | 38 | "getRatio" : 0.0, 39 | "setRatio" : 1.0 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/same_value_get_throughput_high_contention.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 20480, 4 | "poolRebalanceIntervalSec" : 0, 5 | "htBucketPower" : 30, 6 | "htLockPower" : 20, 7 | "lruRefreshSec" : 0, 8 | "lruUpdateOnRead" : true, 9 | "tryLockUpdate" : false 10 | }, 11 | "test_config" : 12 | { 13 | "samplingIntervalMs" : 60000, 14 | 15 | 16 | "numOps" : 10000000, 17 | "numThreads" : 48, 18 | "numKeys" : 10000000, 19 | 20 | 21 | "keySizeRange" : [8, 9], 22 | "keySizeRangeProbability" : [1.0], 23 | 24 | "valSizeRange" : [670, 671], 25 | "valSizeRangeProbability" : [1.0], 26 | 27 | "getRatio" : 1.00, 28 | "setRatio" : 0.00, 29 | "delRatio" : 0.00 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/same_value_get_throughput_high_contention_try_lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 20480, 4 | "poolRebalanceIntervalSec" : 0, 5 | "htBucketPower" : 30, 6 | "htLockPower" : 20, 7 | "lruUpdateOnRead" : true, 8 | "lruRefreshSec" : 0, 9 | "tryLockUpdate" : true 10 | }, 11 | "test_config" : 12 | { 13 | "samplingIntervalMs" : 60000, 14 | 15 | "numOps" : 10000000, 16 | "numThreads" : 48, 17 | "numKeys" : 10000000, 18 | 19 | 20 | "keySizeRange" : [8, 9], 21 | "keySizeRangeProbability" : [1.0], 22 | 23 | "valSizeRange" : [670, 671], 24 | "valSizeRangeProbability" : [1.0], 25 | 26 | "getRatio" : 1.00, 27 | "setRatio" : 0.00, 28 | "delRatio" : 0.00 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/same_value_get_throughput_test_20_pools.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 20480, 4 | "poolRebalanceIntervalSec" : 0, 5 | "htBucketPower" : 30, 6 | "htLockPower" : 20, 7 | "numPools" : 20, 8 | "poolSizes" : [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05] 9 | }, 10 | "test_config" : { 11 | "samplingIntervalMs" : 60000, 12 | 13 | 14 | "numOps" : 10000000, 15 | "numThreads" : 48, 16 | "numKeys" : 10000000, 17 | 18 | 19 | "keySizeRange" : [8, 9], 20 | "keySizeRangeProbability" : [1.0], 21 | 22 | "valSizeRange" : [670, 671], 23 | "valSizeRangeProbability" : [1.0], 24 | 25 | "getRatio" : 1.00, 26 | "setRatio" : 0.00, 27 | "delRatio" : 0.00, 28 | "keyPoolDistribution": [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05], 29 | "opPoolDistribution" : [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05] 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/same_value_get_throughput_test_single_pool.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 20480, 4 | "poolRebalanceIntervalSec" : 0, 5 | "htBucketPower" : 30, 6 | "htLockPower" : 20 7 | }, 8 | "test_config" : { 9 | "samplingIntervalMs" : 60000, 10 | 11 | 12 | "numOps" : 10000000, 13 | "numThreads" : 48, 14 | "numKeys" : 10000000, 15 | 16 | 17 | "keySizeRange" : [8, 9], 18 | "keySizeRangeProbability" : [1.0], 19 | 20 | "valSizeRange" : [670, 671], 21 | "valSizeRangeProbability" : [1.0], 22 | 23 | "getRatio" : 1.00, 24 | "setRatio" : 0.00, 25 | "delRatio" : 0.00 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/simple_lone_get_throughput.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 5120, 4 | "poolRebalanceIntervalSec" : 0 5 | }, 6 | "test_config" : 7 | { 8 | 9 | "numOps" : 10000000, 10 | "numThreads" : 48, 11 | "numKeys" : 100000, 12 | 13 | 14 | "keySizeRange" : [1, 8, 64], 15 | "keySizeRangeProbability" : [0.3, 0.7], 16 | 17 | "valSizeRange" : [1, 102400], 18 | "valSizeRangeProbability" : [1.0], 19 | 20 | "getRatio" : 0.0, 21 | "loneGetRatio" : 1.0, 22 | "setRatio" : 0.0, 23 | "delRatio" : 0.0, 24 | "addChainedRatio" : 0.0 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/simple_navy_delete_throughput.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 5120, 4 | "nvmCacheSizeMB": 1400, 5 | "poolRebalanceIntervalSec" : 0 6 | }, 7 | "test_config" : 8 | { 9 | 10 | "numOps" : 10000000, 11 | "numThreads" : 48, 12 | "numKeys" : 100000, 13 | 14 | 15 | "keySizeRange" : [1, 8, 64], 16 | "keySizeRangeProbability" : [0.3, 0.7], 17 | 18 | "valSizeRange" : [1, 102400], 19 | "valSizeRangeProbability" : [1.0], 20 | 21 | "getRatio" : 0.0, 22 | "setRatio" : 0.0, 23 | "delRatio" : 1.0, 24 | "addChainedRatio" : 0.0 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/simple_online_throughput.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 5120, 4 | "poolRebalanceIntervalSec" : 0 5 | }, 6 | "test_config" : 7 | { 8 | "generator" : "online", 9 | 10 | "numOps" : 10000000, 11 | "numThreads" : 48, 12 | "numKeys" : 90000, 13 | 14 | 15 | "keySizeRange" : [1, 8, 64], 16 | "keySizeRangeProbability" : [0.3, 0.7], 17 | 18 | "valSizeRange" : [1, 102400], 19 | "valSizeRangeProbability" : [1.0], 20 | 21 | "getRatio" : 1.0, 22 | "setRatio" : 0.0, 23 | "delRatio" : 0.0, 24 | "addChainedRatio" : 0.0 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/simple_ram_cache_delete_throughput.json: -------------------------------------------------------------------------------- 1 | // Ran this setup on devbig 2 | // == Throughput for == 3 | // Total Ops : 480.00 million 4 | // Total sets: 0 5 | // get : 0/s, success : 0.00% 6 | // couldExist: 0/s, success : 0.00% 7 | // set : 0/s, success : 0.00% 8 | // del : 12,457,759/s, found : 0.00% 9 | 10 | { 11 | "cache_config" : { 12 | "cacheSizeMB" : 5120, 13 | "poolRebalanceIntervalSec" : 0 14 | }, 15 | "test_config" : 16 | { 17 | 18 | "numOps" : 10000000, 19 | "numThreads" : 48, 20 | "numKeys" : 1, 21 | 22 | 23 | "keySizeRange" : [1, 8, 64], 24 | "keySizeRangeProbability" : [0.3, 0.7], 25 | 26 | "valSizeRange" : [1, 102400], 27 | "valSizeRangeProbability" : [1.0], 28 | 29 | "getRatio" : 0.0, 30 | "setRatio" : 0.0, 31 | "delRatio" : 1.0, 32 | "addChainedRatio" : 0.0 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/simple_set_throughput.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 5120, 4 | "poolRebalanceIntervalSec" : 0 5 | }, 6 | "test_config" : 7 | { 8 | 9 | "numOps" : 10000000, 10 | "numThreads" : 48, 11 | "numKeys" : 100000, 12 | 13 | 14 | "keySizeRange" : [1, 8, 64], 15 | "keySizeRangeProbability" : [0.3, 0.7], 16 | 17 | "valSizeRange" : [1, 102400], 18 | "valSizeRangeProbability" : [1.0], 19 | 20 | "getRatio" : 0.0, 21 | "setRatio" : 1.0, 22 | "delRatio" : 0.0, 23 | "addChainedRatio" : 0.0 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/simple_set_throughput_with_chained_items.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 5120, 4 | "poolRebalanceIntervalSec" : 0 5 | }, 6 | "test_config" : 7 | { 8 | "preallocateCache" : true, 9 | "numOps" : 10000000, 10 | "numThreads" : 48, 11 | "numKeys" : 100000, 12 | 13 | 14 | "keySizeRange" : [1, 8, 64], 15 | "keySizeRangeProbability" : [0.3, 0.7], 16 | 17 | "valSizeRange" : [1, 102400], 18 | "valSizeRangeProbability" : [1.0], 19 | 20 | "chainedItemLengthRange" : [5], 21 | "chainedItemLengthRangeProbability" : [1.0], 22 | 23 | "chainedItemValSizeRange" : [1, 102400], 24 | "chainedItemValSizeRangeProbability" : [1.0], 25 | 26 | "getRatio" : 0.0, 27 | "setRatio" : 0.0, 28 | "delRatio" : 0.0, 29 | "addChainedRatio" : 1.0 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/simple_trace_throughput.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 5120, 4 | "poolRebalanceIntervalSec" : 0 5 | }, 6 | "test_config" : 7 | { 8 | 9 | "enableLookaside" : true, 10 | "numOps" : 40000000, 11 | "numThreads" : 1, 12 | "traceFileName" : "test.trace", 13 | "generator" : "replay" 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/small_cache_chained_items.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 5120, 4 | "poolRebalanceIntervalSec" : 0 5 | }, 6 | "test_config" : 7 | { 8 | "numOps" : 10000000, 9 | "numThreads" : 72, 10 | "numKeys" : 100000, 11 | 12 | "keySizeRange" : [8, 16], 13 | "keySizeRangeProbability" : [1.0], 14 | 15 | "valSizeRange" : [1, 1000000], 16 | "valSizeRangeProbability" : [1.0], 17 | 18 | "chainedItemLengthRange" : [1, 2], 19 | "chainedItemLengthRangeProbability" : [1.0], 20 | 21 | "chainedItemValSizeRange" : [1, 1000000], 22 | "chainedItemValSizeRangeProbability" : [1.0], 23 | 24 | "getRatio" : 0.6, 25 | "setRatio" : 0.2, 26 | "delRatio" : 0.0, 27 | "addChainedRatio" : 0.2 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/uniform_values_get_throughput_test.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 204800, 4 | "poolRebalanceIntervalSec" : 0, 5 | "htBucketPower" : 30, 6 | "htLockPower" : 20, 7 | "numPools" : 10, 8 | "poolSizes" : [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] 9 | }, 10 | "test_config" : 11 | { 12 | 13 | 14 | "numOps" : 500000000, 15 | "numThreads" : 48, 16 | "numKeys" : 1000000, 17 | 18 | 19 | "keySizeRange" : [30, 32], 20 | "keySizeRangeProbability" : [1.0], 21 | 22 | "valSizeRange" : [1, 100000], 23 | "valSizeRangeProbability" : [1.0], 24 | 25 | "getRatio" : 0.99, 26 | "setRatio" : 0.01, 27 | "keyPoolDistribution": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], 28 | "opPoolDistribution" : [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/throughput/uniform_values_get_throughput_test_single_pool.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config" : { 3 | "cacheSizeMB" : 204800, 4 | "poolRebalanceIntervalSec" : 0, 5 | "htBucketPower" : 30, 6 | "htLockPower" : 20 7 | }, 8 | "test_config" : 9 | { 10 | 11 | 12 | "numOps" : 500000000, 13 | "numThreads" : 48, 14 | "numKeys" : 1000000, 15 | 16 | 17 | "keySizeRange" : [30, 32], 18 | "keySizeRangeProbability" : [1.0], 19 | 20 | "valSizeRange" : [1, 100000], 21 | "valSizeRangeProbability" : [1.0], 22 | 23 | "getRatio" : 0.99, 24 | "setRatio" : 0.01 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/trace_replay/block_chunk/config_block.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config": 3 | { 4 | "cacheSizeMB": 500, 5 | "cacheDir": "/tmp/cachelib_metadata", 6 | "allocFactor": 1.08, 7 | "maxAllocSize": 524288, 8 | "minAllocSize": 64, 9 | "htBucketPower": 29, 10 | "moveOnSlabRelease": false, 11 | "poolRebalanceIntervalSec": 2, 12 | "poolResizeIntervalSec": 1, 13 | "rebalanceStrategy": "hits" 14 | }, 15 | "test_config": 16 | { 17 | "generator": "block-replay", 18 | "replayGeneratorConfig": 19 | { 20 | "ampFactor" : 1 21 | }, 22 | "repeatTraceReplay": false, 23 | "repeatOpCount" : true, 24 | "onlySetIfMiss" : false, 25 | "timestampFactor": 1, 26 | "numOps": 2000000, 27 | "numThreads": 16, 28 | "prepopulateCache": true, 29 | "traceFileNames": [ 30 | "block_traces_1.csv", 31 | "block_traces_2.csv" 32 | ] 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/trace_replay/kvcache/config_kvtrace.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config": 3 | { 4 | "cacheSizeMB": 500, 5 | "cacheDir": "/tmp/cachelib_metadata", 6 | "allocFactor": 1.08, 7 | "maxAllocSize": 524288, 8 | "minAllocSize": 64, 9 | "htBucketPower": 29, 10 | "moveOnSlabRelease": false, 11 | "poolRebalanceIntervalSec": 2, 12 | "poolResizeIntervalSec": 1, 13 | "rebalanceStrategy": "hits" 14 | }, 15 | "test_config": 16 | { 17 | "generator": "replay", 18 | "replayGeneratorConfig": 19 | { 20 | "ampFactor" : 1 21 | }, 22 | "repeatTraceReplay": false, 23 | "repeatOpCount" : true, 24 | "onlySetIfMiss" : false, 25 | "timestampFactor": 1, 26 | "numOps": 2000000, 27 | "numThreads": 16, 28 | "prepopulateCache": true, 29 | "traceFileNames": [ 30 | "kv_traces_1.csv", 31 | "kv_traces_2.csv" 32 | ] 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/trace_replay/kvcache/config_kvtrace_gen_binary.json: -------------------------------------------------------------------------------- 1 | { 2 | "test_config": 3 | { 4 | "generator": "replay", 5 | "replayGeneratorConfig": 6 | { 7 | "binaryFileName": "kv_trace.bin" 8 | }, 9 | "repeatTraceReplay": false, 10 | "repeatOpCount" : true, 11 | "traceFileName": "kv_traces_1.csv" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /cachelib/cachebench/test_configs/trace_replay/kvcache/config_kvtrace_replay_binary.json: -------------------------------------------------------------------------------- 1 | { 2 | "cache_config": 3 | { 4 | "cacheSizeMB": 500, 5 | "cacheDir": "/tmp/cachelib_metadata", 6 | "allocFactor": 1.08, 7 | "maxAllocSize": 524288, 8 | "minAllocSize": 64, 9 | "htBucketPower": 29, 10 | "moveOnSlabRelease": false, 11 | "poolRebalanceIntervalSec": 2, 12 | "poolResizeIntervalSec": 1, 13 | "rebalanceStrategy": "hits" 14 | }, 15 | "test_config": 16 | { 17 | "generator": "binary-replay", 18 | "repeatTraceReplay": true, 19 | "repeatOpCount" : true, 20 | "onlySetIfMiss" : false, 21 | "timestampFactor": 1, 22 | "numOps": 2000000, 23 | "numThreads": 16, 24 | "prepopulateCache": true, 25 | "traceFileName": "kv_trace.bin" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /cachelib/cachebench/util/Exceptions.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #pragma once 18 | 19 | #include 20 | #include 21 | 22 | namespace facebook { 23 | namespace cachelib { 24 | namespace cachebench { 25 | class EndOfTrace : public std::out_of_range { 26 | public: 27 | using std::out_of_range::out_of_range; 28 | }; 29 | } // namespace cachebench 30 | } // namespace cachelib 31 | } // namespace facebook 32 | -------------------------------------------------------------------------------- /cachelib/cmake/FindSparsemap.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) Meta Platforms, Inc. and affiliates. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | find_path(SPARSEMAP_INCLUDE_DIRS NAMES tsl/sparse_map.h 16 | HINTS ${CMAKE_PREFIX_PATH} 17 | PATH_SUFFIXES include 18 | ) 19 | include_directories(${SPARSEMAP_INCLUDE_DIRS}) 20 | -------------------------------------------------------------------------------- /cachelib/common/BloomFilter.thrift: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | namespace cpp2 facebook.cachelib.serialization 18 | 19 | // metadata corresponding to the configuration for 20 | // bits representing a bloom filter blob. 21 | struct BloomFilterPersistentData { 22 | 1: required i32 numFilters = 0; 23 | 2: required i64 hashTableBitSize = 0; 24 | 3: required i64 filterByteSize = 0; 25 | 4: required i32 fragmentSize = 0; 26 | 5: required list seeds; 27 | } 28 | -------------------------------------------------------------------------------- /cachelib/common/Cohort.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/common/Cohort.h" 18 | 19 | namespace facebook { 20 | namespace cachelib { 21 | 22 | const uint64_t Cohort::kTopCohortBit; 23 | const uint64_t Cohort::kBottomCohortBit; 24 | const uint64_t Cohort::kBottomRef; 25 | const uint64_t Cohort::kTopRef; 26 | 27 | } // namespace cachelib 28 | } // namespace facebook 29 | -------------------------------------------------------------------------------- /cachelib/compact_cache/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) Meta Platforms, Inc. and affiliates. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | if (BUILD_TESTS) 16 | add_library (compact_cache_test_support INTERFACE) 17 | 18 | target_link_libraries (compact_cache_test_support INTERFACE 19 | cachelib_allocator 20 | common_test_utils 21 | glog::glog 22 | gflags 23 | GTest::gtest 24 | GTest::gmock 25 | ) 26 | 27 | function (add_source_test SOURCE_FILE) 28 | generic_add_source_test("compact-cache-test" "${SOURCE_FILE}" 29 | compact_cache_test_support "${ARGN}") 30 | endfunction() 31 | 32 | add_source_test (tests/CCacheTests.cpp) 33 | endif() 34 | -------------------------------------------------------------------------------- /cachelib/datatype/tests/DataTypeTest.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/datatype/tests/DataTypeTest.h" 18 | 19 | namespace facebook { 20 | namespace cachelib { 21 | namespace tests { 22 | const std::string DataTypeTest::kDefaultPool{"default"}; 23 | } // namespace tests 24 | } // namespace cachelib 25 | } // namespace facebook 26 | -------------------------------------------------------------------------------- /cachelib/experimental/README.md: -------------------------------------------------------------------------------- 1 | # Experimental 2 | 3 | Everything in this directory is under active development and subject to 4 | change. You're free to try it out, but please do NOT use any of this in 5 | production. 6 | 7 | There is no guarantee that anything here will eventually make their way 8 | into production-ready CacheLib. Features can be abruptly abandoned or 9 | drastically changed without warning. Builds will NOT break but functionality 10 | can and will break. If you need something from here for production, reach 11 | out to the CacheLib team, and we could work something out. 12 | -------------------------------------------------------------------------------- /cachelib/experimental/deprecated_objcache/ObjectCachePersistence.thrift: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | namespace cpp2 facebook.cachelib.objcache.serialization 18 | 19 | struct Item { 20 | 1: byte poolId; 21 | 2: i32 creationTime; 22 | 3: i32 expiryTime; 23 | 4: string key; 24 | 5: string payload; 25 | } 26 | -------------------------------------------------------------------------------- /cachelib/navy/common/Hash.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "cachelib/navy/common/Hash.h" 18 | 19 | #include 20 | 21 | namespace facebook::cachelib::navy { 22 | uint64_t hashBuffer(BufferView key, uint64_t seed) { 23 | return folly::hash::SpookyHashV2::Hash64(key.data(), key.size(), seed); 24 | } 25 | 26 | uint32_t checksum(BufferView data, uint32_t startingChecksum) { 27 | return folly::crc32(data.data(), data.size(), startingChecksum); 28 | } 29 | } // namespace facebook::cachelib::navy 30 | -------------------------------------------------------------------------------- /cachelib/navy/common/tests/HashTest.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include 18 | 19 | #include "cachelib/navy/common/Hash.h" 20 | 21 | namespace facebook::cachelib::navy::tests { 22 | TEST(Hash, HashedKeyCollision) { 23 | HashedKey hk1{"key 1"}; 24 | HashedKey hk2{"key 2"}; 25 | 26 | // Simulate a case where hash matches but key doesn't. 27 | HashedKey hk3 = HashedKey::precomputed(hk2.key(), hk1.keyHash()); 28 | 29 | EXPECT_NE(hk1, hk2); 30 | EXPECT_NE(hk1, hk3); 31 | EXPECT_NE(hk2, hk3); 32 | } 33 | } // namespace facebook::cachelib::navy::tests 34 | -------------------------------------------------------------------------------- /cachelib/object_cache/persistence/persistent_data.thrift: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | namespace cpp2 facebook.cachelib.objcache2.persistence 18 | 19 | struct Item { 20 | 1: string key; 21 | 2: string payload; 22 | 3: i32 objectSize; 23 | 4: i32 expiryTime; 24 | } 25 | 26 | struct Metadata { 27 | 1: i32 threadCount; 28 | } 29 | -------------------------------------------------------------------------------- /cachelib/object_cache/tests/test_object.thrift: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | namespace cpp2 facebook.cachelib.objcache2.test 18 | 19 | struct ThriftFoo { 20 | 1: i32 a; 21 | 2: i32 b; 22 | 3: i32 c; 23 | } 24 | 25 | struct ThriftFoo2 { 26 | 1: i32 d; 27 | 2: i32 e; 28 | 3: i32 f; 29 | } 30 | -------------------------------------------------------------------------------- /cachelib/rust/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "cachelib" 3 | version = "0.1.0" 4 | authors = ["Facebook "] 5 | edition = "2021" 6 | description = "cachelib rust bindings" 7 | repository = "https://github.com/facebook/cachelib/" 8 | license = "MIT OR Apache-2.0" 9 | 10 | [dependencies] 11 | abomonation = "0.7" 12 | anyhow = "1.0" 13 | bytes = { version = "1.0", features = ["serde"] } 14 | cxx = "1.0.58" 15 | libc = "0.2.139" 16 | once_cell = "1.17" 17 | thiserror = "1.0.38" 18 | 19 | [build-dependencies] 20 | cxx-build = "1.0" 21 | -------------------------------------------------------------------------------- /cachelib/rust/build.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // Need to replace this with a CMake build, using https://github.com/XiangpengHao/cxx-cmake-example as inspiration 18 | 19 | fn main() { 20 | cxx_build::bridge("src/lib.rs") // returns a cc::Build 21 | .file("src/cachelib.cpp") 22 | .flag_if_supported("-std=c++11") 23 | .compile("cachelib"); 24 | 25 | println!("cargo:rerun-if-changed=src/lib.rs"); 26 | println!("cargo:rerun-if-changed=src/cachelib.cpp"); 27 | println!("cargo:rerun-if-changed=src/cachelib.h"); 28 | } 29 | -------------------------------------------------------------------------------- /cachelib/shm/shm.thrift: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | namespace cpp2 facebook.cachelib.serialization 18 | 19 | struct ShmManagerObject { 20 | 1: required byte shmVal; 21 | 3: required map nameToKeyMap; 22 | } 23 | -------------------------------------------------------------------------------- /contrib/prerequisites-arch.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Copyright (c) Meta Platforms, Inc. and affiliates. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | sudo pacman -S --needed --noconfirm cmake \ 17 | make \ 18 | gcc \ 19 | boost \ 20 | double-conversion \ 21 | libdwarf \ 22 | libaio \ 23 | numactl \ 24 | libsodium 25 | -------------------------------------------------------------------------------- /contrib/prerequisites-fedora32.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Copyright (c) Meta Platforms, Inc. and affiliates. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | sudo dnf -y update 17 | sudo dnf groupinstall -y "Development Tools" 18 | sudo dnf -y install bison flex patch bzip2 cmake \ 19 | double-conversion double-conversion-devel \ 20 | boost-devel libevent-devel openssl-devel libunwind-devel \ 21 | zlib-devel lz4-devel xz-devel bzip2-devel \ 22 | jemalloc-devel snappy-devel libsodium-devel libdwarf-devel libaio-devel \ 23 | gmock-devel gflags-devel gtest gtest-devel \ 24 | numactl-devel \ 25 | fmt fmt-devel 26 | 27 | # DO NOT INSTALL glog-devel - need to build from source for the glog-*.cmake files 28 | -------------------------------------------------------------------------------- /contrib/prerequisites-fedora34.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Copyright (c) Meta Platforms, Inc. and affiliates. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | sudo dnf -y update 17 | sudo dnf groupinstall -y "Development Tools" 18 | sudo dnf -y install bison flex patch bzip2 cmake \ 19 | double-conversion double-conversion-devel make g++ \ 20 | boost-devel libevent-devel openssl-devel libunwind-devel \ 21 | zlib-devel lz4-devel xz-devel bzip2-devel \ 22 | jemalloc-devel snappy-devel libsodium-devel libdwarf-devel libaio-devel \ 23 | numactl-devel 24 | -------------------------------------------------------------------------------- /examples/simple_cache/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) Meta Platforms, Inc. and affiliates. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | cmake_minimum_required (VERSION 3.12) 16 | 17 | project (cachelib-cmake-test-project VERSION 0.1) 18 | 19 | find_package(cachelib CONFIG REQUIRED) 20 | 21 | add_executable(simple-cache-example main.cpp) 22 | 23 | target_link_libraries(simple-cache-example cachelib) 24 | -------------------------------------------------------------------------------- /examples/simple_compact_cache/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) Meta Platforms, Inc. and affiliates. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | cmake_minimum_required (VERSION 3.12) 16 | 17 | project (cachelib-cmake-test-project VERSION 0.1) 18 | 19 | find_package(cachelib CONFIG REQUIRED) 20 | 21 | add_executable(simple-compact-cache-example main.cpp) 22 | 23 | target_link_libraries(simple-compact-cache-example cachelib) 24 | -------------------------------------------------------------------------------- /examples/single_tier_cache/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) Meta Platforms, Inc. and affiliates. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | cmake_minimum_required (VERSION 3.12) 16 | 17 | project (cachelib-cmake-test-project VERSION 0.1) 18 | 19 | find_package(cachelib CONFIG REQUIRED) 20 | 21 | add_executable(single-tier-cache-example main.cpp) 22 | 23 | target_link_libraries(single-tier-cache-example cachelib) 24 | -------------------------------------------------------------------------------- /website/.gitignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | /node_modules 3 | 4 | # Production 5 | /build 6 | 7 | # Generated files 8 | .docusaurus 9 | .cache-loader 10 | 11 | # Misc 12 | .DS_Store 13 | .env.local 14 | .env.development.local 15 | .env.test.local 16 | .env.production.local 17 | 18 | npm-debug.log* 19 | yarn-debug.log* 20 | yarn-error.log* 21 | 22 | # ESLint 23 | .eslintcache 24 | -------------------------------------------------------------------------------- /website/.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build 3 | .docusaurus 4 | -------------------------------------------------------------------------------- /website/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "arrowParens": "always", 3 | "bracketSpacing": false, 4 | "jsxBracketSameLine": true, 5 | "printWidth": 80, 6 | "proseWrap": "never", 7 | "singleQuote": true, 8 | "trailingComma": "all" 9 | } 10 | -------------------------------------------------------------------------------- /website/.stylelintrc.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | module.exports = { 18 | plugins: ['stylelint-copyright'], 19 | rules: { 20 | 'docusaurus/copyright-header': true, 21 | }, 22 | }; 23 | -------------------------------------------------------------------------------- /website/README.md: -------------------------------------------------------------------------------- 1 | # Website 2 | 3 | This website is built using [Docusaurus 2](https://v2.docusaurus.io/), a modern static website generator. 4 | 5 | ### Installation 6 | 7 | ``` 8 | $ yarn 9 | ``` 10 | 11 | ### Local Development 12 | 13 | ``` 14 | $ yarn start 15 | ``` 16 | 17 | This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server. 18 | 19 | ### Build 20 | 21 | ``` 22 | $ yarn build 23 | ``` 24 | 25 | This command generates static content into the `build` directory and can be served using any static contents hosting service. 26 | 27 | ### Deployment 28 | 29 | ``` 30 | $ GIT_USER= USE_SSH=true yarn deploy 31 | ``` 32 | 33 | If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. 34 | 35 | ### Continuous Integration 36 | 37 | Some common defaults for linting/formatting have been set for you. If you integrate your project with an open source Continuous Integration system (e.g. Travis CI, CircleCI), you may check for issues using the following command. 38 | 39 | ``` 40 | $ yarn ci 41 | ``` 42 | -------------------------------------------------------------------------------- /website/babel.config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | * @format 17 | */ 18 | 19 | module.exports = { 20 | presets: [require.resolve('@docusaurus/core/lib/babel/preset')], 21 | }; 22 | -------------------------------------------------------------------------------- /website/blog/2019-05-28-hola.md: -------------------------------------------------------------------------------- 1 | --- 2 | slug: hola 3 | title: Hola 4 | author: Gao Wei 5 | author_title: Docusaurus Core Team 6 | author_url: https://github.com/wgao19 7 | author_image_url: https://avatars1.githubusercontent.com/u/2055384?v=4 8 | tags: [hola, docusaurus] 9 | --- 10 | 11 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 12 | -------------------------------------------------------------------------------- /website/blog/2019-05-29-hello-world.md: -------------------------------------------------------------------------------- 1 | --- 2 | slug: hello-world 3 | title: Hello 4 | author: Endilie Yacop Sucipto 5 | author_title: Maintainer of Docusaurus 6 | author_url: https://github.com/endiliey 7 | author_image_url: https://avatars1.githubusercontent.com/u/17883920?s=460&v=4 8 | tags: [hello, docusaurus] 9 | --- 10 | 11 | Welcome to this blog. This blog is created with [**Docusaurus 2 alpha**](https://v2.docusaurus.io/). 12 | 13 | 14 | 15 | This is a test post. 16 | 17 | A whole bunch of other information. 18 | -------------------------------------------------------------------------------- /website/blog/2019-05-30-welcome.md: -------------------------------------------------------------------------------- 1 | --- 2 | slug: welcome 3 | title: Welcome 4 | author: Yangshun Tay 5 | author_title: Front End Engineer @ Facebook 6 | author_url: https://github.com/yangshun 7 | author_image_url: https://avatars0.githubusercontent.com/u/1315101?s=400&v=4 8 | tags: [facebook, hello, docusaurus] 9 | --- 10 | 11 | Blog features are powered by the blog plugin. Simply add files to the `blog` directory. It supports tags as well! 12 | 13 | Delete the whole directory if you don't want the blog features. As simple as that! 14 | -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/Compact_Cache_Design_cc_contain_slabs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/Compact_Cache_Design_cc_contain_slabs.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/Compact_Cache_Design_cc_veriable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/Compact_Cache_Design_cc_veriable.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/Compact_Cache_Design_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/Compact_Cache_Design_image.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/How-do-we-pick-slab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/How-do-we-pick-slab.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/How-do-we-release-slab-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/How-do-we-release-slab-2.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/How-do-we-release-slab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/How-do-we-release-slab.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/Hybrid_Cache_allocate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/Hybrid_Cache_allocate.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/Hybrid_Cache_find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/Hybrid_Cache_find.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/Job_Scheduler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/Job_Scheduler.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/Navy_Engine_driver_state_machine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/Navy_Engine_driver_state_machine.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/SOC_cost_of_operations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/SOC_cost_of_operations.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/Slab-rebalancing-why-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/Slab-rebalancing-why-2.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/Slab-rebalancing-why-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/Slab-rebalancing-why-3.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/Slab-rebalancing-why.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/Slab-rebalancing-why.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/Small_Item_engine_Read.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/Small_Item_engine_Read.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/Small_Item_engine_Write.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/Small_Item_engine_Write.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/large_object_cache_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/large_object_cache_overview.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/large_object_cache_structured_caching_lookup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/large_object_cache_structured_caching_lookup.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/large_object_cache_structured_caching_page_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/large_object_cache_structured_caching_page_1.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/large_object_cache_structured_caching_page_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/large_object_cache_structured_caching_page_2.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/large_object_cache_structured_caching_page_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/large_object_cache_structured_caching_page_3.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/navy_arch_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/navy_arch_overview.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/navy_architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/navy_architecture.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/navy_async_io.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/navy_async_io.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/navy_engine_pair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/navy_engine_pair.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/navy_impl_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/navy_impl_overview.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/slab-rebalancing-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/slab-rebalancing-overview.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/synchronization_in_eviction_and_slab_rebalancing_chained_item_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/synchronization_in_eviction_and_slab_rebalancing_chained_item_1.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/synchronization_in_eviction_and_slab_rebalancing_chained_item_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/synchronization_in_eviction_and_slab_rebalancing_chained_item_2.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_Architecture_Guide/synchronization_in_eviction_and_slab_rebalancing_regular_item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_Architecture_Guide/synchronization_in_eviction_and_slab_rebalancing_regular_item.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_User_Guides/advise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_User_Guides/advise.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_User_Guides/alternate_fdp_navy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_User_Guides/alternate_fdp_navy.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_User_Guides/automatic_pool_resizing.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: automatic_pool_resizing 3 | title: Automatic pool resizing 4 | --- 5 | 6 | **This feature is incomplete and untested in prod. If you're interested, reach out to us and we can work out a plan to complete it.** 7 | 8 | Cachelib requires an initial size to add a new pool or a new compact cache. With pool optimization, the sizes of different pools or compact caches can be automatically adjusted according to a criteria or strategy. This can (1) potentially reduce the efforts to search for a good size for pools and (2) make the pool sizes up to date. 9 | 10 | For now we optimize the sizes for regular pools and the sizes for compact caches separately; the total memory for regular pools is constant and the total memory for compact caches is constant. We currently have one supported strategy: 11 | 12 | * `MarginalHits` 13 | Similar to rebalancing, this strategy ensures that the marginal hits across different pools or compact caches are the same. To use this strategy, you need to use the MM2Q eviction policy and enable tail hits tracking. 14 | -------------------------------------------------------------------------------- /website/docs/Cache_Library_User_Guides/cachebench.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_User_Guides/cachebench.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_User_Guides/cachelib_2Q.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_User_Guides/cachelib_2Q.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_User_Guides/cachelib_LRU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_User_Guides/cachelib_LRU.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_User_Guides/cachelib_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_User_Guides/cachelib_overview.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_User_Guides/doc5.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: doc5 3 | title: CacheLib User Guide 4 | --- 5 | 6 | Will be published soon... 7 | -------------------------------------------------------------------------------- /website/docs/Cache_Library_User_Guides/hashtable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_User_Guides/hashtable.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_User_Guides/item_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_User_Guides/item_state.png -------------------------------------------------------------------------------- /website/docs/Cache_Library_User_Guides/remove_data_from_cache_items.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/docs/Cache_Library_User_Guides/remove_data_from_cache_items.png -------------------------------------------------------------------------------- /website/learnmore/index.md: -------------------------------------------------------------------------------- 1 | Learn More 2 | -------------------------------------------------------------------------------- /website/static/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/static/.nojekyll -------------------------------------------------------------------------------- /website/static/CNAME: -------------------------------------------------------------------------------- 1 | cachelib.org 2 | -------------------------------------------------------------------------------- /website/static/img/CacheLib-Logo-Large-transp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/static/img/CacheLib-Logo-Large-transp.png -------------------------------------------------------------------------------- /website/static/img/CacheLib-Logo-Small-transp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/static/img/CacheLib-Logo-Small-transp.png -------------------------------------------------------------------------------- /website/static/img/CacheLib-Logo-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/static/img/CacheLib-Logo-small.png -------------------------------------------------------------------------------- /website/static/img/CacheLib-Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/static/img/CacheLib-Logo.png -------------------------------------------------------------------------------- /website/static/img/dark_blue_dots.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/static/img/dark_blue_dots.jpg -------------------------------------------------------------------------------- /website/static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/static/img/favicon.ico -------------------------------------------------------------------------------- /website/static/img/oss_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebook/CacheLib/1b78baa5c518b55e2f8d6cc888d88000c189fa96/website/static/img/oss_logo.png --------------------------------------------------------------------------------