forest icon indicating copy to clipboard operation
forest copied to clipboard

Filecoin.ChainGetTipSetByHeight: performance issue

Open AlexeyKrasnoperov opened this issue 7 months ago • 6 comments

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

AlexeyKrasnoperov avatar May 07 '25 14:05 AlexeyKrasnoperov

Cache, cache, cache (both in-memory caches and DB)

LesnyRumcajs avatar May 07 '25 14:05 LesnyRumcajs

Remember to limit the in-memory cache sizes.

LesnyRumcajs avatar May 07 '25 14:05 LesnyRumcajs

@AlexeyKrasnoperov You have put eth_getTransactionReceipt in your curl command, is that some typo?

elmattic avatar May 07 '25 16:05 elmattic

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 avatar May 07 '25 16:05 AlexeyKrasnoperov

~~@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).~~

elmattic avatar May 13 '25 12:05 elmattic

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.

elmattic avatar May 13 '25 12:05 elmattic

It looks good. Not much faster than Lotus, but already good enough.

AlexeyKrasnoperov avatar Oct 09 '25 13:10 AlexeyKrasnoperov