如何60秒内分析Linux性能( 四 )


7. free -m$ free -m             total       used       free     shared    buffers     cachedMem:        245998      24545     221453         83         59        541-/+ buffers/cache:      23944     222053Swap:            0          0          0右面两列展示的是:

  1. buffers:用于块设备 I/O 缓冲的缓存 。
  2. cached:用于文件系统的页缓存 。
我们只想检测这些缓存的数值是否接近 0。不为 0 的可能导致较高的磁盘 I/O(通过 iostat 命令来确认)和较差的性能问题 。上面的例子看起来没问题,都还有很多 M 字节 。
“-/+ buffers/cache” 这一行提供了对已使用和空闲内存明确的统计 。Linux 用空闲内存作为缓存,如果应用程序需要,可以快速拿回去 。所以应该包含空闲内存那一列,这里就是这么统计的 。甚至有一个网站专门来介绍 Linux 内存消耗的问题:linuxatemyram 。
如果在 Linux 上使用了 ZFS 文件系统,则可能会更乱,因为当我们在开发一些服务的时候,ZFS 有它自己的文件系统缓存,而这部分内存的消耗是不会在 free -m 这个命令中合理的反映的 。显示了系统内存不足,但是 ZFS 的这部分缓存是可以被应用程序使用的 。
8. sar -n DEV 1$ sar -n DEV 1Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015     _x86_64_    (32 CPU)12:16:48 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil12:16:49 AM      eth0  18763.00   5032.00  20686.42    478.30      0.00      0.00      0.00      0.0012:16:49 AM        lo     14.00     14.00      1.36      1.36      0.00      0.00      0.00      0.0012:16:49 AM   Docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0012:16:49 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil12:16:50 AM      eth0  19763.00   5101.00  21999.10    482.56      0.00      0.00      0.00      0.0012:16:50 AM        lo     20.00     20.00      3.25      3.25      0.00      0.00      0.00      0.0012:16:50 AM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00^C使用这个工具是可以检测网络接口的吞吐:rxkB/s 和 txkB/s,作为收发数据负载的度量,也是检测是否达到收发极限 。在上面这个例子中,eth0 接收数据达到 22 M 字节/秒,也就是 176 Mbit/秒(网卡的上限是 1 Gbit/秒) 。


推荐阅读