저는 주로 새로운 리간드/약물의 쉘 기반 가상 스크리닝(알고리즘 및 출력 평가 포함)과 분자 역학을 위해 워크스테이션을 사용합니다. 가상 스크리닝에는 매번 약 100,000~300,000개의 리간드를 평가하는 작업이 포함됩니다. 나는 일반적으로 총 리간드를 여러 클러스터로 나눕니다. 추가적으로 작업을 분할하여 여러 터미널에서 실행(Tmux 사용)하여 용량을 늘렸습니다.
한 포럼 회원인 @muru가 다른 게시물에서 지적했듯이 저는 RAM 소비를 올바른 방식으로 최적화하지 않았다는 사실을 알게 되었습니다. 내 워크스테이션에는 16개 코어와 64GB RAM이 있습니다.
작업을 시작할 때마다 CPU 사용률은 100%로 표시되지만 RAM은 일반적으로 10GB 또는 최대 15GB만 소비합니다. 나머지 RAM은 사용되지 않습니다.
내 질문은 다음과 같습니다
RAM을 최대한 활용하기 위해 최적화하는 방법은 무엇입니까? 프로세스를 실행하는 데 더 많은 RAM을 사용하도록 하는 방법이 있습니까?
답변1
애플리케이션 최적화의 핵심은 병목 현상이 있는 위치를 이해하는 것입니다. 귀하의 경우에는 RAM이 제한을 두지 않기 때문에 컴퓨팅 속도가 병목 현상인 것 같습니다. 그런 다음 프로그램에 더 많은 RAM을 사용할 수 있으면 도움이 될지 물어봐야 합니다. 스스로에게 물어봐야 할 몇 가지 유용한 질문은 다음과 같습니다.
- 내 프로그램이 동일한(상대적으로 긴) 항목을 여러 번 계산합니까?
그렇다면 다음을 사용할 수 있습니다.동적 프로그래밍긴 계산 결과를 캐시하여 계산 속도를 높입니다.
- 내 프로그램이 정기적으로 디스크를 읽고 쓰나요?
읽기/쓰기가 항상 동일한 파일에 있는 경우 Linux는 속도를 위해 자동으로 캐시/버퍼하지만 여러 파일을 읽거나 예측할 수 없는 방식으로 읽는 경우에는 다음을 수행하는 것이 좋습니다.모든 데이터 가져오기필요할 것이예요디스크에서 RAM으로, RAM에 저장된 데이터에 대한 모든 계산을 수행하고 마지막으로 모든 것을 디스크에 씁니다.