Unix:了解您的内存命令

内存是Unix系统性能中最重要的部分之一。让我们看看一些命令,它们会告诉你你需要知道的关于你的内存是如何被使用的。

内存仍然是决定Unix服务器性能的主要因素之一。了解哪些命令会告诉您需要知道的信息,以及它们的响应意味着什么,这将有助于您保持对潜在问题的警觉,并让您能够比较系统何时开始变慢以及是否开始变慢。

免费的

Linux系统上可用的最基本内存命令之一是free命令。如果不告诉它,Free将报告内存使用情况,单位为千字节。下面的命令使用-m选项将其转换为兆字节——这种格式对我来说比较容易处理,也许对您来说也比较容易。

$ free -m total used free shared buffers cached Mem: 2026 1524 502 0 556 584 -/+ buffers/cache: 383 1643 Swap: 4094 40 4054

该系统有2gb的内存,其中75%的内存在使用中。它有两倍多的交换,但几乎没有使用。

特别行政区

sar命令源自Solaris,有时也可以在Linux系统上使用,它是一个很好的工具,可以查看长时间内的内存使用情况。如果您想查看整个星期系统的运行情况,或者想比较某一天与另一天的情况,这是特别有用的。sar命令是用于例行性能报告的最佳工具之一。通常设置为在一周内定期收集数据,它还可以用来告诉您性能度量现在看起来如何,这些度量包括内存。要获得每个内存使用时间为5秒的两个示例,可以使用sar -r 5 2命令,如下所示。

$ sar -r 5 2 SunOS玻色子5.10 generic_127277 -11 sun4u 07/20/2014 16:26:16 freemem freeswap 16:26:21 5591 733840 16:26:26 5591 733840 Average 5591 733840

sar报告的单位是页面(freemem)和磁盘块(freeswap)。要理解这些数字的真正含义,您需要确定这些值代表什么。幸运的是,有一些命令可以帮助您解决这个问题。

页大小

我们可以使用Solaris pagesize命令来显示页面大小——通常为8192字节或8 KB。

8192页大小

df - g

对于磁盘块,我们需要查看特定文件系统的分级参数。在这里,我们看到块大小也被设置为8192字节。

$ df -g / / (/dev/dsk/c1t0d0s0): 8192块大小1024块大小30256454 total blocks 21252254 free blocks 20949690 available 1822912 total files 1657400 free files 8388632 filesys id ufs fstype 0x00000004 flag 255 filename length . /dev/dsk/c1t0d0s0

当然,您仍然需要将这些数字结合在一起——df -g命令中的块大小和页面大小。您可以使用expr命令来实现这一点。

expr

$ exr 5591 \* 8192 45801472

像45801472这样的数字让我数一数。您可能更喜欢这个expr命令,因为它以MB为度量单位。然而,这是空闲内存,而不是总体内存。

$ expr 5591 \* 8192 / 1000000

了解系统上安装了多少内存,而不管它是否在使用,这就更容易了。使用prtconf命令和grep对单词“Memory”进行处理,您将看到类似的结果,但希望是GB范围内的结果,而不是MB。

$ prtconf | grep Memory内存大小:512 mb

meminfo

要获得Linux系统上的一些快速内存信息,还可以使用meminfo命令。通过查看meminfo文件,我们可以看到安装了多少内存以及有多少空闲内存。

$ cat /proc/meminfo | head -2 MemTotal: 2074932kb MemFree: 506820kb

为了让你的显示更有趣,并为交换添加测量值,运行如下命令:

$ egrep——color 'Mem|Cache|Swap' /proc/meminfo MemTotal: 2074932 kB MemFree: 507144kb Cached: 593552 kB SwapCached: 25304kb SwapTotal: 4192956 kB SwapFree: 4151476 kB

在这个命令中,我们使用egrep提取包含三个字符串(mem、cache或swap)之一的任何行。

vmstat

vmstat命令在Linux和Solaris上都可以找到。正如您可以从下面的显示中看到的,它有很多信息要告诉您,但是输出只是有点神秘,并且可能因Unix的不同而不同。vmstat命令还告诉您更多关于内存的信息。尽管您可以在下面看到交换内存和空闲内存数,但我们也可以看到一些与磁盘活动和CPU使用有关的统计信息。

Linux $ vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b SWPD free buff cache si so bi bo in cs us sy id wa st 01 41480 514464 570160 598228 0 0 0 3 1 0 15 15 70 0 0
solaris美元vmstat kthr内存页面磁盘故障cpu r b w交换免费重新mfπ阿宝fr de sr s0 s3 s3, sy cs我们sy id 0 0 0 847576 74392 8 7 45 0 0 0 0 0 0 0 0 420 45 125 0 98

我最喜欢的查看性能的命令之一是top,因为它以一种易于理解的格式告诉我很多关于系统如何执行的信息。

$ top top - 19:34:52 up 183 days, 7:58, 1 user, load average: 1.05, 1.01, 1.00 Tasks: 186 total, 2 running, 184 sleeping, 0 stopped, 0 zombie Cpu(s): 15.2%us, 14.6%sy, 0.1%ni, 70.0%id, 0.2%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 2074932k total, 1560840k used, 514092k free, 570160k buffers Swap:4192956 k, 4192956 k, 4192956 k, 598220 k用户缓存PID公关倪VIRT RES月S % % MEM CPU时间+命令32522 csi135b7 25 0 4604 1104 972 100.0 - 0.1 R 1233:10定时器15380啦15 0 2440 1016 748 2.0 - 0.0 R 0:00.01顶部1根15 0 2176 572 544年代0.0 - 0.0 0:17.13 init 2根RT 5 0 0 0 0.0 0.0 0:03.37迁移/ 0

在顶部输出中,我们在第4行和第5行中看到内存统计信息。总安装的内存,以及多少是在使用和免费的明确标记。

ipc

要查看Linux系统上的共享内存,可以尝试使用ipcs命令。这个命令在Linux和Solaris系统上都可用,但是您的选项会有所不同。

$ ipcs -m ------共享内存段-------- key shmid owner perms bytes nattch status 0x00000000 2818049 root 644 52 2 0x00000000 2850820 root 644 16384 2 0x00000000 2883589 root 644 268 2

使用-a选项(默认值),您将看到一些额外的信息,尽管本例中的系统显示没有使用信号量数组和消息队列。

美元ipc - a -共享内存段  -------- 关键shmid所有者烫发字节nattch状态0 x00000000 2818049根644 52 2 0 x00000000 2818049根644 16384 2 0 x00000000 2883589根644 268 2,信号量数组  -------- 关键semid所有者烫发nsems,消息队列  -------- 关键msqid所有者烫发已使用字节消息

大多数Unix内存命令都很容易使用和理解,经常使用可以让您了解系统在正常情况下的执行情况,并让您在系统出现问题时做好准备。

阅读更多的雷竞技投注下载桑德拉·亨利-斯托克的Unix第二语言博客并关注最新的这新闻ITworld,推特脸谱网

加入网络世界社区有个足球雷竞技app脸谱网LinkedIn对自己最关心的话题发表评论。

版权所有©2014 IDG ComRaybet2munications, Inc.

SD-WAN买家指南:向供应商(和您自己)提出的关键问题