BOINC 클라이언트-서버 기술
BOINC client–server technology
BOINC 클라이언트-서버 기술은[1] BOINC가 작동하는 모델을 말합니다. BOINC 프레임워크는 클라이언트-서버 아키텍처에서 작동하는 두 개의 계층으로 구성됩니다. BOINC 소프트웨어가 시스템에 설치되면 서버는 클라이언트로 작업을 전송하기 시작합니다. 작업은 클라이언트 측에서 수행되고 결과는 서버 측에 업로드됩니다.
BOINC의 설계 및 구조
- BOINC는 분산 컴퓨팅 프로젝트를 시작하려는 모든 사람에게 자유로운 구조로 설계되었습니다.
- BOINC는 서버 시스템과 클라이언트 소프트웨어로 구성되어 서로 통신하여 작업 유닛을 배포, 처리 및 반환합니다.
서버구조
BOINC 시스템의 주요 부분은 백엔드 서버입니다. 서버는 BOINC가 모든 크기의 프로젝트로 쉽게 확장할 수 있도록 하나 이상의 시스템에서 실행될 수 있습니다. BOINC 서버는 리눅스 기반 컴퓨터에서 실행되며 웹 및 데이터베이스 시스템에 Apache, PHP 및 MySQL을 사용합니다.
과학적 계산은 참가자의 컴퓨터에서 실행됩니다. 백엔드 서버는 사용자의 클라이언트에서 과학 조사관의 데이터베이스로 업로드한 후 결과를 검증하고 분석합니다. 유효성 검사 프로세스에는 여러 개의 기여자 PC에서 모든 작업을 실행하고 결과를 비교하는 작업이 포함됩니다.
BOINC 서버는 다음과 같은 기능도 제공합니다.
- 동종 이중화(예: 동일한 플랫폼의 컴퓨터에 한해 sending 작업 유닛): Windows XP SP2만 해당)
- work unit tricking (work unit 완료 전에 서버에 정보 sending)
- 로컬 스케줄링(필요한 파일이 이미 있는 컴퓨터에 작업 단위를 sending하고 주문형 작업 생성)
- 호스트 매개 변수에 기반한 작업 분배(예를 들어 512MB의 RAM이 필요한 작업 단위는 최소한 그 정도의[2] RAM을 가진 호스트에만 전송됩니다)
서버는 C++로 작성된 두 개의 CGI 프로그램과 다섯 개의 데몬으로 구성되어 있습니다. 클라이언트가 수행할 계산을 작업 단위라고 합니다. 결과는 완료되지 않은 작업 단위의 인스턴스를 설명합니다. 프로젝트는 명시적으로 결과를 작성하지 않으며, 서버는 작업 단위에서 자동으로 결과를 작성합니다.
스케줄러 CGI 프로그램은 클라이언트의 요청을 처리하여 완료된 결과를 수신하고 새로운 작업을 전송하여 계산합니다. 스케줄러가 데이터베이스에서 직접 사용 가능한 결과를 가져오지 않습니다. 대신 피더 데몬이 데이터베이스에서 작업을 로드하여 공유 메모리 블록에 보관하고 스케줄러가 이를 읽습니다. 공급기는 스케줄러가 클라이언트에 결과를 전송한 후 공유 메모리 블록의 빈 "슬롯"을 주기적으로 채웁니다.
작업 단위의 모든 결과가 완료되고 반환되면 검사자가 검사합니다. 한 가지 인기 있는 방법은 결과를 서로 비교하는 것입니다. 검증자는 결과 간의 퍼지 비교를 수행하기 위해 사용자 정의 프로젝트 코드를 가질 수도 있고, 비트 단위의 비교를 수행할 수도 있습니다. 유효성 검사자가 결과 중 적어도 일부가 유효하다고 판단하면 작업 단위와 유효한 결과를 유효하다고 표시하고 정당한 결과를 반환한 사용자에게 이에 대한 크레딧을 부여하고 "정통적인 결과"를 선택합니다. 결과가 일치하지 않거나 결과 중 하나가 마감일까지 보고되지 않으면 서버는 작업의 추가 인스턴스를 생성하여 제3 호스트로 보냅니다. 일치하는 결과의 정족수를 찾거나 인스턴스 수에 대한 제한에 도달할 때까지 이 작업을 반복합니다.[3]
다음으로, 동화기 데몬은 프로젝트별 코드를 사용하여 표준 결과를 처리합니다. 예를 들어, 일부 프로젝트는 파일을 구문 분석하여 데이터베이스에 정보를 저장할 수도 있고, 다른 프로젝트는 다른 곳에서 파일을 복사할 수도 있습니다. 동화기는 반환된 데이터를 기반으로 더 많은 작업 단위를 생성할 수도 있습니다.
file_deleter 데몬은 동화기가 출력 파일을 처리한 후 삭제하고 더 이상 필요하지 않은 입력 파일을 삭제합니다.
트랜지셔 데몬은 작업 단위 및 결과의 상태 전환을 처리합니다. 또한 작업 단위가 처음 생성될 때와 더 많은 작업이 필요할 때(예: 결과가 유효하지 않은 것으로 판명된 경우) 작업 단위에서 결과를 생성합니다.
클라이언트구조

클라이언트의 BOINC는 여러 개의 개별 응용 프로그램으로 구성됩니다. 이들은 BOINC 원격 프로시저 호출(RPC) 메커니즘을 사용하여 상호 통신합니다.
다음과 같은 구성 요소 응용 프로그램은 다음과 같습니다.
- 프로그램이. boinc(또는 boinc.exe)는 핵심 클라이언트입니다.
- 핵심 클라이언트는 다음과 같은 프로세스입니다.
- 클라이언트와 서버 간의 통신을 처리합니다.
- 또한 코어 클라이언트는 과학 애플리케이션을 다운로드하고, 통합 로깅 메커니즘을 제공하며, 과학 애플리케이션 바이너리가 최신인지 확인하고, 과학 애플리케이션 간에 CPU 리소스를 예약합니다(여러 개가 설치된 경우).
- 코어 클라이언트는 새로운 과학 응용 프로그램을 다운로드할 수 있지만 자체적으로 업데이트하지는 않습니다. BOINC의 저자들은 자동 업데이트 절차가 컴퓨팅에서 가지고 있는 모든 위험뿐만 아니라 허용할 수 없는 보안[citation needed] 위험을 제기한다고 생각했습니다.
- 유닉스에서 코어 클라이언트는 일반적으로 데몬(또는 때때로 cron 작업)으로 실행됩니다.
- 윈도우에서 BOINC는 처음에는 윈도우 서비스가 아니라 일반 애플리케이션이었습니다. BOINC Client for Windows, 버전 5.2.13 이상은 설치 중에 "서비스 설치" 옵션을 추가합니다.
- BOINC 클라이언트 소프트웨어가 설치된 방법에 따라 데몬처럼 백그라운드에서 실행되거나 개별 사용자가 로그인할 때 시작되며 사용자가 로그아웃할 때 중지됩니다. 코어 클라이언트가 제공하는 소프트웨어 버전 관리 및 작업 단위 처리는 과학 애플리케이션의 코딩을 크게 간소화합니다.
- 하나 또는 여러 개의 과학 응용 프로그램. 과학 응용 프로그램은 핵심적인 과학 계산을 수행합니다. BOINC 프레임워크를 사용하는 분산 계산 프로젝트 각각에 대한 특정 과학 응용 프로그램이 있습니다. 과학 응용 프로그램은 BOINC 데몬을 사용하여 작업 단위를 업로드 및 다운로드하고 서버와 통계를 교환합니다.
- 원격 프로시저 호출을 사용하여 코어 애플리케이션과 통신하는 GUI인 boincmgr(또는 boincmgr.exe). 기본적으로 코어 클라이언트는 동일한 컴퓨터에서만 연결을 허용하지만 다른 컴퓨터에서 연결을 허용하도록 구성할 수 있습니다(선택적으로 암호 인증을 사용). 이 메커니즘을 통해 한 사람이 단일 워크스테이션에서 BOINC 설치 팜을 관리할 수 있습니다. RPC 메커니즘 사용의 단점은 해커가 대상 컴퓨터에 침입할 수 있는 경로가 될 수 있기 때문에 종종 보안 위험으로 느껴진다는 것입니다.
- GUI는 크로스 플랫폼 WxWidgets 툴킷을 사용하여 작성되며, 다양한 플랫폼에서 동일한 사용자 경험을 제공합니다. 사용자는 BOINC 코어 클라이언트에 연결할 수 있고, 해당 클라이언트에 새로운 과학 애플리케이션을 설치하도록 지시할 수 있으며, 진행 중인 계산의 진행 상황을 모니터링할 수 있으며, BOINC 시스템 메시지 로그를 볼 수 있습니다.
- BOINC 스크린세이버. 이것은 과학 응용 프로그램이 사용자의 스크린세이버 창에 그래픽을 표시할 수 있는 프레임워크를 제공합니다. BOINC 스크린세이버는 BOINC 그래픽 API, OpenGL 및 GLUT 툴킷을 사용하여 코딩됩니다. 일반적으로 BOINC 스크린세이버는 진행 중인 작업을 자세히 설명하는 애니메이션 그래픽을 보여주며, 아마도 그래프나 차트 또는 기타 데이터 시각화 그래픽을 보여줍니다.
- 일부 과학 응용 프로그램은 스크린세이버 기능을 제공하지 않습니다(또는 유휴 상태일 때 스크린세이버 이미지 제공을 중단합니다). 이러한 상황에서 스크린세이버는 화면 주위에 작은 BOINC 로고를 보여줍니다.
BOINC에는 일반 사용자가 볼 수 없게 만들 수 있는 기능이 있기 때문에 권한이 없고 설치를 감지하기 어려운 경우가 발생할 수 있습니다. 이것은 BOINC-크레딧 하위 문화 내에서 다른 사람들과 지위를 두고 경쟁하는 취미 활동가들의 BOINC-크레딧 포인트 적립에 도움이 될 것입니다.
클라이언트 플랫폼
운영체제 | 하드웨어 | 예 | 상황 |
---|---|---|---|
리눅스 | IA-32 및 AMD64 | PC 및 서버 | 대부분의 리눅스 프로젝트는 64비트 리눅스를 필요로 합니다. 32비트 리눅스 프로젝트가 64비트 리눅스에서 실행된다면 32비트 라이브러리의 설치가 필요할 수 있습니다. |
macOS | X86-64, ARMv8 | PowerPC, IA-32 및 AMD64의 경우 다양한 BOINC 클라이언트를 사용할 수 있었습니다. AMD64 클라이언트는 BOINC 서버가 이를 지원할 경우 IA-32 애플리케이션을 실행할 수 있었습니다. BOINC Manager 7.16.13은 X-86-64 및 ARMv8용입니다. | |
창문들 | IA-32 및 AMD64 | IA-32 및 AMD64에는 다양한 BOINC 클라이언트를 사용할 수 있습니다. BOINC 서버가 이를 지원하는 경우 64비트 클라이언트는 32비트 응용 프로그램을 실행합니다. | |
라즈비안 (리눅스) | 팔 | 라즈베리 파이 | 사용 가능한 클라이언트 애플리케이션 수가 매우 적음 |
안드로이드 (리눅스) | ARM, MIPS 또는 IA-32 | 스마트폰 및 태블릿 | 사용 가능한 클라이언트 애플리케이션이 거의 없습니다. 일부 프로젝트에는 비공식 고객(Native BOINC)이 필요할 수 있습니다. |
참고 항목
참고문헌
- ^ "BOINC client–server technology Semantic Scholar". www.semanticscholar.org. Retrieved 2022-08-14.
- ^ SETI@home의 BOINC 전환
- ^ Anderson, David P.; McLeod, John (2007). "Local Scheduling for Volunteer Computing". 2007 IEEE International Parallel and Distributed Processing Symposium. pp. 1–8. doi:10.1109/IPDPS.2007.370667. ISBN 978-1-4244-0909-9. S2CID 15164675.