스레드가 많은 프로그램에 대한 Linux의 최적 스왑 크기는 얼마입니까?

스레드가 많은 프로그램에 대한 Linux의 최적 스왑 크기는 얼마입니까?

저는 기본적으로 프로세스당 382개의 스레드를 허용하는 Amazon EC2 서버 소형 인스턴스를 사용하고 있습니다. 그러나 단일 프로세스에서 10,000개의 스레드를 실행하고 싶습니다. 최근에 스택 제한을 줄이거나 가상 메모리를 늘리면 이 작업을 수행할 수 있다는 것을 알게 되었습니다.

내가 아는 한, Linux에서는 RAM이나 스왑 공간을 늘려 가상 메모리를 늘릴 수 있습니다. RAM을 늘리는 것은 선택 사항이 아닙니다. 스왑 공간을 늘리는 방법을 알고 있지만 최적의 크기가 무엇인지 잘 모르겠습니다.

나에게 명확하지 않은 것은 스레드를 실행할 때 스왑 공간과 RAM이 어떻게 작동하는지입니다. 메모리 교환으로 인해 스레드 속도가 느려지는 특정 제한이 있습니까? 사용해야 하는 최적의 스왑 공간이 있습니까? :

답변1

일반적으로 시스템 관리자는 SWAP를 1x 또는 2x 메모리로 설정합니다. 귀하의 경우 이것이 적용 가능하거나 충분한지 모르겠습니다.

실행 중인 항목에 대한 세부 정보 없이 SWAP에 적합한 사이트가 무엇인지 알기는 어렵지만 일반적으로 무엇을 실행 중이든 디스크로 교체하면 성능 저하가 발생할 수 있습니다. 런타임 크기가 증가했습니다. 따라서 미친 스와핑을 수행하는 10,000개의 스레드를 커밋하기 전에 애플리케이션의 구성이나 디자인을 살펴보고 다른 작업을 수행해야 합니다.

따라서 애플리케이션을 프로파일링하고 활성 동시 스레드 수를 결정하면 그렇게 많이 실행할 필요가 없을 수도 있습니다.

요청 시 솔루션 제공

웹 사이트나 웹 서버에 대한 연결을 설정할 때 응답이 순서대로 수신되므로 해당 특정 연결로 전송된 요청 목록을 유지 관리합니다. 스레드가 서버에 요청을 보낸 후 select()데이터를 사용할 수 있을 때까지 루프에서 기다립니다. 이런 일이 발생하면 데이터를 수신하고 요청 정보와 수신된 데이터를 다른 스레드로 보내 처리합니다.

관련 정보