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%
上記の7つのBSDコマンド(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%