프로세스가 사용되지 않은 메모리를 다른 프로세스와 공유할 수 있습니까?

프로세스가 사용되지 않은 메모리를 다른 프로세스와 공유할 수 있습니까?

내 실험에서는 약 200개의 프로세스를 실행하고 싶습니다. 그들 각각은 다음보다 적은 양을 필요로 합니다.GB:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
24688 rinkman   20   0 6082416 335536  15680 S 116.9  0.3  77:32.92 java
25314 rinkman   20   0 6614936 379040  15700 S 116.6  0.4  73:43.02 java
25780 rinkman   20   0 6082408 348140  15664 S 116.6  0.4  72:12.34 java
25994 rinkman   20   0 6082408 350592  15656 S 114.6  0.4  71:42.34 java
30472 rinkman   20   0 6749092 441492  15664 S 108.6  0.4  64:54.38 java
27052 rinkman   20   0 6548364 403040  15692 S 106.3  0.4  66:38.30 java
29314 rinkman   20   0 6022012 393656  15660 S 105.0  0.4  65:57.09 java
28173 rinkman   20   0 6681492 427816  15660 S 104.3  0.4  66:17.47 java

6개 노드에 액세스할 수 있습니다.100GBRAM당 양입니다. 그러니 그들이 그냥 가져가면GB,문제 없습니다. 그러나 위에서 볼 수 있듯이 모두가 초과해야 합니다.6GB.

나는 다음 출력을 보고 매우 놀랐습니다 free -m.

              total        used        free      shared  buff/cache   available
Mem:          96481       15396         326          75       80758       80448
Swap:         16383        2336       14047

그것은 단지 보여줍니다15.4GB사용된. 프로세스가 사용하지 않은 메모리를 공유할 수 있을까?라는 생각이 들었습니다. 예80.4GB실제로 사용 가능한가요? 안타깝게도 Google을 통해 흥미로운 정보를 찾을 수 없습니다. 방금 멀티프로세싱/스레딩과 데이터 교환, 공개 캐싱 등에 관한 기사를 우연히 발견했습니다. 제발 이 질문에 대답해 주실 수 있나요?

폴리스티렌이것이 가능하지 않은 경우 이러한 프로세스에 할당된 메모리를 줄일 수 있는 방법이 있습니까? (200개의 프로세스 중 8개만 실행했습니다.) 문제는 bash 스크립트가 다음과 같은 기능만 제공한다는 것입니다.2GB~을 위한자바(이것은 그것의 일부입니다):

java -Xms64m -Xmx2048m -Djava.library.path="$BEAST_LIB:/usr/local/lib:$LD_LIBRARY_PATH" -cp "$BEAST_LIB/beast.jar:$BEAST_LIB/beast-beagle.jar" dr.app.beast.BeastMain $*

그래서 왜 항상 필요한지 이해할 수 없습니다4~5GB더. 예를 들어 다른 Java 프로그램에서도 동일한 현상이 발생합니다.짐승 2또는트리 주석자.

답변1

잘못 읽으신 것 같습니다.

첫 번째 열은 VIRT중요하지 않으며 대부분의 경우 완전히 무시해야 합니다.

흥미로운 점은 RSS프로세스당 RAM이 0.5GB 미만이라는 것입니다. 당신은 훌륭한 일을했다.

이제 귀하의 질문에 답변해 드리겠습니다.

공유된 "미사용" 메모리 같은 것은 없습니다. 사용되거나 사용되지 않습니다. 일부 메모리는 실제로 공유됩니다. 이는 이라는 세 번째 열입니다 SHR. 공유 라이브러리의 메모리입니다. 내가 올바르게 기억한다면 Linux 커널은 너무 복잡하기 때문에 올바른 값을 계산/표시하는 것을 오랫동안 중단한 것입니다.

topPS 솔직히 말해서 Linux RAM 유틸리티( , htop, free등)에 VIRT 열이 표시되는 이유를 모르겠습니다 . 나는 그것을 사용하거나 관심을 기울인 적이 없으며 누군가가 그것을하는 것을 본 적이 없습니다.

관련 정보