2

如果我去 WHM 并查看我的服务器的内存使用情况,它会说只有 16% 的内存在使用中。但是当我使用 SSH 连接到服务器并运行命令“free -m”时,它显示 80% 正在使用中。这是为什么?我想知道 MySQL、Apache 等运行的所有应用程序的确切内存使用情况如何查看?

谢谢

4

1 回答 1

1

正如他们所说,“这很复杂”。

Linux 使用未使用的内存进行磁盘缓冲和缓存。它加快了速度。但是您可能需要查看free的-/+ buffers/cache行。

'ps'可以向您显示,对于任何给定进程或所有进程,%cpu%mem累积 cpu-timerss(驻留集大小,进程正在使用的非交换物理内存)、大小(如果进程要弄脏所有可写页面然后被换出,则需要非常近似的交换空间量), vsize(整个进程的虚拟内存使用量(vm_lib + vm_exe + vm_data + vm_stack))等等。

对于任何给定的进程,您可以 cat /proc/$PID/status - 它是人类可读的 - 并检查VmSizeVmLckVmRSSVmDataVmStkVmExeVmLibVmPTE值,以及其他...

但这只是初学者......进程可以分配内存但不能使用它。(可以分配内存,但是在实际使用内存页面之前不会创建/发布内存页面。整个按需操作。)

进程可以映射到硬件空间,表现为使用大量实际上并非来自系统 RAM 的内存。(众所周知,X-servers 有时会这样做。这是涉及内核驱动程序的一些不稳定的东西......)

有可执行文件,通常是内存映射文件。这意味着换入的部分占用了 RAM,但换出时它永远不会占用交换文件空间。

进程可以有其他内存映射文件...

有共享内存库,其中多个程序同时使用相同的 RAM 页。

所以我们不得不问,就记忆而言,究竟什么重要,什么不重要?

于 2010-12-30T17:02:06.337 回答