R&D를 위한 이기종 클러스터 솔루션

R&D를 위한 이기종 클러스터 솔루션

저는 사양이 서로 다른 여러 물리적 기계를 갖춘 연구실에서 일하고 있습니다. 머신에는 서로 다른 CPU(일부 Intel, 일부 AMD), RAM 크기가 다르며 일부는 개별 GPU가 있고 일부는 그렇지 않습니다.

현재 솔루션은 SSSD 및 Kerberos를 기반으로 하므로 사용자는 모든 터미널에서 자신의 계정에 로그인하고 파일에 액세스할 수 있습니다. 문제는 이러한 방식으로 사용자가 작업하는 동안 하나의 시스템에 "연결"되어 차선책 리소스 할당이 발생한다는 것입니다.

따라서 우리는 클러스터에 대한 대체 솔루션을 찾고 있습니다. 우리의 주요 목표는 모든 머신을 진정으로 통합하는 것입니다. 즉, 사용자의 관점에서 볼 때 클러스터는 단일 머신으로 구성됩니다. 그러나 우리가 수집한 바에 따르면 Slurm과 같은 솔루션은 작업 스케줄러에 의존하고 싶지 않기 때문에 이상적이지 않습니다. 우리가 구상하는 솔루션은 다음과 같습니다. 사용자가 로그인하면 필요한 사양(RAM, CPU 수, 개별 GPU 등)을 지정할 수 있으며, 그런 다음 원하는 사양을 갖춘 가상화된 환경이 생성됩니다(Docker 이미지). , 또는 가상 머신 등). 그러면 사용자는 해당 환경을 일반 "컴퓨터"로 사용할 수 있습니다. 그럼에도 불구하고 이 가상 환경의 리소스는 단일 시스템이 아닌 클러스터에서 가져와야 합니다. 또한 모든 "가상 환경"에서 액세스할 수 있는 대규모 데이터 세트를 공유하는 것도 가능해야 합니다. 클러스터에는 인증 및 권한 시스템도 있어야 합니다.

우리는 목표를 달성할 수 있는 클러스터링 도구를 찾고 있지만 어떤 도구를 선택해야 할지 확신할 수 없습니다. Mesos, OS/DB, Docker Swarm, Kubernetes, oVirt를 살펴봤지만 이러한 도구로 우리가 원하는 것이 달성 가능한지, 그렇다면 어느 것이 가장 좋은 선택인지 알 수 없습니다. 우리는 컨테이너가 생산에는 좋은 옵션일 수 있지만 R&D에는 최선의 선택이 아닐 수 있다고 생각합니다.여러분이 우리를 도와주고 무엇을 해야 하는지, 어디서부터 시작해야 하는지에 대한 몇 가지 요점을 알려주실 수 있나요?

감사합니다, pinxau1000

답변1

여러 시스템의 리소스를 단일 이미지로 결합할 수 없다는 @NikitaKipriyanov의 의견에 동의합니다. 과거에 이를 수행한 상용 제품이 있었고 대기 시간을 줄이기 위해 인피니밴드에 의존했습니다(IMHO, 제대로 작동하지 않았습니다). Slurm은 스케줄러로 사용할 수 있지만 대화형 작업에도 사용할 수 있으며 리소스 관리자 역할을 더 많이 수행할 수 있습니다.

각 작업은 CPU 코어 수, GPU 수 및 유형, 메모리 양 등을 지정할 수 있습니다. 그런 다음 스케줄러는 적절하고 사용되지 않는 시스템을 선택하고 쉘 프롬프트를 제공합니다. 필요한 경우 X11 전달을 사용할 수 있습니다.

또한 컨테이너는 R&D 환경에서 매우 유용할 수 있습니다. 유틸리티가 보이지 않는다고 해서 버려서는 안 되지만 이것이 이 문제에 대한 해결책은 아닙니다.

답변2

그것은 불가능합니다.

  1. CPU가 다르면 지침도 다를 수 있습니다. CPU 간에 코드를 마이그레이션하려는 경우 이는 악몽입니다.
  2. 메모리 대기 시간은 나노초 단위이고, 네트워크 대기 시간은 수십 마이크로초입니다.

워크로드에 따라 워크로드를 변환하여 여러 컴퓨터에서 실행하고 컴퓨터 간에 데이터를 통신할 수 있습니다. 일부 문제의 경우 이는 사소한 일이며 데이터 세트를 더 작은 파티션으로 분할하고 병렬로 작업할 수 있습니다. 다른 워크로드의 경우 이는 어렵습니다. 하지만 이를 위해서는 운영 체제가 아닌 워크로드 수정이 필요합니다.

관련 정보