새로 릴리즈된 klaytn v1.6.0에 대해서 문의드립니다

안녕하세요. 최근에 릴리즈된 v1.6.0 버전에 대해서 궁금한 것이 있어 글을 올리게 되었습니다.

github 릴리즈 페이지에 작성된 문서와 Medium 글을 읽어보았습니다. 그런데 블럭 싱크 성능 개선과 관련된 부분이 궁금했는데 이 부분에 대해서는 명확히 나와있지 않은 것 같아서 질문을 올립니다.

  1. v1.6.0 버전에서 블럭 싱크 성능과 관련해서 개선된 부분이 있을까요?
  2. 제목과 동떨어진 질문이긴한데 혹시 블럭 싱크 속도를 높이기 위해서 수정할만한 옵션(flag)들에는 어떤 것이 있을까요?

감사합니다.

안녕하세요. 문의주셔서 감사합니다.

최근 릴리즈한 v1.6.1 변경내용에 대한 문의를 주신것으로 보입니다.
블록 싱크 성능과 관련된 내용을 설명드리면
prefetch 로직을 동일 블록의 여러 Tx에 대해서 그리고 여러 블록에 대해서도 미리 prefetch 할수 있도록 개선하였습니다.
관련 option은 default로 켜져 있으며 아래 옵션을 참고 부탁드립니다.

  --statedb.cache.num-fetcher-prefetch-worker : Number of workers used to prefetch block when fetcher fetches block (default: 32)

그리고 추가로 성능과 관련된 옵션을 설명드리면

아래의 cache size limit을 설정할 수 있습니다. 기본값은 자동을 물리 메모리 크기에서 35%정도를 자동으로 할당하게되는데요. 메모리 여유가 충분하시다면 임의로 추가로 할당을 하실 수 있습니다.

 --state.trie-cache-limit value                     Memory allowance (MB) to use for caching trie nodes in memory. -1 is for auto-scaling (default: -1)

아래 설정을 cache 데이터를 주기적으로 disk에 저장해놓았다가 노드가 다시 재시작할때 빠르게 cache를 올릴 수 있도록 하는 기능입니다. 시간을 설정하시면 해당 주기마다 disk에 cache data를 저장해놓고 노드를 재시작시 로드하여 바로 cache를 사용할 수 있습니다.

  --state.trie-cache-save-period value               Period of saving in memory trie cache to file if fastcache is used, 0 means disabled (default: 0s)

또한 API적으로는 노드를 실행하고 초기에 cache가 충분하지 않은경우 아래 API를 활용하시면 좀더 빨리 cache를 확보 할수 있습니다.
https://docs.klaytn.com/bapp/json-rpc/api-references/debug/blockchain#debug_startwarmup

감사합니다.

답변 감사합니다.

해당 옵션들이 추가된 것은 확인했는데 각각의 옵션이 어떤 의미를 담고있는지 정확하게 이해하기 어려웠습니다.

답변을 통해 힌트를 얻었습니다

감사합니다

혹시 'prefetch 로직’이 어떤 것인지 조금 더 구체적으로 추가설명 해주실 수 있을까요?

감사합니다

안녕하세요,

캐시에는 최근 정보만 저장하고 있고, 오래된 데이터는 저장하고 있지 않습니다.
캐시에 비해 디비에서 읽는 속도는 현저히 느립니다.
Prefetch는 다음에 수행할 데이터에 대하여 미리 조회합니다. 즉, 다음에 처리할 데이터를 디비에서 캐시에 올려주는 기능입니다.

감사합니다.

1개의 좋아요