Filecoin.ChainGetTipSetByHeight: performance issue
Describe the bug
I request Filecoin.ChainGetTipSetByHeight method. Forest responds in 37 s, while Lotus returns the same response in 2 ms.
To reproduce
Curl request:
curl -X POST -w '\nTotal: %{time_total}s\n' http://localhost:2345/rpc/v1 \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"method": "Filecoin.ChainGetTipSetByHeight",
"params": [
4945350,
null
],
"id": 1
}'
Response
{"id":1,"jsonrpc":"2.0","result":{"Cids":[{"/":"bafy2bzacedubwvfm4fp4g7xakmedznop2ef4zcncrl5urpylaaiajr2gxbhn4"},{"/":"bafy2bzacederaq6kf6q77xbtvqd2y6fdjzjuld3p2qto6i3j3a5ul5smasgno"},{"/":"bafy2bzaced4vsu54dhnf26gua77ntp4uczowgzbnj5ikkthzmhoesvwwbb44u"}],"Blocks":[{"Miner":"f01422327","Ticket":{"VRFProof":"i7jfGaM3bwQaLf6AdZl8I4hLqUUASQ7TjRrLOlGIOx6UlmG1Av35qn5iJrV1XxAjDh8IKb3tntKlyq2zz0NCvsaHJK4XddVCmSOLQNA/HAQwby1yQNFFL+vyB8U7boB0"},"ElectionProof":{"WinCount":1,"VRFProof":"glH4fTuGLLESe/w8MA9GcYNsaVMP8rwbSZLrqrNIWFf46dzp8miuo6ylZvaApP39FS3RVlKLOtSGAi3917QTzH6YjBC0z2w9gBtEAZjkX/dYLLphOVGohBlh7Py4TF2+"},"BeaconEntries":[{"Round":17954502,"Data":"qJ+72AxAA84N6TEGPJoWqMjXphH9mkg9TNHUffTTJONpyw6BjlE9eosVan19uTjE"}],"WinPoStProof":[{"PoStProof":4,"ProofBytes":"kqnOG6awR4DAmVeUOA6Z1eruF28vDHcuK2t8BgsxV8A/v/OLwIFt1HcyYX8DI4BFseClhl+pibxDLg/G+ByKWAB46RafPvMiaLIPM9z/2RmiFgGvYZP8YLgq7cqqOB2iEIN7VbS8UzX5kSyQP+L0LSfUEikb63JWvEUnuZO6/MTRz8Q8d5kDcPoENAUlz7/os2GN8TH3+TWJwRHHH+oD7UHMjpB9xUtlOs/aAKC0XcNTdgIHI4gEYi7pZ+njdwJ9"}],"Parents":[{"/":"bafy2bzacebfibhetoaguneu6yniyifqpk2cwoerufchsaq6ycszz2i5wmjxkk"},{"/":"bafy2bzacec6an2wuxh22vqknppsitb4wkvilq6xexop7ociv2nebdoxev7bbq"}],"ParentWeight":"118000577138","Height":4945350,"ParentStateRoot":{"/":"bafy2bzacedsy5b5he6ttn3347cojzsgydzv5tit5c2gg76syfhblu5qs75ya2"},"ParentMessageReceipts":{"/":"bafy2bzacecb3i544vum3la5etzgnoxsdapye76gpafu6bjyj5kufedo3eqsbw"},"Messages":{"/":"bafy2bzacebubht3elw7bj6rs77tn62hl3aolmum53kn2ak6xgtnbhcbqla73w"},"BLSAggregate":{"Type":2,"Data":"kYsA/z3hMFQ6LXlfub+DLhmVHmoZBiF2B8MG9foNJ8774hzXd+Vk/kr5xPFcqnE5CHWnBApvJrIBT5wHbe/FeQlNrvhnKv6YEufa/CiL1B9GWr8L48zBHfA7m0unsl2E"},"Timestamp":1746666900,"BlockSig":{"Type":2,"Data":"pf2sjz4rtmeYVq0qgHwJzWfd86MfgM2vzNGrfYxCtuyhZXMqQB/SA+eRDkae2qocGUp6JolFQSOYB+hfbMtY9zpJN6/sDDz4BbgTFG1xjgpuTJ1VLkvoXvXMvaDntkvp"},"ForkSignaling":0,"ParentBaseFee":"507706"},{"Miner":"f01786387","Ticket":{"VRFProof":"qMxUpTiZMY2IzLFb9G8TPU+qlGH0m6DlLVMg02Z9RI7iKWoKHicpJ6L9qDqxXlCCBQWbeL3V1HjNivrQQvHmA0/D8WAoff445+1D5HEMJN6NhhGbEWcCEUslwOFxk5jK"},"ElectionProof":{"WinCount":1,"VRFProof":"tWQtu2SZQmw0HVbDeTe9PywRukEeXRuSjoYlE6zef224V6bbjxTQI7iArWhrhcoMBPxNyX100KbYvJY5vRi5myMirj3DzTlF0s+IXuLFB6W4yx9J2NGT1ZFSXku8bj3y"},"BeaconEntries":[{"Round":17954502,"Data":"qJ+72AxAA84N6TEGPJoWqMjXphH9mkg9TNHUffTTJONpyw6BjlE9eosVan19uTjE"}],"WinPoStProof":[{"PoStProof":3,"ProofBytes":"g9SQtqQ8oGkpdhyDW9vOXaoCPsQeDC7P2IOlPS1PHnAc8pW7BZH/fGWopWXE/jPIhQp1zj3voel9TwFjLJ6FFZXuLeH0Wn69+KaU/cORqoHy4wcI6K1yDqdST526j/R6D8R4PLyRAtToQVflClXEIS3bZfkV4vErIkHKAktkcLXNeCO/azTu7rfW6vj91Nqwte9hnVS5SHSdy5m+aI2n6eQw4NzgO88pUMmxDvP9dx/WKPNi+Q1f/bobDMpPbemx"}],"Parents":[{"/":"bafy2bzacebfibhetoaguneu6yniyifqpk2cwoerufchsaq6ycszz2i5wmjxkk"},{"/":"bafy2bzacec6an2wuxh22vqknppsitb4wkvilq6xexop7ociv2nebdoxev7bbq"}],"ParentWeight":"118000577138","Height":4945350,"ParentStateRoot":{"/":"bafy2bzacedsy5b5he6ttn3347cojzsgydzv5tit5c2gg76syfhblu5qs75ya2"},"ParentMessageReceipts":{"/":"bafy2bzacecb3i544vum3la5etzgnoxsdapye76gpafu6bjyj5kufedo3eqsbw"},"Messages":{"/":"bafy2bzacecxzu7wnmlvtwzlo3df2dufdp5qlhgd25rtaun5uwra7lfzlhnapy"},"BLSAggregate":{"Type":2,"Data":"rNMVQgybLiEVtTNJ77AJ18sLMoQ1WaTJqLNfzTGibW46lEefn+0O6u9lUpM9oPCpCz4XQmrpK3zISrt82P9ZIW/VV59xGRyYL7f6tBi1jF1ECv+X/XmI3sL9JyG4UV6Z"},"Timestamp":1746666900,"BlockSig":{"Type":2,"Data":"hYgit1/e3phkpwX6cPScZ6z6AVnjn7z/loDggiqzlF+8h86ZxpEBh6O+7uncO6dYCp/SQmOdv6p66t6GVG5l0SsGMojkNpwsrZSvsLjpAHuiDiLCc/aJFAo4C4FPqTor"},"ForkSignaling":0,"ParentBaseFee":"507706"},{"Miner":"f02827880","Ticket":{"VRFProof":"oaZJlQhBvbm7Elo94BZGM1vto4hCaf/DJeNTZVWk5qVCRM/BROdXQJvGyovaMK+FEk6ZzFVlBRPdCIkdcqTM3d6focCb8bp1YyLdP3qCuJEN185HGDB4FeQd1ASv3baT"},"ElectionProof":{"WinCount":1,"VRFProof":"gbL0HRCL7x+0FkbTlQalAlL/ZQMyN4ZDyetGiB8KlQugrkdX4ywsOto6Xk95yIRBELPf5ckvkDQO8n3UpAU7hxy8FO7j4GR7P3a+7TAjSy47hs+hJkz9M1bq9ZB7q1xW"},"BeaconEntries":[{"Round":17954502,"Data":"qJ+72AxAA84N6TEGPJoWqMjXphH9mkg9TNHUffTTJONpyw6BjlE9eosVan19uTjE"}],"WinPoStProof":[{"PoStProof":3,"ProofBytes":"smhM6P4WvB6tfm4QKuE451EeNVlVz1RIF5YDyTy1Yj0MTB0WUW6XZxikaWAOxnrwjirNXRLCl24zisyTWmZjRvFwOwYNcZEk6dSN6A5a44vt6X7vz2x8EDSAs3Vy/MBsF7qijZY80qSmk8HRC4MRTD8grfg6ng7Exa6FabiQWOJ5p/2HbvyAMxZJpe5anJe4hPcgndKQkvpw0NOW1YP87DooayAnYpIc7nb9Gtf5GrnWMrlw35kpOrbxvx4Zh0PB"}],"Parents":[{"/":"bafy2bzacebfibhetoaguneu6yniyifqpk2cwoerufchsaq6ycszz2i5wmjxkk"},{"/":"bafy2bzacec6an2wuxh22vqknppsitb4wkvilq6xexop7ociv2nebdoxev7bbq"}],"ParentWeight":"118000577138","Height":4945350,"ParentStateRoot":{"/":"bafy2bzacedsy5b5he6ttn3347cojzsgydzv5tit5c2gg76syfhblu5qs75ya2"},"ParentMessageReceipts":{"/":"bafy2bzacecb3i544vum3la5etzgnoxsdapye76gpafu6bjyj5kufedo3eqsbw"},"Messages":{"/":"bafy2bzacec6mnrsig3sj453pulaakr4hrnpap3niurk3y3m5s2pxnq57wgzew"},"BLSAggregate":{"Type":2,"Data":"tSsxmSBNKeGZ4Ol1RHIA8+KIClvj+XiiMUapnoAtEOIJAjCLtfnyfKg2mVFvVYDwFfe5LHb+s5fNDC+IG8qwddIor7LzyZUWjlZIXgqDav1a7r/pjC/Qg2TEh+Vdxa3D"},"Timestamp":1746666900,"BlockSig":{"Type":2,"Data":"t3AAt33iyoO2vyQj5V0VF+WAjQSCGkBT8KhNG2hW83tvuHjbc+2XXvpeD4q1odgyDZddl67Gl5dGp5zz+0Lfz3G/hnnD4roXBIMPa2FCd0gAqYAXocUJeXE13Kvq+UVk"},"ForkSignaling":0,"ParentBaseFee":"507706"}],"Height":4945350}}
Expected behaviour
Forest responds in <= 2 ms.
Environment (please complete the following information):
- Hardware
- 12 cores CPU, 32Gb RAM
Cache, cache, cache (both in-memory caches and DB)
Remember to limit the in-memory cache sizes.
@AlexeyKrasnoperov You have put eth_getTransactionReceipt in your curl command, is that some typo?
Hi @elmattic, I will update all performance tickets in the following 2 hours to include correct information. I was in a hurry to create them before the planning call and didn't update anything except of description.
~~@AlexeyKrasnoperov I will close this issue as non-reproducible since Forest responses are consistently sub-millisecond and on par with Lotus. Please feel free to reopen it if needed, and don’t hesitate to provide detailed information on how to reproduce the issue (including Forest or system-level configuration details).~~
Are you sure it's not 0.037s?
edit: After further investigation, I found that Lotus uses a byEpoch cache, so let's do the same.
It looks good. Not much faster than Lotus, but already good enough.