swap -l의 출력과 상단에 표시된 스왑 메모리의 차이점은 무엇입니까?

swap -l의 출력과 상단에 표시된 스왑 메모리의 차이점은 무엇입니까?

swap -lswap -s출력을 이해하는 방법 과 명령이 반영하는 메모리 사용량이 무엇인지 정말 혼란스럽습니다 top.

그러면 스왑이 얼마나 있는지, 실제 메모리가 얼마나 사용되는지, 사용 가능한 메모리가 얼마나 되는지 최종적으로 판단할 수 없으며, 시스템 관리자에게 메모리 추가를 요청해야 합니까?

내 시스템의 출력은 다음과 같습니다.

$ swap -l
swapfile             dev  swaplo blocks   free
/dev/zvol/dsk/rpool/swap 181,1       8 33554424 **33554424**

$ swap -s
total: 23539804k bytes allocated + 1608016k reserved = **25147820k** used, **10397840k** available


$ prtconf |grep -i Memory
Memory size: 49144 Megabytes
$ top -d 2 -n 2
load averages:  1.36,  1.39,  1.40    19:07:42
120 processes: 118 sleeping, 1 stopped, 1 on cpu

Memory: 48G real, **1411M** free, 24G swap in use, **10G** swap free

다음은 uname 및 memstat 세부정보입니다.

이것은 우리가 전혀 공부하지 말아야 한다는 것을 의미합니까? 그리고 memstat를 기반으로 메모리 사용량을 보고하시겠습니까?

왜 swap -l과 swap -s의 통계가 비슷하지 않습니까?

bash-3.2$ uname -a
SunOS l28sdp1a 5.10 Generic_150401-03 i86pc i386 i86pc

 =================Memstat======================
Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                    1602713              6260   13%
ZFS File Data             4345496             16974   35%
Anon                      4974599             19432   40%
Exec and libs               32588               127    0%
Page cache                 948627              3705    8%
Free (cachelist)              972                 3    0%
Free (freelist)            673589              2631    5%

Total                    12578584             49135
Physical                 12250367             47852

이해하도록 도와주세요.

답변1

레이블이 Solaris이므로 귀하가 Solaris를 실행하고 있다고 가정합니다. 전직 Solaris 관리자로서 저는 top 설치를 별로 좋아하지 않습니다. 왜냐하면 스왑 사용량과 메모리 사용량을 보고할 때 오해의 소지가 있을 수 있기 때문입니다. 솔라리스는 스왑과 메모리를 혼합한 가상 메모리 개념을 사용합니다. 스왑 장치가 있더라도 사용 가능한 메모리가 충분하면 메모리에 할당될 수 있습니다. 시스템이 얼마나 많은 스왑 공간을 사용하고 있는지 정확히 알고 싶다면 시간이 많이 걸리는 작업입니다. 이는 각 프로세스에서 pmap -x를 사용하고 스왑 부분을 확인하여 수행할 수 있습니다.

시스템에서 단일 응용 프로그램을 실행하는 경우 시스템 관리자는 echo "::memstat"|mdb -l을 실행할 수 있어야 합니다. 이는 현재 메모리 상태를 제공하며 메모리를 확인하기 위해 모니터링을 수행해야 합니다.

귀하의 애플리케이션이 서버의 유일한 애플리케이션이 아니고 특정 사용자 ID로 실행 중인 경우 ps -u를 실행하여 해당 애플리케이션을 사용할 수 있습니다.

도움이 되었기를 바랍니다.

관련 정보