swap -l
swap -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를 실행하여 해당 애플리케이션을 사용할 수 있습니다.
도움이 되었기를 바랍니다.