더 적은 스레드 또는 더 많은 스왑 공간?

더 적은 스레드 또는 더 많은 스왑 공간?

저는 cmdsPython에서 스레드를 사용하여 여러 터미널을 실행하고 있습니다(농담하지 마세요. 이유가 있습니다).

이는 cmds때때로 사용 가능한 메모리를 압도하므로 OOA(메모리 부족) 오류를 방지하기 위해 스왑 크기를 늘려야 했습니다.

내 질문은 다음과 같습니다일반적으로 스레드를 줄이고 스왑 공간을 늘리거나 스레드를 늘리고 스왑 공간을 줄이면 내(또는 모든) 프로그램이 더 빨리 완료됩니까(또는 "최적의 지점"이 있습니까)?.

답변1

이러한 cmd는 때때로 사용 가능한 메모리를 압도하므로 OOA(메모리 부족) 오류를 방지하기 위해 스왑 크기를 늘려야 했습니다.

스왑 공간이 부족하거나 스왑 크기를 늘려야 하는 경우에는 한 번에 너무 많은 프로세스를 실행하고 있음을 나타냅니다.

내 질문은: 일반적으로 스레드를 줄이고 스왑 공간을 늘리거나 스레드를 늘리고 스왑 공간을 줄이면 내(또는 모든) 프로그램이 더 빨리 완료됩니까(또는 "최적의 지점"이 있습니까)?

두 가지 옵션은 실제로 의미가 없습니다. 스레드 수(따라서 필요한 RAM)를 늘리고 동시에 스왑 크기를 줄이면 메모리(RAM과 스왑 모두에 저장됨)가 부족해 운영 체제에 의해 프로세스가 종료되고 /또는 메모리 할당이 실패했습니다.

RAM이 부족해지면 운영 체제에서 디스크에 메모리를 기록하여 일부 공간을 확보하게 됩니다(스왑 공간). 이는 상대적으로 시간이 많이 걸리는 작업이므로 RAM에서 사용할 수 있는 것보다 더 많은 메모리를 사용하지 않는 것이 좋습니다.

디스크에 메모리를 쓰지 않도록 RAM이 부족해지지 않도록 프로세스 수를 제한하겠습니다. psutil.virtual_memory().available다른 프로세스를 시작하기 전에 사용 가능한 메모리를 확인하십시오 . 다른 작업을 시작하기 전에 1GB를 확보하는 것이 합리적으로 보입니다.

몇 가지 벤치마킹을 수행해야 합니다. 다른 작업을 시작하기 전에 최대 프로세스 값과 최소 메모리 값이 서로 다른 다양한 소스 파일을 완료하는 데 걸리는 시간을 측정해 보세요.

관련 정보