병렬 실행에 제한이 있나요? 그렇다면 최대 한도를 확인하는 방법은 무엇입니까?
"&"로 연결된 스크립트 문자열을 생성하고 eval을 사용하여 모두 실행하는 스크립트를 만들고 있습니다. 이 같은:
scriptBuilder="ksh -x script1.sh & ksh -x script2.sh & ksh -x script3.sh";
eval $scriptBuilder;
서버에서 병렬 실행의 최대 제한이 무엇인지 확인하려고 합니다.
답변1
이 명령은 ulimit -u
시작할 수 있는 최대 프로세스 수를 표시합니다. 그러나 실제로 백그라운드에서 많은 프로세스를 시작하지 마십시오. 컴퓨터는 프로세스 간 전환에 시간을 소비하고 실제 작업을 수행할 시간을 찾지 못합니다.
CPU 집약적 작업의 경우 컴퓨터에 있는 것과 동일하거나 더 많은 코어를 사용하여 작업을 실행하십시오. 이러한 모든 프로세스와 해당 파일 캐시를 수용할 만큼 RAM이 충분한 경우: 병렬 프로세스가 지속적으로 데이터를 다시 로드하기 위해 I/O 대역폭을 놓고 경쟁하는 경우 순차적으로 실행하는 것보다 느리게 실행됩니다. 당신은 할 수그 안에 있는 코어 수를 찾아보세요./proc/cpuinfo
.
프로세서당 하나의 작업을 실행하는 간단한 방법은 다음을 사용하는 것입니다.GNU 병렬.
작업이 I/O 바인딩되어 있고 동일한 주변 장치를 사용하는 경우(예: 동일한 디스크의 파일에 액세스) 일반적으로 순차적으로 실행하는 것이 가장 좋습니다.