하나의 서버가 있고 두 개의 프로세스 유형 A (많은 프로세스가 많은 스레드)와 B (프로세스 n 스레드가 n-CPU의 프로세스)를 가지고 있고 A에서 많은 단방향 메시지를 보내고 싶었습니다 MPI는 대량의 소프트 실시간 IPC에 적합합니까?
난 내 자신의 라이브러리를 작성하는 생각
- 유닉스 도메인 소켓
- 윈도우 명명 된 파이프 : B.는 MPI에게 사용하여 사용자 정의 구현보다는이 더 나은 구현을인가에 1과 2에 기초하여, 그리고 또한 3이 b인지 궁금합니다. 공유 메모리가 잠금을 필요로하기 때문에 에터.
프로세스 A는 외부 서비스를 제공하므로 B의 자원 사용 및 일반적으로 전달되는 메시지는 가능한 한 적은 리소스를 소비해야하며 A는 메시지를 보낼 때 차단 또는 비 차단 모두로 구현 될 수 있습니다. B의 리소스 사용과 메시지 전달은 A의 사용법에 따라 선형 적으로 확장되어야합니다.
결국 컴퓨터간에 브로드 캐스팅 기능이 필요합니다. 아마도 프로세스 B에 대한 것입니다.
저는 MPI (특히 openMPI)가이를위한 훌륭한 라이브러리이며 다양한 운영 체제에서 가장 최적의 커널 프리미티브를 사용하고 있습니다.
공유 메모리가 여전히 "x-sender - one receiver"시나리오에서 더 나을 수 있습니다. 하나의 이름이 지정된 프로세스 간 잠금 (IP-Lock)으로 가정하면 경쟁이 문제가됩니다. 이것이 코스에 대한 나의 순진한 견해입니다. 내가 묻는 것은 openMPI 나 MPICH가 IP-Locking의 비용을 분산시키기 위해 영리한 데이터 구조를 가지고있어 명명 된 파이프와 유닉스 - 돔 소켓보다 잘 확장된다는 것입니다. –
공유 메모리가이 상황에서 더 나을 수 있습니다. 그러나 이와 같은 일을 할 때 프로파일 링을 대체 할 수는 없습니다. 안타깝게도 이와 같이 확장 성이 높고 parallized 된 응용 프로그램은 특정 하드웨어를 기반으로 대답이 크게 달라질 수 있으므로 종종 실제 하드웨어에서 프로파일 링을 요구하는 경향이 있습니다. –