Linux 배포판은 다음과 같은 경향이 있습니다(그러나 실제로는불필요한) free
부터 포함프로세스, 메모리 소비를 훌륭하고 간결하게 표시합니다.
# free -m
total used free shared buff/cache available
Mem: 7688 5027 180 827 2479 1589
Swap: 8189 2082 6106
나는 BSD에서 이것을 근사화하기 위해 여러 가지 다른 프로젝트를 시도했지만 모두 다른 답변을 제공했습니다(아마도 컨텍스트가 다르기 때문일까요?). 예를 들어:
# sysctl -a |grep Memory
Virtual Memory: (Total: 1077397132K, Active 3458308K)
Real Memory: (Total: 1171952K Active 975744K)
Shared Virtual Memory: (Total: 56264K Active: 38652K)
Shared Real Memory: (Total: 22184K Active: 19700K)
Free Memory Pages: 1664588K
# sysctl hw |awk '/mem:/ { printf "%s %.0fM\n", $1, $2/1024^2 }'
hw.physmem: 32756M
hw.usermem: 29102M
hw.realmem: 33792M
# grep memory /var/run/dmesg.boot
usable memory = 34346901504 (32755 MB)
avail memory = 33139134464 (31603 MB)
# top |grep -Em2 '^(Mem|Swap):'
Mem: 980M Active, 25G Inact, 3654M Wired, 948M Cache, 3285M Buf, 678M Free
Swap: 9216M Total, 363M Used, 8853M Free, 3% Inuse
약 7년 전에 이 질문을 한 것은 제가 처음이 아닙니다.풀어 주다FreeBSD 문제 목록 및 Perl 스크립트제안됨그로부터 제공freebsd-memory.pl (여기에 맞게 출력이 감소됨) :
# perl freebsd-memory.pl
SYSTEM MEMORY INFORMATION:
mem_wire: 3831771136 ( 3654MB) [ 11%] Wired: disabled for paging out
mem_active: + 1028284416 ( 980MB) [ 3%] Active: recently referenced
mem_inactive:+ 26741092352 ( 25502MB) [ 80%] Inactive: recently not referenced
mem_cache: + 993902592 ( 947MB) [ 2%] Cached: almost avail. for allocation
mem_free: + 710340608 ( 677MB) [ 2%] Free: fully available for allocation
mem_gap_vm: + 995328 ( 0MB) [ 0%] Memory gap: UNKNOWN
-------------- ----------- ---------- ------
mem_all: = 33306386432 ( 31763MB) [100%] Total real memory managed
mem_gap_sys: + 1040515072 ( 992MB) Memory gap: Kernel?!
-------------- ----------- ----------
mem_phys: = 34346901504 ( 32755MB) Total real memory available
mem_gap_hw: + 12836864 ( 12MB) Memory gap: Segment Mappings?!
-------------- ----------- ----------
mem_hw: = 34359738368 ( 32768MB) Total real memory installed
SYSTEM MEMORY SUMMARY:
mem_used: 5914402816 ( 5640MB) [ 17%] Logically used memory
mem_avail: + 28445335552 ( 27127MB) [ 82%] Logically available memory
-------------- ----------- ---------- ------
mem_total: = 34359738368 ( 32768MB) [100%] Logically total memory
다음에서 업데이트됨포크의 답변– 또 다른 방법이 있습니다:
# vmstat -h
procs memory page disks faults cpu
r b w avm fre flt re pi po fr sr da0 da1 in sy cs us sy id
0 2 0 3372M 1627M 39 32 0 0 8 23 0 0 23 25 38 19 9 71
# swapinfo -h
Device 1K-blocks Used Avail Capacity
/dev/da0s1b 9437184 363M 8.6G 4%
위의 BSD 명령 7개(sysctl 양방향, /var/run/dmesg.boot, top, freebsd-memory.pl, vmstat, swapinfo)를 모두 단일 명령줄에서 실행했으므로 출력은 다음과 같이 꽤 일관적이어야 합니다. 많은 충돌하는 값을 참조하세요.
다음 중 "가장 정확한" 것은 무엇입니까? 나는 거의 모든 시스템(또는 단지 BSD)에서 실행할 수 있고 procps free처럼 내 메모리 소비를 간결하게 보여줄 수 있는 작은 스크립트(컴파일이 필요하지 않음!)를 원합니다.
나는 top |grep -Em2 '^(Mem|Swap):'
지금 그것을 사용하고 있습니다.
참고 사항 1:무료 색상거의 정확히 내가 원하는 것이지만 컴파일이 필요하고 내가 다루고 싶지 않은 종속성이 있지만(나는 이 시스템의 관리자가 아닙니다) 방문자가 이 질문을 보는 데 도움이 될 수 있습니다.
참고 2: procps(Linux) top
명령은 파이프와 잘 작동하지 않습니다. 를 사용하면 속도가 빨라질 수 있지만 top -d.1 -n1
커서가 사라질 수도 있습니다.
답변1
나는 항상 간단한 자유/활성 수치를 위해 다음을 사용했습니다 vmstat
.
~ # vmstat
procs memory page disks faults cpu
r b w avm fre flt re pi po fr sr da0 cd0 in sy cs us sy id
1 0 2 841M 89M 23 0 0 0 29 9 0 0 4 110 93 0 0 100
매뉴얼 페이지에서:
가상 메모리 및 실제 메모리 사용량에 대한 정보입니다. 가상 페이지(1024바이트 단위로 보고됨)는 실행 중이거나 지난 20초 이내에 실행된 프로세스에 속하는 경우 활성 상태로 간주됩니다.
avm active virtual pages fre size of the free list
거래소 사용 정보:
~ # swapinfo -h
Device 1K-blocks Used Avail Capacity
/dev/da0p2 2097152 25M 2.0G 1%