/root/bitcoin/src/node/caches.h
Line | Count | Source |
1 | | // Copyright (c) 2021 The Bitcoin Core developers |
2 | | // Distributed under the MIT software license, see the accompanying |
3 | | // file COPYING or http://www.opensource.org/licenses/mit-license.php. |
4 | | |
5 | | #ifndef BITCOIN_NODE_CACHES_H |
6 | | #define BITCOIN_NODE_CACHES_H |
7 | | |
8 | | #include <kernel/caches.h> |
9 | | #include <util/byte_units.h> |
10 | | |
11 | | #include <cstddef> |
12 | | |
13 | | class ArgsManager; |
14 | | |
15 | | //! min. -dbcache (bytes) |
16 | | static constexpr size_t MIN_DB_CACHE{4_MiB}; |
17 | | //! -dbcache default (bytes) |
18 | | static constexpr size_t DEFAULT_DB_CACHE{DEFAULT_KERNEL_CACHE}; |
19 | | |
20 | | namespace node { |
21 | | struct IndexCacheSizes { |
22 | | size_t tx_index{0}; |
23 | | size_t filter_index{0}; |
24 | | }; |
25 | | struct CacheSizes { |
26 | | IndexCacheSizes index; |
27 | | kernel::CacheSizes kernel; |
28 | | }; |
29 | | CacheSizes CalculateCacheSizes(const ArgsManager& args, size_t n_indexes = 0); |
30 | | constexpr bool ShouldWarnOversizedDbCache(size_t dbcache, size_t total_ram) noexcept |
31 | 0 | { |
32 | 0 | const size_t cap{(total_ram < 2048_MiB) ? DEFAULT_DB_CACHE : (total_ram / 100) * 75}; |
33 | 0 | return dbcache > cap; |
34 | 0 | } |
35 | | |
36 | | void LogOversizedDbCache(const ArgsManager& args) noexcept; |
37 | | } // namespace node |
38 | | |
39 | | #endif // BITCOIN_NODE_CACHES_H |