メモリパフォーマンス
システムメモリインデックス
- 使用メモリと空きメモリがまだ使用されていない、理解しやすい、およびメモリの使用です。
- 共有メモリは、 TMPFSによって実現されるので、そのサイズはtmpfsのメモリ・サイズを使用することです。tmpfsのは、実際にキャッシュの特別な種類です。
- 使用可能なメモリは残りのキャッシュメモリとリサイクルを含み、最大メモリ、一緒に使用することができ、新たなプロセスです。
- キャッシュは 1は、ディスクから読み取るデータをキャッシュするために使用されるファイルのページのキャッシュを読み込んでアクセスすることができ、将来的に再び速度をスピードアップするために、ディスクである、2つの部分からなります。別の部分は、ディスペンサーはリサイクル可能なスラブメモリです。
- バッファに一時的にディスクに書き込まれるキャッシュの元のディスク・ブロックを格納します。このように、カーネルは一緒に書くために分散させることができ、統一された最適化ディスクを書き込みます。
プロセスメモリインデックス
- 仮想メモリコードセグメント、データセグメントの処理を含む、共有メモリは、ヒープメモリに適用しており、メモリからスワップアウトされています。ここでは、仮想メモリとしてみなされるべきで、なくても物理メモリ割り当てた場合、メモリが提出されていることに注意しなければなりません。
- 永久メモリは、実際に使用されるプロセスの物理メモリである、しかし、それはスワップおよび共有メモリが含まれていません。
- 共有メモリ、一般的に使用される他のプロセスと実際の共有メモリの両方は、動的リンク・ライブラリー・コード・セグメント、およびプログラム・ローディング、等を含みます。
- スワップメモリはスワップによってディスクにスワップアウトされたメモリを指します。
異常落丁
- それはとして知られている、物理メモリから直接割り当てることができる場合には、サブページ・行方不明の障害。
- (例えばスワップなど)のディスクI / Oの介入が必要な場合は、として知られているメイン落丁異常。
スワップ指数
- 已用空间和剩余空间很好理解,就是字面上的意思,已经使用和没有使用的内存空间。
- 换入速度和换出速度,则表示每秒钟换入和换出内存的大小。
内存性能工具
- 系统指标工具:free、sar
- 进程指标工具:top 、ps
- 动态内存指标工具:vmstat
- 内存指标的来源:proc 文件系统(/proc/zoneinfo。。。)
- 系统缓存命中工具:cachestat
- 进程缓存命中工具:cachetop
- 内存泄漏工具:memleak
内存问题定位
内存问题调优
内存调优的核心是,保证应用程序的热点数据放到内存中,并尽量减少换页和交换。
- 最好禁止 Swap。如果必须开启 Swap,降低 swappiness 的值,减少内存回收时 Swap 的使用倾向。
- 减少内存的动态分配。比如,可以使用内存池、大页(HugePage)等。
- 尽量使用缓存和缓冲区来访问数据。比如,可以使用堆栈明确声明内存空间,来存储需要缓存的数据;或者用 Redis 这类的外部缓存组件,优化数据的访问。
- 使用 cgroups 等方式限制进程的内存使用情况。这样,可以确保系统内存不会被异常进程耗尽。
- 通过 /proc/pid/oom_adj ,调整核心应用的 oom_score。这样,可以保证即使内存紧张,核心应用也不会被 OOM 杀死。