开发者社区> 华章计算机> 正文

Linux性能优化3.2 Linux性能工具:CPU与内存

简介:
+关注继续查看

3.2 Linux性能工具:CPU与内存


现在开始讨论性能工具,它们能使你抽取前面所述的那些内存性能信息。

3.2.1 vmstat(II)

如前所见,vmstat能提供多个不同方面的系统性能信息—尽管它的主要目的(如同下面展示的一样)是提供虚拟内存系统信息。除了前一章描述的CPU性能统计信息外,它还可以告诉你下述信息:

使用了多少交换分区。

物理内存是如何被使用的。

有多少空闲内存。

你可以看到,vmstat(通过其显示的统计数据)在一行文本中就提供了关于系统运行状况与性能的丰富信息。

3.2.1.1 系统范围内与内存相关的系统级选项

vmstat除了提供CPU统计信息外,你还可以通过如下命令行调用vmstat来调查内存统计信息:

 

和前面一样,你可以在两种模式下运行vmstat:采样模式和平均模式。添加命令行选项能让你获得Linux内核使用内存的性能统计信息。表3-1给出了vmstat可接受的选项。

表3-1 vmstat命令行选项

选  项 说  明

-a 该项改变内存统计信息的默认输出以表示活跃/非活跃内存量,而不是缓冲区和高速缓存使用情况的信息

-s(procps 3.2或更高版本) 打印输出vm表。自系统启动开始的综合统计信息。该项不能用于采样模式,它包含了内存和CPU的统计数据

-m(procps 3.2或更高版本) 该项输出内核分片信息。键入cat/proc/slabinfo可以获得同样的信息。信息详细展示了内核内存是如何分配的,并有助于确定哪部分内核消耗内存最多

 

表3-2所示列表为vmstat可以提供的内存统计信息。与CPU统计信息一样,当运行于普通模式时,vmstat提供的第一行信息为所有速率统计信息(so和si)的均值以及所有数字统计信息的瞬时值(swpd、free、buff、cache、active和inactive)。

表3-2 与内存相关的vmstat输出统计信息

列 说  明

swpd 当前交换到硬盘的内存总量

free 未被操作系统或应用程序使用的物理内存总量

buff 系统缓冲区大小(单位为KB),或用于存放等待保存到硬盘的数据的内存大小(单位为KB)。该存储区允许应用程序向Linux内核发出写调用后立即继续执行(而不是等待直到数据被提交到硬盘)

cache 用于保存之前从硬盘读取的数据的系统高速缓存或内存的大小(单位为KB)。如果应用程序再次需要该数据,内核可以从内存而非硬盘抓取数据,由此可提高性能

active 被使用的活跃内存量。活跃/不活跃的统计数据与缓冲区/高速缓存的是正交的;缓冲区和高速缓存可以是活跃的,也可以是不活跃的

inactive 不活跃的内存总量(单位为KB),或一段时间未被使用,适合交换到硬盘的内存量

si 上一次采样中,从硬盘进来的内存交换速率(单位为KB/s)

so 上一次采样中,到硬盘去的内存交换速率(单位为KB/s)

pages paged in 从硬盘读入系统缓冲区的内存总量(单位为页)(在大多数IA32系统中,一页为4KB)

pages paged out 从系统高速缓存写到硬盘的内存总量(单位为页)(在大多数IA32系统中,一页为4KB)

pages swapped in 从交换分区读入系统内存的内存总量(单位为页)

pages swapped out 从系统内存写到交换分区的内存总量(单位为页)

used swap Linux内核目前使用的交换分区容量

free swap 当前可用的交换分区容量

total swap 系统的交换分区总量,即used swap与free swap之和

 

对给定机器而言,vmstat能提供其虚拟存储系统当前状态的良好概览。虽然它不会为每个可用的Linux每次性能统计数据提供一个完整且详细的列表,但它给出的简洁输出可以表明系统内存整体上是如何被使用的。

3.2.1.2 用法示例

如前面章节所见,清单3.2中,如果vmstat调用时没有使用任何命令行选项,它显示的是从系统启动开始的性能统计数据的均值(si和so),以及其他统计信息的瞬时值(swpd、free、buff和cache)。本例中,我们可以看到系统已经有大约500MB的内存交换到了硬盘。约14MB系统内存是空闲的。约4MB用于缓冲区,以保存还未刷新到硬盘的数据。约627MB用于硬盘缓存,以保存过去从硬盘读取的数据。

清单3.2

 

在清单3.3中,我们要求vmstat显示活跃与非活跃页面的数量信息。非活跃页面的数量表明了有多少内存可以交换到硬盘,有多少内存是当前可用的。本例中,我们可以看到活跃内存有1310MB,只有78MB被认为是不活跃的。该机拥有大量内存,且大部分都被使用,处于活跃状态。

清单3.3

 

接下来,在清单3.4中,我们看到的是一个不同的系统,其内存数据交换频繁。si列显示在每个采样期间,数据的读交换率分别为480KB、832KB、764KB、344KB和512KB。so列显示在每个采样期间,内存数据写交换率分别为9KB、0KB、916KB、0KB、1068KB、444KB和792KB。这些结果可以说明该系统没有足够的内存来处理所有的运行进程。当一个进程的内存被保存下来,以便为之前已经交换到硬盘的应用程序腾位置时,就会出现高频率的换入和换出。如果有两个运行程序需要的内存量都超过了系统可提供的量,后果就会很糟糕。比如,两个进程都在使用大量内存,且它们都试图同时运行,而每个进程都可以导致另一个的内存被写交换。当一个程序需要一块内存时,它就会把另一个程序需要的一块内存踢出去。而当另一个应用程序开始运行时,它又会把第一个程序正在使用的一块内存踢出去,并等待自己的内存块从交换分区加载进来。这可能会导致两个应用程序出现停顿,以等待它们的内存从交换分区取回,然后才能继续执行。只要一个程序进步一点点,它就会将另一个进程使用的内存交换出去,从而导致这个程序慢下来。这种情况被称为颠簸。发生颠簸时,系统会花大量的时间将内存读出或写入交换分区,系统性能就会急剧下降。

具体到这个例子,交换最终停止了,最有可能的原因是交换到硬盘的内存不是第一个进程立即需要的。这就意味着交换是有效的,不是正在使用的内存内容被写入到硬盘,然后内存就会分配给需要它的进程。

清单3.4

 

 

清单3.5在前面的章节已经给出了,如其所示,vmstat可以展示很多种不同的系统统计信息。现在当我们查看它时,我们可以看到一些相同的统计数据以不同的输出模式呈现,比如active、inactive、buffer、cache和used swap。但是也出现了一些新的统计信息,如total memory,该数据表示系统总共有1516MB内存;total swap,该数据表示系统总共有2048MB的交换分区。当试图确定交换分区和当前使用内存的百分比时,了解系统总量是有帮助的。另一个有趣的统计信息是pages paged in,它表示从硬盘读入的页面总数。这个统计信息包括启动应用程序读取的页面,以及该应用程序本身可以使用的页面。

清单3.5

 

 

最后,在清单3.6中,我们看到vmstat可以提供关于Linux内核如何分配其内存的信息。如前所述,Linux内核有一系列“分片”来保存其动态数据结构。vmstat显示每一个分片(Cache),展示使用了多少元素(Num),分配了多少(Total),每个元素的大小(Size),整个分片使用了多少内存页(Pages)。这些信息有助于跟踪内核究竟是怎样使用其内存的。

清单3.6

 

 

vmstat提供了一种简便的方法来抽取大量的Linux内存子系统的信息。与默认输出界面上的其他信息结合起来,它就展示出了一个关于系统运行状况和资源使用情况的图象。

3.2.2 top(2.x和3.x)

前面章节已经讨论过,top能同时给出系统级或特定进程的性能统计信息。默认情况下,top展示的是对进程的CPU消耗量进行降序排列的列表,但它也可以调整为按内存使用总量排序,以便你能跟踪到哪个进程使用的内存最多。

3.2.2.1 内存性能相关的选项

top不用任何特定命令行选项来控制其显示内存统计信息。它的调用命令行如下:

 

不过,一旦开始运行,top允许你选择显示系统级内存信息,还是显示按内存使用量排序的进程。按内存消耗量排序被证明对确定哪个进程消耗了最多内存是非常有帮助的。表3-3说明了不同的与内存相关的切换项。

表3-3 top运行时切换项

选  项 说  明

m 该项切换是否将内存使用量信息显示到屏幕

M 按任务使用的内存量排序。由于分配给进程的内存量可能会大于其使用量,因此,该项按驻留集大小排序。驻留集大小是指进程实际使用量,而不是简单的进程请求量

 

表3-4给出了top能提供的整个系统以及单个进程的内存性能统计数据。top有两个不同的版本2.x和3.x,它们在输出统计数据的名称上有些微差异。表3-4对两个版本的名称都进行了说明。

表3-4 top内存性能统计信息

选  项 说  明

%MEM 进程使用内存量占系统物理内存的百分比

SIZE(v 2.x)

VIRT(v 3.x) 进程虚拟内存使用总量。其中包括了应用程序分配到但未使用的全部内存

SWAP 进程使用的交换区(单位为KB)总量

RSS(v 2.x)

RES(v 3.x) 应用程序实际使用的物理内存总量

TRS(v 2.x)

CODE(v 3.x) 进程的可执行代码使用的物理内存总量(单位为KB)

DSIZE(v 2.x)

DATA(v 3.x) 专门分配给进程数据和堆栈的内存总量(单位为KB)

SHARE(v 2.x)

SHR(v 3.x) 可与其他进程共享的内存总量(单位为KB)

D(v 2.x)

nDRT(v 3.x) 需要刷新到硬盘的脏页面的数量

Mem:total,used,free 对物理内存来说,该项表示的是其总量、使用量和空闲量

swap:total,used,free 对交换分区来说,该项表示的是其总量、使用量和空闲量

active(v 2.x) 当前活跃的物理内存总量

inactive(v 2.x) 非活跃且一段时间内未被使用的物理内存总量

buffers 用于缓冲区写入硬盘的数值的物理内存总量(单位为KB)

 

top提供了不同运行进程的大量的内存信息。如同后续章节将会讨论的,你可以使用这些信息来确定应用程序究竟是如何分配和使用内存的。

3.2.2.2 用法示例

清单3.7与前面章节给出的top运行示例相似。不过这个例子中,请注意在缓冲区中有大约84MB是空闲的,而总的物理内存容量为1024MB。

清单3.7

 

 

和前面一样,top可以被定制为只显示观察过程中你感兴趣的内容。清单3.8给出的高度配置界面只显示了内存性能统计信息。

清单3.8

 

top提供了对内存统计数据的实时更新,并显示了哪个进程正在使用哪种类型的内存。当我们调查应用程序内存使用情况时,这些信息就变得有用了。

3.2.3 procinfo(II)

正如我们在前面看到的,procinfo提供的是系统级性能特性的概览。除了前面章节描述过的统计数据外,procinfo还提供了一些内存统计数据,与vmstat和top类似,这些数据表明了当前内存是如何被使用的。

3.2.3.1 内存性能相关的选项

procinfo没有任何选项来修改其内存统计信息的显示输出,因此其调用命令如下:

 

procinfo显示的是基本内存系统的内存统计信息,与top和vmstat类似,如表3-5所示。

表3-5 procinfo内存统计信息

选  项 说  明

Total 物理内存总量

Used 使用的物理内存总量

Free 未使用的物理内存总量

Shared 该项已过时,应忽略

Buffers 用于硬盘写缓冲区的物理内存总量

Page in 从硬盘读入的块数(通常大小为1KB)(该项在2.6.x版内核中有问题)

Page out 写入硬盘的块数(通常大小为1KB)(该项在2.6.x版内核中有问题)

Swap in 从交换分区读入的内存页数(该项统计数据在2.6.x版内核中有问题)

Swap out 写到交换分区的内存页数(该项统计数据在2.6.x版内核中有问题)

 

与vmstat和top非常相似,procinfo是一种低开销的命令,它适于长时间在控制台或屏幕窗口中运行。它为系统运行状况和性能提供了良好的指示。

3.2.3.2 用法示例

清单3.9是procinfo的典型输出。如同你所看到的,它报告了系统使用虚拟内存的总体信息。在这个例子中,系统总共有312MB内存,其中有301MB被内核和应用程序使用,11MB为系统缓冲区,还有11MB完全没有被使用。

清单3.9

 

 

procinfo在单一信息屏中提供系统性能信息。虽然它给出了一些重要的内存统计数据,但vmstat或top更适合于调查系统级的内存使用情况。

3.2.4 gnome-system-monitor(II)

gnome-system-monitor在许多方面就是top的图形表示。它使你能监控单个进程,并从它显示的图形上来观察系统负载。同时,它还提供了CPU和内存使用情况的基本图形。

3.2.4.1 内存性能相关的选项

gnome-system-monitor可以从Gnome菜单调用。(Red Hat 9及更高版本中,在System Tools→System Monitor选项下。)不过,它也可以用下面的命令行来调用:

 

gnome-system-monitor没有相关的命令行选项能影响内存性能测量。

3.2.4.2 用法示例

当你启动gnome-system-monitor,并选择System Monitor标签后,你可以看到如图3-1所示的窗口。这个窗口使你能浏览图形,看看当前已经使用了多少物理内存和交换分区,以及使用情况随时间发生的变化。在这个例子中,我们看到1007MB的总量中已经使用了969MB,且内存使用量在一段时间内是比较平稳的。

 

图 3-1

gnome-system-monitor提供的数据图形视图使得对系统的观察更容易也更迅速,但是,却缺少了大部分的细节,比如内存是如何使用的。

3.2.5 free

free提供的是系统使用内存的总体情况,包括空闲内存量。虽然free命令可能会显示一个特定系统没有多少空闲内存,但这不一定是坏事。Linux内核不会让空闲内存一直闲着,而是会将它作为高速缓存用于硬盘读,或是作为缓冲区用于硬盘写。这可以显著提升系统性能。由于这些高速缓存和缓冲区总是可以被丢弃的,所以,当应用程序需要时这些内存还是可以使用的,free显示的是空闲内存容量加上或减去这些缓冲区的容量。

3.2.5.1 内存性能相关的选项

用下面的命令行可以调用free:

 

表3-6说明的参数可以修改free显示的统计信息类型。与vmstat非常相似,free可以周期性地显示更新内存统计数据。

表3-6 free命令行选项

选  项 说  明

-s delay 使free按每delay秒的间隔输出新的内存统计数据

-c count 使free输出count次新的统计数据

-l 向你展示使用了多少高端内存和多少低端内存

 

free实际上显示了一些所有内存统计工具的最完整的内存统计信息。这些统计信息如表3-7所示。

表3-7 free 内存统计信息

统计信息 说  明

Total 物理内存与交换空间的总量

Used 使用的物理内存和交换分区的容量

Free 未使用的物理内存和交换分区的容量

Shared 该项已过时,应忽略

Buffers 用作硬盘写缓冲区的物理内存的容量

Cached 用作硬盘读缓存的物理内存的容量

-/+ buffers/cache 对Used列来说,若缓冲区/缓存未被计为已使用的内存,则该项显示的是将使用的内存容量。在Free列中给出的是如果把缓冲区/缓存计为空闲内存时的空闲内存容量

Low 低端内存或能被内核直接访问的内存总量

High 高端内存或不能被内核直接访问的内存总量

Totals 对Total、Used和Free列,该项显示的是该列中物理内存和交换分区的总和

 

free提供的是Linux中系统级内存使用情况信息。它给出了相当完整的内存统计数据。

3.2.5.2 用法示例

不使用任何命令选项来调用free,能让你获得内存子系统的整体信息。

如前所述,如果可能的话,Linux会使用所有可用的内存来缓存数据和应用程序。在清单3.10中,free告诉我们现在已经使用了234 720字节的内存,但是,如果忽略缓冲区和缓存,那么就只使用了122 772字节的内存。与之相反的是free列,当前我们有150 428字节内存是空闲的,同样的,如果已经将缓冲区和缓存计算在内(这是可以的,因为在Linux需要使用这部分内存时,它会丢弃这些缓冲区),那么,我们有262 376字节的空闲内存。

清单3.10

 

尽管你可以自己合计这些列,但是清单3.11所示的-t标志可以告诉你加上交换分区和实际内存的总数。在这个例子中,系统有376MB的物理内存和384MB的交换分区。系统可获得的内存总量为376MB加上384MB,即大约760MB。总的空闲内存计算方法为134MB的物理内存加上259MB的交换分区,产生总共393MB的空闲内存。

清单3.11

 

最后,free还能告诉你系统使用的高端和低端内存量。这主要用于具有1GB或更多物理内存的32位机器(如IA32)。(32位机器是唯一有高端内存的机器。)清单3.12展示了一个系统,该系统的空闲内存非常小,总共只有6MB。它显示出系统有876MB的低端内存和640MB的高端内存。同时,这个系统的缓存内存容量比缓冲内存容量大很多,这表明它可能更加积极地将数据写入硬盘,而不是长时间将其留在缓冲区里。

清单3.12

 

 

free很好地体现了系统内存是如何被使用的。虽然可能需要点时间来适应其输出格式,但是它包含了所有重要的内存统计信息。

3.2.6 slabtop

slabtop与top相似,但是它并不显示系统中进程的CPU和内存使用情况的信息,slabtop实时显示内核是如何分配其各种缓存的,以及这些缓存的被占用情况。在内部,内核有一系列的缓存,它们由一个或多个分片(slab)构成。每个分片包括一组对象,对象个数为一个或多个。这些对象可以是活跃的(使用的)或非活跃的(未使用的)。slabtop向你展示的是不同分片的状况。它显示了这些分片的被占用情况,以及它们使用了多少内存。

3.2.6.1 内存性能相关的选项

slabtop用如下命令行调用:

 

表3-8对slabtop的命令行选项进行了说明。

表3-8 slabtop命令行选项

选  项 说  明

- -delay 指定slabtop在更新间隔期间应等待多长时间

- -sort {order} 指定输出顺序。order从下列各项中选择

a 按每个分片所包含的活跃对象数排序

b 按照特定缓存中的每个分片所包含的全部对象(活跃的和非活跃的)数量排序

c 按每个缓存所用内存总量排序

l 按每个缓存使用的分片数排序

v 按每个缓存使用的活跃分片数排序

n 按缓存名称排序

o 按特定缓存中的对象数量排序

p 按每个分片使用的页数排序

s 按缓存中对象的大小排序

 

slabtop可以一窥Linux内核的数据结构。每一种分片类型都与Linux内核紧密相关,不过,对这些分片的描述已经超出了本书的范围。如果某个特定分片使用了大量的内核内存,那么阅读Linux内核源代码和搜索互联网是找出这些分片用在哪里的最好的两种方法。

3.2.6.2 用法示例

如清单3.13所示,默认情况下,slabtop会填满整个控制台,且每3秒就更新一次统计数据。在这个例子中,你可以看见size-64分片的对象数最多,但其中只有一半是活跃的。

清单3.13

 

由于slabtop提供的信息是周期性更新的,因此它是观察Linux内核的内存使用情况随工作负载变化而变化的极好的方法。

3.2.7 sar(II)

在对内存统计信息进行监控时,sar作为CPU性能工具的所有优势仍然存在,比如简单记录样本、提取多种输出格式、对样本加时间戳等。sar提供的信息与其他内存统计工具类似,比如空闲内存、缓冲区、高速缓存和交换分区总量的当前值。但是,它还会提供这些数值的变化率,以及当前消耗的物理内存和交换分区的百分比信息。

3.2.7.1 内存性能相关的选项

sar使用如下命令行进行调用:

 

默认情况下,sar只显示CPU性能统计数据;因此,如果想要检索任何内存子系统的统计信息,你就需要使用表3-9给出的选项。

表3-9 sar命令行选项

选  项 说  明

-B 报告的信息为内核与磁盘之间交换的块数。此外,对v2.5之后的内核版本,该项报告的信息为缺页数量

-W 报告的是系统交换的页数

-r 报告系统使用的内存信息。它包括总的空闲内存、正在使用的交换分区、缓存和缓冲区的信息

 

sar给出的Linux内存子系统的信息相当完整。sar强过其他工具的一点就是,除了绝对值之外,它还提供一些重要数值的变化率。你可以通过这些数值查看内存使用情况究竟是如何随时间变化的,而不用去找出这些值在样本之间的差异。表3-10给出了sar提供的内存统计信息。

表3-10 sar内存统计信息

选  项 说  明

pgpgin/s 内核以分页形式每秒从磁盘换入的内存容量(以KB为单位)

pgpgout/s 内核以分页形式每秒换出到磁盘的内存容量(以KB为单位)

fault/s 每秒内存子系统需满足的缺页总数。这些缺页不一定需要访问磁盘

majflt/s 每秒内存子系统需满足的缺页总数,这些缺页需要访问磁盘

pswpin/s 每秒系统装入内存的交换分区总量(按页计)

pswpout/s 每秒系统写入到交换分区的内存总量(按页计)

kbmemfree 当前空闲或未被使用的物理内存总量(以KB为单位)

kbmemused 当前被使用的物理内存总量(以KB为单位)

%memused 被使用的物理内存总量所占的百分比

kbbuffers 用作磁盘写缓冲区的物理内存总量

kbcached 用作磁盘读缓存的物理内存总量

kbswpfree 当前空闲的交换分区容量(以KB为单位)

kbswpused 当前被使用的交换分区容量(以KB为单位)

%swpused 被使用的交换分区百分比

kbswpcad 该项内存包括了交换到磁盘的和已存在于内存中的。如果需要内存,它可以立即被重用,因为数据已经存在于交换区域了

frmpg/s 系统释放内存页面的速率。若数值为负,则表示系统正在分配它们

bufpg/s 系统将新内存页面用作缓冲的速率。若数值为负,则表示缓冲数量正在减少,系统对它们的使用量也在减少

 

尽管sar没有高端和低端内存统计数据,但是它几乎提供了其他所有的内存统计信息。事实上,sar还能记录网络CPU和磁盘I/O的统计数据,这使得它非常强大。

3.2.7.2 用法示例

清单3.14展示了sar提供的关于当前内存子系统状态的信息。从这些结果我们可以看到系统使用的内存量占整个内存容量的比例变化范围为98.87%到99.25%。在观察期间,空闲内存量从11MB下降到7MB。被使用的交换分区百分比徘徊在11%左右。系统的数据缓存容量约为266MB,且大约有12MB的缓冲可以写到磁盘。

清单3.14

 

清单3.15显示在第一个样本期间,系统使用空闲内存的速率约为每秒82个页面。然后系统释放了约16个页面,接着又使用了大约20个页面。观察期间只有一次缓冲页面数是增加的,速率为每秒2.02个页面。最后,缓存页面数减少了2.02,不过最终,它们增加的速率为每秒64.36个页面。

清单3.15

 

清单3.16显示,在第三个样本期间,系统从内存写了大约53个页面到磁盘。该系统的缺页数相对较高,这就意味着内存页面在被分配和使用。幸运的是,这些都不是主缺页,系统不必为了解决它们而去访问磁盘。

清单3.16

 

如你所见,sar是一个强大的工具,通过增加存档、时间戳和同步收集多种不同类型统计信息的能力,它增强了其他系统内存性能工具的功能。

3.2.8 / proc / meminfo

Linux内核提供用户可读文本文件/proc/meminfo来显示当前系统范围内的内存性能统计信息,它提供了系统范围内内存统计数据的超集,包括了vmstat、top、free和procinfo的信息,但是使用起来有一定的难度。如果你想定期更新,就需要自己写一个脚本或一些代码来实现这个功能。如果你想保存内存性能信息或是将其与CPU统计信息相协调,就必须创建一个新的工具或是写一个脚本。尽管如此,/proc/meminfo提供的却是最完整的系统内存使用情况的信息。

3.2.8.1 内存性能相关的选项

/proc/meminfo中的信息可以用如下命令行来检索:

 

这个命令显示的统计信息如表3-11所示。

表3-11 /proc/meminfo内存统计信息(均以KB为单位)

选  项 说  明

MemTotal 系统物理内存总量

MemFree 空闲物理内存总量

Buffers 等待中的磁盘写操作的内存容量

Cached 用于缓存磁盘读操作的内存容量

SwapCached 在交换分区和物理内存中都存在的内存容量

Active 系统中当前处于活跃状态的内存容量

Inactive 当前处于非活跃状态且可用于交换的内存容量

HighTotal 高端内存容量(以KB为单位)

HighFree 空闲的高端内存容量(以KB为单位)

LowTotal 低端内存容量(以KB为单位)

LowFree 空闲的低端内存容量(以KB为单位)

SwapTotal 交换内存容量(以KB为单位)

SwapFree 空闲的交换内存容量(以KB为单位)

Dirty 等待写入磁盘的内存

Writeback 当前被写入磁盘的内存

Mapped 用mmap映射到一个进程虚拟地址空间的内存总量

Slab 内核分片内存的总量(以KB为单位)

Committed_AS 所需内存容量,在当前的工作负载下,这个容量几乎是不会耗尽的。通常情况下,内核会分配更多的内存,预期应用程序会超分配。如果所有的应用程序都使用自己被分配的内存,那么这个就是你需要的物理内存容量

PageTables 为内核页表保留的内存容量

VmallocTotal vmalloc可用的内核内存容量

VmallocUsed vmalloc已使用的内核内存容量

VmallocChunk vmalloc可用内存中最大的连续块

HugePages_Total 所有HugePage的总的大小

HugePages_Free 空闲HugePage的总量

 

/proc/meminfo提供了大量的关于Linux内存子系统当前状态的信息。

3.2.8.2 用法示例

清单3.17是一个输出/proc/meminfo的例子。它给出的一些内存统计信息与我们在其他工具中看到的信息是相同的。但是有些统计数据则给出了新的信息。首先,Dirty项显示系统当前有24KB的数据等待写入磁盘。其次,Committed_AS项显示我们还需要更多一点的内存(需要的量为1068MB,而总量为1024MB),以避免出现可能的内存耗尽的情况。

清单3.17

 

 

/proc/meminfo收集的系统级Linux内存统计信息是最完整的。由于可以把它当作是一个文本文件,因此,任何自定义的脚本或程序都可以很容易地提取这些统计数据。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Linux性能测试 netstat命令
功能说明:Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。语  法:netstat [-acCeFghilMnNoprstuvVwx][-A][--ip]补充说明:利用netstat指令可让你得知整个Linux系统的网络情况。
879 0
Linux系统中使用GCC CPU参数优化代码编译
Linux系统中使用GCC CPU参数优化代码编译 使用特定的GCC参数可以使编译出的程序执行效率有较大提升。具体如下: 1、优化原理: 在编译程序时,借助参数传递的方法,使用与系统CPU相匹配的gcc参数,编译出的程序就是为系统CPU而进行特定优化过的,因而执行速度和效率都会是最好。
822 0
首次曝光 | 阿里数万名开发者都在使用的数据库开发工具到底长什么样?
数据管理DMS(Data Management Service)是阿里巴巴自研图形化的数据库开发工具,已服务阿里巴巴及阿里云上几十万开发者实现安全便捷的数据库访问开发工作。用户可以通过DMS实现25种常见数据库的访问研发。
1390 0
Sql性能检测工具:Sql server profiler和优化工具:Database Engine Tuning Advisor
原文:Sql性能检测工具:Sql server profiler和优化工具:Database Engine Tuning Advisor 一、工具概要     数据库应用系统性能低下,需要对其进行优化,     如果不知道问题出在哪里,可以使用性能检测工具sql server profiler。
1765 0
Linux性能测试 /proc目录
/proc文件系统 - 各种内核信息/proc目录下文件提供了很多不同硬件设备和内核的详细信息。更多详情参见Linux kernel /proc。一般/proc例如: [root@SM155 proc]# cat /proc/cpuinfo processor : 0 vend...
637 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载