클레이튼 en 로그에 관해서 궁금한점이 있습니다

로그 정보에 찍히는걸 보면

Inserted a new block 시에 processTxs가 시간의 대부분을 차지하는데, 이 processTxs가 의미하는게 무엇인가요? processTxs가 대부분의 cpu 쓰는 비율을 잡아먹는지도 궁금합니다

안녕하세요.
processTxs time은 각각의 블록에 담긴 트랜잭션들을 evm을 통해 실행하고, 이를 stateDB에 반영하는 시간을 의미합니다.

현재 로그에 찍힌 시간이 과하게 높은 것으로 보이는데요, 어떤 스펙에서 EN을 돌리고 계신가요?

  1. 체인데이터는 4T HDD에 저장하고 있고, MEM은 32G, CPUs 8개입니다. 시간을 줄이는 방법은 어떻게 되나요??
    시간이 과하게 높은것으로 보여서 문의드렸습니다.
  2. processTxs가 저희 EN cpu에 영향은 끼치나요??

우선, System Requirements - Klaytn Docs 에 비추어 보았을때 권장사양에 비하여 메모리가 다소 부족한 것으로 보입니다.
일반적인 경우,

  • 노드의 스펙을 업그래이드(메모리 사이즈 증가)
  • KEN 실행 옵션 중 cache 설정값( --state.trie-cache-limit )을 수동으로 설정하여 늘리기(기본은 35%정도의 데이터를 사용중입니다.)
  • 더 높은 IOPS인 SSD로 변경
  • chaindata의 용량이 커진경우 최신 migration된 chaindata로 변경
  • en 노드에 영향을 주는 프로세스를 끄고 sync 진행

등의 방법으로 EN의 성능을 향상시킬 수 있습니다.

추가적으로 processTxs time이 과도하게 높으며, 노드를 처음 실행하였을 때 블록처리 속도가 유난히 낮다고 여겨지시면 debug.startWarmup api를 통해 문제를 해결 할 수 있습니다. 이 명령어를 사용하면 State Cache WarmUp이 실행하시면 수 분 ~ 수 시간 이내에 블록처리 속도가 많이 개선되는 것을 확인하실 수 있으실 것입니다. WarmUp에 소요되는 시간은 Disk IOPS나 Cache 사이즈에 따라 다르며 Cache가 충분히 WarmUp이 된 경우 자동으로 정지됩니다.

또한 processTxs가 cpu에 영향을 미치는 영향은 debug.cpuProfile 등을 통해서 확인이 가능하며, tx의 종류에 따라 크게 달라질 수 있습니다.

마이그레이션 데이터를 다시 다운 받을경우 data dir에 있는 기존의 폴더로 다운받을 경우 마이 그레이션 이전의 블록은 삭제되나요???