주류를 이루고 있는 코인들이
대부분 CPU를 사용한 마이너들이고
CPU 쓰레드 개수와 밀접한 연관이 있는 것 같아
저도 공부 겸 해서 인터넷에서 쉽게 구할 수 있는 자료를 퍼다 공유합니다.
아래 글을 통해서 배운건 100% 쓰레드보다 -t 마이너스 1 정도 옵션값이
오버히트 조정에 도움을 줄 것 같습니다.
----------------------------------------------------------------------------------------------------//
1. 쓰레드란?
- 프로세스내에서의 제어 흐름(하나의 실행 단위)
- CPU이용량 단위의 기본, 각 스레드마다 PCB를 가지고 있다.
- 같은 프로세스에 속한 각 쓰레드들은 공유 가능 -> 프로세스를 여러개 띄운것과 차이
2. 멀티쓰레드 프로그램
- 현재 운영체제에 돌아가는 많은 소프트웨어 패키지들은 멀티쓰레드이다.
- ex) 웹 브라우저, 워드프로세서, 웹서버, 운영체제 커널
- 장점 : responsiveness, economy, resource sharing, utilization of multiprocessor system
- 종류 : 유저 쓰레드, 커널 쓰레드
◆ 유저 쓰레드 : 커널에 알려져 있지 않고, 프로그래머에게 보이는 쓰레드 switch를 해서 커널을 커널을 번갈아 사용
커널보다 쓰레드 생성이 더 빠르다.
◆ 커널 쓰레드 : 운영체제가 관리
3. 유저 쓰레드와 커널 쓰레드 사이의 관계
- Many to One : 유저 프로세스를 제한없이 여러개 생성이 가능
많은 유저 프로세스가 하나의 커널 쓰레드에 맵핑된 것
CPU프로세스가 해제되면 모든 프로세스가 해제
효과적이고, 멀티 프로세서에서 병렬로 사용할 수 없다.
- One to One : 각 유저 프로세스가 하나의 커널 쓰레드에 맵핑된 것
동시에 발생되 병렬로 사용 가능
병렬로 동작되므로, 한 쓰레드가 해제되도 다른 쓰레드는 동작한다.
각 쓰레드가 소통을 위해 스위칭을 자주하므로 overhead가 발생
many to one보다 생성할 수 있는 유저프로세스가 적다.
- Many to Many : 여러 유저 프로세스가 더 적거나 같은 수의 커널 쓰레드에 맵핑된 것
Many to One과 One to One의 장점을 다 가지고 있다.
운영체제가 충분한 수의 커널 쓰레드를 생성할 수 있음
* two level 모델 : Many to Many 모델의 한가지 형태
많은 유저 쓰레드가 적거나 같은수의 커널쓰레드에 다중화 된다.
4. 쓰레드 라이브러리
- 프로그래머에게 쓰레드를 만들고 관리하는 API를 제공
- 2가지 실행법
1) 커널에 상관없이 유저 프로세스에 라이브러리를 전적으로 제공하는 법
2) 운영체제에 의해 시스템콜을 이요해 커널 수준의 라이브러리를 제공하는 법
5. 쓰레드의 해제
- 다른 쓰레드들에 의해 종료되기 전에 쓰레드를 해제한다.
- 취소할 쓰레드는 Asynchronous 해제에 의해 즉시 종결되거나,
Deffered 해제에 의해 해제되어야하는 쓰레드를 주기적으로 체크해서 해제한다.
6. 쓰레드 Pool
- 쓰레드가 작업을 기다리는 공간
- 새로운 쓰레드를 생성해 사용하는 것보다 Pool에 저장해 사용하는 것이 약간 더 빠르다.
- 많은 쓰레드들이 풀의 크기에 들어갈 수 있다.
출처: http://ib-com.net/xe/?mid=tes&listStyle=webzine&document_srl=533&sort_index=voted_count&order_type=desc