노드 자체가 잡아먹는 CPU 점유율 ( 노드가 이미 최신 정보로 업데이트되어서 송수신이
발생하지 않는 상황에서는 CPU 점유율은 거의 없는 수준이지만, 데이터를 송수신할때는
최대 코어 1개 분량을 100% 잡아먹습니다. 특히 처음 노드 설치하고 구동시켜보면
최신데이터에 도달할떄까지 계속 CPU 코어 하나만 100% 상황이 됩니다. ) 을
아끼기 위해서 중앙 노드 하나로 구성하고 다른 채굴컴은 전부 그 노드 하나에 접속시키는 분들 꽤 있죠?
근데 한가지 주의점...
노드가 기본적으로 RPC Call 처리 최대쓰레드(rpcthreads)의 기본 설정값이 4 입니다.
즉, 4대를 초과하는 채굴컴을 하나의 노드에 붙도록 설정하면 경우에 따라 채굴컴들끼리
4개의 RPC Call 제한을 두고 서로 싸우는 상황이 되버립니다... 어차피 채굴컴들의 동작상
최대 시간을 차지하는 소인수분해 연산중에는 노드접속을 하지 않지만, 그런다고 해도
채굴컴의 수가 늘어나면 노드에 대한 요청수가 늘어나게 되고 분명 경쟁이 발생할 수 있습니다.
그렇지 않아도 고래들이 엄청 늘리고 있어서 블럭찾기 경쟁도 치열한데 그 상황에서
자기의 노드에까지 접속쓰레드수에 걸려 채굴컴끼리 서로 붙으려고 경쟁모드가 되버리면 안되겠죠.
그런 상황을 피하시려면..
factornd 를 실행하실 때, 반드시 -rpcthreads 값을 접속시키려는 채굴컴의 수 이상을 지정하세요.
예를 들어 10대를 붙인다면 적어도 -rpcthreads=10 이상으로 주셔야 합니다. 이게 최대 얼마까지
안정적으로 동작하는지는 저도 아직 잘 모르겠습니다. 너무 노드 하나에 무한정으로 붙이지
마시고 적당히 분산시키시기 바랍니다. 기본값이 4라는 낮은 값으로 잡혀있는건 뭔가 이유가
있겠죠? 가능하면 10대 정도 단위로 분산하시기 바랍니다.
50대를 돌린다면 10대당 한개의 노드를 돌린다고 생각하고 노드를 5개정도 운영하시는게
안정적이지 않을까 합니다.
아참 그리고... 중앙노드 하나로 구성하신 분들이 채굴돌릴때 굳이 코어값을 -1 해서 돌릴 필요없습니다.
예를 들어 16코어짜리 CPU로 돌릴때 -1 해서 python FACTOR.py 15 0 이라는 식으로 돌리잖아요?
그건 노드가 데이터를 따라잡는 경우에 CPU 코어 하나를 전부 쓰게 되니까 노드의 안정적인 동작을
위해 코어 하나를 비워두는건데, 중앙노드로 구성하시는 분들은 그럴 필요가 없으니까요.
중앙노드로 구성하시는 분들은 그냥 코어수 그대로 전부 돌리세요.
예를 들어 16코어면 python FACTOR.py 16 0 으로 돌리시면 됩니다.
단, 당연히 중앙노드를 돌리는 채굴컴 한대만큼은 -1 해서 돌리셔야 하고요.