Bitcoin-Core
記憶體池和 UTXO 池使用了多少記憶體(RAM)
我知道我可以
-dbcache=<MB>
在啟動 bitcoind 時進行設置。這是否會影響為 UTXOPool 或 UTXOPool + mempool 分配多少 RAM?
我如何知道每個數據庫在 RAM 中佔用多少 RAM?
如果 UTXO 池為 2.7GB,並且我設置
-dbcache=4096
了 ,那麼分配的其餘記憶體會怎樣?
在 Bitcoin Core 中,有兩個設置,
-dbcache
和-maxmempool
,分別預設為 450 和 300。mempool 只能佔用通過
-maxmempool
.UTXO 集記憶體可以佔用配置的數量
-dbcache
加上目前未使用的已配置記憶體池空間量。然而,記憶體使用量遠高於磁碟上的等效表示 - 在說話時載入整個 UTXO 集將需要 6-7 GiB。記憶體中的表示總是更大。在磁碟上,它們只是打包的字節序列。在記憶體中,有索引和指針,還有記憶體分配成本——所有這些都是為了加快訪問速度。UTXO 數據的膨脹係數大於記憶體。
從 0.14 開始,記憶體池也在關機時保存到磁碟(但不是連續保存)。
到目前為止,沒有對 UTXO 記憶體進行優先級排序。我們只是保留所有訪問過的條目,當它變得太大時,所有修改過的條目都會寫入磁碟。一個(非常)重要的優化是,當一個 UTXO 被創建然後被使用時,沒有被寫入磁碟,我們只是將它從記憶體中刪除。